From 2996c25c94646845c76e0e556ff3c6a5a007a3c0 Mon Sep 17 00:00:00 2001 From: Srangrang Date: Sat, 24 May 2025 23:55:49 +0800 Subject: [PATCH 001/360] add shgemm for RISCV_ZVL128B --- common.h | 7 + kernel/riscv64/shgemm_kernel_16x8_zvl256b.c | 728 +++++++++++++++++++ kernel/riscv64/shgemm_kernel_8x8_zvl128b.c | 767 ++++++++++++++++++++ 3 files changed, 1502 insertions(+) create mode 100644 kernel/riscv64/shgemm_kernel_16x8_zvl256b.c create mode 100644 kernel/riscv64/shgemm_kernel_8x8_zvl128b.c diff --git a/common.h b/common.h index 8d002c4aa0..21f6dd0f92 100644 --- a/common.h +++ b/common.h @@ -313,6 +313,13 @@ typedef int blasint; #define SIZE 2 #define BASE_SHIFT 1 #define ZBASE_SHIFT 2 +#elif defined(FLOAT16) +#define IFLOAT float16 +#define XFLOAT IFLOAT +#define FLOAT float +#define SIZE 2 +#define BASE_SHIFT 1 +#define ZBASE_SHIFT 2 #else #define FLOAT float #define SIZE 4 diff --git a/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c new file mode 100644 index 0000000000..43c1b3a65c --- /dev/null +++ b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c @@ -0,0 +1,728 @@ + +#include "common.h" + +int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT *A, FLOAT *B, FLOAT *C, BLASLONG ldc) +{ + BLASLONG gvl = 0; + BLASLONG m_top = 0; + BLASLONG n_top = 0; + + // -- MAIN PASS + for (BLASLONG j=0; j Date: Tue, 27 May 2025 14:34:57 +0800 Subject: [PATCH 002/360] Add FP16 support for RISCV --- Makefile.system | 1 + Makefile.tail | 7 ++- cblas.h | 4 ++ cmake/system.cmake | 19 ++++---- common.h | 9 +++- common_interface.h | 2 + common_level3.h | 19 +++++++- common_macro.h | 45 ++++++++++++++++++ common_param.h | 94 +++++++++++++++++++++++++++++--------- common_sh.h | 72 +++++++++++++++++++++++++++++ openblas_config_template.h | 5 ++ param.h | 28 ++++++++++++ 12 files changed, 270 insertions(+), 35 deletions(-) create mode 100644 common_sh.h diff --git a/Makefile.system b/Makefile.system index 38646c3c6b..cdc39982d7 100644 --- a/Makefile.system +++ b/Makefile.system @@ -1889,6 +1889,7 @@ export TARGET_CORE export NO_AVX512 export NO_AVX2 export BUILD_BFLOAT16 +export BUILD_HFLOAT16 export NO_LSX export NO_LASX diff --git a/Makefile.tail b/Makefile.tail index 54ba649dbf..ed2c0e5073 100644 --- a/Makefile.tail +++ b/Makefile.tail @@ -1,4 +1,5 @@ SBBLASOBJS_P = $(SBBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) +SHBLASPBJS_P = $(SHBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SBLASOBJS_P = $(SBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) DBLASOBJS_P = $(DBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) QBLASOBJS_P = $(QBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) @@ -11,8 +12,8 @@ COMMONOBJS_P = $(COMMONOBJS:.$(SUFFIX)=.$(PSUFFIX)) HPLOBJS_P = $(HPLOBJS:.$(SUFFIX)=.$(PSUFFIX)) -BLASOBJS = $(SBEXTOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(CBAUXOBJS) -BLASOBJS_P = $(SBEXTOBJS_P) $(SBBLASOBJS_P) $(SBLASOBJS_P) $(DBLASOBJS_P) $(CBLASOBJS_P) $(ZBLASOBJS_P) $(CBAUXOBJS_P) +BLASOBJS = $(SHBLASOBJS) $(SBEXTOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(CBAUXOBJS) +BLASOBJS_P = $(SHBLASPBJS_P) $(SBEXTOBJS_P) $(SBBLASOBJS_P) $(SBLASOBJS_P) $(DBLASOBJS_P) $(CBLASOBJS_P) $(ZBLASOBJS_P) $(CBAUXOBJS_P) ifdef EXPRECISION BLASOBJS += $(QBLASOBJS) $(XBLASOBJS) @@ -24,6 +25,7 @@ BLASOBJS += $(QBLASOBJS) $(XBLASOBJS) BLASOBJS_P += $(QBLASOBJS_P) $(XBLASOBJS_P) endif +$(SHBLASOBJS) $(SHBLASOBJS_P) : override CFLAGS += -DHFLOAT16 -UDOUBLE -UCOMPLEX $(SBBLASOBJS) $(SBBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -UDOUBLE -UCOMPLEX $(SBLASOBJS) $(SBLASOBJS_P) : override CFLAGS += -UDOUBLE -UCOMPLEX $(DBLASOBJS) $(DBLASOBJS_P) : override CFLAGS += -DDOUBLE -UCOMPLEX @@ -33,6 +35,7 @@ $(ZBLASOBJS) $(ZBLASOBJS_P) : override CFLAGS += -DDOUBLE -DCOMPLEX $(XBLASOBJS) $(XBLASOBJS_P) : override CFLAGS += -DXDOUBLE -DCOMPLEX $(SBEXTOBJS) $(SBEXTOBJS_P) : override CFLAGS += -DBFLOAT16 -UDOUBLE -UCOMPLEX +$(SHBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(SBBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(SBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(DBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) diff --git a/cblas.h b/cblas.h index 83686f7433..ebf066ce7e 100644 --- a/cblas.h +++ b/cblas.h @@ -446,6 +446,10 @@ void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum C void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST bfloat16 ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST bfloat16 ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); +/*** FLOAT16 extensions */ +void cblas_shgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST hfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST hfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/cmake/system.cmake b/cmake/system.cmake index 14b2c65b11..bac756901f 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -640,6 +640,9 @@ endif() if (BUILD_BFLOAT16) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBUILD_BFLOAT16") endif() +if (BUILD_HFLOAT16) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBUILD_HFLOAT16") +endif() if(NOT MSVC) set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}") endif() @@ -647,14 +650,14 @@ endif() set(PFLAGS "${PFLAGS} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}") if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") -if ("${F_COMPILER}" STREQUAL "FLANG") -if (${CMAKE_Fortran_COMPILER_VERSION} VERSION_LESS_EQUAL 3) - set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fno-unroll-loops") -endif () -endif () -if (ARM64 AND CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*" AND CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O2") -endif () + if ("${F_COMPILER}" STREQUAL "FLANG") + if (${CMAKE_Fortran_COMPILER_VERSION} VERSION_LESS_EQUAL 3) + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fno-unroll-loops") + endif () + endif () + if (ARM64 AND CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*" AND CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O2") + endif () endif () diff --git a/common.h b/common.h index 21f6dd0f92..deb61b35b9 100644 --- a/common.h +++ b/common.h @@ -266,6 +266,11 @@ typedef uint16_t bfloat16; #define BFLOAT16CONVERSION 1 #endif +#ifndef hfloat16 +#include +typedef uint16_t hfloat16; +#endif + #ifdef USE64BITINT typedef BLASLONG blasint; #if defined(OS_WINDOWS) && defined(__64BIT__) @@ -313,8 +318,8 @@ typedef int blasint; #define SIZE 2 #define BASE_SHIFT 1 #define ZBASE_SHIFT 2 -#elif defined(FLOAT16) -#define IFLOAT float16 +#elif defined(HFLOAT16) +#define IFLOAT hfloat16 #define XFLOAT IFLOAT #define FLOAT float #define SIZE 2 diff --git a/common_interface.h b/common_interface.h index efd3c6649d..23d86871fc 100644 --- a/common_interface.h +++ b/common_interface.h @@ -481,6 +481,8 @@ void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint /* Level 3 routines */ +void BLASFUNC(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + hfloat16 *, blasint *, hfloat16 *, blasint *, float *, float *, blasint *); void BLASFUNC(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, diff --git a/common_level3.h b/common_level3.h index d370c1f96a..1838b4bf6a 100644 --- a/common_level3.h +++ b/common_level3.h @@ -54,7 +54,8 @@ void sgemm_direct(BLASLONG M, BLASLONG N, BLASLONG K, int sgemm_direct_performant(BLASLONG M, BLASLONG N, BLASLONG K); - +int shgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, + hfloat16 *, BLASLONG, hfloat16 *, BLASLONG, float *, BLASLONG); int sbgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float *, BLASLONG); int sgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, @@ -78,6 +79,10 @@ int xgemm_beta(BLASLONG, BLASLONG, BLASLONG, xdouble *, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); #endif +int shgemm_incopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); +int shgemm_itcopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); +int shgemm_oncopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); +int shgemm_otcopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); int sbgemm_incopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); int sbgemm_itcopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); int sbgemm_oncopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); @@ -505,6 +510,7 @@ int xher2k_kernel_UC(BLASLONG m, BLASLONG n, BLASLONG k, xdouble alpha_r, xdoubl int xher2k_kernel_LN(BLASLONG m, BLASLONG n, BLASLONG k, xdouble alpha_r, xdouble alpha_i, xdouble *a, xdouble *b, xdouble *c, BLASLONG ldc, BLASLONG offset, int flag); int xher2k_kernel_LC(BLASLONG m, BLASLONG n, BLASLONG k, xdouble alpha_r, xdouble alpha_i, xdouble *a, xdouble *b, xdouble *c, BLASLONG ldc, BLASLONG offset, int flag); +int shgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, hfloat16 *, hfloat16 *, float *, BLASLONG); int sbgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, bfloat16 *, float *, BLASLONG); int sgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG); int dgemm_kernel(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG); @@ -657,6 +663,11 @@ int cgemm3m_kernel(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float int zgemm3m_kernel(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG); int xgemm3m_kernel(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG); +int shgemm_nn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_nt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_tn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_tt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); + int sbgemm_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); @@ -754,6 +765,11 @@ int xgemm_cr(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLON int xgemm_cc(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG); #endif +int shgemm_thread_nn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_thread_nt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_thread_tn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int shgemm_thread_tt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); + int sbgemm_thread_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_thread_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_thread_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); @@ -1944,6 +1960,7 @@ int dgemm_batch_thread(blas_arg_t * queue, BLASLONG nums); int cgemm_batch_thread(blas_arg_t * queue, BLASLONG nums); int zgemm_batch_thread(blas_arg_t * queue, BLASLONG nums); int sbgemm_batch_thread(blas_arg_t * queue, BLASLONG nums); +// int shgemm_batch_thread(blas_arg_t * queue, BLASLONG nums); #ifdef __CUDACC__ } diff --git a/common_macro.h b/common_macro.h index 820cb472a6..b967c2e603 100644 --- a/common_macro.h +++ b/common_macro.h @@ -39,6 +39,7 @@ #ifndef COMMON_MACRO #define COMMON_MACRO +#include "common_sh.h" #include "common_sb.h" #include "common_s.h" #include "common_d.h" @@ -656,6 +657,50 @@ #define GEMM_SMALL_KERNEL_B0_NT DGEMM_SMALL_KERNEL_B0_NT #define GEMM_SMALL_KERNEL_B0_TN DGEMM_SMALL_KERNEL_B0_TN #define GEMM_SMALL_KERNEL_B0_TT DGEMM_SMALL_KERNEL_B0_TT +#elif defined(HFLOAT16) +#define GEMM_BETA SHGEMM_BETA +#define GEMM_KERNEL_N SHGEMM_KERNEL +#define GEMM_KERNEL_L SHGEMM_KERNEL +#define GEMM_KERNEL_R SHGEMM_KERNEL +#define GEMM_KERNEL_B SHGEMM_KERNEL +#define GEMM_NN SHGEMM_NN +#define GEMM_CN SHGEMM_TN +#define GEMM_TN SHGEMM_TN +#define GEMM_NC SHGEMM_NT +#define GEMM_NT SHGEMM_NT +#define GEMM_CC SHGEMM_TT +#define GEMM_CT SHGEMM_TT +#define GEMM_TC SHGEMM_TT +#define GEMM_TT SHGEMM_TT +#define GEMM_NR SHGEMM_NN +#define GEMM_TR SHGEMM_TN +#define GEMM_CR SHGEMM_TN +#define GEMM_RN SHGEMM_NN +#define GEMM_RT SHGEMM_NT +#define GEMM_RC SHGEMM_NT +#define GEMM_RR SHGEMM_NN +#define GEMM_ONCOPY SHGEMM_ONCOPY +#define GEMM_OTCOPY SHGEMM_OTCOPY +#define GEMM_INCOPY SHGEMM_INCOPY +#define GEMM_ITCOPY SHGEMM_ITCOPY + +#define GEMM_THREAD_NN SHGEMM_THREAD_NN +#define GEMM_THREAD_CN SHGEMM_THREAD_TN +#define GEMM_THREAD_TN SHGEMM_THREAD_TN +#define GEMM_THREAD_NC SHGEMM_THREAD_NT +#define GEMM_THREAD_NT SHGEMM_THREAD_NT +#define GEMM_THREAD_CC SHGEMM_THREAD_TT +#define GEMM_THREAD_CT SHGEMM_THREAD_TT +#define GEMM_THREAD_TC SHGEMM_THREAD_TT +#define GEMM_THREAD_TT SHGEMM_THREAD_TT +#define GEMM_THREAD_NR SHGEMM_THREAD_NN +#define GEMM_THREAD_TR SHGEMM_THREAD_TN +#define GEMM_THREAD_CR SHGEMM_THREAD_TN +#define GEMM_THREAD_RN SHGEMM_THREAD_NN +#define GEMM_THREAD_RT SHGEMM_THREAD_NT +#define GEMM_THREAD_RC SHGEMM_THREAD_NT +#define GEMM_THREAD_RR SHGEMM_THREAD_NN + #elif defined(BFLOAT16) diff --git a/common_param.h b/common_param.h index 2d771a27da..f82b73a72b 100644 --- a/common_param.h +++ b/common_param.h @@ -48,6 +48,21 @@ typedef struct { int dtb_entries; int switch_ratio; int offsetA, offsetB, align; +#if BUILD_HFLOAT16 == 1 +int shgemm_p, shgemm_q, shgemm_r; +int shgemm_unroll_m, shgemm_unroll_n, shgemm_unroll_mn; + +int (*shgemm_kernel )(BLASLONG, BLASLONG, BLASLONG, float, hfloat16 *, hfloat16 *, float *, BLASLONG); +int (*shgemm_beta )(BLASLONG, BLASLONG, BLASLONG, float, hfloat16 *, BLASLONG, hfloat16 *, BLASLONG, float *, BLASLONG); + +int (*shgemm_incopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); +int (*shgemm_itcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); +int (*shgemm_oncopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); +int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); + + +#endif + #if BUILD_BFLOAT16 == 1 int sbgemm_p, sbgemm_q, sbgemm_r; @@ -64,10 +79,10 @@ typedef struct { float (*sbamin_k) (BLASLONG, float *, BLASLONG); float (*sbmax_k) (BLASLONG, float *, BLASLONG); float (*sbmin_k) (BLASLONG, float *, BLASLONG); -BLASLONG (*isbamax_k)(BLASLONG, float *, BLASLONG); -BLASLONG (*isbamin_k)(BLASLONG, float *, BLASLONG); -BLASLONG (*isbmax_k) (BLASLONG, float *, BLASLONG); -BLASLONG (*isbmin_k) (BLASLONG, float *, BLASLONG); + BLASLONG (*isbamax_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*isbamin_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*isbmax_k) (BLASLONG, float *, BLASLONG); + BLASLONG (*isbmin_k) (BLASLONG, float *, BLASLONG); float (*sbnrm2_k) (BLASLONG, float *, BLASLONG); float (*sbasum_k) (BLASLONG, float *, BLASLONG); @@ -180,12 +195,12 @@ BLASLONG (*isbmin_k) (BLASLONG, float *, BLASLONG); #endif #if (BUILD_SINGLE==1) || (BUILD_DOUBLE ==1) || (BUILD_COMPLEX==1) -BLASLONG (*isamax_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*isamax_k)(BLASLONG, float *, BLASLONG); #endif #if (BUILD_SINGLE==1) || (BUILD_COMPLEX==1) -BLASLONG (*isamin_k)(BLASLONG, float *, BLASLONG); -BLASLONG (*ismax_k) (BLASLONG, float *, BLASLONG); -BLASLONG (*ismin_k) (BLASLONG, float *, BLASLONG); + BLASLONG (*isamin_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*ismax_k) (BLASLONG, float *, BLASLONG); + BLASLONG (*ismin_k) (BLASLONG, float *, BLASLONG); float (*snrm2_k) (BLASLONG, float *, BLASLONG); float (*sasum_k) (BLASLONG, float *, BLASLONG); #endif @@ -316,10 +331,10 @@ BLASLONG (*ismin_k) (BLASLONG, float *, BLASLONG); double (*damin_k) (BLASLONG, double *, BLASLONG); double (*dmax_k) (BLASLONG, double *, BLASLONG); double (*dmin_k) (BLASLONG, double *, BLASLONG); -BLASLONG (*idamax_k)(BLASLONG, double *, BLASLONG); -BLASLONG (*idamin_k)(BLASLONG, double *, BLASLONG); -BLASLONG (*idmax_k) (BLASLONG, double *, BLASLONG); -BLASLONG (*idmin_k) (BLASLONG, double *, BLASLONG); + BLASLONG (*idamax_k)(BLASLONG, double *, BLASLONG); + BLASLONG (*idamin_k)(BLASLONG, double *, BLASLONG); + BLASLONG (*idmax_k) (BLASLONG, double *, BLASLONG); + BLASLONG (*idmin_k) (BLASLONG, double *, BLASLONG); double (*dnrm2_k) (BLASLONG, double *, BLASLONG); double (*dasum_k) (BLASLONG, double *, BLASLONG); @@ -435,10 +450,10 @@ BLASLONG (*idmin_k) (BLASLONG, double *, BLASLONG); xdouble (*qamin_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*qmax_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*qmin_k) (BLASLONG, xdouble *, BLASLONG); -BLASLONG (*iqamax_k)(BLASLONG, xdouble *, BLASLONG); -BLASLONG (*iqamin_k)(BLASLONG, xdouble *, BLASLONG); -BLASLONG (*iqmax_k) (BLASLONG, xdouble *, BLASLONG); -BLASLONG (*iqmin_k) (BLASLONG, xdouble *, BLASLONG); + BLASLONG (*iqamax_k)(BLASLONG, xdouble *, BLASLONG); + BLASLONG (*iqamin_k)(BLASLONG, xdouble *, BLASLONG); + BLASLONG (*iqmax_k) (BLASLONG, xdouble *, BLASLONG); + BLASLONG (*iqmin_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*qnrm2_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*qasum_k) (BLASLONG, xdouble *, BLASLONG); @@ -528,8 +543,8 @@ BLASLONG (*iqmin_k) (BLASLONG, xdouble *, BLASLONG); float (*camax_k) (BLASLONG, float *, BLASLONG); float (*camin_k) (BLASLONG, float *, BLASLONG); -BLASLONG (*icamax_k)(BLASLONG, float *, BLASLONG); -BLASLONG (*icamin_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*icamax_k)(BLASLONG, float *, BLASLONG); + BLASLONG (*icamin_k)(BLASLONG, float *, BLASLONG); float (*cnrm2_k) (BLASLONG, float *, BLASLONG); float (*casum_k) (BLASLONG, float *, BLASLONG); @@ -739,8 +754,8 @@ BLASLONG (*icamin_k)(BLASLONG, float *, BLASLONG); double (*zamax_k) (BLASLONG, double *, BLASLONG); double (*zamin_k) (BLASLONG, double *, BLASLONG); -BLASLONG (*izamax_k)(BLASLONG, double *, BLASLONG); -BLASLONG (*izamin_k)(BLASLONG, double *, BLASLONG); + BLASLONG (*izamax_k)(BLASLONG, double *, BLASLONG); + BLASLONG (*izamin_k)(BLASLONG, double *, BLASLONG); double (*znrm2_k) (BLASLONG, double *, BLASLONG); double (*zasum_k) (BLASLONG, double *, BLASLONG); @@ -950,8 +965,8 @@ BLASLONG (*izamin_k)(BLASLONG, double *, BLASLONG); xdouble (*xamax_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*xamin_k) (BLASLONG, xdouble *, BLASLONG); -BLASLONG (*ixamax_k)(BLASLONG, xdouble *, BLASLONG); -BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG); + BLASLONG (*ixamax_k)(BLASLONG, xdouble *, BLASLONG); + BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG); xdouble (*xnrm2_k) (BLASLONG, xdouble *, BLASLONG); xdouble (*xasum_k) (BLASLONG, xdouble *, BLASLONG); @@ -1229,6 +1244,15 @@ extern gotoblas_t *gotoblas; #define HAVE_EX_L2 gotoblas -> exclusive_cache +#if (BUILD_HFLOAT16==1) +#define SHGEMM_P gotoblas -> shgemm_p +#define SHGEMM_Q gotoblas -> shgemm_q +#define SHGEMM_R gotoblas -> shgemm_r +#define SHGEMM_UNROLL_M gotoblas -> shgemm_unroll_m +#define SHGEMM_UNROLL_N gotoblas -> shgemm_unroll_n +#define SHGEMM_UNROLL_MN gotoblas -> shgemm_unroll_mn +#endif + #if (BUILD_BFLOAT16==1) #define SBGEMM_P gotoblas -> sbgemm_p #define SBGEMM_Q gotoblas -> sbgemm_q @@ -1357,6 +1381,19 @@ extern gotoblas_t *gotoblas; #define HAVE_EX_L2 0 #endif +#if (BUILD_HFLOAT16 == 1) +#define SHGEMM_P SHGEMM_DEFAULT_P +#define SHGEMM_Q SHGEMM_DEFAULT_Q +#define SHGEMM_R SHGEMM_DEFAULT_R +#define SHGEMM_UNROLL_M SHGEMM_DEFAULT_UNROLL_M +#define SHGEMM_UNROLL_N SHGEMM_DEFAULT_UNROLL_N +#ifdef SHGEMM_DEFAULT_UNROLL_MN +#define SHGEMM_UNROLL_MN SHGEMM_DEFAULT_UNROLL_MN +#else +#define SHGEMM_UNROLL_MN MAX((SHGEMM_UNROLL_M), (SHGEMM_UNROLL_N)) +#endif +#endif + #if (BUILD_BFLOAT16 == 1) #define SBGEMM_P SBGEMM_DEFAULT_P #define SBGEMM_Q SBGEMM_DEFAULT_Q @@ -1478,6 +1515,7 @@ extern gotoblas_t *gotoblas; #endif + #endif #ifndef COMPLEX @@ -1505,6 +1543,18 @@ extern gotoblas_t *gotoblas; #define GEMM_DEFAULT_R DGEMM_DEFAULT_R #define GEMM_DEFAULT_UNROLL_M DGEMM_DEFAULT_UNROLL_M #define GEMM_DEFAULT_UNROLL_N DGEMM_DEFAULT_UNROLL_N +#elif defined(HFLOAT16) +#define GEMM_P SHGEMM_P +#define GEMM_Q SHGEMM_Q +#define GEMM_R SHGEMM_R +#define GEMM_UNROLL_M SHGEMM_UNROLL_M +#define GEMM_UNROLL_N SHGEMM_UNROLL_N +#define GEMM_UNROLL_MN SHGEMM_UNROLL_MN +#define GEMM_DEFAULT_P SHGEMM_DEFAULT_P +#define GEMM_DEFAULT_Q SHGEMM_DEFAULT_Q +#define GEMM_DEFAULT_R SHGEMM_DEFAULT_R +#define GEMM_DEFAULT_UNROLL_M SHGEMM_DEFAULT_UNROLL_M +#define GEMM_DEFAULT_UNROLL_N SHGEMM_DEFAULT_UNROLL_N #elif defined(BFLOAT16) #define GEMM_P SBGEMM_P #define GEMM_Q SBGEMM_Q diff --git a/common_sh.h b/common_sh.h new file mode 100644 index 0000000000..69734d1dc2 --- /dev/null +++ b/common_sh.h @@ -0,0 +1,72 @@ +#ifndef COMMON_SH_H +#define COMMON_SH_H + +#ifndef DYNAMIC_ARCH + +#define SHGEMM_ONCOPY shgemm_oncopy +#define SHGEMM_OTCOPY shgemm_otcopy + +#if SGEMM_DEFAULT_UNROLL_M == SGEMM_DEFAULT_UNROLL_N +#define SHGEMM_INCOPY shgemm_oncopy +#define SHGEMM_ITCOPY shgemm_otcopy +#else +#define SHGEMM_INCOPY shgemm_incopy +#define SHGEMM_ITCOPY shgemm_itcopy +#endif + +#define SHGEMM_BETA shgemm_beta +#define SHGEMM_KERNEL shgemm_kernel + + +#else // #DYNAMIC_ARCH + +#define SHGEMM_ONCOPY gotoblas -> shgemm_oncopy +#define SHGEMM_OTCOPY gotoblas -> shgemm_otcopy +#if SGEMM_DEFAULT_UNROLL_M == SGEMM_DEFAULT_UNROLL_N +#define SHGEMM_INCOPY gotoblas -> shgemm_oncopy +#define SHGEMM_ITCOPY gotoblas -> shgemm_otcopy +#else +#define SHGEMM_INCOPY gotoblas -> shgemm_incopy +#define SHGEMM_ITCOPY gotoblas -> shgemm_itcopy +#endif + +#define SHGEMM_BETA gotoblas -> shgemm_beta +#define SHGEMM_KERNEL gotoblas -> shgemm_kernel +#endif // #DYNAMIC_ARCH + +#define SHGEMM_NN shgemm_nn +#define SHGEMM_CN shgemm_tn +#define SHGEMM_TN shgemm_tn +#define SHGEMM_NC shgemm_nt +#define SHGEMM_NT shgemm_nt +#define SHGEMM_CC shgemm_tt +#define SHGEMM_CT shgemm_tt +#define SHGEMM_TC shgemm_tt +#define SHGEMM_TT shgemm_tt +#define SHGEMM_NR shgemm_nn +#define SHGEMM_TR shgemm_tn +#define SHGEMM_CR shgemm_tn +#define SHGEMM_RN shgemm_nn +#define SHGEMM_RT shgemm_nt +#define SHGEMM_RC shgemm_nt +#define SHGEMM_RR shgemm_nn + +#define SHGEMM_THREAD_NN shgemm_thread_nn +#define SHGEMM_THREAD_CN shgemm_thread_tn +#define SHGEMM_THREAD_TN shgemm_thread_tn +#define SHGEMM_THREAD_NC shgemm_thread_nt +#define SHGEMM_THREAD_NT shgemm_thread_nt +#define SHGEMM_THREAD_CC shgemm_thread_tt +#define SHGEMM_THREAD_CT shgemm_thread_tt +#define SHGEMM_THREAD_TC shgemm_thread_tt +#define SHGEMM_THREAD_TT shgemm_thread_tt +#define SHGEMM_THREAD_NR shgemm_thread_nn +#define SHGEMM_THREAD_TR shgemm_thread_tn +#define SHGEMM_THREAD_CR shgemm_thread_tn +#define SHGEMM_THREAD_RN shgemm_thread_nn +#define SHGEMM_THREAD_RT shgemm_thread_nt +#define SHGEMM_THREAD_RC shgemm_thread_nt +#define SHGEMM_THREAD_RR shgemm_thread_nn + + +#endif // #COMMON_SH_H \ No newline at end of file diff --git a/openblas_config_template.h b/openblas_config_template.h index 6a73821081..5a7c01a24c 100644 --- a/openblas_config_template.h +++ b/openblas_config_template.h @@ -39,6 +39,11 @@ typedef unsigned long BLASULONG; typedef uint16_t bfloat16; #endif +#ifndef HFLOAT16 +#include +typedef uint16_t hfloat16; +#endif + #ifdef OPENBLAS_USE64BITINT typedef BLASLONG blasint; #else diff --git a/param.h b/param.h index 48b64fd2ae..220f847e9b 100644 --- a/param.h +++ b/param.h @@ -72,6 +72,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef PARAM_H #define PARAM_H +#define SHGEMM_DEFAULT_UNROLL_N 8 +#define SHGEMM_DEFAULT_UNROLL_M 8 +#define SHGEMM_DEFAULT_P 128 +#define SHGEMM_DEFAULT_R 240 +#define SHGEMM_DEFAULT_Q 12288 #define SBGEMM_DEFAULT_UNROLL_N 4 #define SBGEMM_DEFAULT_UNROLL_M 8 @@ -3138,10 +3143,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #ifdef RISCV64_ZVL128B + #define GEMM_DEFAULT_OFFSET_A 0 #define GEMM_DEFAULT_OFFSET_B 0 #define GEMM_DEFAULT_ALIGN (BLASLONG)0x03fffUL +#undef SHGEMM_DEFAULT_UNROLL_M +#undef SHGEMM_DEFAULT_UNROLL_N +#define SHGEMM_DEFAULT_UNROLL_M 8 +#define SHGEMM_DEFAULT_UNROLL_N 8 + #define SGEMM_DEFAULT_UNROLL_M 8 #define SGEMM_DEFAULT_UNROLL_N 8 @@ -3154,16 +3165,22 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ZGEMM_DEFAULT_UNROLL_M 4 #define ZGEMM_DEFAULT_UNROLL_N 4 +#undef SHGEMM_DEFAULT_P +#define SHGEMM_DEFAULT_P 128 #define SGEMM_DEFAULT_P 128 #define DGEMM_DEFAULT_P 128 #define CGEMM_DEFAULT_P 96 #define ZGEMM_DEFAULT_P 64 +#undef SHGEMM_DEFAULT_Q +#define SHGEMM_DEFAULT_Q 240 #define SGEMM_DEFAULT_Q 240 #define DGEMM_DEFAULT_Q 120 #define CGEMM_DEFAULT_Q 120 #define ZGEMM_DEFAULT_Q 120 +#undef SHGEMM_DEFAULT_R +#define SHGEMM_DEFAULT_R 12288 #define SGEMM_DEFAULT_R 12288 #define DGEMM_DEFAULT_R 8192 #define CGEMM_DEFAULT_R 4096 @@ -3181,6 +3198,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define GEMM_DEFAULT_OFFSET_B 0 #define GEMM_DEFAULT_ALIGN 0x03fffUL +#undef SHGEMM_DEFAULT_UNROLL_M +#undef SHGEMM_DEFAULT_UNROLL_N +#define SHGEMM_DEFAULT_UNROLL_M 16 +#define SHGEMM_DEFAULT_UNROLL_N 8 + #define SGEMM_DEFAULT_UNROLL_M 16 #define SGEMM_DEFAULT_UNROLL_N 8 @@ -3193,16 +3215,22 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ZGEMM_DEFAULT_UNROLL_M 8 #define ZGEMM_DEFAULT_UNROLL_N 4 +#undef SHGEMM_DEFAULT_P +#define SHGEMM_DEFAULT_P 128 #define SGEMM_DEFAULT_P 128 #define DGEMM_DEFAULT_P 64 #define CGEMM_DEFAULT_P 64 #define ZGEMM_DEFAULT_P 64 +#undef SHGEMM_DEFAULT_Q +#define SHGEMM_DEFAULT_Q 128 #define SGEMM_DEFAULT_Q 128 #define DGEMM_DEFAULT_Q 128 #define CGEMM_DEFAULT_Q 128 #define ZGEMM_DEFAULT_Q 64 +#undef SHGEMM_DEFAULT_R +#define SHGEMM_DEFAULT_R 16384 #define SGEMM_DEFAULT_R 16384 #define DGEMM_DEFAULT_R 8192 #define CGEMM_DEFAULT_R 8192 From 670ec6f7576ecc74fff96be7c00ec8fffed8647b Mon Sep 17 00:00:00 2001 From: gkdddd Date: Tue, 3 Jun 2025 20:14:30 +0800 Subject: [PATCH 003/360] Added shgemm_kernel_8x8 for RISCV64_ZVL128B and shgemm_kernel_16x8 for RISCV64_ZVL256B Added HFLOAT16 support for RISCV64 Added shgemm_kernel_8x8 for RISCV64_ZVL128B and shgemm_kernel_16x8 for RISCV64_ZVL256B based on HFLOAT16 The instruction sets used are ZVFH and ZFH, which need to be supported by RVV1.0 Related to issue #5279 Co-authored-by Linjin Li --- CMakeLists.txt | 3 + Makefile.prebuild | 4 +- Makefile.riscv64 | 8 +- Makefile.rule | 2 + Makefile.system | 4 + benchmark/gemm.c | 2 + cblas.h | 2 +- common.h | 9 +- driver/level3/CMakeLists.txt | 6 + driver/level3/Makefile | 55 + driver/others/Makefile | 2 +- driver/others/parameter.c | 22 + exports/Makefile | 3 + exports/gensymbol | 6 +- exports/gensymbol.pl | 7 +- getarch_2nd.c | 2 + install/generate.py | 58 + install/generated_test | Bin 0 -> 846752 bytes install/generated_test.c | 31 + install/include/cblas.h | 457 + install/include/f77blas.h | 811 + install/include/lapack.h | 23341 ++++++++++++++++ install/include/lapacke.h | 12888 +++++++++ install/include/lapacke_config.h | 159 + install/include/lapacke_mangling.h | 17 + install/include/lapacke_utils.h | 612 + install/include/openblas_config.h | 136 + .../lib/cmake/openblas/OpenBLASConfig.cmake | 4 + .../openblas/OpenBLASConfigVersion.cmake | 9 + install/lib/pkgconfig/openblas.pc | 16 + install/test_shgemm | Bin 0 -> 847232 bytes install/test_shgemm.c | 45 + install/zvl_test | Bin 0 -> 714472 bytes install/zvl_test.c | 22 + interface/CMakeLists.txt | 3 + interface/Makefile | 24 +- kernel/CMakeLists.txt | 55 + kernel/Makefile.L3 | 164 + kernel/riscv64/KERNEL.RISCV64_ZVL128B | 9 + kernel/riscv64/KERNEL.RISCV64_ZVL256B | 16 + kernel/riscv64/shgemm_kernel_16x8_zvl256b.c | 1369 +- kernel/riscv64/shgemm_kernel_8x8_zvl128b.c | 66 +- kernel/setparam-ref.c | 37 + lapack/CMakeLists.txt | 1 + openblas_config_template.h | 4 +- param.h | 1 + 46 files changed, 39881 insertions(+), 611 deletions(-) create mode 100644 install/generate.py create mode 100755 install/generated_test create mode 100644 install/generated_test.c create mode 100644 install/include/cblas.h create mode 100644 install/include/f77blas.h create mode 100644 install/include/lapack.h create mode 100644 install/include/lapacke.h create mode 100644 install/include/lapacke_config.h create mode 100644 install/include/lapacke_mangling.h create mode 100644 install/include/lapacke_utils.h create mode 100644 install/include/openblas_config.h create mode 100644 install/lib/cmake/openblas/OpenBLASConfig.cmake create mode 100644 install/lib/cmake/openblas/OpenBLASConfigVersion.cmake create mode 100644 install/lib/pkgconfig/openblas.pc create mode 100755 install/test_shgemm create mode 100644 install/test_shgemm.c create mode 100755 install/zvl_test create mode 100644 install/zvl_test.c diff --git a/CMakeLists.txt b/CMakeLists.txt index f13f707f98..793cd767a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,9 @@ endif () if (NOT DEFINED BUILD_BFLOAT16) set (BUILD_BFLOAT16 false) endif () +if (NOT DEFINED BUILD_HFLOAT16) + set (BUILD_HFLOAT16 false) +endif () # set which float types we want to build for if (NOT DEFINED BUILD_SINGLE AND NOT DEFINED BUILD_DOUBLE AND NOT DEFINED BUILD_COMPLEX AND NOT DEFINED BUILD_COMPLEX16) # if none are defined, build for all diff --git a/Makefile.prebuild b/Makefile.prebuild index b7d695a750..b6c8d552f9 100644 --- a/Makefile.prebuild +++ b/Makefile.prebuild @@ -64,11 +64,11 @@ TARGET_FLAGS = -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d endif ifeq ($(TARGET), RISCV64_ZVL256B) -TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d +TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d endif ifeq ($(TARGET), RISCV64_ZVL128B) -TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d +TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d endif ifeq ($(TARGET), RISCV64_GENERIC) diff --git a/Makefile.riscv64 b/Makefile.riscv64 index 0ee26c1b5c..8fe734186b 100644 --- a/Makefile.riscv64 +++ b/Makefile.riscv64 @@ -7,12 +7,12 @@ CCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d -static endif ifeq ($(CORE), RISCV64_ZVL256B) -CCOMMON_OPT += -march=rv64imafdcv_zvl256b -mabi=lp64d -FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +CCOMMON_OPT += -march=rv64imafdcv_zvl256b_zvfh_zfh -mabi=lp64d +FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d endif ifeq ($(CORE), RISCV64_ZVL128B) -CCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d -FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +CCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d endif ifeq ($(CORE), RISCV64_GENERIC) CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d diff --git a/Makefile.rule b/Makefile.rule index 1472ed938b..00c7c07cc4 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -308,6 +308,8 @@ COMMON_PROF = -pg # If you want to enable the experimental BFLOAT16 support # BUILD_BFLOAT16 = 1 +# If you want to enable the experimental HFLOAT16 support +BUILD_HFLOAT16 = 1 # Set the thread number threshold beyond which the job array for the threaded level3 BLAS # will be allocated on the heap rather than the stack. (This array alone requires diff --git a/Makefile.system b/Makefile.system index cdc39982d7..f9eb17bc43 100644 --- a/Makefile.system +++ b/Makefile.system @@ -280,6 +280,7 @@ GEMM_GEMV_FORWARD_BF16 = 1 endif ifeq ($(ARCH), riscv) GEMM_GEMV_FORWARD = 1 +BUILD_HFLOAT16 = 1 endif ifeq ($(ARCH), power) GEMM_GEMV_FORWARD = 1 @@ -1547,6 +1548,9 @@ endif ifeq ($(BUILD_BFLOAT16), 1) CCOMMON_OPT += -DBUILD_BFLOAT16 endif +ifeq ($(BUILD_HFLOAT16), 1) +CCOMMON_OPT += -DBUILD_HFLOAT16 +endif ifeq ($(BUILD_SINGLE), 1) CCOMMON_OPT += -DBUILD_SINGLE=1 endif diff --git a/benchmark/gemm.c b/benchmark/gemm.c index 35f5096f35..6662c26e97 100644 --- a/benchmark/gemm.c +++ b/benchmark/gemm.c @@ -35,6 +35,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define GEMM BLASFUNC(dgemm) #elif defined(HALF) #define GEMM BLASFUNC(sbgemm) +#elif defined(HFLOAT16) +#define GEMM BLASFUNC(shgemm) #else #define GEMM BLASFUNC(sgemm) #endif diff --git a/cblas.h b/cblas.h index ebf066ce7e..0364b216fc 100644 --- a/cblas.h +++ b/cblas.h @@ -446,7 +446,7 @@ void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum C void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST bfloat16 ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST bfloat16 ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); -/*** FLOAT16 extensions */ +/*** FLOAT16 extensions ***/ void cblas_shgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST hfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST hfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); diff --git a/common.h b/common.h index deb61b35b9..23a08aaa98 100644 --- a/common.h +++ b/common.h @@ -266,9 +266,12 @@ typedef uint16_t bfloat16; #define BFLOAT16CONVERSION 1 #endif -#ifndef hfloat16 -#include -typedef uint16_t hfloat16; +#ifdef BUILD_HFLOAT16 + #ifndef hfloat16 + typedef _Float16 hfloat16; + #endif +#else + typedef uint16_t hfloat16; #endif #ifdef USE64BITINT diff --git a/driver/level3/CMakeLists.txt b/driver/level3/CMakeLists.txt index eabfeed24a..b4c6125315 100644 --- a/driver/level3/CMakeLists.txt +++ b/driver/level3/CMakeLists.txt @@ -18,6 +18,12 @@ foreach (GEMM_DEFINE ${GEMM_DEFINES}) GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16") endif () endif () + if (BUILD_HFLOAT16) + GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0 "" "" false "HFLOAT16") + if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) + GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0 "" "" false "HFLOAT16") + endif () + endif () endforeach () if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) diff --git a/driver/level3/Makefile b/driver/level3/Makefile index c304838423..b0d1d6b623 100644 --- a/driver/level3/Makefile +++ b/driver/level3/Makefile @@ -23,6 +23,10 @@ ifeq ($(BUILD_BFLOAT16),1) SBBLASOBJS += sbgemm_nn.$(SUFFIX) sbgemm_nt.$(SUFFIX) sbgemm_tn.$(SUFFIX) sbgemm_tt.$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLASOBJS += shgemm_nn.$(SUFFIX) shgemm_nt.$(SUFFIX) shgemm_tn.$(SUFFIX) shgemm_tt.$(SUFFIX) +endif + SBLASOBJS += \ sgemm_nn.$(SUFFIX) sgemm_nt.$(SUFFIX) sgemm_tn.$(SUFFIX) sgemm_tt.$(SUFFIX) \ strmm_LNUU.$(SUFFIX) strmm_LNUN.$(SUFFIX) strmm_LNLU.$(SUFFIX) strmm_LNLN.$(SUFFIX) \ @@ -210,6 +214,9 @@ ifneq ($(USE_SIMPLE_THREADED_LEVEL3), 1) ifeq ($(BUILD_BFLOAT16),1) SBBLASOBJS += sbgemm_thread_nn.$(SUFFIX) sbgemm_thread_nt.$(SUFFIX) sbgemm_thread_tn.$(SUFFIX) sbgemm_thread_tt.$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLASOBJS += shgemm_thread_nn.$(SUFFIX) shgemm_thread_nt.$(SUFFIX) shgemm_thread_tn.$(SUFFIX) shgemm_thread_tt.$(SUFFIX) +endif SBLASOBJS += sgemm_thread_nn.$(SUFFIX) sgemm_thread_nt.$(SUFFIX) sgemm_thread_tn.$(SUFFIX) sgemm_thread_tt.$(SUFFIX) DBLASOBJS += dgemm_thread_nn.$(SUFFIX) dgemm_thread_nt.$(SUFFIX) dgemm_thread_tn.$(SUFFIX) dgemm_thread_tt.$(SUFFIX) QBLASOBJS += qgemm_thread_nn.$(SUFFIX) qgemm_thread_nt.$(SUFFIX) qgemm_thread_tn.$(SUFFIX) qgemm_thread_tt.$(SUFFIX) @@ -355,6 +362,18 @@ sbgemm_tn.$(SUFFIX) : gemm.c level3.c ../../param.h sbgemm_tt.$(SUFFIX) : gemm.c level3.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) +shgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +shgemm_nt.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +shgemm_tn.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +shgemm_tt.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -562,6 +581,18 @@ sbgemm_thread_tn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h sbgemm_thread_tt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) +shgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +shgemm_thread_nt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +shgemm_thread_tn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +shgemm_thread_tt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -2747,6 +2778,18 @@ sbgemm_tn.$(PSUFFIX) : gemm.c level3.c ../../param.h sbgemm_tt.$(PSUFFIX) : gemm.c level3.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) +shgemm_nn.$(PSUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +shgemm_nt.$(PSUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +shgemm_tn.$(PSUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +shgemm_tt.$(PSUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sgemm_nn.$(PSUFFIX) : gemm.c level3.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -2970,6 +3013,18 @@ sbgemm_thread_tn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h sbgemm_thread_tt.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) +shgemm_thread_nn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +shgemm_thread_nt.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +shgemm_thread_tn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +shgemm_thread_tt.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sgemm_thread_nn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) diff --git a/driver/others/Makefile b/driver/others/Makefile index 719d617c45..6a53638bc1 100644 --- a/driver/others/Makefile +++ b/driver/others/Makefile @@ -218,7 +218,7 @@ mulx.$(SUFFIX) : $(ARCH)/mulx.c $(CC) $(CFLAGS) -c -DXDOUBLE -UCOMPLEX $< -o $(@F) detect_riscv64.$(SUFFIX): detect_riscv64.c - $(CC) $(CFLAGS) -c -march=rv64imafdcv $< -o $(@F) + $(CC) $(CFLAGS) -c -march=rv64imafdcv_zvfh_zfh $< -o $(@F) xerbla.$(PSUFFIX) : xerbla.c $(CC) $(PFLAGS) -c $< -o $(@F) diff --git a/driver/others/parameter.c b/driver/others/parameter.c index 597e5cac7e..3bcb0d4343 100644 --- a/driver/others/parameter.c +++ b/driver/others/parameter.c @@ -67,6 +67,11 @@ BLASLONG sbgemm_p = DEFAULT_GEMM_P; #else BLASLONG sbgemm_p = SBGEMM_P; #endif +#if SHGEMM_P == shgemm_p +BLASLONG shgemm_p = DEFAULT_GEMM_P; +#else +BLASLONG shgemm_p = SHGEMM_P; +#endif #if SGEMM_P == sgemm_p BLASLONG sgemm_p = DEFAULT_GEMM_P; #else @@ -93,6 +98,11 @@ BLASLONG sbgemm_q = DEFAULT_GEMM_Q; #else BLASLONG sbgemm_q = SBGEMM_Q; #endif +#if SHGEMM_Q == shgemm_q +BLASLONG shgemm_q = DEFAULT_GEMM_Q; +#else +BLASLONG shgemm_q = SHGEMM_Q; +#endif #if SGEMM_Q == sgemm_q BLASLONG sgemm_q = DEFAULT_GEMM_Q; #else @@ -119,6 +129,11 @@ BLASLONG sbgemm_r = DEFAULT_GEMM_R; #else BLASLONG sbgemm_r = SBGEMM_R; #endif +#if SHGEMM_R == shgemm_r +BLASLONG shgemm_r = DEFAULT_GEMM_R; +#else +BLASLONG shgemm_r = SHGEMM_R; +#endif #if SGEMM_R == sgemm_r BLASLONG sgemm_r = DEFAULT_GEMM_R; #else @@ -526,6 +541,9 @@ void blas_set_parameter(void){ #ifdef BUILD_BFLOAT16 sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15; +#endif +#ifdef BUILD_HFLOAT16 + shgemm_r = (((BUFFER_SIZE - ((SHGEMM_P * SHGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SHGEMM_Q * 4)) - 15) & ~15; #endif sgemm_r = (((BUFFER_SIZE - ((SGEMM_P * SGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SGEMM_Q * 4)) - 15) & ~15; dgemm_r = (((BUFFER_SIZE - ((DGEMM_P * DGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (DGEMM_Q * 8)) - 15) & ~15; @@ -619,6 +637,7 @@ void blas_set_parameter(void){ size = BITMASK(cpuid3, 16, 0xff); sbgemm_p = 192 * (size + 1); + shgemm_p = 192 * (size + 1); sgemm_p = 192 * (size + 1); dgemm_p = 96 * (size + 1); cgemm_p = 96 * (size + 1); @@ -634,6 +653,9 @@ void blas_set_parameter(void){ #ifdef BUILD_BFLOAT16 sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15; +#endif +#ifdef BUILD_HFLOAT16 + shgemm_r = (((BUFFER_SIZE - ((SHGEMM_P * SHGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SHGEMM_Q * 4)) - 15) & ~15; #endif sgemm_r = (((BUFFER_SIZE - ((SGEMM_P * SGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SGEMM_Q * 4)) - 15) & ~15; dgemm_r = (((BUFFER_SIZE - ((DGEMM_P * DGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (DGEMM_Q * 8)) - 15) & ~15; diff --git a/exports/Makefile b/exports/Makefile index 04fc64cfe0..b4b391a197 100644 --- a/exports/Makefile +++ b/exports/Makefile @@ -39,6 +39,9 @@ endif ifndef BUILD_BFLOAT16 BUILD_BFLOAT16 = 0 endif +ifndef BUILD_HFLOAT16 +BUILD_HFLOAT16 = 0 +endif ifndef BUILD_SINGLE BUILD_SINGLE = 0 endif diff --git a/exports/gensymbol b/exports/gensymbol index f747dd091f..231e72f48d 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -52,6 +52,7 @@ blasobjsz=" blasobjs="lsame xerbla" bfblasobjs="sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" +hfblasobjs="shgemm" cblasobjsc=" cblas_caxpy cblas_ccopy cblas_cdotc cblas_cdotu cblas_cgbmv cblas_cgemm cblas_cgemv cblas_cgerc cblas_cgeru cblas_chbmv cblas_chemm cblas_chemv cblas_cher2 cblas_cher2k @@ -100,6 +101,7 @@ cblasobjsz=" cblasobjs="cblas_xerbla" bfcblasobjs="cblas_sbgemm cblas_sbgemv cblas_sbdot cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod cblas_sbgemm_batch" +hfcblasobjs="cblas_shgemm" exblasobjs=" qamax qamin qasum qaxpy qcabs1 qcopy qdot qgbmv qgemm @@ -3816,8 +3818,8 @@ shift p17=$9 if [ $p13 -eq 1 ]; then - blasobjs="$blasobjs $bfblasobjs" - cblasobjs="$cblasobjs $bfcblasobjs" + blasobjs="$blasobjs $bfblasobjs $hfblasobjs" + cblasobjs="$cblasobjs $bfcblasobjs $hfcblasobjs" fi if [ $p14 -eq 1 ]; then diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index 5597306343..1c4e912f2b 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -52,6 +52,7 @@ @blasobjs = (lsame, xerbla); @bfblasobjs = (sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); +@hfblasobjs = (shgemm); @cblasobjsc = ( cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv, cblas_cgerc, cblas_cgeru, cblas_chbmv, cblas_chemm, cblas_chemv, cblas_cher2, cblas_cher2k, @@ -97,7 +98,7 @@ @cblasobjs = ( cblas_xerbla ); @bfcblasobjs = (cblas_sbgemm, cblas_sbgemmt, cblas_sbgemmtr, cblas_sbgemv, cblas_sbdot, cblas_sbstobf16, cblas_sbdtobf16, cblas_sbf16tos, cblas_dbf16tod, cblas_sbgemm_batch); - +@hfcblasobjs = (cblas_shgemm); @exblasobjs = ( qamax,qamin,qasum,qaxpy,qcabs1,qcopy,qdot,qgbmv,qgemm, qgemv,qger,qmax,qmin, @@ -3773,8 +3774,8 @@ my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib"); if ($ARGV[12] == 1) { - @blasobjs = (@blasobjs, @bfblasobjs); - @cblasobjs = (@cblasobjs, @bfcblasobjs); + @blasobjs = (@blasobjs, @bfblasobjs, @hfblasobjs); + @cblasobjs = (@cblasobjs, @bfcblasobjs, @hfcblasobjs); } if ($ARGV[13] == 1) { @blasobjs = (@blasobjs, @blasobjss); diff --git a/getarch_2nd.c b/getarch_2nd.c index dd1f830895..8170e9cf33 100644 --- a/getarch_2nd.c +++ b/getarch_2nd.c @@ -19,6 +19,8 @@ int main(int argc, char **argv) { if ( (argc <= 1) || ((argc >= 2) && (*argv[1] == '0'))) { printf("SBGEMM_UNROLL_M=%d\n", SBGEMM_DEFAULT_UNROLL_M); printf("SBGEMM_UNROLL_N=%d\n", SBGEMM_DEFAULT_UNROLL_N); + printf("SHGEMM_UNROLL_M=%d\n", SHGEMM_DEFAULT_UNROLL_M); + printf("SHGEMM_UNROLL_N=%d\n", SHGEMM_DEFAULT_UNROLL_N); printf("SGEMM_UNROLL_M=%d\n", SGEMM_DEFAULT_UNROLL_M); printf("SGEMM_UNROLL_N=%d\n", SGEMM_DEFAULT_UNROLL_N); printf("DGEMM_UNROLL_M=%d\n", DGEMM_DEFAULT_UNROLL_M); diff --git a/install/generate.py b/install/generate.py new file mode 100644 index 0000000000..378975c22d --- /dev/null +++ b/install/generate.py @@ -0,0 +1,58 @@ +import numpy as np +import torch +# 设置矩阵尺寸 +M, K, N = 31, 31, 31 # 可修改为更大规模 + +# 生成随机输入矩阵,类型为float16 +A = np.random.randint(0, 11, size=(M, K)).astype(np.float16) +B = np.random.randint(0, 11, size=(K, N)).astype(np.float16) +A_torch = torch.tensor(A, dtype=torch.float16, device='cuda') +B_torch = torch.tensor(B, dtype=torch.float16, device='cuda') +C_torch = torch.matmul(A_torch, B_torch) +C_ref = C_torch.cpu().numpy().astype(np.float32) + +def format_array_c(name, array, c_type="hfloat16"): + flat = array.flatten() + elements = ", ".join(f"{x:.5f}" for x in flat) + return f"{c_type} {name}[{len(flat)}] = {{ {elements} }};\n" + +def format_array_c_float(name, array): + flat = array.flatten() + elements = ", ".join(f"{x:.5f}" for x in flat) + return f"float {name}[{len(flat)}] = {{ {elements} }};\n" + +# 写入C文件 +with open("generated_test.c", "w") as f: + f.write('#include \n') + f.write('#include \n') + f.write('#include \n') + f.write('#include \n\n') + + f.write(f"const int M = {M}, K = {K}, N = {N};\n") + f.write("const float alpha = 1.0f, beta = 0.0f;\n\n") + + f.write(format_array_c("A", A)) + f.write(format_array_c("B", B)) + f.write(f"float C[{M*N}] = {{ 0 }};\n\n") + + f.write("int main() {\n") + f.write(" cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,\n") + f.write(" M, N, K,\n") + f.write(" alpha,\n") + f.write(" A, K,\n") + f.write(" B, N,\n") + f.write(" beta,\n") + f.write(" C, N);\n\n") + + f.write(' printf("Result C = A * B:\\n");\n') + f.write(" for (int i = 0; i < M * N; i++) {\n") + f.write(" printf(\"%.5f \", C[i]);\n") + f.write(" if ((i + 1) % N == 0) printf(\"\\n\");\n") + f.write(" }\n") + f.write(" return 0;\n") + f.write("}\n\n") + + f.write("// Reference result computed in Python:\n") + c_ref_flat = ", ".join(f"{x:.5f}" for x in C_ref.flatten()) + f.write(f"// C_ref = {{ {c_ref_flat} }}\n") + diff --git a/install/generated_test b/install/generated_test new file mode 100755 index 0000000000000000000000000000000000000000..54a1afe5fbf81cd0f67815983053d5b56effb205 GIT binary patch literal 846752 zcmeEvdt6l2+W*>nX79~SZiAqRhM?@?bc~!tqnb0IfKd@*IY%o)HZXyyXzF;6+sx*! zFuXfhHZ zlq`mOzu#bEt$FXE_1;ShZF~z;$F%PJjqxBHzpxSLjUAD*P!pHZ@O#)^D1Ug8t)*b> z_}!aAy#Oo!W9=}H`1h&xF`rudJa+UJnxU~Hu8aQ|_~G;4dY(6w;lDS80~(XUg0{7B zn9qOo&)Pi{4ekEk^S+xWP#im2yJO)I)4dwdq`oV(UvBsU}V5PP+MLapTm;`W)VLV#i|t z4C+b*)S7Bft`!}zMHR^*i4}>_no2d9WQYr0Hn|p`o6HaOddal|47u|xey-PCZ3jbo zo%T_aYb%lsakvec6uNBHiR78VE_AC2^!M@AJ~ut4*&>Npyw@wvuRr2CJuI;$vnw*V z6jnrq|AiI1rFQ(quXV!ktyDJktdH8{ykF+~#56+3+M@J>9lJc>C}P>&YWCF=wk9f6 z%OKL`Q(3FlCfVjuM1<`Rdkf?*)H++L4(Fx}&_Y{Qr}MK#zW+&=OwtUDMx7XEuv{Of zi>mp*9PG18Ww}2NAdl(59W}kkr+#*IYGG3=N5z&hjVVt$m>&b2RC5=?F^StW(Mke))K6tRI zz?ha|k+R%ORm9-CzE#XS!9-dL;o{R7(J~{$KWm2Cua)jLq0rao%~Q8{%`5myq7#!^ z#aW_4m%A!Lt)6Bwzdr0W&)C*Ck`?~yClV$Lv^hZJ#lincukODDGVWaQ4fI$b@44=l zRC7aK!>_pEqYjBP#8kwQiPW-HsMv>a!B6q&tjb6Y{mZN)js@3J;wFCLqegFKchaurA{ymfV?O!Tl)ZthXzV-u$aBr;r z-Cb~ctiLUfnB>mRg4Q3*Dx16WE1d#cK*zSSxv5`S+GA<>4wT~dCVBZIXKJCvvL9&&Jbzw0Z6i%7)=c$!tF9m$%hGY z$H{VCfeq58rtZh}(^6)uZP9Gr7HJu3n}lJuaW(^Rj!^1Z2}Ny7KC=f>dtRvNY222NQOlolODX6b0Htk?L?? z)R$5bL&o9W33Zh7)u(HVfgh+B?4nhxQ*dpNt@F1r6*0lYp5w*GpIl83`3$C@;jpb? z!=bgaX~Z97p4b{X9KMi2=B?pD-LrLI2@Ibe)G2GNRYK2reuJ##0@dMNm5Hw-7V-Nr|NBP;#<18x@j z>Uh#Zzo^ZZv#TUIn*=wGt|7G)Jd3Px3)B$L)~UC?M3r++m3~k%O-lhcwl#jZ#>77b zYURw=zOaMm?gS(V|hyD-q~dV%k#;EEYH!P=PUqPZ6|G}LeQyr65ZDEM4x z#Rps%=y1JI!kkL=o8&eP1-6k_s4%@U3vsy(&JZz(d`1@tmZV9TS)&tu$e>D1YB&*= z8v3veS?Z?-IX;TzSY?%D0m#{Sj_%8YZ zBX_raH*`khmmhQd85@YP42&Qtp+TzK&(IPY8ha2W?^qc(mdNK<2> zgeBc$k#t>aO{ZVCMbc)!zFuP6;F@ zZf8Ib?Q2Mx=E_kn^MIJk5_$u7)6R%-e~blZF3K$27t~_yF}l`Vx}v9^m04u-J)C`6 z3))3m=-Ic6wk|e`Zj8z_%Pe)Uem!1`YvZ$JM};HxY}?0UXAAUO7k^p1b#dr%XqkCn z$e0~JXe?^G`E_m8+P06LUY5Apucv;{Ygx46;;?MUE8cLu{aU^G>G+;D`bK?AMAxO8 z=|L2c{tQJ;TOkUfNUwD@xk0&SJ}X@&`bdp}`W81$h!s7hK|zBBpECy-q+==YP#s$? zu>Iv9ecrG>uZeT8BN^5XT>yV|fgLDUcZ8_8Xr)L>>qxE64OQwQ+qFB-qC6!Re2$js zB1??VD@UsntCM@Eg}c^)QX;@L}XvVaXs^sJZP}KQ^x!BUheO@ zTHOs#{k+4+N7bIQ@|vExDwnmX`8~{)-LmU-x=XpT{@9$z;Zv$GW$LpDH|un=s|_k? z#_V7%W1h@?%TLhqwodhZ5;1b}SHe9f?uU*E6)N@fl03!+B8832tV!@$pSDiV2a1;R zK5D7Mj^O%MS&2bK)3Op%jI+b3EsaA-SCSGVRy6VLS@pT6RIi0KYNY&4xt@6@SjzCE zkNV0BT=)%CpSM4pyHHEi=V??@6;DX%Cq*=~MAxGZ>P{#T=*3Ld^G}E>HZareP^^+% z=a+dI&}omlXJ>;ho4Ken$&=qSe)aCngpGD9w6*UjDs(7r!JoBF`_YKBJ&q zk|Va!jzcz;N=?F2UaHX{%x#ZaRstw5#*EsPn0iBerG?^3bwp+?kDp?aA5P#D|LJro zLr?FK8^8SimZaHTKAF*O3A8ac5#*CyaSze{GMy*MZY7P>Z?ouApozZQIk#9D{ z3$$mbyL1ilm|q`_pM`pCj!Awlra|SW;$9mNH>fH%j*WuxE51EU1+sRk>oZ>F+o_Dn z;$@}&N7@>ot@7WheqLria73E32R(kgN*R%t3fKET4pFry zB(2X=Hg1vWs!M_fYr46`Izq~K%j-Igf9tqh-`RH5b!~Oxq0NyiiuLuK*Y%AVu{lXu z@73P1qR94W1Gb_|H+$N!711{$y6Rh=PBdH>Jw*|+!P_>JSC{qUnK2t$fNkh$u%WAW z+t9)J*oNN!4I7G3a?$) zbg9%7bM9r=wF_!RPlE+rJz%w1$>05wurd2hY(ElgKj$8`zsR>|*XI_LYjf;w+fEYL zj>4kjW47b{!kFz`v`|~A_RCD*@e@pP^GxpB-#J~*mNJWjjbC29rG42$zK7Bdt4F!; zZku-gVs3plw#d3Xut*ElB(R(wHMYs}@G-jW7P>wfOnDJd27Z74K&$zL@4Rg_7x>Nx zSk0IBT20j!3aljWV|~tR#JJijWn(UZua871+Y`Dr=P4t=YA%-qUBy-dz6rDhtmZ;T zOMNGC#C2`YrbC;1-i%zKK3d;-v&kvKbYg&(qs8M&n^@LljCpr<^ju3&ytS1|+Cj{cp zbWuc$RDEy!sk?1G=Bci0j~o{Tf%RNb*QVq6Gx$-hp6QYYU6Bpp_~X}Ov7Q!)KqoqU zLclT%IePx8yng6T1d{bf=VmKoRjKnV_S4p`lxFDUmgw_W-d)R!o$5Pr^hp2@2+`+! z$AnX0J$Ir{mojZ#j|Thjirc={6y^L>wzA1w^=4zD)FCCfr!O|UKCf#KY=Joztmkus zUkk%=r%40WVu?I5OXN97$ns7prJ5{}R22?3BhytXyTEGvgxC{xc$S{Y5}n$>91vnp zgeCTLsgugaZ0E4p_+r^j&Bm~;m0Kka!0)_gsKxI{?8e#PI3(4)C#p~_<$E;kpw(kk zqXINaOff{+r8BI)2@ol!!~o|h#lB5jx^Y2Akti^X&JMbpdsV; z9WAn<$H8WL;{=;|@2G6(Oa0T!9$D>o10%IX?UyY`t?PQvwfb(bmyw8G*8tmPw%we&!&L93#% zwLA&da!s(7v=(eFSLH$1z}xdax1zfYH{1KGJHc8SJA7#6rM8G%Y%Q{@R%^lWWq4_h zpR!At`rKtRTwM=SX;g+QQt^OXg7Mly9B&vaUW*X$+NF*O8YLB>&9TOtK6+!7s$$&| z@ZGG%%XVojxF_lyb4s zrF~=7a=R50JFuH`PuXj>L}o#}$+EY>F-S^p6&X}Zz~dXhcC2VHDrHN9#dczqmvxnZ zr+Rd;5En3Ylf30Q?z=~vnsTHN8;vh?-DNuxY&)NV?Ep=UsxG%nvxLVM*_d@3w??(B zzn`*?Cc#1*=7C|Bi1Ye@xKb6Ssy9P4wvK=?_^zmPj_=f{gt!x-tk7ApT4P5$9vQ)c z8dY7JsR&u$kt2HBEyUx;8C~Q zsN=aMXI;Zq>TSJ)Lku%lL?^D{VmBOm%gwXmW^dl*;hFhieSw-q8Rs=kouXP1Bg^F$ zw~(pxwZ-#MO>sW8t2lF+?Uw}P^Y8wzblKJcTw85p{GxLRXG0^Ey}5Nd?!sB3K9~Dr znXQz$h|-^8kRj{Gh&5MaZGl%qt|er9UZ2uG^QM%~3f4107MpE^xOW9m;w@BfL5VtO z-vB=FNm09c>vo!1stYo&gqW99Vv33h!}G05m~YvG?Vd`&*6RcDs~zTBm2YG-4Pd?U z@y3(S{$jThFjGR(8+LD1y%n(@^GB<=*BL-c7eU!I>m<5R6sU7#JaslkHD%mMjqaz7 zC(mAwT-&p`VuR}&r#9uU@VTPpJ&|N@1ggwk+SZV9sWarNEN@MQLDiMR%^gOX%^Ia7 zZxWJ>e+EhO52ExyN0dG%f0X;?J6f7mDw3wV2U8;LVu`$6DcScqO6rs5bP$!QggpKB zog&%JN~N9cv=v5pUSVg)MK-kn9Ra+@cNBeXdB;?eU!1iECDR zYi(_8AiHLhtqf7Nua{~VqCpiKkLRzuKyy67BOdnj*$|>S)u~C4&>l$Z5s38JH&FT! zJCuGb8+vohQ=eHz>ea=;lKk;V``Q%TAGfmzqH9rua%P`2>jP1JX{9pTMw;hA^zdDI zv3aswJ6kgDvRCu`Q18+&&y(m z2WIG==6+rBG&ekeX;HLMe#4@%b;+JJZG&;| z2S(gZ5A6h*_#S4^j1uH1%mEK>DfgNblydNG-A(_5PU zp$)R+T+|=R{aW-k7YIKt+h$j(DJp7>VI@`Xv)-VZ$#ZjWAX;@wWt=o%;J)5SMP`m^ zg7Hh`W$foKXBmIMXA*?txa4PkRBtOHzSUcJyFFf*w*yBGDU(#jR|eXXwjENA`7P|F zj9+zpFvEh(f`((2#>*WaXl+4nnkUK~m9p+$zy(atJe zc)SGf1H`TNChygOUNPK{;e-}yd8jRK33iywQEz+27|(`}dd2AZ@L;bNECWo(6fjk( zNKXAy%h-z~w7pnM+fx$8p5)C8$*-{|nKd-YU#CfCHAB9G9<@1`OpynBDNgFn`w^x3&+Mt|OR zZjssFdE%sWTeLg#CcIO5q`a=!!7!CppMHw>AfBQw$j9${D*PZRQwL_M>7Cn+Uo#^! zifs(T;oPZaaXvlAB~Yhj9!9n9B+6&B8hUemi8JS5Q&U`fV|esXiSGvu`8UHjhwqS^ z%Son2=Qhci+t2tOJ3C@5yD`Eol2ckL#ZFJvk&4IB(z406Zv@yp;WB5Et&I*|C2KR^ zNv|(vuQQ}X%`?95FpTeq9>cyLoE`D~uzAGySjR}_PgSxcId`+nF>%Me>+t!YZh1n{*E#H8rb+M(f5 z$v6iWt=p$anpGP-DFNKzt$yfL%6S~tO_PS>srrqhq``(jIoaN?bM zkTb=UXr|I!=2h}2zlhkm?zvcmOgH{`}2$)OrvsGAx#l{S`L9ctQ3 ziHya|2e*cCFJ2T$bnpy17uA($`6*~NJT;$zQQw>!E7RH7`0EmMzE9Wg<+7X5NyeZn zjm6UM7%_SckEoTv+ZMpUC^eK@C>Igo+LD)%o^MBcnQ9%jM)-*-#^}*C0@2E)ZUpOU zE)@-46meq;W9sV(jW zmC5wl_PDUb%0xQJuqkA7#b$Dg;mwd06)WPw6Z#&m-H&^;Km4QG)X-+uIb=q^G1C0a zjGJ>@_J_wGZ9eQQOML;~m$i)hc=BpZHy#8!!PzDOh$4U*h9Z=k0>9V9O>s8{Ovspu_VXLMmgf5ltQ62ukSI4oR8Eve}A zD1zMh?6_UM+ugUT=cmpi<}FM=SivEYSZeeTajqg8{b>(~(rZY)<2G`e_SW86pKzh+ zv`;$s%}TU4V|}{X=EA_k=RGre_u-cA`;2a)p|CjheC}c?(x26lQkzn;5@uVBXkvMN zCN-a$YkW!av+tbojLE$3gR$NToG`OKDX474Jq?SqolhNa$Vfac(C^*nzHd)$`b@Rx z=Eou#CAxYfXee-SX5S36e|HGHWrPgElvovH(;%}Q8z1sUg)(*Ck>kr&M|RX@S+TWQ zz}7)mCd3DJ(*t!w6A~}qXz!`(oD(k_s%{Nxo0EvK^|TdrgZCioGyz%1-a*!V_ap0| zYn4hai&i~0mWbxih;y{L2T^0BF(DSCYDWfays^!KQ5;nxIYIll zg`>o+9PazAfU3Vmq96vz`d@qYJU`OCG<(z4!0VnjdvewfS6!*kZoi$2J&NbW%q9!Q zZh%ZIVC?XlcVTS&P6KCR+topRkhk1~GqDYCV2tLYG9-kIA?w{;Fe?UJ9dP1xh%YpM-FYySo;%WyYAgzfvMgUhwj+$KKs+XVI z5dDT>Q_~8ct6I%%TzwsIb$3XAAmD0^Qoz-fn=9|Z)uP#BxVlro)gliouGXk5xOx!d z>MrFNu5S3JadpUTTy0QgZ}#615tnc`uD&{krtZeoji4u0@P36Mvf&Mo6;}^>f=mPA zLpFfjc31wxxElIn#ntV~nS%nZZumR6+K@o5_xTmB_743mT-^h>+A|5`>Y5d?cOh$9 z_3uE|b%|rh`k%qo?GM1!xW86h-De6Y53Kl2TwSU1yB}AZyH@@qxH`;=t4}#!@meu_b6v5F|MAG)C0Ksj)yXy?5J63!PRwbq{?`%qh<_OM=E9J^E&Lg z09Sw3@d5T-cjM}JYkE{ocj4;a3%DA*^t-olHF@neuI_v0AI8-JdYInwD{MUvW9vUH zGI{SufUW-)PUrwdTV#&)<5V=wuijjBdtZm92L!t)&@?PS>nI`lUQ3G1@HfU zjkSe5wx8+Z2;{NjFWoZqVvG$L+)kXorU!g}4(f{d>GBPn$Hquo^fZNpcSE=FHmu#_ z0B^%O9!n;h6-k+_2W7GcA(IVw`!_P#j0JB$a~p4`K_(mBm&q>uCo&=Ag^3OVh{^*E=kXDUUJ9qm0m?Xg#q+B|!1K_*+) zen?ro9p|_$sQVm7-N;FsMc>J1f8P<&prYoD<+H1meyZ3+jG>8d3=e}!@NbOSOr-mak)^O2@kjdWW?72VU^3AZmI!&Yjqv!ul1{<*U zT^Z~(c|rzT28jL7w=>wXt6jO5`5&L{?F_sYa^17vkhA{g%wZY42hD-^w_EOHv0vaC z0Ac5G7jB{bFI2*+p>S9=v=LSfCE-;=W?4zQkev@OFSelV`|{YZZV1*rSo7H4=N>km z*!@e`%0^{Zg53uHw;H!4{iAv8rn9Cd$YQVDP?#8^%3rbcs+RFUk}2WHFE{c!WU;R` zWYy)!@_KP5JKK`U-lPG<4Ve7?O!fuHWM^brGuaYrCcDv^$%Z^~p57@-BrAeUws=u4 z9J7gtOBoS4TF7MkWQAp1&TP-=&E+QJJoZPE(`zA*T{P8hDde&HMlNO;vXdZ_-H>D4 zvkCIpjmwkX2wR@L(IDip6&t2UJ`itLB~+?H;O!qRij5aC*s_vri_Vw=lIQ*1O!kF; zQzqNn*^&F^o=o0MA7`iT&SO7(JCEJ)-^pXk&rybz+!kTktm2 z)T*gRJuEG#8K#yf*9YKjf!-s4RW|-F-o8Jl-I?|;$!Y&D-u~C-w4Kkby9aMubU1$4 zok z-j)aaHr^gvH-hmt&TY5%0Nx(Fvu>oP9pmk~K0w>z^rwHdZX^}5+aC*P`vZ7moA&^; z9ds4YcIJI(`+9x9HM?y=+YE0(+iJ*elMW9=+m5P34_Y^J?LpaX%es-Ml-Uu=h@bAs zZo`_9Q>wHf!&M=>{eh@`ePqYQk*=#6rHZDuJdOV5NDq6>G-?jHT`tmNkh8ObN&gWJePX+zbuqx@k{5E}8ew+Ty{I;-a zq&o4`rb8>1Ub~&&&WY>?ynVePE6{?rlX5ZIrndmv9_Mu%ZQssspNIT*#s+x9h4b51 zwEfT*RbHXxub1kbzyZ~*h??>BRIX+u2;x!{v zUInauIm2#4*YdFCRU0j9MljaC_MqH$RYLo3V(s#A|6j1SbClw@uy&JW)d*nV{|9K> zGYPL5ao=+Ps*!&Y)^;|}2dusCL0EhGU28@@yp6RR|DoKrb0V=}e zeA4ZI2G(As{x@UoIE=Mh*ZmK`+Q11jYu<`~5^D#fZ2UFW4tAM69+B`BynMm5N51q> z*uXv#2Oo#bhe)>wyq=~#fIHPeYCSwqoh~2Njd{RkA`-e%l-aT4CyFgSg}!vQ_fys|gpp3qor6R>k6zTH0GQF07V9q-n?d zw*DEz3eL7qEX?NOv;AOijFUkENBqMUj$lQfHsceP`>I1c_Owc!4mg7KZcIu?5pX25 zR%=R6n9%!46>$}6;fqyu7<_zBN~pt*rX8zY3^90r1`5_50T1LD5333Pj3dX>Ycg*4 zrN&C#5BkDGUz*D|9>+UJ_-EKGqq|+s2)wTr*|y=`8!$as*ZO!BpF7v1UkuTO`gBIC z>G0dN&QMwrZ-^1@9{3dYgpj8su3qhP9j{UpO%rd6Y@_@AuIUy-53}B#IO_}O?;p5J zycoVXOF8++s*G`8MqHKH_5m(TM2@!pnnpEzm!5KE$t>8D1a=)s30C-L`Kh^u-nQI= zEF0fHKf*<1m{RutF(R=l*+*@+wkxhG@de<|P6OYA+u*iS6_dX-hNO(x&bzmUgbJXb zGueeBoqYgzya*AblmXJh&VnrhNY!*s6fosAyu0v%f zK0EGPK8=XT7_J4%@O^h=Mn&TF;}wa*-T33vKep^KVt%_HxVQ9^kItNn?ZUDPz(Hlq z;?;tdYR-AU?ia8s@Ux~?O`ou)b;%&v9oQPwDUAKqn;(58_}I`Tp#OHnJdalZkJv9? zDq)a#VmU{(I$Bn$PK-l(@$ZPT`P8)j0oV=1;-e`=*{3G-_)}$Z?|&Y#TQn;N-C5xm zvN;~)CDc>DWI_ZbaK|soG6`I>bIay(`OFm9J>$^LSo{>B_JIX}g=W21yR@%jIbMG& zu}ek6OSn|~DVO>48L$^l{C;tot}MnsqxdVM?aQO-wYKpEXJ>mLvQFpw;mtT}e_k+| z&u!H+zay;I&!=>l(CPrZ@~~oa)^XT>!L5G?^W^&h6Zu-Lz+K1lU!F~!w?E;La&3lK z%;kM!gZWCY&5DEU^KE{AXD%^w?{LW`NXJbzbTwda%voMEKZPRq=vuzP* zgqm?SGQY)TTZqY={1&D!P;3jX)L}laPq#c1)=O6EGL@KTVcn!4RiYd;YMRjEjLd{w ze69S*Oy(Ucg`R}Vzx+wiMCbuM-p$27 zLwJJvci;ug=2ucfg{Y%>4El_@ox>BWjx^W_JS@|lo34Iv%j*P>8V->n? zZ`GGaJV1jajPlIRuhM7paYag?G!6Hk<25AEC_Q7L;iIwg`7ZG9jHw7z+k7xJ7Y0jL z1nu$Dhu7EWWIEr68Dy1*cVaD$nyci*@wBFSeFXF_{BiwDNO|d&La< zO?fNBRbD#5c90|UMI0Ni@25)6KJK!{S7JB=v&2j9W`u5rM+h=FS;b#jxg%)DOVG59MOAVj+*&`5nOaabz z5)X>p4f#DTm~r)p1Br^ownF_gJG@Sq0%A7bsU5)Ft{uvZ>G5{2Phj=+#yhpn!Ivpk znsXUPfflv>RiIVAo)c4!_{n}CohWiQMAk~4YY^KBwGQOJ3bf>F2`hI2h?vfWlsj?@ zcQ{tW33b}?Oab0&Qp1Tag&wqQz5TR>3`z~RJ}(b;zzQf|b*Em;<_FbN=e!E_yjR?* z*RtW>dWIOUF9bxB8h+-;ZTcCQ)AGcr!^O2@_s*o?KE}LZbf$W({Yl09PWc{SV3l4= z!dS0Ptbtz5Ek{J?{7+^<>-di=;^u!cuC^kM2pz7)xKN^-C92AwnI4$09q32giwrp~ zoJ;Glvkm8pJ7}*pqCaS;^f@$v-%!FDTFNV7PJ&x(`mA(OK&)t%NVKMPQ%l-jLkz}Y z&@#V+gqEcpq;#O2un%5)RZ(V4`bU%qR*;AmoaFLs#p%<< zcATTFSgWH%Hg9rG4EW0NBJM2gHy7u;)*(59Z_=dg!k$c^247miUQiWl$&H4@kfe$v zyepJfOq%ZIaln(BMX-0>-#R`!j;U5<8QpDf;qkDHgxoR`nHG7fJ4oNBr-@eA+J>6U zkM(A@>^Tmy&h9|A;l`qlk!6XIJ8}7u+S#@w63*4NlUHk@*Oje}EkbWHh(&!%%-U>* zkmT^9+28MaDspIPx8Lr{U7GHS&gj9aocbb(t!;UB78TK?reMdp)G+YTN~w67=$W#z z80ZtpCETL#|2~TfZBm<(PtHwKR=`eicrMfNr5?T^uF<9LGp-vL5?cN^fcuKpWrdfu zro?eJeQ4@CrV~-JvN*1kM?#&8>Lu#_W~hgP{XRaPYk4A;B+OB=`q7bZiLgm(djva> z89zGS9upQ<8Am4?Him4f*hFqNEEm3O5M~N~tr0DB_o0lLStj#ee&n7LlicDzky~eR zA~gv+8iA$2mouMM=tM^tXS`=z1m00F(c%kH@EjA`Kl@s($vf&z>^Hv;_d1F9l-v3; z*6|0>Z~hJXryfYZrF67(jIliZ!Hr19p*GFP3*7gh5 zA=8)mzHh+0mNMffeIpoob6I_W+12~fJW{pVk|$7okq1Z$;(ATKIIyU$$R@`247B~l zH$aT0ij5PCM$!-3BCd>a1uZV)UM?qZhI{zoNZIh7KaaoTk@3431{H*H7n)HZuMR(| z>p)(o1fH|CBFr1?`_fq_Pr_UaSwk!-Omn*;A==9jjj#PfI??NoTAce?4S=V7%ReE3Dq{slpGa@ z@2W#3bQCSzRX+uLBgST{VQt0X!V^3nM|QHtC+>=%kpxrL}1e0Mm| zM`vtk9ub}!UY8m!)M)GVoim8;_(g^g&9M=y#l}fCxA0wTlfL!LVReMl(|H!?4$>s32TQ6(QdzZXwf&l?UVS5e{3Kco_q241oeuVa)T-mP zR47?0U^*fcdnJKN$1@*&9?=3juQ^Pk(sbPXa+*y1b4=C~u-7s78;`?T?f&CXO7;!CcAQLHcf52< z(S{vsbCXlU$(KCRnYg!iY_ zW_`9}N$1kmrXn58^R+oYsa&4B+m|%yuqR0k_5DBzzQoxPdlK**hojz>jDG@EXqFaR z{YiFeC?z(Xi*dzX$@t>DUkqz2Hij&(ST67spXOWcPk?KP?ZI-4ZgWOdDdEg zPTAa#KbOE)pi=%S`Ls(x0?eI0yi&0&l?=j{E%uNS(NMcw%YpTs2FxV{YD+@UI4rOM#FBu(XiX^0@&?$LHd)aQA8;4 zw-E1}`cUz*T2ssD4+1A_K-t^_qt|M&=D)VuI=_SQ_8Zc)Mw_kQ2S>q*?X@~fW^r1K z5LLF9+=(h4pbw&;?B8L3f93PYKAo*49tMaY+CaScp~FsS8@CSY5FSat4B}Z~EPwab z)>jH5AcNNuwNlH7M}=`!5?YUq=(0{iWstrfC>^^GXqGK}BT7v(oeOvj*Pd!?sTtZj0yU!tNMau3>RMV7K}$%} z;lqn86sKX07@lpM+cy%j5i}KaqGF@3H^gU4&ge{x$?QAvu& zzbNahPG86z@b=FR%n#Cpq;vC*qgBr3)3qKGkYsWHT-nemopj?>LhJT0s&A1L%|#l< zf2VfJLU=1a2i14$X&%0RjYASu1gdWhGV7UmxkTlU)_3oZ4C<3SoDC(Oun*As!Mg2| z#ZSs53{8Y>H#*rYC7w%-P(M48f5=?jH#y9>G;G|OJiWS=*rZ8)VM(hZIpYgHY8=V9 zFr&OPJIXkRk22$xqx^V&lyN^e%DbN(Yb8x-f^ z_qB(C`|C!rmK;aaZRgLCB)`K6F*_bZO!13|FJ6V1lI@5u`3qtSzCyeXvUpC4@0@!T z3i!P=zE^Ppev90D72m=y+NBrh^`0b+Wq-S+NOm5_tb{MiyD3s{Uy1bOIzpOr0O_|^ zAjMKfFU{SD^bY@tm^U0q=Bg9Pm`IZ8g7a(eRr+#!Qt@g>H4E((ub-_}EIC-Mc#W@C zyrQgDEDo<`fu`b*Y_)ov&mIX)ldyJ>WT71k?O3400v#4;vOwGTB!vypZn6v4Xn^^(_b&6T|U zHj3W2Cmc&#^7YKS^Q@Aw9(ErJ!wS>Z@l ztj(H+B)Rjz6UHIhmZqwAW;@O-tKMB*G;`<7;)cEaIVX}Y7K4m!5%2B*^0h~bZ(wv5 z;*r54ghyu+#4abIk>}6BxBA5l)MjBs!lAYj?Ps8VFVqLg!|yyupEi2+4_Tz&;YjK= z`G{$!Nj>uoNV^X)Z4RVD!B;b_45?V8tX7kk_9 zcv6v^;sCq%k?Zj{%4Xx@zL5 zb1584;VAJdR7e5~n+xGs7+9EHrr2V3ICu`EVD1NMvkSEj1cUEM%BCYjp`TXtEq z=j&e?cI&qvmn(Kfeue2MrXMfLO6D-#XS7)Kzb&*i+f`szIP@&uJJ z@DDqTwcNmDX;#_NhxW1F!16oxRvM?@Ql%6)HSA-{HzWQ(9DvdXDBFJSTgo|X`J0IO z51^g9fhe#)y+#qxu$wK9M!b&$s*IhxCj8+;h1n$Q{XAkSoRBp4kEnn=y?VBHLm^xK z2gL7pK<%sMu4X4-e!7aYDYpDk#O${RdYJRm$sW%5sgn@zji34( z??=WA$C}%=wlI0l-?Oz}+YD*Gr(Ui$Pbv2c7*+&{xF-x58$v z8`#Epu#NGB3Rm~S<^uOZg&XLZi$`Je4)|#|H%ZFIgH8?sx=t>(f3# z*(4rEc*9(7k1AKS$K%nchLLR8S6$4OL)1AyqHL<67>`VBi5(qQ!j@OxH$E^Xmht%( z@qV;0KHfLbm1@2EG^t2V`{KWfyV`x@QSUzNvVKiO=I$;L*F^ z$yio%%VLLnrXw5=8ulqcx7yIAVh@!OF{M4Gee@dHFt7Ov~EwhHhQ+)__y$JdS(MDDV89~ z&besKb}f##FH-X?@pc#N*ptOVyp`nmBMrpanY*iZSz;}Yu~86XOY9Ku0kL%q@hn_R zYH25;Nr49Jv41rB0Z4545J3kAl5*)Zvg>c?jNh@YW}5 znaA$%_Wd?eyH|p4?bR?erE#p*ttqaCUQp1BF+QhKclaC`(KBzrbDYQ3=_JK03M*#f zC~}u&B`D_Fg}Kc$+-KpAz@a~CJ1wPDmYA-mH;`OZ@|L@O4LqBMCztHaZysicwSJ4;?{K^&^daMmI-M5KjXwW7uuw--KsS_N3&p*Wss~|&*z$U?QW`br zY#G6mHXz2&YN_5}sg;b?lMWy)pz7~Gzo(BcC$GePysvNPX&)?K#Rcfo*FvAP`vAjP z`?U@C%f%J?;|l%pg?_jQ9_+T?as;%S@dfS!i~(p;n2zyd5at?tkOm#=-Fy#cwl?Z4 zE{~dWuag;_*zKGtw4B+2#apOJ>rFjA)*sIJ(K3M=N%Ig-4G6SCm< z*ViHm??~L@`6$@c37((D1T)wN7)$#FEslkMMZ&3auOb>W7tUcV$8D{B&7!qfV~?D@ zqp^Bw1F0?XK)odxbrvw%lJTgzgohXZmM31=M(!=f9BCcfM|*WQfFJy1Ka@oSBDFmE z+q?7rX&}=Hx9L-8au*My0L^e}j%2(Q; zxt0juiSW$Ry+ zjd_&e(^B3j!jXpx)#r;uTKBQ>(bC~aqML$d>iF?6KX8Znfji6(Je0qhO-T4i#4T7S z#xs}o#WbU#!CUHjOJ>3d!tCO{)>D5qyMP@~ybi**vm)TbdE6$Qb_$Cc_A)Sg@YG4h zTf9#K1?PB*bO28gkVI~+a%sKE}!^O$sm0kvIfch+yuux;nGjXYmr=EV> z;+v!}&*EN9o^iKtx_{0Ay|Q+h0ShKuyZNkp`V%*<9!PiMZSQGE;VT_IyW0BTpF7u=Z%y! z7k(t58W%t@<^czV>$`$aa1O9sHy4x&<<8zhxl5*SZ9zc;4uG$O`c^-1KR!%i>G)nodBYG`z)^syh)zL%W3g+dJVNTkeOLsepf=)-K&?K&9CK=<{(|82Fv> zfR3Cjo(N+j!H0tH1mx`m*od~G)JluDJ#9g$;9sXR0!sBh`*(fowbS>E(c)zHyT|Ch zF^OhkEq45X_Nopuy4lk1AKEijvx>_SNU$^fu{Y@A20f7$&sb+$G(^F zZqk93`>VB*q6tW2C-IzwPIYT{hN0>-SysKds_)QX^-#@rY5Gf`sfC18Q$gs}X@pdr z20T?0`pjsegl{V3B9kX`lkB6mPHfT|J#B|Hs)Y4^>xMn_{A^M6&W3es)}CKGbK{z% z^GP$87cQ4-W)my76mD$VGGlB0)|JzmrphZMT`P-8TUR!FwdV;|(ND?}a&n zBk(2y5AZXRibjAhxb_eMB4C|AMXbwrh;{8mtYi>q8%qX;^KHU(n?OQB zM3RN$<-H}^ZQ~Ia6*EurkT25Pv=bneOvar?j0Z@>9eVEZFakus12`@KjthZf?ErGI z+0Pg!yAL~xJat@w9p!M9kg>#O!NF{6k@g_e?;{ zBn{#x!F{g==vh1P847&DyvxlGF-6l6?*-3wUq-SXt4VeOAz~+<6tSLHMC_#NBGzkx zh<|80@UTq8PFXEtA4(PRlVI*yMgcF^#jMK}G3)xZm~n@>oHNjL23;ut{V7xa+)&LCKqy(Bw+M8vyY0ouW0e!@wTaSH~1 zE{ov#Vs;{wdrpCJg5)P$A=%0J{z)9XuU5TF|W<4D#c5*JUL0P_T%{<1%R*#d<9jvk%R{JkhL+jAmV%7*>+c zz%yugJ`K4dnw=O)vz|Q+JE@*#y_#s~2Muzf*@s5xlT5JaBppnjq=Knno0B#YM@O(h zRg*qbK}a)8(dZV!2dPEZ5T|a!;K!y+m%bwLessPel5)>NCy~Qm4}dzXNi{ z&Q3_5(E!&C1Oqu_emuTD1J`E=rUb6t;adDDA>IBd!RX)`W(&5C?2aj5ua01^hrnLz z!6P++N4g9isRumL2s-I#oDzAnU0D$))4g|W(_RK%$nhSIC{V*XgN3_*g)`cL@u=V{ z?zM85#loyW$3q=k8W8nE10zPy8zaK*{hKr^YK%FKBM+jm_4o^`wFBx=?ckYF$za>4 zo zZ^X9ionqvYA7;s=*^Pu`0_5ZOJ%%E0B^bJfwO)@xM1wrB^`ZDS8&hGr0#^lDSaiKBdrxjD&KE>uj$?M2QKbk^6}D-Vvi)epY-0!cQ1F} zY6&s-ns4-3P_0)e(vHHfcRJGkJRa5Mt7@h@1*mP(W8kq~M2zPu#P4(j?=b`MMUmj8R)R&t z^+Rwy1+J&S^#l=k3}5gDb0Io`hjq2FL@?fEK6u(Uz!OoRN7KQRgo6IWg9o9&>%lel zey~=QpUj}CPE#3nM=i16ku5j~kxWOhTApBwR0LbBB-j!K!TulC-aVj+Yg-(inPg^? z5Fi?PD5yw;D5q5lidHQrpd^ZlXsuRjJ=D!Zu@$unwMQ%=B;k!1HCnJ$ZpD^!Y84bJ zR8XtX+WNe$*50-U86;?_pyj0!_^mxdeDw6(@BZ=qp=4(EbG`T4d#!ENk?K8DNcCPd zsea!In#>HEtcO(Zvyti#u9NBy8%WTEBG7~)(1a9dLJBk?1)7ioO-O+zq(Bo=pb06^ zgcN8(3N#@FnveobNP#A##<+|TjggF@577MS*IY_s_GDph02?L1Lc!Lvlkz968-H>9gn;~j#Odd!2h7Nxk@)=i=Ra_Pllqd4U{Py#E8l_rEkZKF zGFk~1Pd6Ey-%nbU!G!V#@R4gjS#Gh2;f(Q8AJ#Hd1>Cf#d&&Kw(%m0ghDQ+O>pdv8(~xT&$-*U{woPjemmGLZIkEplAg^R51at8U@f@ z2heo|=uQOaE&w@|^#6m+b-)E^%@x~R${s)Bg$A<%Mx^i;@VN_mb_cw=!(Wi6W{-)y z4Fq&j$bd{O1v&yc*;x;C1az{y1?Z@o;Hkv*G@}H$iDaxVwxY~nr?DVcu~haqs}*NK zwtfe;Su@yXox~{97_sslu*qB`az+&F5>F_9n5@}ou~6V`TtIe z3t{CR&BK`tW5Oirg)D{PoNVQkEd$#=z>ppDWFBr>fL#1j^8iSCtP>yy^8j09$03*p zSfe`|U>;!G?Y6-@z#4Tq&0?6)4g3t;0VezmCh#zTITym5cfg!2z#A?Hg!#I%Lme8x z9p(x18`4RPFb#qE0W{H7Py z*UeC4m_y)c!uF~j-reNi4S{zIWz5Pthc%H}(Mg2F?vC9EXOlL7CnfyNbw+(eu%wD$ z7X!^oY6$bo@HexXVDVo`HDO)^e+?%Hc9964PY~vX`1u&DOrR{lm0c);eCRZ(UJSX> zp$`0})WToUA*c(_Vzuy>J_L2)nNbUW*+WqOG#$T-Q+(0upRlU6f^Hy~gkbo8RZ6e~ z{!a)NH4xf_V3!smJf*^=0W#JGyEed$5J6VyF?aI_)6J9q=24~#HCT%rIEr^*aR!I1 zcC`Emk)EL3qb5+qe#Y*0X3s4T-V%n}W?>k?8eP#PuF`xjL4m_T^{8?M&R9%iuQ*cE&Ys@~z@u7p`c{Wv1&r zAQtx&L+@jPL&2YRF*ifiqZp5QW^3kF7Qq&d{kll&pf< zVcqkkbU)5%Eu8qY9>Vb)HqPTC7RMjGk`b!qcWtxn@w@g3z z)deSS9#kpKZp5+;F6@)+{X*mu&fy>57G(7(gVQatJG*MLCuEgp1?1qltLoSSRp1>s z(Km+e>W90z*I#*2G#O5;G{ed7Ngv&@{tED^`3Kj&{*5*5X`ekn8#d8O`F@f0pKyjM z_qpm9KK5QMf~;1g)*45`DYb(Dk2l1bjVN^!DN4v7#4#LU9`HDaPgF*ngj*DX;C^1E z6UD%K`$|DLZKz*LEX!-6 zMGXnW*LjA96oPV}pI_pBB|qHbm4YUZ8wGF|c!zf*5=jVZPjSrB^_#w(N*rL#X&`Y3 zmMTf`ZboJqvBZdD;vl|k37n8iI~^^{nQQ8&q-Y8 ze=Dz#AS2pi7RsX_=5RTjQ+n@zAii(kwCrEbdc?z4`e}?QZnoy8B4D@4#X_bVF0~i?qDg=i-0XSi`SGJviHz>l0q?U?qq}|yKf*^wmqyp<^>&c zlDk`+`UWa`azsrTxNb$xBh4>a>;{tZms6`$f|`Cp+}h!s;QGA?wVASex+2Cz9G&V zmv)E9*$kR0%!fTvG3IG|w}%dTVr_1!&u#so>Fw(ejKU)^!-(Mw*i2PmMg-i6KGS0< zF2xRo=p^wWm>uo`PFXHA>Qqy6!l8AIYDVWQ)r_7rRp9k>#L5W^+c$8>8vL_aWSHVa zw5-=|va?35YKGMSB{G;TEo-!irHRbi@U10Vo8GF(_((*h{<5>wsxMMawWg~k^`w_> zYWlkrqydl5NqAJ(1BsRPNc|iPPjb0_F5C=9k@Lto###4{SLe<@ZjlgTX@nK{1o9u` zDVfWZz~PNFzHJ@tz$90XfaI0Y_4I$KkcO0FNnFw=CgWJJ&rKfq^0{)pC zcXBBFh8w^mhVM5whbk*dJSBGse_k!tEIBGrsIh=15jt0oy~)zn?I zYQ{lY6?mLgP4Z)WPK-UN4)l|%Cry^Br$$KCGhUIZ1LK_3lQui4ry8BqGj=(t0}nc@ zCmnZAA~bN@w{IiU9FU>ET@s@jcT7$}#0id0QZhzop1KJiv1PIw@$6SeEjXq9*Aip< zk+gUz#Hb24iVxE9ksa2|FH>Ln4en}(xTniL^BhsEgWnGe-@AlZ#s+oGg?19|ffv8w z+lphNuAD7}=;S?d7LTRGVXO2TLnS+)_fRrD1BG{j%x^s^enWMPCMIN_Xs9*buCoB` zBc_K^x-BKbXqug{YtJo#)(*Yxjj*gYYKPsdw0d(mb|5|Nj1hr1!~*6sNEF2e=Q1Pt zwfLr_(WooFr8Lsym8xe>?N$PgO>i?3oHe%|=kdM41O9@1+}PfsUxxMMi~Q~ALY&I7 z3m$w9=;pPDv&ta0f!0~*4C1px^e{NPU3$wi^`TyUz!rk#MaK*03U%H$#kW*bCzBY@ zdYzJmvg#h0UJd6KBYPkw=t*SC7#O=p1aJp^Fur{|G41=R3C57-_U&mCOX4E{3K_)2 zgNNWmEloh(Sv_$7^p&c?@(9XLNqyy&Ix9b$(lttEJ0;BKR;)0axcK&t1M{riAn8q| z|9lCg7?xG0zLMUj<(DA4f||>6Cgj59QoJ^9_^j~DbgQ6&#Obu|Gqo7z`k8;Tryb^s zcCzkbY|$ttJzk74xGDO?mVY(j&!b}Dv#)DuzM)2OCh?|4rd#GBlfHn!96HQ zq;^8$DJ(ZS!EX4%Oy<6=hn715GAR6^%SvN(C?I7iV#P zNbC5xy&T)l$Mt6S$V(FTHVC7(rQuPpG`4HPhU4~kz70`?aDscVk2wz|A+U1(V=q_! z-t9!4p~@LJyN~$vzt=$oP2omhp%I?F(&I?S_cue}jb=o8d|s7M<5nU(5BIBrld{_zU6!3R zYQu(vn5ZYb+8Mn)NB1aGZ53~+k5)#qSnX`(Hxox$VRl3iE3;2 zx#F4@Q|L1aar#kE5qbHepJ2#8L_0gm>gDM@fjX;!BaU&Q%E|Z`L{RLh5$FDgBZAg)!US z!?$YVH(>qovuM~x55AG^$B{UTdU4E@sjVz~0^G}|pM$nDqb!VuLhbbmBi!tBO#v}F z^)lk0DbhHL)g2^?0ou8i0k$mc2EwW3`eB3-&e=P@+%B;9pnT@JlGgK$E88sWWeR0< zds^5dlzuMC>{f`*f)oHEKrWp_-?)q1Wr0%;?;WmmIlQ;((B8e&D2v&;H}nIy1>?2k z93&R|;8BBJI{f1lL#>%D%_L{)BMxejWCRVT-|d#39#`~xH-&~uWIiu#GhP z8f4<+o!*)vv$c;e^{)m3y}3?;BqIgQ18EO&Df?XDgCo#Vl6$~4W#7;n6UL>4O zRiO8shK?|z1tK49ERIZqD6F-PI4nQFj{r+{$ufZUo-fIWmYAo%exl>V-S>;=mH~W| zI_UlBmfe$y+TDk(qFNIry2KLX95T|m$|$~Yl6!ZcTbpT&*i{F62L%sctslsp*F?$OtAqaJj8UuQ|_?!WL2a$$#N>5y0VP{X-lgaD@m_Sk#b zphbPehj;G`N9m;jsVkK$M-lXb*FQFjjdSN5&rML$mt95GMzKLFgIE?zceg8w`Q8O$ z0L6xSDZ%Yv8ZjMo)eO=LEX}?D>9i!oT652cf zYoaOatWYDaQ^D$p+f`3S$=ZccrqTQ;b4umUe~H`}UnS!sPF;!2^`n$4Ly3_K#%Re% za?bGMaI2yOGOdLHJ$~0s8R|O+2H_7eOlfpBQ)z{$AVY&p+Mr~8#1Nq=(efBm1-?d> z#^xO-BVVdWUHQs2<;p1Hr3GQyx2itTA+p>335IMwk1+(;!C1mQ3oupRUsy31iMMw6 zNlxPQ5VspwH3*-{&?lAp$_}fe%$_f4{kfXdm7=q7=9up>OB@E&Oh(c*qK4)HO#Pgq zr`tYE6<9<#YHhBGGEQr5_X(Tpn-GwN2wI`njoEKxQI6U**z^E)>pBUMmH~ca2#&ti zj|SAvh!iV?G1_c~&&>=Zt71!yei2HruOPzctQ%pZUpVXF6Yia^exXgypdJv~?0Tk6 zu19UhTvY#p5hCe>Rp1U6q)k1w3A;C^a6h!Wq2vTDRIt zGnQrY5?_+L-v>wiVaON7wwIJj9-iw{(S?xah$ra`mVF2B>Lrev`A2RY<*sg)A z9f`fZH%t3|Z2hIVsc~JW(i!dq&we-%+T4^-k?#1N3{q|w#=3+JyRy`04p*T7% z?!lRaU~{nsOY-wpB zv|CEIv?RtGo3_pYN#dJOky8`4+=^mSoN#&km3g-%@ky<+7)ROgH%oIwbG->fJBewz zGUL$zV*WvMaf|IGd1Ll-PP#|cd3c1N9TkOvO0#`nb5{vOw;qH0iYnkTA$0q78Wo$U zyL>C$Xs3swxpD%x!;SjKBeZ!jd9sdk$?odLa&@vA%f(M5X&Y*A(*xw!Houh(6fBjoc8B z4>8q*QlzIQbO!Z?^xZcKwW=Fyo6oe?x8Yi+#x=!YDI2%p>iuhX6CbYY#_Lz$fMJ3%$a%<#fz=zK zut@c!Qc6;(uet5_HKEQNkR61gJuoa@nu{cHN+hL+;$8xZhn#InDCJkTHwS{5yfCCa zC5D(Q>gG4NzxaNolb$?8I8j$KKKa=38)+Fa+z@C&t};n{f7X8dp466_e#H570?C+Q z=2H!N?UWqsW(uNz1Jf7b7Ei)S@=f33Rv)*s9M`um*3W@;kHX@lhX@@Q^NNy$A5Fi& zdV5!cKa9P2aP0c!0U77vu2z_jD1#*-_WsP@OZIY+vOaz8gHH6f{UpkBCW4ul!tQTH z%T9qe0QcV>SQ0s8|NX7iF(YETH!ayxxyAk6?!+Z)E7!WexhSAsr5 zIm!Cs`;S-M->TXVaHzune_e&ge(pG)$It)cm`8j+hK#-{#55ctIemKttA0@{(^r;p zI19&fP0K!TX-Tv7N3f`>vwucIu8B($pIGVPeDwHL%wvIP=40y#?!+WK(XA=W7q~)2iT+H;ZHUtTsg8wTB1T&Ngai zvns8Mpv9b1Rxd8&`@)u=gwh{;$y29hWEPzc?#6H<7$!j5n?_ErR%b;JlX% zx~#1M`;5ODX2>a{v(hO?jQjZXOU~<<9V~an>4ihS7EQ|9R+3_7>cB zPcBgH7gJ3Mh<-?b%}S6nTs9Yjb<{;b)cSOo_j}#zmu#xs0v?H3H^>_64Kgh%!xP@^+sPPT$kH*?o=Hyxw^L^_W`Wp(FiusHy$vhcp-o*a9&Q%EN#A)Q<9PTIz7ju7*=ue zd6gqF{Pr6TIf)FVb4A(gMeEKlg(oL*Hd_i$wAhl9BStxSz`fs4$aILrrBwTY@($%Z z`+Ph{bo&OE?f1w~ngemTaza$SS;9D1)ht0}KI8s)JrqGNf4p$z_&UZ9jqXHk}=lPKk~ z#gy{pSW5XfICH&X7-e~FC#8ICEM>QckU&V=Zn&ZIF%xn($^d>c-9r;a8p zeXwu)2<{{PyB9%cTKXTlqO_JxJD97xMTg?(WqDp7V-)NLN=YuSJt|Y;d zmnY_$A9P^qI#BT}6fq1v(H`!tlNhf`fbJq|u?lXd%eZ7TPNbaVIF$y18Q@AYr7%DncxbUjmlln!mcpvRaI;tp2dB>t?(q&S8%(p z_dPobPrxwXl5;zmo?_Vz7~ZYy2H!7?h#SsmPO_(q_8=wP_Ewyr3jCJX(^T9t{&;;# z;Wr)!v9E+qY}cgCx6mD~T}Q2@SgOUZgDCw4R`?3*)L5aEUtD|R8?)@MZaD5`cIj89 z^tf7>{WQAQ;({d{mt|X_G>D}ldaZUp~K za>Ln3SV>V_AscEq=uGlk;F=&`ukXM6BQF z=&zCQPjt{3v{{(*c_Z9It8MogIvHZ4*ZYZZ4On|bbPjL^o2O6*OKWb}*a5?#Jc2W` zjeBBuuC{c+T5s5OX!%GgzI&v&Sw&P4=V~kuAG+$NdB92w@;F>sVl`-4!o!Sr63nl9 zxjGa1Oo(+D3Qs7?hI?I|od~^JKao`FpCiXA|K8_naWaRdn+%7XMY5C~aQ`}ZG`E(e zaJym7*Dmm@Dnpey2k4tfO-^;cm#^CWGjJ_H*KT1H;#`E}*Owe4*MVK!t{JMzt3VRx zl@4vVo%Dxj7lzu{f!oKe=gx#X%6#ohsciwERl7c}ksa0`cWDeaFZwT~n*(qwK0Drf zp~g|(Pz`*fmn9?8S*%PMPTV(XP1mq?>`1!%^NA5R``c<;yPF?2YCAV}pbR!9d~>@` z$8*%Sl6RP-(slI-ElDy|md)kKd@XDs%@y=NgzQ|#UVnVU`^JuT#g!#6k{q0qZ@M^N zgXV*`LMfF?zf!u3DRKw47VwD5b<2fbeXec}J6fND(%7J;6fTnuXi7mpvVnv27v8S% zQ9T~{7clY+`D*U8BuK9f)BXaw>3uk*QQrvt`YduYt){k>CTUSXXMMI3E?zH53C??@ z2`(rLv*-o}?AGA-1_&>?Gf@ONFgRK)=T>;X$hk^GkcTLqD|C%L4Yt0;C5;X3pi)jJ z6tWf9ZGC&t)l*=Th zr_c%V;ow)!n_#`+;hXG zWgZeck2TDIIe#MwL79>XRC0Yb_$n5pH{#h@O!*HjmF@(F!ie9t-44C=?#=qP`+z&Z zw^)`G&{?`pyRKz*S;G0GL=>F&4-FdO>LWc%rF^0Vsrn`l7cIbLckp}vBD@#@ECDP7lrMJyuVD=AZLaAdgV(4?ay+Myx+}rY%SnHg+|Nd{qhA1j zNf69B=;>JtbH3s6^sL*turE-id@L$tmzxrhlQbN+%_&4dT%K#IUZ-EMJvMhWM^*+| zXm=vF8AC@!R1&G7T%Npz%VAscj)wu1Zl5%Ow8vTlxj9eW8O|AG;-cLqvgn#AOnI$) zrt*5XsAAqVqPnpn_gf9RDA@{UD&xm%gE|E2IDMSQV1`ZZz@Q+*E>w?!){mbY5C88w z$s|<7^^g^D6@=ao>FE$Wn$!^FQnR>5wuA%?>cx&i!$moo%X ztnAcBVj3dnThFkBp}ZvAe>3KcU{g4uSk+`QMhFy@%v02EpeWeU#(eacUP@PC+R9!h zP#5MXfwDOE`n1qn#stsd;G=?DsxlF7>D`-xCT>^g!?ROB_a=)<8&VU|`K0MgDOHvr zOKMr?ziztRM6NP%Gu>~Tt3W&Cq3OwEAU9Ua2+rNL6S;^-jMw4OBXf&pWoLRLIZv2_ zUQ5nLqoqTcgz2ViayoNS^Mp##aH%(@QY8MBna(UBx#&~ZDjO;Hw@LtWBiN}(AsWZ+ zas7cylb?CLqBL2Mxj`vO9qs+bNGkan_6-8REj)pC$%k6J;dH`JVELZFm_}s7dIzR2 z^Oy!tPUNX!+{)-n%H1+S)&b5c8{2)(ykm;zDCtFvU6gA}bWofiGj1O(*__DB>7jl} z9SeHA#Qg(k1mp;MHI49nEFID}VH&_%3sZsN9LNQy>sy~_E#xe{k6uf=|D?vM4M`nI z_Z>Q5(P*?H`rhM_@e(II3Hs{*Sh%wz&`8lb^nq)#Am?hbvq?0Xai1<-8Rk}dCN3QI zThbt3&3{^ z)g6hXi7PuXzQ_gSe7$x{-5~rnI^cJNhu@78U=P5~(W69e#i^RgMy0#UV<@)!q{o`# zBPz)``gzAsRM>zg6MiQ!#`S89b5z96<1tObedxfM+_LDZPfzmjPPc7!zA_|(@0o%~nRle#d*K??_{<99b5+yVaIt#F=P30klylO?QWU^!*WE_20q z^W%6W4jw_@q zzV9MT3C64%`iQ2&Hb6Ysi?MNZAK=2|7sh?S{*%X~?2$jl#qdh3@tdNPIwrO{)`CEH zA5zJV-f`b_HJ1G&tGFen%6QCDvNi}-G*amw9`LvI}lk>l-~G6mKD*? z#K+`_Tib35v&B|H`gkjxhA>pZNsi4cO*?jHu4<1i@pj0v($#|YqqbpqWG4lnmgIn3 zEX`1un;MzrZvtJt`H3#HV{f&?UOAJ9B;qfgwPwytOX|2(1N$}_&}h5Z7&Jl@k9N7n zpEsW`fQZ*V80n+JyGZF84|TP8#OaNI$Jv4mK2U|Vk|52JI_lDkv2@98n5P6!1FuKG zvS=Xqx5kE9!dq3^b#hB6M3{7=*S-CaTpECeiBvIYXU#jLGmx+{m$Zm{UE^ zBYCz+2M28zV;+HWUk>t?*6{@>l>c(+RCr2tF4D3A=qt%=q?gPPG_qjR02J?I3FU7T zEX8&oU%%4LzPxMJf=y@~Baedft)&mtye1LY!$4X8?`yV2Mysv0C16BkR z1~TFiKM$i#m<1@v%x5Qfv9z#2yM894{aJkaClp$BK;L9&Vd%g_?4G$)5n z>jXP4fS$K14>R|edlP!*Bzez>$DE2bkHL1a>yfqXZSEvJbb??z}G@w=6h}$DnJ=Vd@qFO z!G~ar-fw*TUBRp?i_cDKNzlSNA{A(NA~&7M4?C>`%^dcmr!BQl>~PS$mHBM#ZbKE* z2R?{g@QIPd;i3?7fnlfx`rhx#Abn}ci0u=e9W18El}4( zIJqZp#P*~AcrC5N)?+nqf5SY#Li10#qb1Q-Kvx0P7FMei9}y7Y^~fPDL$gkQ@hmKk zP~V??3igVi6fD_+M{DpX0IHXP!xTZ=k~;osaKQHn6>%KP#w*p1Hw3li__OU2)P|F$ z1pR`a%Pn*x#)snm7JzX6%1*Gbhl1twSo>nCdr#jD61K9fzx5&33H&Hp;_H+Aldw!# zaFqWF@5?uv;?d%0kQT1LJ4Ov0r3l(o8gBxMS@3;$3P-c$n1=y_yiEzzRr$1B$52da zq31m`ugW_Jqr+M)1Xh^>b+jusCS}LBBw?Ch*1Z5!7RZl&=sL_pfSpJBdCn&+^m_hn z`J2MqfrnT_fMul!LNLOYqfY?uw+>R8Vo_pJHA#&FH!buLzKxBm zg*NIShu?NF|2+Zv>2*kvbg*QS%Eklj^DrBv1PnFTA7S)-8$q!`8}I$j*GEZ>qdUWN zAWgLT1$YICOJ9QRk=g=)wJ|7TLN@l^34S=$5i99A(=Y`*W1ldD3wWOmRcs&Z#~9PC z=ZhbEe@21t!R2s6QsaB)_>naV67JG|-hKd{cl6`h*KdZ||MPwG`_S9ON8@!^zf8mU zc&uSS&YZ^b26;(gb_Ex(M#GwB#}3hPiolxDv4R}5(={6d1Rt3!NwDw(a-oeg)+*4Y zRSj#wWBU)tvbH$%H}E#j49I{?YcEf@H6d#P>;^s)1vv>5*-xwOCL{!$#4b~K#kx}=$YR1BawXJ)< zgiKr^!aMdg&I;Gl^4}X)fd44bzBIH8X8}-6eFHMQZCD87SqObDP)$9sKsD*;0_vVV zGSqI+f!`5)R$gYd-;xa8o=w*nSdEEA(;*|8?Tw$8~Lct8yIF|M~S4ah;mx*)e(%(Cgu zuyZy-Mxo{V!K>pu=#|3MxMZO;zTJV{?Izq_<7c1SPjU*U?$npiFd4zk-@n;A z)^oMt9Qa~$G6>$gsfgiyNuIpD^5wMayaqg9J>dCDEhuX)g0m=IE^tODO}+}XFV8@fQ)I27wg&|#B-4ca1Z2@Cjx-l;ms5{ zBw=2aa=$sWmt$D}_|5H#m{l;Ibpg2?D~Ht}cqj91E#RHZda&`L5nw|MaSq5SlF~$t z^rbL_Po^kk{@f1f^5p`S6hogsP?MdIm6P>Nb_!==*Jr1o?^uBFslS30$jTrxV%inp zrIb1O;5Bb%w0Jh?usecNAb(J3rZN$I+bQ`ATCvDJClo`3f8E_CFwT*w;%G%10 zgjSekPq*UV_@oue44SQ1;0YviipCs*zLiEJlQbqg8B5+MGu5ewJ+JN@te* zXU@Hp#VykuT=ZD(G|kI81~{Ugl@(_;kI`~j=X^Ly=7ZjMUhSJa{7e$jv4yib`7G*t z{gYKGoEPiExw!8jz4nAI%J&mp}%~ z+ccKfABnj0(g{EhZ;sbudI;)`GFLW!U&BK=%{JQsX&cjseiTPU;Ng~{dodB!=#tHJ5j^dX;4GMa|W=Z zrstg_re!(Wz}`dj#&I!sV+AC%PclQ1XK5HIr|^v|9r+6TkK@|5((RvNll|DzRjm&H`? z{Ir$UvXh?cu+qY_el!VC`M26l_19qSaPvaUkhmckA~FtY&m5;BKOdvL$E zw)0^}I}!9Y^ImC+c3WhML$Y$jwRzgOK{?!US+jD9HpPD%-V-pT7_~=>{Y??aT4Kpa za-JX!VCN;{)>te((N1R<-xToSyQ4fOVVtfFqaKf*_a}3s|Etk<=TRUtJ(*$X1E30_i3(Aj7d6Hp`mfDq)Ve>Rup zRK~e6!+6P&Z4)~rhajK5WcGpSviCJ0uXZqH4oQ7RJ^u@b9h?px`GQMNQz!TL?(gm- zDA^-oEHm)QUsz{eMkC~&qBb$%SB)`%TpG4HW`;ezu%|@J@1HJ5e^b~(I+eR6gI;pb z3q;UHEaUNtdsPaI1M*?Oe0UuLXO(iMvyGZ9MK63fozaESx|Y~!eJ85Vz%C1y-SQDq zxI}X~@{i6WkJq8x7BSeLA6?Cbb0ATAZLJ`yb!61*5wR?%ybhb|Nx|RCnI*2<>erHqN(J zVh?Wop3*oa=x5%C8@N$(CWYDNpHh~A!Y5DXoaFgU$=nBwk3%Q!`+QxWel9;2m&!LC zW5LkFV;OQ1c7lE~#rYa5p_f{SGb~?On#^o#Nrb-l^m@%H zEVW$plNkH)9>()KA^#i>dDDmcuRD{1SH=@>06k7XBjs;qp1PQUJt(jrkJq1FfXyO@ zb?M8(T_}f@yQNQ797NDkz}4ZFSh@o3a}EJ&9Lj9u%uYX0j?p_;u6K-na3A!gy){VT zGy&|Ct>CSE7t=LZHUJq?2P?@ah!dJu*?jsqKX*yx#>cgRqbmvit+?`C;jN13Cbqov zVvRvJ9^2_4i+Kt9PIpkT=72cVfErj{mVyQV**X3gUrwiFgmT=QJ^6+Rcfwg(WTfrf z>MDkgn8FZgSZ}0;ctK=p4cki;Sv`p9l1dGV>YXH-%@Ut}crdDnme{9dDP2K+H`l&1 z<%e(OO37E>a!Yz;SdPD&H7Ln{?T1kba$At)+`HZV+z>j`z7$gu()QpT!Yo^On2y_R zGtu+#N)qcNhkinvDgkE`^@7x_KQ<^eVgsC^e;&^ON-IU41Zu0DRt4j?WWx9_w^9b3Cn1$!C~~*@ z&-m#K5MxIR&wuafAASNq`{@SXZ0PA9a&(tA%8bt67;0ex>6X|cDV#LP1q(+0=3mh6 z>&L+BQWT#uEf?+>a)%WQthuC%1S_Vr4cjr;s)aIFajc}F>JY%?va4_c>`1~tkwM20 zL0yMi?Nj)8g)KdD3Mg{oIoO@bc`yQYr@orvrJqC2_2|Premf87`>0zJF0;@vw z)1=9G?GmO9f{b+&KTxH8L|_V^Xz(h^2hPX=FZqJo4x4vjEmFv4IG*Upg_SFTj{RyJ zTnXIpK44DtU#>UjAvc$K###P3NGyxAu=k+9+GY|Y47B&1!%o9;8nofrXL;tn3fegs zVt#Pk&_ENYko_Fb>QYte%Y`+MSIfkXG2j);+SqwN6Lu5-X^NxV$sJ%d_O%oDNBeGT ziET=T)3aYgnIAE)-Kc%SM}v|H^AlL8mCetW$EO5iAMn@G=%-2GTkRyYwENYk zsHdg>gFjNw&FZ~#qH+Z4kh{T*Em-=CDJk$Jws*j~0lK4EF1h>L+b3wDu=vEZv|iJC0HwWH0p%4GT^7 z>^KEJ1~&qJ`4mnJxCig^F}Et&7lC)c?pjqjtI7pt|NXaed#I8=_id4NJj{FwS+p1U z$6TvHm!{Boq%~QSNx>3RN@#$^#H3=4c;!s&LyL!v^!Mxif6$qY|N04^(ZajoV5#F4HnjA`9Wk79BcxIitWJ(J1&KW;uhO`EL)fL~-~c;JFvDuLWQJx1iJJ##KM%VIfMQ@H(cf8T(k!`|@E% zZLm51v8To1XF+qf6JgqrJ_jcOCK~^G$MGcaQ~N)#PYmmA>OFw_g~w|(0?u0{1C>9* zKJ6!1E7{rtJ2fRK2=qUEEw1dW?!fpIO0^Ru?}8Qsyq2V-z69TSpFO`)f(-*`uW|G( zZ0&M8TRY(Qk!NJlyFEVu_xB)+voB~NcV;Zw=j4AiXA$gYUAn8<&U1a^zu^ASb|QQe z%;Xx@>{x#aBWNd@HahxF>iC;ppfjONJK?)Qpf)6xw?Hr3F-)ELy#Qf!XX5c}FWsS~ z@P9omSOkNftHjZn&r92|z63l+U@iwq&?~^dvZK0jV;|;{k~mW`ldx)ANy^P5m_G0d z_TGF!KHwEBmR1vY;uejwunxXAe`BA2&J+2;w|WsWk1DX`Qr-*^Xh2oqX`98@gh(cb z?yhY91b@T&dsav<36ePJn_BQ3RyI!S+Xy3}UN^^NP{u08!Pk+sK8%VNQ zr%0G7-h0d+oWtM@(w9L!7(cZ4rEhW&l$h8;&ilR=ONY`nEFbjqlN#&pB8nawrbBug zg%Qp75v6cD3V19Q_GH6fF?cDr({q0`t@-?J&N^sm!JWZY@_0GZ__sSxq$A7( z%kIX}w@XrS*-O7T;73MPH;;#z>b27b;ozEvZC@DwektHT>HU>ZKB?nb*gVD+NaPTZ zX$2=h^Jn0_<^^Ws{G^T#(@NVAD}yzw&_1-S<^2m-qcnba7j~$6o3=u8{(EDc(-i19E*ZV_16is#|1iN%_ z6%%;I-2`hGEm)>7i*lNUvF-`NJ2X2+WWxUs4Qg8c)&}3E^A9d|UA@P&l-dI_a6XBU z?1R7Bm#Tcay1IlRT?U4P@n&8Z`KAEvSTC?JA;+3jF`{KCF7~0q# zO)T-&+$zYk3H2;uDjQibJxmYL#<%!r<4?I2u^BdFWMSQJzZ-SpTi&OQ zkq4^s?&4l5&7Y~e_{eJRZ#|vu(T#C?>q?A-f|oJT!i?Z|G=V~V2v!MQt<8^#ZlO)TH&k={x7^=M^Isl)bMP7?V)Mg}( zAlomW8V5T~5wOz~0Xt2zV5eyo_@HKj2WlqlifDa}uotC;k?PXZE}9}CN(ks6X4S%g z3~DnsG{SzR3gV7`2*~(j*+IM>#w$<^pFis(buqp}&9|57^Y0AESa#Z5!&8=yrJlzB zm~T*Kr$oSimTls=Tb^)BS-)QWHBSM6!H)NSeN2_}Si(Vb&RpJOn!`~$K+}9A@`XnN zz1*lWp26=0%sajg;=3XZ<<)N{d!-I&1Sn)#RY+SQTtfK{2?KSBe46`-Lj0cceH z88kG34rm;#!;pyaD~bEG>ctI)rS*hwZ&1dTWF?dA@kyibX6{t>p3Lh^3+6|+vqLoSGa;hTm4jzX1%D0?Rlhl6}5Ilq%WKdz1~7v0S=HWE(}KxSHj$3ULx%~e}5}4 zH>QRvMPGjFwOdUb{Sf1dUv)F1!or(TRQGd+C^umZg6rLOn}}ZdeUnn+$79n^So8nd z1z2_9216aMwaGcp!kqK$ZdC$og8;S==S~BTj8y@+G{n!_1$+c$KEX)o-?|Dww-YPQ zaxBw=@tV(u?)F{DIlF$;Fe_y^55L5K8B?(RIOE%d(ygR(x z;9kWwkw$6@&cYzVG|#SA&^bf6eYzDtz)GCxUhWH*6Gl^#w)V#Tb0r-@?BbI;m?o4x zIsy%6eU&|G0(r8&z&Adqfb}=(HrH9`al{0G*f@fR*R9fkDI)NugI6NNlp2gZ6GcE5 z$3IkN3UpD!{Fesk;(WKa=%O3($%lNcwWa>(hu%fXOr9zl1ghX-y3ZecmMR{0_pdn` zlF8F4;LKw4;A!>2Q4yvHHjP1&9$$XMgFK}kPYwy$&aj zFcb{{#WJ&(0q8Cc%7As9|m>U3&HSF&MUoR$3f&SJz z!(#U1>BA3VEAR^T+|`2-4w~ZMJUrL$2UG<10nnKnrXpOf|6HH6Mvy$(=kr+{F9=aF zpIaEQSjo&186$k*oRFl?a~3zBuJnGDE1GhHlhQwke+bySrozww?FjJb>TbSp4CIf` zh8k>*EUVeYQyb^i4P|NRmI`A6oX}6h6vz$f{-LYN==gr^Tveg)+pYWBmAWk9_vr5L zZdT<9zlV2!x4BLgAf}+MvirM;I%VbrEK3?D5ErVsZ1$`YvVCy7FP`1LO1X=r>{H0X z72lz^ONjuJKwsON$T`kmOvv;;_0kstB~1mdnZ?HXV7i!d%))>?1{uTS3d^FT?q4j- zRQxV#DnUo_@^6*98}_zTfxkg%atChJ7l=UG=$##ojMqSWgA13n`r(W_n@nvQ@H#P0zSubliz;f>%oX} z6RtrsTyIw&e7}aj8yO|6=a8n`8_rFe8)RWx^g+W2ettGJPw{c(Qpt^@O3_qe1V59* zW-lX9+Nx6bDhWt(pfvkbOlL)q=l;_V`B@l0)}Yf}VhgS0sZ)vh71v29m7$fr?iN-B z^kdMf2;NV!`r1`LEv7Q;E#cq1d#!&wP=JyzrNp$4{VCh7^$n>gH;vJTWO9WK=LH;K zZWb^=mUDS7M|eKkJ8(oPnM@R~Qo2K$u3&OUc(ZC;EQNjt4m1}xVVMrAnt?%#0r!wR zcDT3QZAy%>%yJWCB*|sJ;%Q>f#jm!nvhXyaFZ2eQs3azsloAzC&-Nzg&pA20pYL@~ z|Ni1tl$)1Je;-+>@;?jt)(!z*I)m*{4739)s{zEiFsCC>b``<>)OFv>gwIHI+aWRw z^bE*YkWIIXEH=nu#DLB5IhRA9;#;=%pDJFJ?pBo9+ovy7jU5IpR}qKJL->|qP4@`a zono%w`olA(H!4F+5jCE(=!p48F=hc$P0(|Hx$#!*1jEsjXN+;j!i^h_bZ3TDdxve= z;M>7;`nN^4Mm57d4I(&CJr|-Lv7NY*mEG~MeAhEm^kRmyM+$hKS#yUmA(*|bfjI0P z=$1_Zw@j0Ip0^EZI6SqqLt%I^Ln_>-`Sp2hRZIC*)ome%(+BJ@(Qzr!9ylgWbUaJc z9tdkfDDyzbQ#HG1s30>B{es9&O89NNhMYPH;kSASqC4@4r4j}xB=VUc4EEXvykBCcif#3oA*C3R-enE z&sV)PK*K81^YolL=Z4fNubxgl4qu4%+q^Yn63Q}guN$heV(q!Vbt-oq5?K~^&D?Mt z_gnsCt+}$N1)>Vy+ja8QFk1cU=>t{5?V@qV+BK(AZytwChMJhS=O1s^5O0sH`m+^_ z^w+!=+$J79tg-^d)3g4#o_(dKzg^S#&V?#r)p8rwPx#(x|IVm3?6X#~J}l%6$+rzv zvg=u7w1MA3!Ju@T18?68S%8|>>*wHGm7|PJYq0gOsI_pG(iA~pIS(r~3X-EmTA0fW zGT7wEd|mdvEiVGbPaK#8c7?P{Zb_L;ocq<%lR^Ca4P=qJewIKv>`+SztpN{07CY3p zS4pRhY(Em11k~z654Etg%ZgiNSr&$NMKqkuftpv^1&XyjAaR6pV9fJYpkRwR;l|cB z4EsQhw#S;UDRfm$2R3eX5oJa^I<3osCOom|vr>BN+F zDgpjKwf}|iO?cd&p7ib2N8UK8jHflEe<2TH{V0Gi(*>(1W8~(OLb&cqY!BgIGH_jk^r`)I&ye1RG_4P>GzQ@%1M_vaHkk!`rO4acJVXeKT zN`DcT5vcZQsetMIDSyohSYvA%BO~gJv$kMg46L)W>L4fR8e?6%Chf0T|0ll5VE>$N zVj`aK&FdTd`ylf@WorKZRB?DoV`T55j;Kxy$qCs(S!KqM3^b3WzKX~Gt0isTaTXbs zJ)8q7SD>_qia*LK^ggRt5vzi`jGGcMbU$fd(k8&yFwG&EZM!jq?+6t0n@w)0$`<+a z5cbwIC6)G=#)_&~zMhHoj^LcLoW15$L;8^EclOJQG9Hi(TCEWyN< z#^`4Wr5t7Sa~wVpH|{7eL3qF0?n#eu>GK&STf(7DN9lj_nML>XwrlnW9jvSPZjK1o zc((NwVNHn`FJlIMW_q}hTs7$x())B%;*cuv0ucM7O5&XHFHOwYlDJ#Pm$dzM^8X<3 ze1^UG=Xh%z{{(MaHbgaB;SO@ci8X6{JFr${Iu|tt057cfH5`)?0U5=D7ik$Q@i$_h z==VIOcgaQ5jLsejSV!u%VI4V$iAI|X+(a*eQ{yI}b+3;kSpRu%_S}Mcg$Q2HuJJk? zn^VOSX|&kV&@+I3H^Z&w zcbxM#htUSq#$2yX$`H;=(GZAq%T3)&vOtT<{e+X7RKh z!cuGJqCdw=jN%DiUfdAXCgA1v0{>2o3GCM^)YL4{Z#8#-&S@ zW+wg}j()Z)X9PG3YgU{&aDowQszE49F%(CBgPb1x8x%hsgd*-obxciqZt>pC-Ldty z`=re(GcK&V*MlMH2aq(@UHKycJ?*UxwRY33lAHea z$Olnfi|#G?ZTan$w^rRe{9F0G%C71M;Z52W!yKCULK@l(=MslOmL9S!V@b}EY&}E* zD8>X&o+&IUeqY21`n4Lvcu)8#+S*pNkq-xSbqAbJkwV0?a z3X^#;kjpDWDh|s1x(ct3xgBad_kLENp7Wn36**$qC(qvZ}$8C)7JF3pZb>^Eavp2~lG7h{rxg#ve{`lU7)DSj@U9 z{>F*N56PwH3~@AM64JlY?lXFK*pM=#M;zX@i5QEsZN6t4#E%a0i>8GQ5x&tX{+nH} z+p)G@)QGjU(mDk!cgQQ1?Xd=AkQA~*yaq`jm#(-S`zBs7_v{GH8XJZ>0Rd^fHNwb{|EM z&?D^!k!O-8{c_sI-h0^N-|$!DCjFNdUP{Hii>@Bc+ zlvx9IcNJ{TM{By}6||Z}%?+|)s}->;RzKHRn7^yQvu#Byx}uhjdo|SR*(`4*wXjds z5j}iHjOW(91t{wfXi3=`Sb0+3rwaGW)=0KK7n79-bTrkG_Zf2Vif}gFL+e?};4hYg zhmGJfQG=EMJ2X1fj8BpQBI&E3{m3kU+`v!YpR6!8XoBempsbq{J-3E$!Lu7# zC0nzibwizFlwlKOYYx;s4O!dJe}n8To5TUx;kO>c)okNuW94T7c`eOIdzlbMd`N|7 zBg{n@?U~K@Zmd`hRt4;Na_74GroL*_hM4p^G9nV9s^0KPT?RZS_7k1iJnmIe3-E~s4_&47uurHo<+xxUHpEbH& zp_tSZGxmq@SRv2z|5kGS3s0Bax{Ms++lp@sh-}Qt3CO61y|!{A+%#r`b15mXa+)V) zyfyY@I^lx*3v66LSAjA9MuF0-C4}|IgIu($nF5;`U<)IAU@>>^z?6=DwE>4cSpgt9 zSnv=tvweJ13}noOaZ+n&pc_GA=O$C?3J;h6Y==tZORg(BaMsAi_qVq?YDc%WL7se?|4{(sE9 zdstJ)_CLIH*?R{J8VyR+*is^({@O}KrCMtfBt)p%*01-fMK`Eet#In4SgByL6Qd|< z#E9UL(hBPLRIwCOFBqsIM?GFoTk5IpK>`F74YpjB%e&Uz38L-y@;>kLKF{wD4awd! zvu0+^n$KFZ)*2Y8P-6t~@~uMZmfAwM?9vaX02wiND#ZFQvv^x1*{!QEK25}~-Kw0? zf&dn!36EG1uN0ahh`p1VfD;@;pWrS}d{U2X@ZWSVw*HRU%?DN?%{;ZE3_yEcZcHforCJypIwpsBgUnImTbPf0 z=v)f$ITTJC@Wy$M5&8cI&y@*SOaNxZv z&>#4<5*}L>BLrE+e?yeXyx%~~PfT02<71!gUPf2UruUB+yzJ6M*&4`M*3fnTh@mgY zt&KYaA$w+S=DuTn2q#+GAAW8T76?U?2M{F1R7ptY6Sy2tQr9N` zq_q#TypPCRvUaa1Py)Bk3R!;bm@e`JC4B@o`lvm120>s zn8C0^m4fsl$e|c1W`(`m!m@vJT_+gEhYXN=&4iPt5@9qu4bIVBB|FB2dIxIc3}N?l<@4HWlQ|PP8DC)ZG?V$CNG=k}9(f&Yskp{N!|lFx8?;sU6Q9nPml8iDponAIa9@n2(_R|&kD@-CG3Tr8WJdPAE`>CuDp9R9RTc<~v zFP?UY=iHV94>+hpw;lZ?w|nx=#{EYO4qx(ic+z{Pqg!8sIQi7bS570}g(rFV4rju# z-&yUYa}bU?RZ25Ks#xlCv>i6sPw|pE_OCd~G5zL7?Apz1(kUh8!mCDd5?Rc@5s@9h zqO?t!%Z2|@YNW#6 zv`V()Gmm8W;7Bs;P_AotVW*b2&;mR~XPe`zEV$8S{RQ zaL%$LR%IRRB;poggmq4xG8Xq!Q5j9(-pbnn@Gp@T91}RJfKn|7ggWpJ{4eO3jc+ST z=GP_9EVW}V;cGXn80gH6_h`K}#o&w3 zl^Z|5w4=z?F!H!`!)vxV8m=6SIa;~-QbXe%yUXu^P7vbXCpZ2gyu0e?K^xd~#m6~Y zDnx~TWI-feiuu*ihbnnyM^Q4wv*R4OEd*1+sR3paEp9V3&)FbkGot@ogZ7v7(4gZK z@l2Bw?kJ)`dlmrF!#hTR?h^y=Vq^`|?iAuPL|cfnIL-%YET@AP^x%A#6R=x&Y<5Cb z47W>~zz#hVs23mFf190@C+4Au`7MkwwFsR^Z-KHs3P_dz&95;!O`6Zmo*(*$yke;hp=^1R3O|K~#`_59~+- zn_3aqCePH^Iixckkxl^HjU?XvZI*)w?2@fMY?Ez})qQP@vSF=U`C5l4utT<*v~&D9 zT?QN~tCv;F>Qe1+%Mt9~p&;_gD92W}r?k2clV{ni1mgq2Tz zo~H)dWNV~}ycB{F?JNVy0tjc}GqUg9zf2u|R}rgRR!Fv}ArGi9sNOS!`4f7~U=3n= z(ycQy!X_cEW?bF#>jYX{#fXxzH^**Gy#@SivjSCMuX$^Yt}51T^>0s}c?&(GDmQlI z#!a;=zznxj(9q|^u%E4;2Dul2p}yFsz6e|o5?M$MeBCYVd#1nu0)w{bD( zkps1S9QT@SndzbCZy*9Qcra4owt)ZzjMF&`T9*j8k%wDL)Z_?;_EOBdD|+MUdvAbM z!x;qkK+)0-(MD#sHxUASiu)DZV5JRwG5W(1`xF~|)vDJcyvApqvKH@yJEsK7Iz_#r zQPH4i^({FX(>pdg=}40I`g>qKxwkqVW)pfvyt~%nP1Z*z-CLeKlRZ@E-J-Uf8bnMj z=KEkC1n>C!zlb#BYHHb4h%_&6Q6kOJM$~-q3<&t8w*t7DL+)yNVR4qSWO5zgb$_oq!>29!&isGtnT`((45pZm>q z+aI^t;I^hHb8)I}K~ZYN4SUZKbW;sB%rFtNfTqA6#K}Yx-D5@7Ii)?dWCzi7PrO>0 zFu87jT9PdqG+H<-;YtOIksIAQ)jizfynq)`YsImRPIAbanv-W=IUyaD|yOtSNHo&USXpLva47~e5t0h~F4bac;U`8}{eHBgN`YV zfv$H*Vsafy#VYQ!e^fQxXjJ*)(SRkJ;@a%VGk>vdm^*B)d26O)RVA@4dRqpU{%p=RUF3@&eS0ebd^6%MWfs#dQ{Q+b-)o*t@nwmnP4X z_iCVVPlw&}vDLd6Ji;xo8VUoD66FBS$)a*^w-B8e`B2j#%f{l{Hi)g|E+DFZ?uoMQu!EY+h{D zhtVt*ABb4em~8u%ooK9Bi)RqDu>bb4R-E4x8OhCx*t1#t(@t4oeR5P4RdD-^l&9Bm z&)S%WH>7gq;Oqj*^%9=V>S$KR=0TZ68@`<|#L-v#dnlQy#+IMbk;mO0gcOVdN!6z% zV9C=SI5atpJ@pGLttcsV>j>)MJ$4M@-SJ7q3fKe2aW`S0zjkK&2*cL~rmI}&t9jLI zX{KcC!vGfL;ajP>ahe+UXg{%vebu0O3w%osJ44BnYR`!sp4Po;?x^U0=+)=PMNA6E z!ngp+GdB_Y)1Xcw=2NUMH!d^X@zC1JIIO~G<9OCHE+n4m!2ObxaN?eh<{+^52W7rz zKWlho2fvr@U86h)c-_SB8lhe%)yzF7;4v>Tf65-6Q5By7GW%L}ZrlSKVnjgjoL3dq zcogpM1Bq>ZS{I%Dv@Yf$VtL_etSdJmHy(HS@OVznnV`OZ{{Xii22|p`c(9*;rHrAf zQHS}weD@^z9!kWhDe>Qz&d_L_rI+|KO=~US#Js%!JjtIGpZ6fVXHRt@3Yo%s;(vC( zf9URGKPOG7M$w1lfFsarg1?D_zK}l#*C~6_Qq}sKk zV8oF$yq8q&qotV1Vo5;Oayac92P>wRu+ZG5o|wg-_c``>bwVbv9XmeNk2MQwvs9xq zNs#hXRZ{K>)r2In(C{zy=Q&kLp;U^xkW3?71?u@Cu!w`rRuF2~st&M*8Xv273**fONB$WPt11P37eN& zJv`hCdDu;7NAqEOK-Tj;AcYe%um?Tcs!HNpi?TCiV#rCylBLCq*;E_$2y~001&LOg zAmGgMC$!CavqA0Athu`c~_+mu)f2;p80rSXhW#l(zYjI=K<= zp`?6MA+DsB_W?XWD^%YO75J)CDlJyv-%GS)axB(^WtDLYt}$fWAMG*wX~pDN-bSn2 zjOXh+%jayEuv+QZdG4n!r5ejynp;|YOCY8J>ZHVzV`pgQmP5uMnR`|Ih^r!UJ>EG2 zH#C02ua?{A!Fnd!k%V@)s?}&eLoXPZESFwA(|-JS9_i3Q2cm--4E*+O($SR zpdM@Qy_ROYpHWW6edLn8yU}dNGWz`Tm2B|s^J|L1*8s*c`~1}6p1rL7kgK_fUcR&Q z_;YbaV2KiU_vagWnY%yB918m3o7`QH5I49K;s!rDTs&Xn2i9KE*q}u8$Z;sBI(|GB z6v3FS#adR{;bdS1AY-uF(2|{wO(|`KoV`xc_uQrwwCM93W2^?0BT<%)Fj#qhD#VC9 z;33)d`5ZNnugqfj@&gYK^>y4i$4J_||CEEQV4H)svFA$UB7VlDlVf=fntF~Q{)B@p zw89F#fjow>lVf)*R;qD+u%6H3LKd? zv6J+SUmkKJe1@LEeSS&LSj68dnIAj@XXYSylChDy&m)a)3NKO+cg9mF(47R&HQq}E z`2}#^`@5O>?V}spF32eZmEySGSz~>-N2J^Q(^g{VW|Z{JAJCM%zN* z2o~FbA7-G*B0)NL9^W4jZ!y8eDfp0>hzH3bZCdmABwxK+p7}nFWD=)v8td+tX!QN3o)!~ zX&GB9+W@`*^>Cji0T!9H7Gv|qHR*t_T9plo61Yp(Z2=p-%(woE&2{}i%>sLF>;s!p zgF7`pKekJlY3%1c+fz7o(2u*`?8^|yY(UvlGwas01*O}v%zD|d{p z+hP+a?egQ ztA1YH!fIpn;!4n_&955d-j8>EZMgBaANX0q&2Uv6^8m340f&j0^(_SGd%rglc_yaz ziI{cnPb)qznqc-Rq*rK|RgWpXRtz^+r3s?p7Cx|1&@;&n-;1_Fh*3CY6h(>&Qj909 z7djn-zUiE3RgJzY+@F?gKLz@qN0TE_ljAgX)a3YgChp#!w#Z&+&QyD(Hk?K-5C1Ut zL*WY0ojHW!y8gjmqd0vWH4Tr1$p4XD3igv8GGamuSQZkrAR|WAzgjl}?oj{tKKyO* zlJDXI;`k@1mtid)Z3X;Y!O{V-{RZaKrz3D95+X*aZLa-k86^R1@;o^GKE?FX3Q(_d zeALp8>+{8vj)B@Pq#UgbXkp;Aea`NI{$ChDle!agkdEJcDdQ51kpxbcNeMSb`%ZL{ z^av~IrKlc}xj!x5eyMwup4WFL!gKV>LcX6?tp`sPw|u{V79{KkT9J57jmuI1zA0dv zuz7)u;&{fViBhQHW*w0iak$R1G#L2P!?goT$*r%Id)8-9-UYezjCB>hd;Cw_z0Ku% zYFSs&r7XF$d*(0XR&AGSN6za?wHA2$Eq$?FpuNGZRnLr>PWPO#uZ>KdlbC?kqXa=@ z&skg5g}+w0XN`Y`dmOCKI5;Ir*|Ctk5>$P}AlVRI=@qY32W9fB&+A%SmbhINGL)=} zQI@#Z9`6OT!+)eweT9>w$un_1;x4bxcmCbe_b~daCxu}R5RJNyxV3G=ExkzTbMXe$ImLz+C#5Ntw4P;fzP< ze`PUIJO`M-7Yk?JMDZM8qBssveM^a3e*>=Z-jo8TT95d@JU&ynTT#`5GQi1Ox0O#w zFqb1|WHS%ChQ)f7!CmyEYP49)S+pdq!-I}oJ4!^J-opCh+PeW3EVNI6U7}%R2JRkc zl}3pM_FDrWKmzTV@|LDP%(hzoG>*qF`X2jOHS8##@Y10wmLXwJQRA5k$}w1nDG(7| zGoEe2sDtarF674DfU`EmN?d_>2F!fcLdZ=mU5Xk}Sqo^RSQ2+STvZ(U3`6cI-_WDI z`%WVJ6A${#jdcuYYHtH1=_+|(3*B5sd}o6Ez3oke2;u?25<9q}GgQ*59t>VUn^Ioe z558xK)|Rd=@WuMoo6T#yTK})gfx97H^PL)FIhYPp({Q|A}tlR=Q`vu-xF&2*5 z4gN%%K{wYoDnYZNwmq+#@1m8e*Y^{Ct3m4DzNB$+tHsc` zD>dr#6>PNMc&Ocb%c|tL?AxGAg=`}*kM@3dZWXx{b@{%IvdfILy|+6`D0t?;&LWGNs-I*mREfmz9Dym9(0l$m$|!i@{H?$;k^D;K^??A zuz7~8uT6+towu6$P?$W8t&R7B*@7GirAU=(G%Iju8=4hxe&lF$wtDDtG&eT8uBYc^ zxFh5i*=nBg@ps&Q(hR;GV%D9-W1QU&yhcQ$#mS)W!N{tHb`TCf@jafRC5ZgvTUV`DERD6JC@Mr2ZJR5dvv@AthgV? z74h$|AG(Mgf9YSG8r4zk;T8G}@(RvmH>VH{oaM!O8FbLCmzU~oy#!mhs7bKlqynF$ zH4Z`zeCzXkl0^?veVaw_eT!H%wd7L6zbeUi^6jhjH|rL+E@_+x)||FoFRg&PoBgfh zpmy`!DZnKKTY*bVf;$d=4*3i`eI2*TnJtY{50_|pF4;r-Dq|)CLO1z~YnU{v7tX&) zkm*7_6RkUMmfyOEdbuaQi_tyl=jMZN>3LDW2et8$%c&1NeDKRTe$=UXWt?SHmG=bh zfrhc1%ku&94Dx_7rrUqTA3S9IA>NUgp?MlRnP^wWAXSci*0$Icg{ILOW?7riqe~uk z>(2Y_Gc?K=HfTmE_im=OiGSCzp{?C@ebuH?H)q7Yk2ahvLiObn!ZF0d85iC;*~xLl zX?hy>`2{^~r=8=BQS>yqX=_i;SlIF#KkI>0T!d`F7#q(SrniAJppSnB)9UY9i`d8 zL}NS3n;)x}H0HK~7n+TiL%Kaj%x;SgQScVdko6x>Yg$^k-X?v@Q`=|-WZQWGc`EIB zp4vyhp!zo3%~Rs&nSa03u&|wsXWzbA_pi#ut;-u0x_K&jf!`aj4tiYEAr&e%@K|m}Ba{)&X~o%y)i5jC2Ao;J`^-W_ z1j?hx2Jq2V`G4udaa*^vS>XDC<2HGr`5siG5Yd_><&$ZGY}KW%4~PdT%_TKw$V_`#)AgDnYqEUp>% z1pEBb&#&3|2xI&;xq`1N(=DY^?axW6>rWszTf+E2J0DB@$i}baFGnFSW&w4S{9eoF(-XK^a6 zo{;_bs+hf%LmLpyB2Ow;;O{lISHbUeW2I7EYFETf_!vBqsGa4EF`t-d!gGL4DcOt? z?30qH?5H8IgDT@P&h4GFd#QXKEgR^}UL}btG&QU7N%n_N|3);C9mo7NU#!&Zjgo_< z1iW2@zAO7)4T%%IP6}S;Y*V9al%=u-57ha-AjMq(y)?&{OSj;%Tt7c*&RzBgp;t^}4n$CdJl!LfoTs5ZzMw zPHoZy{ctgqF_6PRuT#WY?s~}}e~>^@|9bTVxVwEQc;B~mDXYKeli7*>V4l;ss(Ajs z`V8l=xWFsXCagiZ%u{+oJ(j{cum-;LMVm5yUgfOnLbFaI&l-q3a*BVyBU@g&66!TZ zaMg6lI2}&2dC%y~^zoc$^r<}^Ewi%V1STbhQN123P)(R25Pq1u9BL&G+Tba7najLfu4jkv(}JcUoZ2T`v3(tWlhG0mmHw;Vj`NMBK!I#29lBbPxP(*c$u| zr5GYSa_3LwyXb^+D~^8-^|dZV?%) z3k?w(rs5lKr3O!a*sZCTDTvjrS}j~pYVnL@UY&famYT=ndC;u-gdU+B1R{NNMLLBDauy!2Vm_RESqRurmn8u}I(#+qNM z0;#m4U}2#d?z@eg=Js0npbYNu6MBio4dQw+tclSgTo<`OjVeUko41_swuC}c8PPG< z@q1JIS#yu_rI$>OeqQa<%z36f^GeR5z*{{$?Sh|G1SQU*DdKYnQm|vzvlP5l3=|0d zHx%Sqq5a0jXWKss?aMvwud#bpNi=ZEQ3JF+iEn$q3){XvEfjjs`>v&eC*sB;$h!eO zw>V9NxLVvOZpGeL#bDpNZ4|&^c~K+ojhKr<-ew}e1Lg%U8TiOR z7B#9Qpmk09w0g)B0r%B|E=E`MR;PLL~e! ze7Ov4?chDwC~bw&OKTKkMqu>BwGztJ;92}}3!FoQLq4wDZWK~} zNLQ9Bnq)NtA+A_%?oWh{^B26~<*#}AF8GkQJBg|Ug}bJwPoU-mth>iAAT9a!lILpd z$~Cfh$Y@0h0evk{PwzBj3xWoGu=#l4CM^}3}_o=xgQDSsHpMM@ zDH+k{(jFY!q8z5SmO$@krh@Xez)rsHp6`a_HFC0PfCMr#|=C{!kddbOz`+mb$%_6I%y zDktBgm8-FIb@9jP@(9R8Qa#!T}TPB*_| zW1{i%j*Wzrryh{@PoCcyr`OxzjsrLrKzIpSP;Zq>}e)O z4m+W643c!7W}DSnCW>f!^z6Hel@@Z-KGlS(y?ZsXsQ#C-D4Ouv+TXd$G}a_v5=Lm|7L04BYH{4=xYh=4ON{yTlJ0e9~PiXqZ^r1s}_wB z?(>@j`)jCbwa{|Jq|gY0&5c)4pG^GxECCp1yR{0eZJh3a>VrN=KrQXt>k}K-+Nqr2VlH_4ht!h zfNv^C1^iOhUxL3r{Y9@6UcPgANaC!CeFJVkT*)+>l1xG=To*KRibx zE)_d`c6Uf(l5b_lh{6nAAgKvQ|CY||*rtDOvX()_ey_`!mpcYKcJz8IrwIR4t(+8Q zxpok5$;DewTg1ICOJcyLmmr&rC0`Od2JY@euN z0accDV?h^T4$v>imkt2!R|MQ!P80a2BZ3yetY5`{^KED_+d3%_^Cn+6aT zzd+(UYxX-wwjVC{CJX69z@-+WNeG-w?0x6atmLr0*Nz4MbMdyV@VoW}39}9IibysK z!!vqvNyj>-F8_t97!S1)VL+We7jmuL41kEw%|r@g>5>y$`h0glpPw!u^<>J)1A?Ka zO|#XO-{l0e!z4_ceJt3)wZa&kGCX%x%>s`e%=;?2S%yV+?YbH3MDXbE^Uj?AaS z2ha8+#*{SdE?Bv!*ljd!r#VS9+_96kuMoQ44ypz#%5*3A7*UBv38g-ufPtN zF{-A0-kfYX~c5v2YN8hT1gU=Fhe1QXk~{*XS=I5Oy*bx*-gwm3Xip!>>}8+)b5QX2##DG}~IchR0j#|eJP z`lF&f13T+J*y23i90mK=CXYsc|w>T=LCJLlSX8j8DKgZ!&n;Ubv58evvN zFyRA|(Fu|f?+Za$B9CnD!V%?b>{#dcJ->5q;DXGgUp&&SOag19;H@9we1_wK8lDTd zTAr6iP`;Tjzvf1Fc`;Z1rrb&jEwh~h4LLC*iK8bqcv~c+uK;RB`q#wRAOns?JAjjJ za~=W~E3H~NDK*&A97c>a-l&z=`oZd= zVU;x##{$b0O|VDsJ53T~MK!=#1FL5?{0_dCzrk+#!EgK?ho=Z1oRiaHp<Mrc>tkp$kEHovhki-UwVwde#)VrQ*q9{ zVa_EpJ9$2) zY!S;zvoI**kF&`<%qOH%FpI#yf0iu6RnMQ^ukx?-MlM-%gKw3sh57gLQ|zGvw1-`^tecBg zJn8Mt%4Aj&d?nd~b@%EXRxfS{Xq?^}blVj&YM~%9$dn4vB`}U5qdrR2j@Sk<(ji|j zfPBzYknu-AYfPUGh`uWjGrc+_;OBD1(@x~dyp=H1&}WB)Zb${&fEOVM-m%z`RsNfN zE$m7Uv&dlRJy>-50}={634C;#1SCXL#NCc)PF7mVe7o@jtk2H;hrDcXnCXXZ{Bj8? z2Ki+D7tk`xm}dk;d5O!i(eS~UGKja_cs>twA$$s)@b`P>yp@qFrxyRn1{v{}1K%wu z%Az4Rk6p3kwM1LRzBj0j=tmIibpWERlmTti9?Yr%pMot%&A3knHBG-e@6NC7_Zmb; z;6}Z9g9yBHc6=qEuQzMN@=u2lmiLDcFX@hb>FmKHDWj1`ARfb)R8+OrHp-Q~gz`cE zhpr-a3DK-~(s1CB5#}=Bj)FI5)hd;dN2D42B6ma~J{S1HPNqPP_c;*@YSn_B5(bdf#Te|t< z(8GFHL7(P(33H=7eV=Fi75wKpe#qxJ#h&@>Xi>?xih)~l@{IT{r;!}|$XvTJu^6)a zb0uFqpn(Wrnn<5#SvB+S+-o>tK%Wkf zDsQ4x83Iyeh+C?R9KlPK!GqR=REg;;U+*m$k;V)p6~DIEHd?G8Q?f>I9FuDKHG5*E zXAF6n(%*UK@_)fG+0SsyqWj_i_9pWE7Ff};cgOcF9g!Bj`d-43)!s=@xdnM;F&nu7 zIptpb+$r}GJl}*%c$wrFQv0}j#;oO!d#vdHe#W$edamfl`OO~0;a<<%xcU0IkY4>K zy!nf(TW&3X;@y)o$^9PAyi|D;ICEFOX^@{H&&`>;0-kc_Z+($7r}MHatpn^8AiFkq zh+)1{J)_#qnIwI$v>142il_f5NpA8SVBl`kZg4dr?>rqnD)}PtPM?mO-BM>`>PKm{ zD;E|0$WG@Z>}5F9Alis8 zyc*SV(x4&TIV+C^mMJ>g0D+tvUp=-GqHGTYEZwxE@1g7n^VTM(KFSM9z{#G)tDon7 z?o-t#DqmOR6SVMK3I1%$wu z8^c>&1=mAB+xBXrkfz53qxTYG7LC$#*{el?VjqhnhfZ6%gF$_>W8GjHZqld(FIAvu z|2cf`;5B?p9~d#oB1xd-lz38)H^HMopv5dwM<82NZBpcV%p`?bXqs%+Fx33ZKgFlJ zteYqGd?PigtjHRKR?bMhoJx>e`=gbUTFv=A^Vyov1!w5r!zKC-|?KBr8ccHz9jtV?(0hR0wWw3P zYUD9I6ZeHLBdz1Sd~evXCRG6)-aY4&+r$>hbyA?k(SG_@lg;8KzTZ8ckrpyVNETzg zL13AAY7+rW(~@7uOTb_5M-{**6Qv&nOZCY9`nlwOAcNBo^p~t z$QbcMI#4NdY^87O!>CBM+!d1h`kg|7*7fejbJ!QvQCj_`9d@kBfB&mL=8LY}czs|I z^6EjI>dcQ3szc2Y;I|6jl}qKDjl?Kc71A6za;yaK6KGIl4uJ;cFqS`Vvs+<>!9Bqf z!CE45msaTzqdy?ZXaN&h-TMdKm5pl1mhpuM&Z`k-ix071E}z z(4-8(&HWui3R|X%1jCP*3%7Ns9sRw0;Rbaf<0~Cyy${xttsjP?)ak`Zo%_7h*-L-q zR}b|~czF`?-V;9SxTfW!?1;~|G8TG8s7S3T{6sHsY?ny0m%TxUXhOHN6QS$x5#a4R zvCuqOz}z4B7Jmc5Lu;+|rnN0S^=;-(+eE(!T)koXm!$+xyHh%`j?|qs9?Qq*r;&NJ zT!v)0^>LZsSa^4At!(gLUnbm{1*k9hxq)R7@Y-v#zxVMnGi}!*{rEva# zv|T-(9iKM7)fMvHD~nm{7#P7KHpCTD^(s%ng%=fz^-x!;&L>?_6~5FH@5iWHmgu2A z)t6G4>WsAa#0K!;h*BMqg13b<@{1H{f+|;-CIf zo6nZQZ7bCu0VTxhRIMwaU=bNzXf$i&CZE2*XW#xZS#@Sxl0T%3 z`=Y(TnXp=;Pa_moEDRQBxL zD2K%7-XRG{)Kv?LE-ZmI!6Ovz2>SN+N2$fI3J?K!?u5fU{grk@MlpB0Rlc)DpO?nV zW{G1nUBynuS;ZN}nO(xF=)NRm`S~ZDT=pU-K0mv9-6QdSxOp4q*FaAub*dxv>YnZ4 zK5a2beZY=S6B6_%f`0h_wlqzRwvyDq2TdKbkq?1;{6}p#t_v_b`ZoUhO4Os%sztJc7HDA|a(EQ$fVYIWzRHgGoIRlS)!cRRv4eXK()Wd+*E_Cc+GX>jEu!p}fzf^|qruv<^MrZtQ?!E?One5grBC?*B|dvV-Vc49TqH7j@NF01G; zO)$N@#va!>2DY7lCF=Nbo~zlzF34*k{A>YaFIZJMq=^4D@DQ|Enf`24jxU5A{+*lSzUJe$<8HvWp9h`_ zkBe*=1UEJvyT0j@#Z1O2O=R&mi{k{5pwH$cygl$Pj?R1ER4olyizDgE35ibrA$$qu zM|&oUcMm-%d=2o_(_K#P9weZM;=`)ISn_jxV4dkU-9T7@N1X)&Jw@Tu>MC^A3d%Mr6XW$8NZf6I1a!! z>VCUL;J>t>2s!t)OKEC(Eof%VG^NV>hm4ckwG`X{58P|G@Fik8#}4{S%o@pKPd&Z` z5+3pmh>_>X!rf}%WGLMZrEiCOox!@?<#XiCv>0xGy7}Pbn~_&p5APPd#`7(pyYC0u z!s8%o!YT3u-{*r{BU=YG`~^qJ67-uhW8=fdk=ie z>G?ca2f3$K<_j$YNTIyqf&e@mv-(*jOMOZq0vhh|yCAUUK}*I9J5N}5GfIZBG{eaX z#FT?w0HW>ahPNCm@;e95o=Nnk`+=TFpSG-R60G^>E^4fGrJdB_?lJC=rtgSq3oYCd zLW~T9b9%6?9~(=-2_^OyA}oF8CK?-a8z5>Q?*1Xe^Wc<}*_Pk?Qr*?+S?yTv1Y~X) zW!`0kU%f?Rh5um0dERoPI2>x>Ph!SEZEZ|Sg>;BhWHW>Vf;iMD1#cVR@Ozl|*}tEv zHa0RoFTQHMAR-T<{HWD&fLOd)-l`JUe6w<1>%zvx4O_Ol{1-2iZxQ>*dsR|$X@OX9 z$mJjK3GAeTI4`CTOX~x@Ig4;=AnuNMzvy(ftz#jaJGlJ6i^JBb<>8;^ek$DXm0c9X z%H(S=h+ccF&ol0ODN-&D0m-pPp(tlVagj&hSoBfC(wQ?hzSs0cIM^1!us{x(F zv5Dmh$G+a3%%D!fVvQsw?p2Ncmhdgb8D%LA?btn_;}!VZ0<+89$roGvfH!_97x-CG zGYn1~VdZPif|Ep_@7SPC1K=cdSE^;?Sg4=V>MC$He49BQnF}@XH~s{);#|IJ23wV6 zTD`?9m4Iv}jng~`b`2s}?HfFTg;Q2>M8dNco>K5F^-b7zSr7sI&RKSV-=kZ=7w}p1 znhQQnRWQflaQ^{jbaACLEYX9FD;in~k>EhBbw|4TEL@fpdI@=H}PsUM9Wz7>K8U1 zF<5$$0%M~nzZYRy*FsyU5D`<=3>iQhgp8wEaV3(eZyo?1!!#qLhshj5| z66(B500tj%EDzRy?Xi4V|4;BF5A@0rdm|7rTFRYWOs|%)tnPM+C``E5LJ9ZE*E-<_ z1FCCp!|r-jh%giC+pGF=v_PQEOF*v4{S-MX%S5-sx$UwRfADM-h}$X63B*d98~ZF4cwgYVAtiFmv9cd4uPU7C?q{2@`QxxrDuh=UpGb$;r^rb+H2Z zGB|GrdmNMD1Romlz^2DwcT0Ctayac2?2sL6E)Vx4qfw zEq-PTvpp=(Gbh;IQ_JI{YZi*L!)Q^`{L(9@J7zMw z&h(~MN4n(*j?rB0qtos>CebfYt9x*nqy==r=eaDB<1+bj7^#qOj?=I<9OJ0d@;!b+ z8~9H$^C%&D287mL#Chf=_QCTYBT|DHV}~iS|)6>)JAdteToHev#EptCln618e9B{2HVa#y5J`XslxtWfN zWVT*VY9k%HFFd{t9)7qw7?aZ%JgH0CPG*69{D)Z%Lq+?eS&r0-_FPy2p0%)~-VY=L z*snWWI}Th@<%%&z!6S!sEx;?V_Q()P{7JMWg5UUc`w{%D$!69uz1yU$&e5-}s=Li? z*d}u1!Q=4Ur_CFl%i8`$EpM}bZ5n*qOsKWLYHuaeg>arynY5q7ur=5d@&XjRz% zILd<#KN38^e=5;?WI;183$op^0IUsAvLo#Fc{%AXDLV^gN;<+u<}}7)X;RnW_ftvs z`DaTg16)Zhf0;zuvA zH!oS1)Vo3wNAmC0ssLFH=HCkx^Y0xbpN_jLV7n9q_q{)7^5>Dcv6%-> zmsbc+9+?04OgkIw$ZTx)j3VpIGd;5Nv@a0>LMM6J58mNvKllJ?zX9jiJ;%ybpJ!TN z<4aL+a^o-IOKE@QOKI<6sYLp$VUfG;ybhRi_qf#j%)eCwnMqtBeMt?ROp*esn%g6U zV<0Y!7L0Qs{;^<&B8(n{F_H-tW#|{g-?fCX!{BkquY=#A?qNIyfj{zf2fAD#i#EES zKax`gp6B25&kx>(=gIEpE;*Isd4AJf9w=M%sdAAYY#6G5meCM>vuQi8hU&~zogkt|8M4BgD?*bvlH|MFF^`W=7}Og1n3820lLX|A{d{*%RS1A zDsXS{$MzhGidMPRBz(^T-^2qi5B3WasQm8|aW?oaLTVP+;Jz?E?sSMg-wQm3V6CP& zz4^bH@CJ!Mm#waXoSS!vZFY;FpU`oghE>u)X4s*;@T494>DXP-$w&U1&Y;ItMmZnh zpMTnM3u0~H?Mz#)-wmXKEd4plid3`_*!~ck@B$*BWpD=soW;5KgpRea#wzoK%5!mc z5m1G6d#GrF+(^VE)|N$)xCYuB+b^^aCf%~|4rqPdvM?WHVd`bzvJS`#v-QGbR;RVQ z`E2{Nde@HhpZ`ZpTm7e))|(Cj-T_QowO6STM8YY}h(afi0|3z;Y=rZ24$!eQCo zHKV(+tZxr2oBRhXE1OPsV_9R{pl9p;{NI0yVP(67fMKO>3@fU6?8cuF^e}35e;bEk zw>TktpJSJ^8ZfNE`l1KJ4lDu;oAE~sTjs&Ay5}%#uNL3`3B!8OmA255;l{7OkQ@T- z*j`w3k+`z`*g?dwO%NmSJ$OE48AA-B9d+5@Z+E3(~I5s^jHe6Bo3d7 z+hl-06>Zhs_%ziifH-lQs^Y zvXR;6zyB{+Hlk9biO03CXonnkBl7JP4*`*Ht$6qxB5x7_BCna`+OcXU)c+?~_F1j? zS$zdtdx~aPp6!Wc*PK8cx!{DgS%mhlWDXHRYj7XWJU^~glJQ6r#Im2G-j4WRxa}-o z#<-qCwOkqPY`%oeZeY|9IRh+A$b6`z-q1&!OL)&WAYDuXUr}$n5_D z{r=PHeb)HDN5A`RJoD4zs3(fXFP?*$UA* zXjReBV--&^idW04h)-a|;q=FYQJOk^8)OiL>Ie3a-#DByKZ4YW&*LhYQ!*Ul$q@_X z?p3O7B%uaRrxeTPrY`xkhg}e&lM>njnf3i>Sz(KxfJwLd@^=4`!Moif!StegKS+mj z)rYVGQ_KBA*TNywc6gm#~mfq9*Z24BEYxgf20 zX`4}uk^tlT(FTYS{&0hfw^cT)dU~DByR~b`q3LMvBO3gfexz?`%UpqF3E(1Z7wmng z%dL5wWd^N}4C`Ci@)(dY%um1QErV~36F?pYt>eAJ?XXi5r+mRnp4b61hBwn<6y$@` z&=Z4I`aHioSh`*Vwy24w*X+Je$K2EmK2klcoKO2QCxVSc4#|QjSMmAz=Vz28o`z_g zK+ra8Mg}*+2nqu64!yzswZwac9Ou$eI)-&BwK_+(vu?h}7L@7~!)%qDJgo{46O6f< za?5qe$wCf`n4P|WMJ&#TfJL?j4`hR}FY`;^EW{e%_x4w`{R=tmT!C{hOk#uiz9Lm~ zN(L5s`rdIen(degOYw8ca7NH?|aZ+ zn%8Q5!G_Ze?|@Z)SuMoyQdGtThzji_wPBPGQ8?fSVhr_YJCjW*EtE{eNGb-wrx5NA z?1z^AvPcGWP^P-}h0;jSAUk(Y62aakw+0ElER3vH0e9UD*sTi#!1t zP9NI+@!nN!`&4IYJ9mGal;!L2_&>@`ChoSx9p$NIKk1UgekvDW45_ze0O-vB4`J^f z(8QHJj^9Z#8G?Xl(4e9sQE2&WeKac7S_;-Am9DmRt5kPu!2wdVR^0k1wrs&L2>}u9 z00F^P*$T>MTOSeQqll+b2 zbI-F@8jO32Pu{FFSOWfD{xoNo0M{;|#f|XaUjjPZ?f^C3x#+L#e(y%7MZ8-Z|9HZV zz-YYh`m4Pa0Gp&SfZlS(@9Jw%|EYP8zkywMvV>DK{;K?%LY{VuUL(RHq&+UxC-oq? zg*YYP8M}8EHL9!k7$bPb_CJWAyilrQZQig`&@aM=msVk)AMkVqO!0V>f=^v@MWB4) zOVRxcul+q=%R{%-F1`9%h6Y1GKF+Vd+=^?!QU;9kw1f)4?bC071P${GW_y4KhDqhr z$hD6=-npp*ctrZE+uMtabe5TnHyo36z`Z30c*o$w~eS0<|U)XGqc=C`)y&Q*S2A9U9Pda##KLg zJIvlAjC5)n$Nk=%Er1jL{|6^-RWs^HW+G^( zp7E~hskk9ns&abj26)K98VCR3FQhGw^uadVjxZ|_&ztul>~-y`hS{lG%X`H=kt3|< z`YUeZeNRq-q`=sA+aoF9+A1FXR#NceO+4aN$1q=ywZK?5B>$wIqDOj3uy?e4y;D(X z{MImo!`QU__EQ+P-h!FW9?_=Ufi=j2j7-38A`Hg1(LMk^DkmmcFI$BXzGmHX1hB!M z9%2>Yc6?r&4L+20-b5&zMlRO(VJ;EMA6!@?2cE=#wtQVT#i;2qhmgOp0wi_>u|*&z z5nct0oy;@ka@8Dhs9UC?N7cJabEE8ifzeZ(q!p zdYmuIh6H0jvi zZ6)?WY{heyxE{~hh0{2nNO_9^q5yuI86;R;fxlK58d7fu59jiP30S68Pa$zweG$f- zNuh4N2v`VoJvt@@k3>p}db`YWeyR zXv789NR@nH&Zq-xIj`mh(FplsnFw2)hk;fV$IcKm&Db7dv6}n9Ie??mD%SJ*^1sQi z)DbW8wc)ywf1ZE0Duav&ZH>5+Fji6LiM#T@W0#_=&Aw@;S6VRcQ$KWo9~ z9f^jvIHFGckvLnHq&&RmXj2U?lWfJmQ`B!;zcr3nouP&}=QO*>N#tf1G#}^n;X8Rf zSlW6l`>Qk(YI;p0j6g>ejz$-oa`+t8Nr}2*2dI8UT3$92wuTVRv_Y1jA*32d8&`}6 z*d^mHI8x%?^*TX-qnV0`1iau+|&H0*(OR_#0g; zT|@=yE6#3H2In9+4TzF|V4ai%Y@qx>N_#HyG(JzzjmChG)B0U=&xv=*%#)ELC3qe^ zhx8}FYWayi?{#N@5GlDVRfv=v!_4NRB-7}c5MjcN;g9>LBLgFC8hi8Oq8%|Ah8rU0|7cb{mudyEI%z*72ZP zs7Dtm)KgcDXFlpB<&H|AqA*S~@VsW7dOD}38t#wUJJ+gSn0wa!ZN*ICTW+N6_G;`m zvG4s0)%^dOt7%mNRkefHPaJ6mng@EpwF1T2wZY-P`XjR)OIz%p13%_@|FQf1$MF8c zDRaN6;sWM2aYN@cy;qGbxpBUAB*pr--n^liAdmM7ZNb(f8-MsMW}M^nVW;tEiAJBo zII;7Tc)aA?Gc*22r?d=wk#Pietn&b`C^Jh+V4R~SxWAN;xA+ka?cBEdA%5>jK@*hW zU*pjn-X%$UXI_nXyy)E1I?|j%sU0CgDQ<8V*2iYenJ(J+JmQ_ebSZ>W!mr)&;?m3qzre?e5O1L zZ#nndFnIf_^9#NtzMdvr%ONuiwqp@=CO`-CW<5^R{6aArdR;fFEvZ&))gLdM>crng z>mX*jyCi&{|D-OJa1Ha~E!4GL6RoAYy3tP9#i+q%3|U^=WNZUh$q3$sbsqp7Px-uB z?ne?}10y9~%XnQ6$K$OIa(9s~e?=`7Un0L!k4WXwB8&D4qJ6Kx`gWqVKY8}fT}$y! zF!u2{KQ7?={#mQZkK}%SjQ%*}DgBbvumhW27Q-0Gg#+I9vK~~VD_uo~#+Mu|{XdUu|IjT6nThV=nDi?&~6y zhZE73)`Lw&y;#@A8jS{8+y&zyXx_py6tHoM!*ri34_+pf2T4)Uz0wEp7J3i4R>p1R zAlH&8YyzpzBYvUt5xYI0)!RBEP(O3MJCCm znrcC>XwMMVVB&nCMC*Kq|CH&`Lxi`6ERbJ@3MJ~^5=zv)1*7c$K!v#;6fbQ7-IKIa zME4j)AS0G{B4SPmAH_g19QF@s(kk;XfR9Q12*VNeHpJM|&{78A5;!DBI*PkX#f{}UWgv% z68B zdOl$m@KM1xuQOobI7mcq`o>oukwYvowEoO(-`)q;pkp5-I_H45lKt~8TTdD@)I)aT z6^Pd#L-MO{&=s(yaiV)y1guC@f%o{Slj~r0A)kBS7B-bk@39zwV>c*VL9PBxhe|G2 zar*LK8Fj|%X@4SKFHMRpq95u|q@I4*gN|qAFaOrakX%9eK+t{VOHx8PISKUG!wDQs zAhNWs8jpeAO2xq0sV}2Go3cndqSodKqYY?*TnI&#$-6aik3Xg3&dY!3WSN)DWhjy?Z4|>mUO= zQ1-l=3y&?;9ZwpQ5f#pkA9A7c!!$+SjNjsWGsA1KOgFOQ156~T_ z!KI?QfcDT^+oX_tbLEy*w7gE@zk>F!lN33E?qCj={=5-EHk=Cq>*;{Yl7O{a{)*pj z`FO~g0B6y!!kLctYehv5^PNFXh}8D5%jzC44a5f7QR*yxcnd6&@rkDn^2gu&O1LJq zK%c%EvHH5r05QjLZ1C_L7BU0ivm)z5O0gX!UVp@#Ne6R$Mzrr7#Fc#J!Vz$BtlYBC zFlUP?$N9VEofRpBNQg0xqx^n!mtEh9SXsxbzi@#GC9zu68zI;?Um<<_ zE|qsa($CBWZ$7X;kip;Lvxv-*_h-8-^Gt-y5fnFi6J$ork1v5U6}HLgsJV+Ff}Flm zdXtv4P?bcfj>)O6XCK{mDW@)h{bmrQd?`no?x1^$krAMhgCwgW1y1~J0TAmpALsXN z3C)+-Xo*SuQ6`4-$W8Zn%z*LOd^?|Q34oY}%E>uW&fnyM*y4N)>hk5YAv$pL%6ruy zQ|)-Q<#s-XB-%5sFGKX1YJCpXQl4N85>$te!jk*wBD3i^+l860j zN(zm{s8}Ofn0F+P&8I{eTOgkva>Ut2Z%hi&v1W;AS{_LE(5ONKU+(R^X?Y?A!GZ_i z)LvwEN`cN8mz!btVhsivUR!c6ufboK^Eqro0^VS`Cyk|!(mS;jHyTcP6zWlm;5(pC zu;)@3Q-L;gyIf#pqnoEz?vqlEE$Op7&!oCnAjW9=%bxr4Wz+EeOwaw9#JBPNj3@W; zQ}F#uo_l-3ID8-Bxd%xAzMt;7PfAeZ`)Qv0(4=U5Kh<-elr$ILt33CiNi*>Mi*V0d z21)fV;QJ|x0O%`35)JyKxDC%7&boqU7NAYm-?qPvEcGTVV{d2txZXxpiakReHB0o~H&O|LrQwY0^248|_!hb`i& z9O7G}-1x{9+Bd)RsM#WUE1JC(D(c^)Zd%gLdvh5G4LfWE$c-TCo2Wk)&PIM+{whf? z3eUGt!O>}(mf0+_@r26f>nJ+#Yw*;3nXr(iXo$O#vPI&n!4XAfL%thF3fQfkis*5Unz=q?4EaR5Ik3=hNx9S`|!MY*SFTc^kj7!3GlD5CK@mU6n9 z^7c4pXyCiml6DE`Y~B$Ia0*aAg|-=LidrXw{5DG<-sq0CwbkLUhk><}rh&oZg;s$F zgIA&$$4tJJxAo5K71fXh(iWv!YXtxFPP7`ng!A2Bi8;9D*^n2guG(`&%(+~J`8n_} z{*iEdr(ns{ko)fS@+m$uHOFlMsLK*EG-Uj}V|WGW%abku9k`kN3$`OG<4;vM9&k*L z8Ki=2X69-|uN2}~npCAJWwr$!Drzps3~=OMM2Bbpa)FP847%Ij_=pw5`Ti*QWE;J` z$Rw4q0qLh3jrwU+R(=QlCHWHQfF?I)J^#H$b{dJTvMkz*nwh3h?z@$RaVryQ!%>Xs z+HMI6XMJzpiu<> z0LRHzony!QciyYPZx>}w`r7DCjAyj;DdW)6PlPpe`q;Y(Tib$CdhY~$NZ+;l^(*N9 zHh<`Wgf@9YCc@vr01i_WJ0&<}m<%_;@22+Y?T zjBdEzV-la=p+Tr)V_D*^Du`gaOWv_@enjqRAtO%=&Ad}`7LSzbq3FZaPfSZ()?VCV;pRIi9P^NaNVV1y~`aHnbn2o)c zGa&0nEXHQ|Mu^D`ITImvE#yW0-D>&e4(;s?a7AtdTAX$H6kyBbM=;~Rnd>O$|G`5p zk2;S>vBq-wh#;}il*^@WO*CJ|yd{|;?A*+82YUNY{2sWm6LnSjB)~TvUsYF{xMAe& z{#ZGc={0GxQ<4#rwqK|v>1(ia{ew`;t`+Y6|F8o+m=Cyilrs84e4aOp1nijrkt=Hc zH^VC2si(l*!JRe2T_W7ww9Ih7gZKkG#_qv+C$JRAz3y@eE$z*SCWWw3D zJm{=5zz4SElkx9n9IyO z_3eZ+x`|%%FUUcB$doaMc1|PlZo(#oi+sWV6I1Rud4DYU!+Cd!SjBY_eUlQMXM`QZ zup2m_6k8O(YgDxT4P&PQ`l=k~{F`#JiRZayCznCKv{0rw0q@_!{z9$&+D2wMnatBSlxJ3 z+Jd2DjTIk&e;Z;naxBjXyMm^D#TvAdNfq`M)&Noss{w_WVV%KMTZ^!-2$}zczG-!5 zZ*m`Y_6U7z8&X7u^@XaUnAh>gjd}7 z$pU_k$1|&t0iMX7{{ZJx#yJr)bxlRAv9q6E(*-&bnDYqT`ym~sydiB0;3L7_*gKHs zXL*ei5$&QipzliY@JZMYS6{Ca-E$J^`7Hp~XKAsxUZ6_SR%yAJW_pomOo?OpkKJrKAc^Dh65~0)E7$d;%7`gSz^Xuc?fCqBz5zKD<}UrRDGGryH{L(`3No zw?wIocJMj|9phAc7OuCnl~m`}WXxS$vvzez6Fy~uJx^;X*ds%%!$4ssjEiZ%&cGWj z=0TW4`=2-URfEJ0J+KEOnYnUro0!c84axrkq=N=MNMiKgZ3526hmdDd zE)`_|cqM1VrlkCU1iEPYxPZ7}n*tKpPJ`=czTDV}Y9;i_+aXN0$sQPYG@p*$GMw(p zR0OWJP<>J5=0#?@xy@f}&CT*p)=$qNEEGcw$x|M@2m58WH}FYu7wMpckX$C`+7Hm8 zNJVW&{R*&GXQ^Nef!$1xagJ0@-b3MYmvZWMz)2r5H@Lr3y1~9&v!W~wG8&<#BFwMx zv;R*Dh3M#1ClVj@5f$gDB zezeApAN}lTMfe~|Z&gs7%C|FWIZ#rEf#GLgX`yU8tq`eWvoJ4I6gRxnJ}U*|9O&hy z1<<9srV`H4*yEj08Rw;&8*e(MpPGw2@K$a*V$~nbqjna530+)oisT$8?{Z6^5K zN`7n`0;^WV%pw2}-+C;&bZMTaX{SA3+u%UOu1nD%c^0xYx;G z1?&oPa>9oW6#v&u-MK0^UDNX|R}h0#V9qfZyI-w;{>`QQ&DmLN49nX`gbpzZBYE?uKugT#ClK;UnGe zli~db?)NG=g!p&A7rWoT2k(>I@27x;oznfD5Z>>KgZBv_NhTk_I7Pifzq2khQ>d%;ZM;H+_3#m7&1qWt5}eL) zhDn@h67Lu)Qys)|uzLL^Ivk=KnQ|bTC`1u6fy`Th)Tg4gY_HJ;_GwZ^cL}&OV;1e| zm6(Ai)$f|{-H)w72~1A$ooA#K0lc)rcC%@|vB3~(C}TioU>obI)zKTe_|I>Pp8U~7clrq?{NWYG9JERgzLJ+5Gf@y2=Fe_%q84{eBu}f5|=n^u8qR=u0KPZ zsf}`j#3d&sgk$m+@i&kO9G4>Bci6s4FG|Grgjnh#?F;F#P+Owt+t!h+vkOhk1R3ne zel4~Uq92(@vg?e9E|iXBsg0rorY*W~lka&m2{egmC3mldH8`+UPj^;`%)6oghj;%& ztjZ*Ir$G!of*vd%2bNIiK%xG!6w!Bf`3tl&tdedrdo5_^@}s5;lDJ^ePFB|}^5OLZlUT0|F^hhu+~*~_tQQrQ}8^(f1kc1I7k5a;S4gC6F< zcq#PW&|99<$Vfa-Aph(5{6@x8iEpe^iZ#Dj=N!Xet@ElKlm5;YPDQxohC({q=%uO$ z310goD`YtUPy0!S3}7q6ncBLK8nKNm_KFt1hi`3rdp1*%g@0KlkNqB`Q31q}yr6bw z0!X1{$}NW=uY*upfVd34#b4qmzh%6}dymCE@9HP^TsB9ud;Zl6+QF{O=4f)?zm4w( zH!W(R%`(yN`+Ec;sqyo$%88!o?dwi&;cN995V_zNJVW}K#w__GqwASc(M}PUwxqvo z`Ti<5Jo9i{Z(fJd+p!A#!0`VITOQQRWH3HLY~Ur~Mu_@W5P=R9{4<`*BmYes%O&!M zU5Fkd2Ae;U6kEU!=0+W2q!#r@khkiify86(e#{d3wd!BE*1QbQER8+Ary4(bGy8}K z&m)AA7k(7JB;8+LxQO@MhMp@Bul1u&X{)&(q)yc@7;m)bkNN`k0|)5~l-<|&DxFOZ z#hDiA&$|4ZZ6KADp6@IN89l_&@3`KMX+TmR;HNa>4VBj{f|lG3NYm1Pi+B@a#pY1+ zS&*ez*7pGR!L^S}ME_d+wgUEY`Jg*L(}NR6K+R&%j86u6x^G96DtlJ6CG9(cUKBM% zZ1ok15Bm~nBWG^oIT(mmHhUX=OFLLxl}j{d(jTeAn542oz15JVGR^}{*gV2wq@q=n zG5V63Kj9qgh8^QBB6T77lxdkj8s~w9whiM6OIsK*wFC1f zIMYUH3$CHaj(J1-n(|cX1`WT9;yqN8YF}QyVs=_t8s1Iu4k!-Oo)z{G>MXa^c~?Kp zS6p06e|jW@&|Kly&!m6B4l=Z>@4XZMUt`GdW61g6y~}+myN$=|$7=nwT%cDn5-3>* z?Msd!mxsVfDmyDM88s=VRuMXpOuhe4Ey*F)*vGS`$>(8`Zw}# z>sQm{B-mV*TZ!ccWOa3zOwEm`89HV??w# zB3DEYrNUuuK)U91MLwCC1$Sv}ltPSWGmsi7_s$?Pv0&Y~qn!3vO*LcXXYvTS;+ zbU1B-JfECoipnU7KFXJo1OHBsrAD4NhT0;xg>J*ru?1#}_gm2x$ik%B5KBaEqoceh zn$4Kkt@so8!Un>=6BjiPWMf9!r)v!DO+uVV=vM|61kvzDiVyjsOTe#p!&!v>k_w)o zfrwIZC!#T28xulcuOrGVWM!1E=A#1WRoo6WH~sm3UUh`qHKH8WUl9l|K50;kjQY7w5v@hL}+!GQKzDJ1DXBJ^1LHLT-~3;O_T z6kS(W9-~cz{25&tzt4_OdBx)HkA^c-?F;be#sxzT7CgFOM`h=HNIUKma|(I{5(1$| z_;dw669F?cJls=79}wEPRc^f9j^}IvbJXCOt-U4g`bKrN46BxR!#EF<4kuy~>&d(Y z!upzAA}wmcGsWe}zRwuJV_@3|z^}VV4Olme@Ne^Xq-nX7h_lTMsZqdw3Hx&?Xe_eu zXzHg9k{0Z*)dIf?9Q91wdGjkC`;8F%Zs&gG5lXZ^c63ahBV6xtLiX)WTw1eFC@uZMUEgA%1PQq;--;f++HiM4 z4}FrHs{$DrJsRaYxa_kP&35z3(a34XCQXPqB^vHv+|{%K%>KR9bZPIVV_dkT0DNernWo^MDkwo9F*ke`vFm{`AIF`Peb&ky+meYxK}&ivG26s-K_vE1(B? zd5S$d@>j4~Q1jLAk>w2NWub1!c_YeC(jUkJx$zm|V!ZOZSoEk+rI8X_?kM*Slj$4b z>Em;vPV>xrsdVtaJf}{_>@#wW~B&!Sms&XfKW-13uJyr{UZR zbZ+BB+9VA>Wc+PO&i85`3-&0tt_vfbcxzE7&Qg=qvfKvQ=&$oSt1jbmPxhLm7Itw0 zc>W_X?TVPdF3v|kYH2QFZi(p#39?(npL@Tg{veDNJE(Jj{rL@)5mWqw`4M3A(c6iZ zqkkrN%C_Mh;vb*MH^H9!N19!&kWbW`{E zz$AJd_Z--VKNqm9X&e1z_h0f?>W@nay7c&L{c)0@i#ET;{te>uZ1r2l`hljcWiz5T z8s0nDr#x&RXtFa@j`eRT&OgW-bujkOgJ11)%r`Cve{e$i9 zLR_izwrA`oO}B#FmD}8Solci7$7AooE{pmK;(V__R%u#H1`4ZG*F`tA`N7zFndZvD z^tIfa1+m2_7oD+dWZ=qx6?9?wyDG5x2uM;q1n9)dcd&0xfW4^A=MHU1K!J&J9YnKh zl>?^gUjj~lqn96+pTK_l`c&|X1I&F_134G2`pCxwBF&eRKi4nvL$vFRcae_X)asq~ zvudyr=_B)y{zW6f-X8-r@FqcLCBQQyV(-s~`$mEt^AbAqrMSk=3*5Po-tyXQ<-u6Q z4yJ&2Ie^$p7Z4Mwdh>nYQQ8RQto7*R@Y*kw`vzo6{~PG-8sfFzuEl7r&{v2aai+vP z0__jmsOZvj%=i*-|nZYW1I!k_dq*7xdYcRlQwjs(nPjR z3;J4lHo%w;QSM=WAZna>6jF2p8cr{tcGRrDLLs{4OrX0z|AM~6c=}tmLG)=epL=PX zbrhU|SOxqUDUfY#q1nxpt0XoSY$%zea`PdxcrRsOG%uUMdPxW4zoX5d{O&Tb<(AKV z<>BLq@u5jSi6B*|p9onp2h3tOT{FK721F3Y*Na^TkqPm%^_j#)jOZ1Y_I0J>D{+@2H)T08EYbDp+#Q!GJ4Vc7OnUa$Xw+7@7Sdc zNTs<#D8H+Nkz_)ZleKWBYeeLHm=B5)d#J{(LnWqL(tF>PP=QEphFIIIoHC9Bw|(=J z9saKkp=i1EIVLPJi`(#MV0Q|s3pEENx=+bT&Y9Sn0W?~#KcS*oR1{#_#hV;Irnijf zAD`jxs}D5?K%+oGm@{Zg61~QN zmfNbT#77OH5j(^)vqk#p*@*2mxVYPX5#?C0=d{PS% zFf2EH1k`jSx>OtlR^N+>XzvCrL%I0Ao;ZeKuXUde)m!n*?EO`LJX6YjdAyAEgYjt} zm@Lq9&bRY>OwYMboacd-YvjOn?m39Zhc(aTSI60d3gBAgq&oHK>clnX-4kZMPN@H` zP^$H_XR+hWJDa*TJvgxWz5VjWdbCGFx7+7hQ-K7o9^d9~ z1ALpjgfKIBPf7fnJX=Q4TggDr%702_MJv?@+|;BkLX2U*1rbS^A293}x`Y`4z12m> z_W~B|`WTP$;P2gZ=f3bwD#c|p_4u2-U+3eqE)w?Q`m3H*z~!_6uWkb9v=H687j3sb zi#@pAvlN%boWgayd7rm&u)X>qJbT9F1{kw9FBV%Z1_mAMIoNlwGXtU>8-PL?2)ruj z4bCT4MslN+w~`WCZ@Z|%I*bS#@}{Emca*CGOjs zM}@Dcb5Fmv04EZicd#RauO+Y*_X_XA4NR#W*YW0=_xMx9B7Xs=&s-L8T3srPntG+9 z14%rq!x0=jeS0-t15)=IICIHezE~(<_h-BYYzUW`P6~AzE(&ExvrvYKg)+8%e-rL@ zC1BX|zQtb{h6rCIofE!jWrZ@WiBSGi;d;UcKyUu{5?BP7+;c@8=jRIMhRba^i06=> zE1+O|4w->FhkTtuSf}@eIh~f?4Q+Y;`xx8rHKXz)3Uu}kcwRjh0_Qx3r7}~LJgyGQ z+}v?S-*kG-PQbfxb6h6GBP~k+iTiUIYBCw>4-YgAVVpHXGL2U3Gkj%+HVO;dz zDj?JO_x|*)SW?(6s0xd*m)|Yqsi`2*QW@Wg?$@Z2!MCN|?rmuqPe@w8t`=qi?<0>v zhbSRHlA40EhnImwRgmLuOb2TMDJ|9cTBt$16=883NT{43^FbB>IU2H}tpfJc zy&lqorIbtXdNHbQg%j_ACER%ayl)}jA&Octd<7&_jH{{Scs_mW9T}h9 zc2GV#S1r`ZXd&nE#Z?tPAJv-DnMrQe;sQcaHin*q*(XRudOtFnecUt5SPW^oT_*D(Mlt3$)gw&|-WIc`;lp zNT^LYmh6V8U)lsLsmSzT31CQDEI-1aS3?%*VxlN%KEqQryBNM5opUYk$2{e%&H>=s zZ_u`wL2`+Vu&l`!H85w}MX6=WOB1m-;1o{Y4O*bj8$=dE9V$vvL5A}*HON<2)ImN6 zz$NN3QZaVql}MV1d)sp?ZCawVbv|>c0OtB8=zc!$5;gO2QZW|JUXHaA`Uue1Kx@Kt z_I5ZrU{+3D3>MkF2=F!aX-OCz+p5x9UU#l})qDnX0QU9n@t!M;cj6x$w#ie>M%cUR zE9Auv-dpdjC|~fGAwloNM@aK{?qR5_1^bRkVL~(`lOrZyJXK=khUE{Gx$PK*9Oyhn zVa{1Mrq2YL@+z~kMrhmY_01`4iz?KbkQ~y1TL$|LzIG2)qJQWWxocMB4+xM}NWiX! zhtF-3GvE1)W)17rc!SMnrq{psdxP&&eu% zpqvHSjUuE*?hA#BFIz$NdB$APi?cgQ?}oHjX8v-4J}L2m{Hn$^M4FbEORsbCoUcP7ld~VsHbe>Rmo0j`q@2^1#+kciT zM!<(^=x)az29jOLzP{_unS0?@C|w z<10AtPx^)HrYhkZ<}yT{DZ{Hs+F7gpHj{o>;g8o5(8$LXe*Lin3i?h(2upQgnRpHr zjHMVf#RN+w+^Vk!=+lzm1w8KcgD(%=EqI;DL4u&T4WsK_844VYlumPkJP*q@A!=Qq z0%BO}-vzH6*2|m6#!L@3*5}S|`NE9tDIs@y0N`T<_Vw9Y?$)wyr-HHm4pVy9m*FPb z2cp$L88=48I6*sM;%CtJ2}XuJXS#qbn}0itG65UeTY;cO2mQHdd2<4IjPh2~xPLEL zu}*y=qmGY05>5G0DnlFO=-L0Xoa}TRU}U?&dl$TGjx&~eJL2-}zp9)SXsuIx1ftLk zJ~W)YQioJ?uOW6l@Dy9X0v3#@<*{c`6g22yW zOStLnv!3~X9&qx=&;P9_ZhRc!!N)>Qz>hN{-S~0GjgL3MddX&60J=Je^cVs=%ixo^ z)k+hzX9_pXxJReUMDuxEeU-O7z;9m7g0cQmCgq06ZeyzhVy-|DJtG#L2^PdWr&?bC z>vt|*zmOq{e^QaZ*!|>zmD?r*&PrHgTmaP$_{>svjL(N!-0%)|!)tTHdmZrk^`~>p zz3=RX*-v+T%lXKfb|x`9I(^~L*hNKs)28Sof>d8Kv#Vp=o(KW>cplC3Z8~mVBJ$6 zQSVJzK$CGVFN-ELz&YP9OZg&Sxnn%Bam_Lwi}=!E+Q(SG0(teiWsaid^rub)cqpQE zPSjKaF^W*>?V{$1ID*3C-+vGMrIsSXZLhe%Ua@0ujVQ4!5kp=L_I-FIg|=ksq<3LQ z$!bG8PlvR}*pvrhZ_1Q-$xV{yh}}W)^4K~A_5pC7x!D0u8E4t`UFcq;dt4hFC*I`7 zLF|$7IKx;+&3#N4&Gq=SVO;oyIg?iIqtMRpL)sOYP^;whR>7kMUES;4mhcY$hF#BrkL zUly9Pl`=e6vzN-4`Xb=x0gb#KSV(F4ek&kR8%YsK{;6 zD%}LItLt{H%zKdcULLKWhRbu-p`?q792(qs5cDOj-G+3)f1usxhr37RRfE7c5u80bR3>^7=!!1-v zG`98)YEupRpJ=&JLhg;w5!d0ol?hkQmf0VA#<6)t*@vQ)A*Q$8dvjgE6Fu39H+Mh9 zj!B!tO)u0vp{2tyZ-6Nds1RoCkCw$=09iD?&^s^fuj=Ax{|Wk6vy|3gBVN z`&Z*FPocYKX&OOusidGO5Um8d&(jR;^eNir)Gy2eHWZyYYr)hDw9ySNxw zwcc@YOT2kKKKaDHR(xtz$0UfbD7`zeCEVsX@&4AbL{VaM98ju`z4wGt&Zyi|0#B6D zHlh~F-xWrpVgl@UYPVz)I332RMg zp>bvJ4^LN21&fc$ zqyh({%@xncM)FjU>@d9|VaGKx)@OEH3sBjjRp4(1HY@bUy(rSe^Mkg%nU$F@)QYDw zE*A3go#WW`8dwb=bz!IgfqF|ba6K77y)8h!d-EX2Vt#KBhO_t-=5FG*y}jFf3wCSM ztxOCNt`|cCT>C&}CWdL=16(@y2e1_c9;pnl)Af+&oi5(&1M7fIGHeUy;YJraK@J1! z=j-h)vw2(1j5+vB>#^;}HJz=eGi6@Se4};xix0t>$_Tp?^df%St~P#*E9yrSb2Pf` z7eD+LE$HV#f7>CUxq2^;m#6Zu1o-O|(20QlqN82{`W*sW&%iS=ln2Y_OkQ6C_Y!!I z@5T7N0NIe;LMu9Xh=I8yJbM;a;7^)HS7Ck*;#z!67x#K$=yy8fx8+(zYdqy~&ob2N z_*LlQ`vNw#bxzS{@Ta*ER((CtgF@;C(1Qb)Ex>!i=)J$K(nQ1%bGgA}bJsEMuV;Ua zG0dpJqc+yqWx@YH-vTjBVBHSCZ$5-27H3un>sB490C|#}tXt%`=pTwpoVhKOC{Gqj zOqeBEQZE4@Ko}^Cfa~y61dy6sV>(I;W zhJ-5s87o0v5O07#gG{P$#~avAjReR}?A<5yu|kSZ&oCdaj(TSH!t= z4WU|F0KQFNA(q%R)MBhgbV`@Mg{q3)p38l5tZ#_M()Ar=H=n!$e@$w*FVgzSKhzGQ zQK^VtveCvBtF5=p}!r7lFpK&FD2svWB`>B}xRp;}c)Ch9p%Q{}W8yyF9O-GO1%bFSROs zO_*Wn8^R2eV}u!oJh>Myk{Acpxl7nz7fQ5_5=taa1Ntw<_>|YQwF)@jgU?rwlC(&- zSIOUb9&6HCjcAnQG*w(3nTh`&sj4*k){24K23uyAEJw~rU9z@Hu#_N8Lz%4%NK<)VLyur79-i~d51y>yvykE%?9H;|S1ZyfQIHq@oyGq`Gz@&r z{{{u}*ZglO!q?yNzZHlOWoO1@GBIQf^F(6y4j=z}PaChX*;iA6c||^Z_Un&C^93o| zsPX-=DOC_TN+QCxn1Y8x*qT8iY`edN(X7BWnXnF124C;RviFp|7v|MCPOK{1X~n#C zc&0aFxC0snmWpCOEfkANnO)%tToRyRCQ04Y74;4KJ>Tekjw%KSAwKYzQ%FZF)%{N>*+_giuM)0odH zKl4tzy>bZP2ba6E>SU z-XHJy&*opMx}yN=emTkbL9D5Nk0LYCE}$e8;4g>smbDRzFbT$uqL~Fj(KsqGu3!00 z*dFrPJYrE!ACH7k@F#QZb9DMjWo+<1Q2CgeM2_lb!A|R5v_<2y}<*N7o1=kT~E-d9&=d{SZb|QG!P^v;~i6 zIK*c=kjY$-$AZ@YoHu&&=Stp9yu^_cr3)R^ys@oehlv!h|jU`)FtQ9Of0 zAsvE$B-X)(XR^fsh$bPH8dofdVa_wa(Ho|m^Rg+YP9;e2o)htr2(ZKm%hQ4W+TPD6 z&tZOlD)9R<(e_P|#R9kA-+9Ywwqof+#cF~3#8T(?TVcMUl#}NWK`n$@T_c_$0q;Lz zh^4I#;n9)a&0tm5I>@M~%B&L=|4`g2^qd5}=EiiaeFZ7Ct?jEE-*ckmEL(cZEvr{NNKW7_gMdHzMSz4#-md|Rk0{W)+VW2o0R-;ap>7_o zedCGJ7LeYmTOkggw8ahovaP2!nuTkf?&)>KhNstU+KhT$n_?7nDo^Jc&osz~(}}l- zoD-xZqU1_um_|6IBtB2Zueul&JWM03?8N)R^VTrOMcbH4LyQq)g911u@MXH^h}y6C zEpAn7DvcA3wEc`I`Am4B%D5|P#11;W-p3+!B7Gg4ec)8hP%7qf6vteK?DWvj?zQO0 zX8FSDi0xXBAg|84X=r9vT`Qxea}EXPs_Bh~#&q5GtcIXQtcN;Kpfa>Z{T|BwzmybALy%cfLe4*ybvR1?5VUXE zX9oMur%h)DePf??O&lo(PkTKQzX}|jpB}0HbR4O^98Rd{Q-BNH*papk|FI{dYlQyF zNbqrWMJs62;lTga>*uY{wgO-H>EVmtwWRoOEj_3bR-=Bp7_7wfXxnD+bx~0$USYX% z2&u-7AuM(~L2pX(o^BiYA7M?dN*m_+8uxSIIo3~1jHCGP<@oy~MCaItO#d%^-BTs> zm4v<;UGWM!=dk3z^>s!yw8dird2Sp9<-r2_u=jr}U3W}>$d3S+h;!ADbDi*6kyy>8 zAHMP5%GX*{jnL;YV+fV5p5O+x{XFx(z`Xd_YJkH)_^eW213M>?oT5bAYgP{vAKwh^ zL2%7q*v)?Y(|grol@Y;nqy`ua$VW$70T#gJ(HJ@&GwxXgUq3kiN~@wk65evg>lH1I zL`tXDOH|~JsF04)rui)@NqH1#B>XJ03B*Jr##n|TslVqn4shFg2P~PpV4qn7){awA zIh-t;>K({`HM>63bv$3bZVftb2AO)Y+~{M5$VDq|h8NWk;3r(P1$!FH_y?{$^rP*n9#5z-X z2+l(^o}H&4+mIMTfZJDrO$3Hu`=+;VsHF8#M~(doOcN{yGb-M!Oh1IU!0z9)??973 zK5KQLw-&un(_k8AJ!+a~9S!3`e_ZbsK@o(UQuxaQDbdU#uvi|f%94ulX;r>{EozMN zTKd8d%JfF)o!q$|r9BQW9KBf{n*`aO*gzdRUKFY4Pp<|FPO(xEtTH&g^8ew~3jd81 zWNlWsMp7fqZ0vNjJty~v&5*@FIhg{?#*uzTXA=#vDN>)t6Xa5!vr7lA9qOO=5SI@( zo~=1*9G(53Cem1IwF0cH5nwfAxs$vHVD)Mjg&X3Fed4Xg&p!wIQ>XCG;%r4AdH9|r zEZyzsXraYEoH&=)m3Iwxz!Da<|MHt~4qReg# z1Z?y=UU0N1TpyS?4&t*>gvww=>=`H6DOeGXJKmf3VDsfX6=W4yeNzq@%SZ>bFNQ3U zQaNP2qW_5hQzD48jqeFMhQBB9b5gq$e52)63N*4{1_^zJuU}*mUHtbk5XB0AucjpY z_gefPzSr>g1b+VX`xgsF;P1)d5Ft@cvi$Gg`CkkFdy4-J<$r(Tf2Z@m8vb_?{JQr; zuP@A-XxWY#t3!Ge2QfFF`4D>_S|B>@f_7}*qu)cJiKg&uN6P;AVdp9{VdpodgF<;WZ^BCLvyj`PwX%N<+ zo@88e&XJb_c>0agb8q=G+e&G%C2Wz5r8#v%IO5l>ERT}w{i5x>E^fd7Ur?* z*77r4QaBx{VjIykM+D$Wgdsg0%0t$;;a*m_W`|J_0U9Wm*U^IMg^^iBx}87;1l(Ag zhpm>ouCVJUFXle00K7N>_S6cP*IN7^@ZuzYPtd3MdxAa_!_C*Pp%F>x%&Re)m8VE#cM|t+w%#mLyeyPcsTK*o)(KmDlZ)xx5MP1 z{U`!cPklX!_j~e~u{$b~Y3&Bvk1RsX^?yGgA6N_fdKOYilcK~gfgai0Z)j7o{s3f< zR7Ao~jwBJJYd}tRIV_t8Aj^a0(yvH9mK3QJjRYQFuwp{t5T|0eR|J!uemqb98eV&C z#Kz%Z4d7*Q>QH52R~|_9NAA?BnEGgXeci~S#9C4%Zv@`pPY6rcj&Jnc5kDMqI)>7p z*Nqoj8P`rP@!>3&Q05~<51d5u`9i%GXFai#?8;LubrPIZ-2XeOvc4Tz)M5fCOLr@> zv{A%#^SnGvO@OYz`W@HCuU;)=8^)`54i(O?-g*2zLC@yz3E?^HxbS?tHWD^DuBZMk zrbnuG+kvy;kbG^=VEM-n2fs`v!t8@L3))H2fmcbMQemvalnRdtP%1g5RKqc)iYz!< zIPSF}yP>aNQbTbM^~b@gZsb+D1!h~W?Ez}F(+l^GTXm}MKlSXYyJyqQxNn}GvE6`u zT8K4|DVvrGoI0j-LNl=o_7OK7jArLg-uLebBT! z2g}!X4IaH6Vm7#GHd{!Eju%?iUqy$^Dm9ETw2nvBvi36iw(xA;3pE?lNf_bO>Rf>P`I@cpJEW! z7)riA+c1$iS%6D&_l$kyyyb@5xR$>_ExE>Mz830`yOz_a`M0$=?0vM+?uWmcxaoF* z1xoU@_>d&M<{xNwZullr$NJz%l2p3gm}E}pc2ba!b%6B+%S7fNp_1mKP@^6ovcM^Z zq&8D_h+oJB)(u8mCc63Gz@kV4jv72VR5!mby zCv}k}88H@F4oIP2Cdv|3WGeX0es!y|gueT-%tFl|^f1@B_EP$R^NNvvm`yapY0yfH z-px?7sUIltV-!=wkCDbp7$ZsJ0NrOL7L+Ws(nvatl&Y&~S-G5)_E*WNK9`ET17|TN znzm;Xqbuo*+oI`4R*I<}P%`FUsKKnS8wQkIfw+xb10*Fkj6`%&z2C{@%S(!3Rlux$ zemgEEp)$cc*`BJ|P`*L>seOg!!}1TME1T1NVeVCfGNb7gIfKX;3-t!UdiS{^?^=xS z5RvV8Jn%TcD72)#_xpa2ymw zR1Gx4OfWUea`szQWHK?O=0E|dNjrvrbC1czeJ+c11+-`ZpSSmFmKnRM=B+MkHrVHP z>(7!9*N0|g0Wpt8f&X^sz_*zVzE@Gpy>Fe=8t%ZEDh(&<5D0N8x{(;tP7$WVJTOKvZyzyzE|U0qb4*uR5{C(1Okz^=GAMGllJ7A#d2=Y_l@G4R&O1=$!$JaXcZ0 zT=o`Y0$>$|V9Wkvah_00f0ja{W0dJS!XkS)`bZ4jm4i&X>GmA2CHZ1)rwgq4p!}24 z@O9Tuqc?H)bp7HJ6y78&=254zX~$P*4((ic&F8v$Yk)LyTR} za5fEtnCAqXwu!)|qLtwL3I3u|0-nLS$tZ$nYvGyL{Y(tc#PBQ)pP}N1XVbxaQTiO3(?ac$4y3)V#b8m8U35$XOgBn{U0+ng4 ziu*!A2~n(8ovN+hX$QRmLaV~mrM5B!lA90&lm-k|oKjk)GE;|2m1?Vq7O7gTT9>XC z2#b4g%HqQEeok%>+j-ybKfm7}kbCdhpL5Q0p7X3Ut-H!ExAK(>(ign^?Uq1+E?$a5x#a)u1!`w`zdde)b3Yb2p7zbCW@DozF{^bbY~Z4(=2x8ZSZd^c*FN@ z-Wvbg1+V#D&x`kOED)9r^sU2;bs}G<&xyQu{JRR?_Pu|;(!Yz&j;n^wRX?JJhiBlc zTI^ZohdDBHJ?ATEYJ?x=$Siixt)ywg{V+dfu3P6!WBf2fX3U+l9Qg8Gm?1OQ^-1NT z3p6*rbmF~p+{~TV&8_Tz0 zb{5^ktR)XL9B?C^b!q;LpWpB2<+gKluDTe%br(=q*B|O)Ja6~ag_;=8>$5AJa|sw= zBpF=K0@wR+KfHCHtV}y)D*@Ret?(oP8I{au&d}#A*ON;reth|O z{komm7V+?zM0)byR>}QHVqUT7vN;I4VbP*EiRn#ypLS7dZe** z{7j_Z97cb`6m*Y{?y~t+=Sb7HA6p-4-WIMjPsy`0vCxUw-;)-c`|WnUUDMVs&05JF z6(7!}yht@}xJpCGiJlZ+@ru;DrY+DSaQQdZ2Mp05dc z(m$p+cKhLD8%*o_M*XvE)b{@Tjm4WbRxIAcL{=S^>W#}p^#*QolqC&y zr6UqUS#SD!SNhvXA41m@T~F(h>1v{0g|Lzusdq7H^^7`kitNFg;w+6@R0g9*JcTIMD#7Xe@g4lG z9u6LcI^_9!!Mn|U#yT$B=NtHPN!;UpWy3^I-Y92>ZaD&tD>)mMm(tNEC8m<$O(g7= z#_fnnT5qG>dh0#&t5mN&uH%8!!}!azB%KF33zD2UWf868*anqZO{Uz_rt)Mq;-OEk zP-BllTjMTQF{;)u+^TrGyEhFX6^gh8jWkG#UuOt`OQjgW9hUj|> zTNdA1dM(wh)MEHd$*N<~GcNEWN0HCU!k8{Qtld~n=Q#HyG%*Dk=W8fA$r=t=+#7Ei zp!1eC%WIa}juj;{d;}e%ffLLyjMZ7W7M6nz_5lJuJ$M-F9{6pUVVllJ>`?EeC!kJStM1__>`hprczO6&l!!uextGoQ6%H8--OL%e_kqsCEOz1`X!6%UAXKIW_OVM-}yLIFQO|-e9JN4ar_r}gnZ}w!kBCtBVvC4gAtW3 zyfEA0{qI_8@2FCyk$`)drVwK^X52O3avJ$;uh9{noKp@(&f<6>;SlS2OLHy%H06~#W12d>z|p-iI$%bkcC;K(qG+1r z9WFf;vHZff4%1GO6VDZHF{tTDq{GteZl#p>eC3QpPIn*DPDGPQRy1g0vTM|sQ^Xyr z7gC$qtTh?0p{E*6Ojdk`fbv67%Q;5|ElnlMRGQa|0Rtrrcr&Q^Y`4M@ZNKo~a=X8O zNen$h!+wTFw`HI4`Y~y4n>Qb*r8Ao$KnBfH?S5!#`9klCF&x5*nPOq*9^Ea1qg!_V zDGsr?iu1}%rKHe}(FegpW3)KWgqNacIThg!YY#-#YNtP^|x48eg?@h`FRkjDjw=yPw{k)7<&vf3DuCzae3* zxJkHKx$u49Sl7Hh;V6rlCQ%e|9|l$~7Nru7vIRp-@m8fD$y651yu97$Hsvdvi0+H8 zg`Jp2rnDZZRe7c{Ru9NeJQy}Vy55XYw9ww4HN9&35$8YqUiyYmvn?EFBD<)^tJ+5| z$Qs#%@uJ>-y`+8M+wHF{e%)qs(l?u&XCw6a3yudu1FxfJzgQ>9W;fyOtqhh$~d#$$&yVdG;)SafMrxHSC6hW<2 zI-%$+wT!|FRKJKFEN?JFqr~Zn`dN6QPI-_P+=aL#fsS7PWmXV*SKz_SwgmK}nKwyi zoWktgLZw(Le`tOuO)2Q-#=(vV5mT=%IwhNAB)*6qGyyh1L5%!{RpCzj8%=)jiTbm!)fMcwpE){das&y3KaDSfw57)Um zO;T}OV732B)xcmfWm`W**fx$|P|>R=2D)Hg2Rr7`{;yA3n#|P9o}oUP<&3ggCRy+BuW{LYyPO$bJwwT<)RZ=NsNB4 zd1Mj1OtV7&8gSvw496ca+5KS~s}6#fm45u8d{u^-oneNrNRK5g`_8zn5!^(=ujSd` zRw`FC;p8&2_WZ`~iC4by#J%>Riof#B#7p0NQ*LexXVq5j(l?`Q*@kj+Gds$h?uYu^ zGT0nmb!8$E4To&-%2^P~e;@8;4&^HlrAfh1?ytxXI+ij}jI!Tq?#?~7^%}-o;DKs9p zj{C&{D`I#mwvh2viyKNa=~`Y0Pv8%Fgf~A@fX-sAz9UF+UXJ`oUO|iuQ5l%i!V?~H z)<(g`RtA8r=EPRk347ugSvIU#L^XP(G0MV#EZD%W3R3k3UHH@aVj zCBB9Ha3$U5Z11g$@Q|luF&{~GwZ4m!@2re+`k$h96!q}NBn#90@MatI z+6tGYoo4h_Q%6tR7B0B4XY$SuIQzEhZb=t+&C$Q6Lxl{{n%jH!n#Y2_eSjQ5B)Bqu ziphBbtQYEcvrJ&uVnK08NwH@1(Rg}ZSlv?p@I5?E`hM;Y-;b`4zSsWYd$=HdPx{06qnK?%UQRZ(?%>z8 zKBE^BI{K*~H?l5)eq;yea6aDa5bh72h$5G6R^is+AW5T#H@eQZu9x*G&QpJPQY>n6 zrH@*5Ubcu~dcUQj%;;w}UYZfx`(-P>ct5@97ullWk8;s(=R$OsXvrTcR9q2#9~tq> zjM(dVJBqiKr)Hy$b(Jda94-IUcxU-4q&nY&$2-d=;Jucn2aQ45jd&}=+vvc_NFC11 zMrr5!h@mLWFrQWyw^;cyH}Ji`E`b%pRyW~jiQG#k@E?t^^21m`+3GF~lm~gbp~fMl z=7}6jvTGD;8BhmX`@?Ih98^MoXA}m0zET*_HesTlj40NsxO_$1{$ueIVUcgY-rT9W z6ih1k7-Ijfq*JjrOvDY}NpaM4z&a$0pQhql-ciQdU+j2*viZT#5^|-tWeBtHyXc`Z zP))8oYjvSS=~Vw?_pMXc&Nf`AUEI0!o}=j8kh2X|CBsaiT9Txtzrb=MoF3MlJc(G_ zscRUA47O$#cv^7VeM>5*-hn&g)XlXiOLL>g6hZz0&xb?K9M7-c-FP`Z2Y2v zABHo%qNAd{XUh=zIB3GAtF5L3wV`S=WR3T?THqgh|Mi`kgfd`YsY_q73Zl~>xXo@QrDCX54OJu zj{(k^Dmg1zPHnHGeM=3STs|DVP4OF4PTyPlcO6u$U7&*o2`TeXtgXgdgzomIinYUI zFMZlK1G-E)1GR~C2JB4Ry|WFyb3kWp*I}$CPWZ;`X60k#!ez7X5V`T;Novb5*s7MZ z67*{7RTrC?a=rnxMB%4c>!XW6OV}lU+J$zVeJAH;_da>ggznUI#oABNx2?}9*5)3R zM#P`X5WsKn&yBb1+b(1LD65PeivNIp`1DWdY?JxV9G-!3?oOC|(8?d>?PtwRRz6%I z{A}(wME=qJAM`?lx!+@b`{nn2i*Ul|%z>0e*fY7;k0{nITX!D+(ZapE2b_@O&*PVi zO~F@27b~U7b@-)oAB(id*U_>g*p(jkpGvL{kzZ=1Rz~(Z+N05O$U+DG6C^#6gP2g&2#$5tg*Jo%9AqwbKs$DlyvBD7CRcu$Rc4 zWBOfAN9uW|)J*dQiBe9CYh~ZK#wdPYvoyBmcl*Zna)mUu5}<+JvHgJC8|l5hHNXxg zu=j?i-{LIkJmcv3T-ytAdkM~Gsdhg5@jOFe$4KE|?cn5numBuH(NV!ikWfT&Op6i} z9W0$o@n!%b8K%mxckjFA^2X!irqI#&huxxik1f9Y)2N0CwT{%ZWWXR6kqduU_V+WK zwoZZstwHLiIlT`Gb6rr-r}aVMdIfETT7Cvx%f;$yag7ycV?&9&9&1bDcv5QtYI(5_ zYpiZ%sri%`WP1r*$QACXn8Ht8}AX--ht;;c=sx1n4dLu{!&J zj&4c`-mP@OBmN7z8y5|*X^zu!66E6J`r4gaxl2!5c(h;YX&dQ?o!vO=|J4d2*bv%^ z&&N_L@yq&Jp;$v|g^%fLB|UX=a#-uwYjibBV~gq>WhfQ1o29k<8(qu&JILVQt;DVk z)Xqj4vBvFKR9M3w)9wE$>6Tgxez~tTI?~>CggT@>=7f07;=WuoPw$#|JdgRs$Mftp zS^YRRE!XNc-<#1fQLdTz-8{xGc)SF~mN8y5AH7>>N0;0XR?yo(FI>#?#<-|m%%fi5 z+t}-R@P}Aw93?Xgg#y8+Mu0|20iq(u!bf>}YGFL5E3E6Sp?O82@c4WD+}?N8hni4d z|3~$Ox$2`4bDj0M;1#9R_u74D;C3K=)&Dg^=zZpA^*!rf$e8I7*^hcs-%_VI+yw-yUwLprR!Ysz+Gmm_qw6U^cHMf zE}N_%uil#1S-yEh1oa`h&r+H>YV)gz2eL<3d~M-9)2#`{DVdI~xzG7kTOnoCmTf1R z7@^75Pp|}gQBMrJA9;AF$6a6Y@L=~!=(6vK?0OYG5?~2-?u8spj0{qo#p3oYKiV|4 z+Oh=3GbU7VC>)+geikA*H^Wpp*`q7np&h*z{0SvIUHvHnRLoYNNz)t4`NRn72_+1g z+#NHsHy^TD%wapI4}wt7#E3o53)|;#+R-bR<=}nNcy*OmKqJor7Z`PhnD*#iMLoHp z+SDBk{c_6LM)D=v$_#i5prd-Gf<7^`xk~yrrm{Efs*$ObAQ>kI1+S2(fxrh6EO&L% zJ~+0Hj)9I6Xe?$1r53f*awEeU!mc64IgO26)3qcmQW)Gu5VbifNHmOtCq-EGrKf7~ zPP~gn70UU#jfTW!xK2AdLI*A9mcKTISdy!>1#=`<$$X+kA7sPcL zCZ|Ojrlif3O=V^prl!q+|AdxzKB0Y+jbox@lNp_C3KRKwKUEfJX05y4X*hvjTipGW zO8O;Qq^&z@kIL)g1u>YhCyMtHD*jk|TBMG~fd2xpiEvWVPAV$!24FNJtTwCxFp9){ z?RUb+tIZ8Ci3A)l+A%W$iW!JzZ+gnwP=R$ zSMJlOfQ&83Ne20^`NhX1*vSPXe5G=&te7&geZ=s zoLUwhg^Hb$<#IkXoaV6KZFQZM@lBG=BF)$JVqZ>1ht-#7*KysnjYSn9hEd`^#Ew5? z3Ns%wM`gU1;e>|kL|rp1W`=ZX#2+sdsNW4ryG!<#G^*G>=mi|Ih_EiiZPY0NDSpht zlF|=4%%Td>nihg$4>FxHF;+mvTUx*8D-DyNlM}|VvM`aAg>o|4B#zOf_^&Fz_C2!? z8n8o5Zls)BP1cls@N5JmeCm%N*^@W?0y$rJS}^1Vh0QGTnXFtY=O8hj@CvD*ULmEM zjnwm+OH}ewZqk#y8A47INm*1~;W{5LzH6gt1(4y~tp9N{7qRY4^7Cuma*_Y_D%;{8q`K;YQaqBeZ{@wF<*_6b*XQXcZ^|@k@b92Hc8HC zHu=B)ZXUZs2KAhO%6Zs(l04?;F3huxadGUZxStLk15wE6^%8wmqllG?joYfD%s^xYWd zka_NvGUnfk| zBAvtg=->9~#nTfPE&ek!J52%L{P|t9x+S@%>F5~tECHTUwh>5s5pRsf4WspFi*OeH z?hD53;aqu-_Qlb`bYDzPPSZ))OP8nUgl6aufV@|mJmB6ivM35`suh~rEn9vK!7UHB zjFx}b2!Gki7K>DanbD1$MPnEven@sTk=0OJj6hOqGx3Pu-X(Hysn#R)g7%3@5$cm9 zdDbhBT8-Um0v_CQ0j;{XDWdODiTEjTS(K!)5n}vhHrl*WY80CH$f1Es0z|EmC(tpf z6#g+zW^>-=18tPDU|uVQj{eTm(zn<=`mHLV)Ql*a$D>8*tC;K9nzoXw>eYDg((R5} zhQ29Q?2eIiAfz|xS*bfiPrJ{xqlfFY;}+oTPR0r56QwQVh<2EQ?1jVul!*s7fQhP# zm7o}#p`8=~9I&Pue5Fi`X|Q%&Zj^Q!PX5u$@b>{u|FkIl;Y`d$ZJ$O^ZWA}hDz9Y& z=R&3&ewKQz-5?s2?~XtxwFz!vFg@Q4ovJDPI$Or zggQS3+>8_^X_10koBXV}+oV#oJc-l1XxZXYvkEcHY$$0JtCQx5?lxFFL8pX23a^I$ zEH&@Z%@g-H99!>tQRtN;CfA^h$ArfB3sGYI zS}A1hN@Y8R?uGunko-NA|KGg?9pQvu<4VvGB%DO}l#0@q>I6zz+$mm{Og)oOT;hUP z!lU#?$Nb@gux`CI5yRsH>R#F6Usbi4t!3fG;eK;()XS?4_0Bl5t6M|ex5Fo18p+J0 zIto_hIo7GK;7M4O*D$`=G&0Ibr_UemEBv)c!Nx{JUBw+?Sj@3_Hoi0){AYzqRFjZv zRBK%L$3!k7s-C95S|1OJ*3>L_>WkfS(z;LDWWs~FGU3fVtjY`-HohYAj&F%fWuAyP zLrpLdc20!8`aw>J({bg-$cQ_6yS~wcS8d+)D~&_fg!r$!T@hW2Q!wwftM9V0h(-OY z`-)GGmc~#`HAzoRNY-(u@+?_*TLM4cy|di-N%)!0=|#2;lrLglSr-Lef|>SfO`R3N zgvsTpg{Qc=?mJE=)j_EzT6@k-T6@nAoX&m4f46_W(s`<`1z%;{SIZQz`U`$7`oC0ZV#UoC#JeC*YZ?tpbn>0YS$OIaK`*W;`_x@C+rGG^Thu{EZL(CJ z=DFVk?j18Auhi^@)3`WBJD^Q2mB{7k-IAks%X5|2(&GbS>tm*8?^q&|>De>3-41h^}~xujNmnbgZJ$)!+7I#*?9T%p;0@t!}5XaudF*? z&PNmD%)3ALNnC{&5C_!h1&q>cy*|LCzME&j-{#E5R;gdvl~SuCpQWuzEhdH|QZqB1 zw#to={oh*cf3COH^Q|Pt{^W?Rw8+_1ratVQ3(r)l*P-9zxe<8#N$SNXkVA9PhVkNT ze4icRBlVu*iZ!PPRZIQiCqv_ArgVE5l$_WSlKpC@VX9Y;RNJm6PqkdQw)&RjPwVV0 z>Pw4y(i)X%O94C&KNI4Z|6Ci5rzbn;(IYIo?%OLVmTC_kd!_727XGFPGbb(Dwh3jv ze0@43_MgL7?m<`yZBW9G`XDkuJ}!#UuEcfNEJG~4`T`}vv3F;j@!J#g#WiME3JLB|Bfo$83pI3$Lc zuB@K`Pb6-vU(SSrU?ayK$WLjf`N0jHN&7n`KTS6@rzDAC;TP#$`o)ZA=cv$6PASSG zz7g1~O2+D^2j%rpt`a?Z zfP+3M-K;yK;zp7IT-OqsJJd7+n&CUhtN8;IX*&2-6stUFKeUrldUo!YdK?#|Qk)Bv zdc4b1>T#f#Bems)Q8;n8d|tYFe3ew^S#yZ#s%gmvK+njtgK`epf}Nf`Q`%=&N_FiX zj?o86bv5!*U5%(~^c+|Eli<1ZrgN@zCDLcR+GQNx0em}qyv0P78rSI*h`zja zMzI*Mf{EIwgIqA8I8N02)E1jn;9v-=wz0e3A7bw4ng0F`SiT;7e}_%)yeaH|AKU?@ z8u&~$!8BOH1$>vL-q&8gf>Pq}1@1gSb#4ytV_xbvkS|o`Y0%4vR3@rxd$VS_$ZP7g z)7m0?u}<@#LO~X$z5wG~Mt_ttB$h6PkM9e)P}DGj^`Q6YeU-Fi)v=(IM5&5l8B|vC=NA>7wWG zc6b@Y{;O!dreG;7y z8QgkDQU7E>u1uLdD559c91%Al27w*G|jJzzGCv zr7E4u(o7sh&t3AW(vA*fA~@}&kGiq;QFEW{Ns1-_-KwH3zcP_$Dx`D^$Q+g-KV1}N7Mw$e#pMn~CTeli%>wi7tby8keyaE*1ERPrQLkuoJtWB<=StbOZ!bc?MOZPwk!QK<4WCiW(=_K2WpAWqi~-7 zSXZD94WF&pLurx6eWqQvOW6M8MasRVYS5rLbTSw`8z#tSLN_BZI-mO0qNkaH-I)`% zE!gQrx2ql0!c63wnWhWNADROnU%O?Km57i%xl5{X&p-aZ*4R_jTO*}+T>6c3ALr1} z6^K1I?B6G!sbn8Tt9Q{6@97YO$Z_7azD}r}7(<^g!Mo-kc};os{>}dO!sbFsUrKny znkO($T{Z2v|7_EazOYTjv)c-q1{nL3(K1M(6a{t_$J!{5LmdQc8Kqcl<=Fx&$L>g5 z%;~jH6>rl{+IQ$fw_~TY<1Q3vr_oyeQxGOQp8}78Hq-&%qX{3T zHWA8+S%#Bm*ixx4!4~l9mej{+0~$IJ1LlIX%QY`6^+IBYBLB1|Wzw<;==&`@a6Y63W!dn&Caaj?Xl<_AfE$b^I%)KW^-ajK+ zp-K2k!At=6P&m~lw?|iWicwGB)^ts()5jM$1v%NnoJ_l>aqr(X_M_Imo0Y-OVFQEQoL zZuA~r0{@65h!Eiaa<;zIIEv~J4Cr7-T^oBV2%1gQ`Uw2GmOd*IPDgntPm=(V1#OwU zrZ_%SF@g~?Ye-)n#+fJNT1utl0no-!%mBT~kW!nh+Kf^C{yRT1EMK?ZDLXHzX%%ez zXmAmZf`bw^0`i$L)3LujOD*s$AcC6^27b+R;KED?uOym{MR zGiVt3XQYyUZjh}icgMHffpaL_VI?T*c{~4TAnPKSgd9p?~ve)zkXXW!1 z@7d@r_vL2psa!X^@7F!WmU%||`^t7{WWmh`?cjfT4lk;c3ppcXsW?GWzBlNNipGbs zLq^Ps=b@qC(_T+Bq5Wx!H$myX;JV+;Y+;2$>$NVKOr@QbHoYq5T3vhn5S1o(#QaHGE1cW@p=>VfVpz&rl3Mdis%#f&NKnHD>>O<643Gu^ul zUs#Cj3ng<^TuSHbRP5c$u;u704Ly2tOn{yTh1L#zhgGd2??I>hvMrR~AFeG^Gg-|A zH|_HN|A8mm7oMqTH`@#JZPzPBJtCgpqw7WcLCIGbe>wR7kLDvy|M-j?-rpxtP_(LF zq`dtVt+oU}$a4Lr*KAAV}|8F>!C8S4(i;a1;8ElWATm7KOZEX4>nA zk4x!d64DoGUJ}eU*8W>-=jhj;p6{BEwX~Fj)c@J;H?E7`cie11ZOl%qPqLDFB?--j6%qravmND6k7g8xxQA*w6+GJeo;N^KTa zVf36RpOBw{H`b5ImGB7Pq*AYgZ;fUm`&c2f%n}-K{aY>ccOwOLPjI2;60Bsi!ly=g z0;RdIeAbknT2S>%1$H~6A;Qwd0zNNH}W zr@%N*j#6_#K0STxxh37j(7~z2cdsa`Vi=pUBu!6KQa0FElyuUvrDmzLY)K#kjk*4U ze+O}Ud5|U9kIES(-DYZk9MlnFRP+G54YrNIc?5rz?qZrQwHEv7V=i73bI7C~*p2k4 zFR7=IeGL=tO>z8kJS0QKkCqAWLg2e1hd&0-BAS&E^2Ue9)<;LZ6<@mY#^0LWabI(G z^{Btkdt=nfv9a~>#p}*}uQp+QD4N2wAN$I1@xc1}^FOqowIcd*1L8kk1V!|fO#9gi z*0vI9m2Nc|onO}etHHP4zbU)f#&`D^uJEs@_*9uq(cOdjdP&G_W()o%rI`O`g6;F# zFB={tQQKo`Ys^ILsTOh3gae*W0T>PM9>b3iFgQ?RNLTS8^ zyT$i@#GbqxX*l36msMoS4HcO(DowH)8>VZ^KANB{yZE%Wpy6pm#4_+pC5y;vvHZT*^x}}Rr;}p#W}M7z>i$p(^~&aPY*FG$o>;46InH)><*kr z2IWxi3H?CrDs|kfp)-{q3;p@ILjU*}oK`Y{X_tdbs4nULex@O6MQGNBAxqSR+YFD0 zjEZ8i_V%tJ>LmnTz%J{E)}vvpb`W|v$(Ny}5ge{lgLugDiT*3g`R?!|+rkjZ?W>8< zrj<@J87| z`89=lZAfdFs>4j+A$gV>`$iUA@{?)O;O| z_$E=W{W4Ro#$0J9bb!mW_8aO+newQCjhPbS!IltD=v1VEdhuXYGQz5ZvATKl%f+I* z3DMvYU&yL3PLWny;B!lBwTfl%13P9B8*kX3$z^5U?Z5ub~DN=iJCKrC2+}qlMc~WawQ4=1umDxV2 zuPx0r!N7(6cN_fN|Gf=vd~X{*vmUiE`mr{~KGw!9A)A}<-)+=H{qJp5Kik{J`G`kt zggn;9(~q^$f^mfWcN^yL$J>bOof*JPf))3t-ZpZlvhf1L2R*7kt39ZaRd|$yfNO zPvh6)=AW<=%gzPjf6;R-@b-{rU%8?udH;@Wu$I0&FkE=^D*3{6HQZ`buxZxpBjt+U zfSZ1mS13pl_@wr7c=-GDi0rdWZur*{zIohOvi_IC%`^{Hwjc65Z4A7w3B=|L8YOU-dGP3#9)Er)5%EPuTTh2oj7{#!wx@FY zq_xu6?r6!KY6y;eZp;DcTsy(56kBD|$`YHUT--G}mr~u1q@s;ddxtBe--DIXud}BI z_=N{6q?&d!@VLQCHN`ecHN`ePUK3d-<)pO2FgGb@b-k3c`ugKJWBw-PjO$b>%3O5@ z)=D{d*&ok&bd59zy00n6PvV0?mpv(FZKmj@bFQci^C9R0)>m-Di1K=Re996?^AI5~ zH(sb~Q&1~$@BvGtH5dOcf1yyY#bNy&*nJ^y`5_xTXtg)9Ts);*CfIVf9I^?&RS?{- z%usuU!(p8s5p@;glY<)f8bw{eb;WJ;?A!}S z!NKC&h~!<2dJ=Q3_kRW=(oW$_dtP&QbX^6{LJMfLw+oIfLPjgzlX~9~51U4%T60qH z`3Oqkh|g$aZXeShj#I|NKcuahq;H@!v3o*7CA+l(Hb@aZBFE^c9ObzV`p$v-_kMeE z41K0LUwbMk--2ptD{k2^9;-Qcy#$-!Z8VD6Sc|tk<9JpxWL9@6$FLs0{&$P4GgjuB z)ZD)jVoGO7${WIl4@oFAeze1iSy-s0yDiIFwkGL=|M6Z$b(<8od=o+}Lr>9`n8>uq za`QG)Fh}@HEh!MfMCSCDLT(NA`~+BwPOvbrQ8XGA_SIi?&VVL%_KA$uj;;UBmQA!U zRz<3US{jD(SJ*?a5;Z?`Z0(-~4-JfC>z2*v8+yhqTeJ0BXr~7tUW8jRwH~Bg)8~5J z-lV^k-Bx)Et9d;@Bx~vIM#!*{RgcAuMt$a0E!8flPzcbGKw6npH&1!pZN-cgS%5(? zW_e9g)m%E?^ci-_exNPJ#|phqIz0I=>!r~Bj%#LjP1Kysy*X{!c3?OEm?@$orbYR< zAA)Jix_**Yzv&{R9$wNu(Vchglk<+G)bKIM0r!L2qVLw#lY- zwcfdv%4o-Z)UF-Z(5jvGRqI&G0pqBwuZC2)r+Z>}92?GE(o9(YHnO@0sdA>JXG5hpdvT=<Da+Av&=%(fzfix1%=g-lRxr zS~Wo&33v;c@_EqKLXFx#2;eb1Gvfac6{+Hu!wVWQA1sCk%U{nM)PYE~=Sf6dJ)BbthR^m5wClPd+DwNY2yv z=JoHTFLfhh@5>H?Z=zR1Q*>h25HsW+cA0(<8DvLXf%bw~KhKi=)184l7g`u!C?_&g zJsuKA(y}10DuMST_0-}nDJ>B7p4kX*iBoyw+QZ+|KCG$`JlzLe$aco^VFi=d0KF9pFy%H^Z})W{u@^70+YF{NK>5xk7x{+Ygtd`HZ!i6-?fG zI+NEQ*m?Im7tCXd1hT=eaDzRSzmvCS>l+2p&qrU3_Ktq${qIkI`j5QR_5~Yy4rCqL ze4olZoc(qnrrE+r{dUi+J1n@l2O(}OoBQp>IkMnr%zG0N3YthB-mnV3Ya(Hph6(Ph zkfsP>p3nPRy@m6<-EHORuIOaJYfk<5ZD?ch+*8`oh_BS&^C`OC%RTc++T65AXjr+o zuwDNnWGm&gmb~TKFMmcP052k>o1S#mqUdB#K~|?N`x-rwwaohIZN>QfhqVE{ztb${a+k zGM3$N!`euFzk>Gixr){J|LXy|$F-v&jVp09m}yDJWJsC4*mBGD z@IyOk`jl<~FzPN@kXYED{d@%Y6Oq8p7+31Dr)Yb2Z*CtQ!#hRvO?gB% z-W~h;gQoyFwlv%B!_{Z+cfudAr{khy5~IdfNUKxAci$fS-|^QZ?6C&muG|B%DPDxu zmIlqhVCI+oj1JLizY4Joy52j-%xpT#Omucs-F|0#(N&d&vp8kf#KNzIcV>eJg!$p` zvq!ei6FF#yRlaMrSQPfe+3-J;`z1Yfoa@KxTt8Ol`gymvZs*+4+A)St_DlSGQv>DH z!`6Cj5|yOG`;hl@gBmISeXOp2E#=QsO-lxYR=4+nX59U@1X1qJyw;#=j@047!*Sa+ z9K@|YOUd@;irVOc`^^C4sT;u|PgcC;%sia5WByEQr(UF_`gdEdR}_oCAgUC#OOax+ z!Wt!Wip6vbai%i&S|)6^`QltOMmE7tHvzF`O-AP5!3rAtIj9LSm(qfTJl;3j{G(~H z$*B`Lzig6458jPWn|of2uvy{l?&|%CHB!F<>tXooS}qlxheA5`u4 z^;v555VPPpug2e(5@x^)%xftx&aRZo#$IxeU;i*42eUpXw*RDBL_?{SfVu9~aA#ryUJkj5^& zrXGxbx`&*ZcWZG2_0wO9d7@E(GygC%zudGM?<3BlQW0=Z1-c~EXknvUQeK7!iTjK5 zh8AgNffoB3v{+19O@NqggHNdWqY>j?PP%+)9>Fw1<`$FCH7%y`C);Am1&o{Oq{tRg zE@0p!HGbi@Z;~S>DVX~FKTGX^=5LJ#jCk4?*Z8742-SLa`ngJ!G>fG%ipLzJXY(J^ zC>$zNw>u;E1k^fWQkOZBTAo#76@s60*lh*0pcdhNvVWJmBlUwRZZVXa{r0@uN}rP~ zH0*3`J@C6N&W2WAYSpA(9r%}%i(Ae%#N9HrQu|=ZhX2*p=A-glCA&Rm3gRSDyw}yf zq-Eka>Lq{(Zyv=%##;)l`XZS&6&i_rnl2dHIKVhbA4~|b7^VWYup@VD?P(9mRC)M8 zmQo~xy;O{k8amVrH;{YYr>N8@dJ2X-hI^W(szhIcbidtD?ij*R|IV?p9lVCr8{g%3 z+b-Ln;g<9yysHTAoUbTXc^L0oZIR?v(H2POs&VvEQ@Qa0p)?tyQUA*kll)StcsYxC z-s;i93LFO?TZO~``I=zfAQRk_{dU9FXQ2!KD=7ZoM)in}0RKbVpV6jnV65=Q2Ama> z_J&N~)&riqVgsWk>wqQwhzz76^`jDMZVuOec8kC}7kC}liPRgM{qQ=tlzQbu9gdh! zU*MiD6{|eQcMb4dT&Nul+I*ZR=rnEF%Zwv+%MsAQ_je~L);@06Ui>z@ss8m?>}d*j z8{iJTNHx`Yitx$YEWwkT6D(&~Ci-wRojYJZ1}B_~y8+vwNGng+y8YZ7CVIhsX>A9o zRf^idHs{)o?I*46MsG(<(MH=L)SellK3pN?H2Fea=E_;^A?4J0Ibz5LSNZ^zqG+I0 zQ?=5S?vC_zlaqs5UHCLN;9hDBjk6Jw8F)0h1&RY?al_tBPf8`neDJ37j4+pzYu>cV z<+2aHO~qHw7)Q+T4XfIqe}UMio+~ImAHIHMl~rzJ$=Ybq=WCjSS(kFY_e<YvE zXPr8BxDoijY31G70NgijI3t(R+Uf46Ez!M9+gOwO?1u}*+ZF4QsV7aUt4yOX?(V#N zt508>2jt}2K!&Y&McI1iem zT!Hk<3UW86tsU{Yy`N6`F;f{g=;OkfqWgzi9&{UO;CFos55FvGNI+#vc#;V|d-9gp z?+i7Ai8j@pShEKcni|TXrk6N!$Eb`AZU34uXASV=jr~K@(25LFt%RI)?RPdS%v3%4~TmPboz-q>_3-m7!OL2V+Um) za?*)YwxzVW&hr)<=e$=h$9?)9&X)U#CNm`PZaKFq0(e?>Dt~uAcrmFj{5Iy2Y=XQ4 z9;aoRx+AEOVptDoFizPKjG7No{m+T=j`Gd_6LH6M$fjvLBED*p^c)pb&k^{kH?T{?9tlJ+3 zD=+6MVWg+Tp+~30DO)yfS2S|-?(pbqAr?S|p*nYaEx_M}(BgFCn4nt$rc&b!^C{C6 zryeKpZ_W{y-cU+=xn*R;vF#FcO+QM|ZG0a0|IfzZCM0KY7ycWis)Wt0gzEHA`L3kb zye8?_>-8&&A@!x-bXWy6I_jv+Hl6c4U#@5zTk9BB=fhrOZwX4SU$5OkTqm_W08LlG z2lT~Jt*>3(dbJ_(9xOx|N~Ml`-WEw^d>@Uptn!QA9!)I{oZfJTF}?!l)QtWT?>)(bL3VwLwBj%HiX`t3zP(IhrFbJGVLTV}pJu z;k?pLKc1)UN;$tXLP*u~Lg5l7PF!q~ux?|8W2+-mAlyJ|b8z^lW3NlTZ|P2;b_X+3 zic`>!q+h=WU01gEy8DXyO{FnX+|`t!aXSrqFJgb!+@U32~x{;-f^Z7V$rZmzIxBT3_|2vxR z>NbkYD2BS5bNd2K)uwvFpQ(m8YY~5PVyGz%Q$&iPlq;2IB|VGB+X!8+U{0ZUJ^p`}X&3l(#Dwj=O)gINolsIcQ5Z4@l9!nDdmd#RF882T7#okGEaU z-NFfk6c2DlJi3cxRVEEhYx(QNb^Gy^t*W#sP;z(BQ*2zKxWhb<{3xn<&=*g21mWgd z^z#0+=aUbwO1|1?n*)07i+|2lG?kmFr=&3WF7#fiyj~o?FXr7H)J|#dYYVU%FW>(0 zdR$lH{eb%2U8nA!ZM$$+?FFjOD|;C1f*R;em`3Y}m}58uer1mPfF(%_zM(#wVZA83 z5~GH$SuMM|Er0fva5cOJE+Zw_&yd65baBV7cox>(ppN>L;->O{r)-ua^->b?`IM3f zmCt4tnl6LCWc5m8s4r$m%adnltF(5CEv)=S&?yvSdtm}75jkBxk>wvFg&MQN* zrk|AQpJr4WHuO*FP|2q;SZ!PXeI>-a%FneamVno7Y4*hTr04!c+stJ{vR-bZPs3OA zdmWTSQe`QH+mAL1vj`9ScK17_DQf64s^lYfP@P8X*RMtvf!YVvm&a;iB)p=?m+(p~ zA18*j0HcI&grzoY=#dZ9_HTAgUgsd4?K9vF<3}d7J7&o}M6Lo)A!s{V-MZ$a3|gG! z$~~Z)1`$e`pilD`yapbf9t`(4WADKS3U({7?7s~)gGlbTxH)X?f8w%nUFGsv3Uj0! z2&^DU=PQci2dtp$ai-PC!`EqHNxXo(k4M^PVm_L8XKzTWz34hCJXFlNhyF5#Iso=G; z0q-qy55_y55hD*;dM!%OQtTPL%X!9~?bTMDk$9yjAi6k_`Wx5&ODUIZM0eOkX2%tC zM9LyW3nN2B_@77}lYHma-t4T|lmkwA->TpIh@$I83$;T&VwnLS=%T_Zddbq}3BEFF zS*#Si-Jf3E*whLY+0lkC!3Q~%4I3}F0Ri_Z*S!ATmt?gu?AEB3_3%d2ls%`EiV*(%ko;)2UV={u%aMHRPl4gk$QrgfD=wRfmI3=2 zqENs786wk7CjtDTEywsDwk+pf$z}o_WyhY}u~;NSmT(L#otO{F&qPbWC1Y-p51CGK z!Nj@yc=>qRcg}f8Egn_o=W*wpOF}c-sqeE|pSeOtFf52lnW1xq-yRUZxyAADn(zP8 zEX^z~_@%GK&B6}eU+9`E)5IKGxjZg?-HdesZyafWhh8(IzhGjmx%!YSSbLJ7Rl>lz z9>O5cVc=$wL6!M>yJuJT^0$tyEY22Snhl=&BVPNBq+b4e)2c*KkwUrdvi)AHY!obM z*Z-Z^a}+lOKmMu07_S$Eo?r&@Q`i?4*2<1|^oWX3w@Vn?N@DlB-<_=&?p^UW=+}{6 zxNB280jpS&>-k|0XhHoVqNOyUUPmbY)5#5>c!u(aF$*`z zQnPgtorOdB7E#FJ{F&&0+B=&U8sj#P%9MdxmPG-h>;HtAn2MQL@Vl7^;D^B0YzJmS zoBB^OWD#Z~^(N7#JtQBd{gVWkIk}HVu7`bS<^y(xJ8#XAW}-an4lE_KWqFJsKFz7j zQA9|-Ef>6h@wE>=eDkGQDHC7%+Rl64i2ZnVW|R5geyX*-=x}lNLL=tmEp1sgnY+IL z9!N?fe6|$S+F8$Q8;b;=U%XxSrea7?10`ytdZ`*ziHfU!6&!`(!jpVILxmSh?~Nbg zPn(8c{Attii$ARazxXqNdoFI?X_w}VN=X)GoHa)$-bfe=U))rO0JE24n8uT?gUsBa z`>h*t5MxVIRhqba)6ltt4ofRwd3M_uJN5P_x~>++_~^?O_rrxXSEy|fw0ZPo`zb>; zv=ezw@nQc1-S)xvyN6^dh-N1B+V1{Z-Hy-|4+uHl^mg>xs7CI+{47`b*#Y+@$yfcordG%N zmVQ#+rffiRsFXJ_O3E9k?_G6{`AMFOl5gCTeF9puYhK&(x~9%Mt)|9T8&!WFN=9Yv zgUswm)-lvU@d)R{BmE>ivfXP`^!qgHn`D&LV=*6JEW;ZVB(Z4J@u( ze0%BjFWtggo6Kp^^;x6tt?%4dJLTG)hNzaXED4tgoF}Btp5)Mb>G2CUs|nHFClo7fe%QHtRr;H8S-{rA`mKoG=>FD? z#OT-d#@tw2y3zghrcF^PyHj2jOJ7T%SZR_cYj_skI(~bH*t2C#z)B(D!jLD#>={DK zHdd%BW)an(><1z{-rmD;G)~}$Y4OCKcd;9>mpAS8H_VttRQ-sXu;x{NL)4o@noBMD z5m=KXk zc-cpu%!N#C*?l53t$1SW=IGk@vY#pH!$GAk9CQPF`vH1YN={{3&2x#+&^qu)w#pJs zteemD2#J4E(|MMiIP=&%{|>Viy*v4_d1iTk>xL2JhZ<>~Q!47s1;U9qZQ1M0?o|_P z6tV^OMf)jk4ON^D_t~N?yG}mEtgJRH+`N6xnEk>)#EO~dNv+qh0)c55{Nhi`;`jfs z_T_O+UD@OJ<>h4~Y=%`pktkMLEs9HB3kX3$taYkPovBrxEaLvH7O~O-;U$Dcr2!(M zRjI|6X{|~zqZCmTZ0)GksnFWi0uKUGB+;^|EWdN#3u0&b{eI{B`TYLSklg#;z4zR6 z&wkH=e@YTQ;U76sPEc9ne&u(jbc1Z8DtU8;Nn4U^+C7bnzlR;#L(UPS2d7p6h9wbn zL8-k#1+s}o^y&!R3$@`-YpA_>8Csqi;a;il-8=O4UcB=FU34hIv0U-qWQcpWm+-su zYB|s<{gb=+WC69(bOq8I>*aXPe?YAcbPX2e@YJdhH5QfKAAlSQM&gY!!TMDijECzH ztyu@0HyqIkCNwSQlPWw{+{$KdAEG^1lI&R3Kk+$8o`ufCGWCan9~5vi z1sp4k_@rWiI@!qDMLgiwsRh!yyQ@5y&OBG};6Q-(NAPfUKvv|Hn$=8wFIZE+>xSo((fQgpi3P9==}nj%riMrqZqL>q^(l5=!0? z?KW*($(VLUVrl~s3*;0D)Yk+V$e!w?J;C#T#s=jqr7aqgZal%!8qkifjL@1^@Nxe% zm;==sN}MqL;320(KLCCCGjf!EX!irqm3W{p_;V-F7x?s*pvD7A@9$AkC3tBuBxi!H zKIe=$KokX#{2DFQ=vVdtBu`^VfpVx7kHktBAw4?T_l6# zOgW0)SywFCTgkV;c_Rlcy~&} z&*f@(IzZeU2(`EUe?lyxI<_653q;O5_SHI$oMq-ZkA2K7^Rhr^daTTD|JMJFj_hAV zWqGj};<5zOE)4NlkYG$3OF@Fc@=N4e!CrE<482;G8vYR{zkIzH(*@Y8O^3n@t#d7f zxz4Bry70l{CbiK9(*>$OkltVv?AtocQ1~^z3j-32_(OZBfj+u_uqc~Cp25nKS%hpm zP=$_uqGc0jXkl`GkZR!HQzvg9Y zD882oyqLo>%tv4Hy*{e+c@Tc@PG37n2=G3E^?d^)w1PTkh2xjdj>r=fF?E}7_tN`V z@@eYBnvdeGG1yw1eI|WQ*7;05U>+y8a3@!dPp*SxO85iNe;jS5VNXw51NQU4$xfFc zg*_pp4@z8o9xcCjx4*L^H4?O;oY>5|oThB76TREz(zi5wRrBM_V9<)l3OVRRaChEl zi{>1{@(1_{)9K#nq;0WBy_WE((?VpWnD~%r2C1bBc*bSm8Q%d#4TZc(bX&9V9HXE@ zkU~>4MAM%@-9i_zg4GO>VZNwX^z$Bd*h~}*T2m8fO{o*vdhug=ugqJYI0aSSfS6bA zJ&ag+@-brjn;%cnoC7b(KY$w)$Y|3SG6l#n^v-)T^CODmj+)7dAg#PR21_e`Agwsr zjiz^I3Na-a(T>hFcRouSsBVETO}ne@XfMhSOL(G9daJfItm;l%fY{2okl?qiv?(^OduZmsc)f8Um+`qaomXuK~#bXb8wFn1C8g_Pyb!QhmyR+ZJ&N4C=eeVSH^*4BD`CWaZ3S*Wg zwn?Wvse{_&7{VC7%9Hoewn{8#29WCl1H^G~`=|qbQn@_6Fv78tcC&E;8RmbNQjSYO zN}1Hk?+)G@QF5KOG{J?VEub6iRnN0Q*G|D+6SUhUIe!*K)gv@5G?hP#p-?BlVG$8I z4&;+PLpS%zl1g@aUi69_SFU(>3ZjK}lHt909n&Gjz+E-qomD=GtGC0m{bTvWBZHGq z{11YB5)j`9@`)JalRH@e1OMH`XGT0XHtljR+c3SCcDW>AJrcgdm=5v?VENIqCLM-Z zY_?xcc^RISdt`nED_{7Vm9CU?bY%v%cr)8w;S=aoqB(HcTs*>Z4IabYO7k?QIcmlA zt=Y!+t@$sXN8t}Jmf=`KsH8N@`rZ?8KW2=9>q{l^eVHU^pTW1+e#X&HzI~H*+_#`T zz}o&dj(+m(8?5achhYfwn>u4#c;ggZ_TpQ83o^k=BEofcrKE4m9ZP$I=>Fz@EWxNc z7BmYQrsZHdh^3alu3yjqw9nJ$-u3>vuDcz$GBfRDB5@QEp4&J-$9^vgsiSDBA-OsODm#XsL^yHx!j8e}(&r-}U&yK3)TgVgnwhEEK-ZlvJ|I#8oeDUxOpdDiG0#%A8{`vGc$V|YO984|pGx`0l<1N0|{Ag4eLk(6`=B{ykif2ks$E!muw5%q`)V-!PF3QQ-dzDuM2fekATJX)TU0MJ%)~lL?YkrAgbKFe za|qz8BsFqJB?)pK1)AhHXp+%a{e!VIXImxfWEkL|6}`jJ3l5h<7x2%91_QmItnEo7 z=PGobwSE4xI12bKaNf3bK>Z0tTy5;^pQ1aT!{I#Co{*9yEvp_RG^(04_gCL9ZP0hS zqu~ApU4jlC@2_VRHUi#vG$qmn;wi=VmOonA9epph1$fIe65~^wpiezd2Q~{^Y_sSC z8=_9^0y%vIo`Hw5XtmgdcCdMkgq>*Watu3dff%3Fa7&h|%UG!;pw@K=p}rCZF?m>e z>K(+-u(6K^b3@Ctp+Tn&bX(T~`rU&wPHWwd&^cW|)z4ehwY@`>EI=DhaPpS(xj|D{ zokcIQi0QVT1q!hzI@hH{{YaCT3%zM=)YLLeJQ zSPPkSBMIN#ZWpi|q6Thp{{35)rY>3=GBG;+mNpm1P>L1WFhn;t%jlhXHc*?Q?J>v( zPTV+MFplqbJQDkX0dRBxLDe0JdJS)w0F(p(-(@w8BUeBTr^Y6ltu8qbszn;N8|jNr5iifoLFbKzCB6yj%?rLUCS%P8_C9#0DCSECUu~Yl zRi>a>)n@iywxKZ0cYAewNpxuzi@N)q!!(I3(bB;d8QL~gp0k|OvIT~=(8^S>*7EzJ zf_rFmT9h2`7hb>md7vWbzza=UN0mZo5$i>uWjA~$r~9H55QTy0jm<84jVn6Sg`Q>yVnaf?r2BTbL>IwJ-l1jvj%{sJVNWs>9ID`;YNVqf3=VT zm0+?ee=UxW-pTLi2n^ac$ToFqP075abTZHi5@^K5v)F?aAbu@K2DQQQZe7osR2iLK z0+{x7ndWUgx1SN@=O4qL?h>fE2X;*E^v4YHr@IB21HD62BZ4Y&IH-XmX}hFwKy9?RR<(wtZ+Rw4mQJI64u-v$5!hy`I(ADs(X(QGjg> zb%7>~^58`0dJ>>CE^9HX=zSi!|5E+7XqUTce>C0=4!80`S}MymiG>kgp9;`k20DER zEjQ4eEpFHYG$)UKryZ!{X$u+FGsK8FiPgPp@KD6svS;u*1LO72m-M}mnW{kCsed#H zM{!E3-|m-SEXL#9KmV_oX!f=QyN8t|`e|6QrN=o;w2O6Yxr=uol3+!>cPlH;SY~Fj zc_BYOD$504`dIE6NCIT^J&6!Cb0=`7p%JLZeMJ8fCM|0XBYd=;7kmz=;SN4zMv#0+ z^dfe2*wCSfM`yYD9Fzj@iZT{PJUWGEl^a%mhW#M3k>6+E(IZs80UzI8Y7cx1A+KY(^`Ydhp;@*i$*=G$ZL zL;ILvO2F+^QPkg3jr?v2AHL=4#j)HAQEYxI<_*n# z9BFYIl8>tBTCq!HBIFoPnSU5~=X>-ZWSV=_Gd(DdZfl)BOY9An<<{wN z+fZ0`rXJ~QT~NL#0Q~c8<9)bAhb(hf)&(j-8#l!$L{8{L!I=(yPcNxAiTW^CPIfJ- z2TQms+|mpaLiSV)joX#LTb%p5J~0kU2W*D8oi337nVe~Z+B-lxXoI-9KP$*o;Q{q% z@OG4mU*n_$=2_{$#7hS&cnIRSEDSS3KTsU3&tCEw)yNCxItnSNMj~4W`}EjBF$JBs9g*Y2ufja@<2wi2`C_ zYU5^@-IolM;Sn%ak>i1%rM@<+U8AtaSOwh7+-yhpXcXje;AU&hP6~|+)CKCbKi#2B zF(DOgiq*>&0!Fe2UK{X*SrsALvtAB7Ev?moKRGy06ZinRGsYa?PY&~e*?-yErdYi8 z{n74AxO4qM*RA|AybsawK0CgY0H>B*WybWGy)SGn42xY?{gz)g#&uTM-Q^rs8^_99 zZn1e?-%=H@e}Vrwr=&j++oi<|c4GV?Cn zl-VEXDZu!LHE#4^i+4~gz5dFWSt7vrwO2&50OJE@UO@_#3vw2fK^8AI=F7*BVaqai zMNObGr3A&sD;O6PTyVNW@pdn%hy{$_TQfM|>=A`AzI+hpmU(qA-ltD0b*cxa;Qqs@ zT-D7}#FCmaM-^D`55#>xj4{qj9+Uycb?E;|J&Us|Vvf7XIR1a+xE9Y~0dU+Rj^hr$ z$+LQK8P7e7ptdFbYs;82Eyq2daNM))_uO;%DX%4`$`U~Ka9nce4E>eZ?%LZ$8c|9m z4`)&2-i?-te)~hr~jBD7+QcL*jgz<`Prs8 zHb>l`2KnG<*3DnBZ;55Z4bibGx-iTwn#XQR?AF81AMDN;t_PqSSPBMqmOWUkA6`b=e{K93s(5)jmQdHl~;LF+(%ci zyl}0ToEK~f7=(|z&Wvx-1Oi?DmbdbbS1<6Ylu0!)Hhfgqfe)q+FvA&8wB^rpS0lqu| z+hl6uT;UV^LL1Ef4pvD3w}b7OYY%qpajLXFZ`;udNuPVS`tEjY?ibxRHFMUT<^>(oGH0fr z%K@tmj_d(xfF3KE6W(~ezp1UgfzGuJgzQsb*}?ZIi6xwM8zSb4;~KAEZw>aOD0<#T zk=N-%wi}D;HG!@Z0oG#ijs*sCVe63kWf^+Oft;`i_O{2q45Go6!nFcw>3}Q5tsuo) z-K2shfp)|XdaQ^+18(fPL5NjJ6)5&DMsMUOc68g*^u4)vEK1=~!C;2_QqX|yoCxxg z1akH>V7;ve>ucN~BVqGvhnz#zi{ME+i`YXgL3I3>Amx$uh=dt3VP2W^pL*hR_Xgw) z0XHipvKJ}6CFrqk+!1oV4BfFLXqRT?E}^A40{$;OyhS02fVW7+Y8AwQi6FayRs^|d z?~0V(PtY`Na2D&J9mKX4y2w`eEqKc)-*2(E%nQ6_J?jCVz*t zBCtkLEe<}3v?9)#cBcaI=or2<%JIuy^r{iRFMkQEvwf^Qxrw-cq)6NP+m28=rduL? zMc>;)>{8D;JdI%%aUS&z%~E_rQPCrk(+;&%ks%I4nPi^3y_bR<{E8u+ikAHo6}c!; zg(em~m|0O*k960E=^Mmmzem4ahjwY^8`&rE{j{B2f^Ek)zrl9ZG&lYC5{Nodfjy}o z6)s`jwVl!`eXqzK_<$W`Jo)!`}-}RKkLO~Wa~{yqIXmqMVt6L{Hk5py4C~{wIv&E zL3$`$@_Hq(Mq-lgx6OU8^U_Q~x57RjNm-HV9% zh1(_P)Lce9a(^;dJ3P8sTFwl^?3IW8&M8kD>|{qu_|@RsdBu3c=z&`q?ThSK`(o{(CC*7 zz21gi1304KgZ>6J+{aV{-Jn$XX3$*87lFzn5~4^W?!tGp>Fss%Jj4J^70&rQkOi>z zR%oGC6+UJEr3G#FVBO>?6uZ1EC;u1VoYAstkEdx(k*KBz()g&xeRh#EwPE?rB6e8VXf;z6K$uvhN@jXUx+ zf$5G(>y^3o4BNfBA4jj~bcKzDOWZ54w@h!a6D-|JiIx5xC{@qCZ+E6}N%z^(>}zM~ z|H=?N)<{2QCMfn(0>z&tf`t9_&I~v~5EFw>P&%9-JK;ZDU^i+38&mA*1II@>12)bC zY`k_x@tedRsDmBtacNu*zfy=sgjLytSIdres2^RKB~<}r{og2O$IQCHp92lAdGmav z&3XL-b(R=9s`c2TD1~ZzX_`pt}SZybm^8vkc5RtFgA;o+4a#r}}AnP#r&>bpl zn?wQH+Q4^#X0)RnVX40Kx;RST*GGVCwbr7F{cYf-0Z)yO8*yj}tg07Qh3D^fMF8&udW`&~VWCz0?0w}UT(HGD z`<4f0e{ZFtHv>OsPmjIgpzqs>p9{1N`v~Zm31D{tpJbUkz|I9=_r@0(qIwL`eMXmj zz}%UDxz1<#F=8b!hL?eZ(1bc3LKEumSj_$xJoz3f(9nl@KJ^{ngSw45=^YE^r7)k- z*7*WFK$qv<1$GShgc##yXm^8rT6mxAL5C3>%Cg1#6gY5}34>3GyQ)moi;6PDh<&0t zrUnUH50szHFFD4DS^bs4{6+J>RPjqHS#ehJ8^FU3 z-mkbs=5pAv6SbUG^nL|Uf~OQ1x-VfUEprUhRVsdi-|gUcuS-Ne*ZU=O@07mJ4fj~% z97aKpHt2D|o*s3HD&%^&p_o%vcyt48waQr3C4QC6&j2qehQ1y{|A0|Y2yk`*I6wG8 zAN+c6S=>%01HshSs91Z}6WMMMYw zZ0z4^D^8>jiv5;1*7ch@a0~(cfpiLvwc)M&;L(E9td|jFaa_(f5IG{)AFKeox>q%1 zDh_m9M8b^+`jxK&$?Gb_EKVIvN=6L>lmT8x4bt;BNfy4n}yg5MmNfB$x!g=t3=3$T9H#Bawe)>F1}Cq{vwlH z2u^1YH1~sd3OpyYP6{~zbV#-xM|zkx4oBLAuP^VCX|fh!G#~5ZLcM^Y61)qq3BPG%P3-<- zzbQ}tjo6&-7!hi8jtHs($x)>5nSeg3h8%v#Jp#P&C+|SM&}K_6_LRwgeGKsh^}r=Y zJ?XN>mtZ|G!T8+&s0Vg=2K#_a!0UmY)$T_32xstyK|I3S#h{Jw{;&?jYQ>!^jMx(g zw}T)WAQ*e%G%AJqMVNK^v2nJWJ?!jKHfMm`_g*_AwWZsRk$TA@L~n3)R@cJq(^{zP zE4sO7uBMgj}sU%1-@6FYGg}706TzB$$pgiJ5><`xO zhy$-0cy9_RZw%`IQB9!2))%r!{0;m!!MpZXSLf^~qw}Pm|G8&xDq9@yvyzTO)(i>PjgZSBAZb>NDWii|Qe#87SVD2%gdI3L+w@qD*@%PzRn;u)Vz9 zC*fgW0`K*(2KLcj9tIQiJ`c>^-$G7=3dDMd@3V*R-yy+1!Fw@7E7%-ayT0c|#Og%t z7)z`;vj13XQY9XP;l^Os^gYfO(c5|i>MMN^5C7rboc7hnrSf@jdjIAO<;l?yPwtnsxD3yqbuhMA=YNc| z8aZPPazdgje8N5ccfeXc-`ZZxX^?#Tj%V8ETHB9s{DN21d~WFqR4{&sZvSj1XWz8_o%d55G2;DH z-LYJZqX&Bed1wsLOrFDb&e|>D z3H?xrJ)tKfh>~5(Bli%dW?05PfB2TAu8T$?FJ4P3(n(Y5G`F;lkwF{47Wf|L6OC<_ zDKx%tuCK|!_WdNzrhu+me+#VSJ3_9I~{duP~tSeZ+Pl5$JS1utx5fVQw z!g(l|i9dZsJ4x-{ZKM0{2o7T1k-upIzEOz$4x8D*`$plunFM^J>ziV$x6pMQfXJL(mQM`zX8BK{Lv3*J%Z zNTy24c}Eo@@Q!M)$kP(@FX4A8l62t7^uX*2E_eh1<1?_KS-Mcy*jTok?xV#3?;y`NwtT`lh zYfr-dQ`tMF1|5<=8R{K2+4w&MLZ0Yk42)n6Boea`2&I+Ru#*K2%+=E#7GiB~F7RLMBDN z<6&cyvQq09dNE#MYk80JrEd8Ss%lJxz5RNW8v9cRT@@8f96@idbm4Xv^`Z}v5q9^C zWttZJWG*2CCWvdxf(%BjlKe2*wcCgNpdB>G@Eoi|>MCL1|3m$(^4F!HpNXuPVD+hP zDBURA)T9mHIO0)NL+pS4S$tcvA6PeuTJ$*3kwRtnX_6#BnB$ zO4Ll^sYK`tX77}(b(&(p>O*BjWMw72FV4|9vK;GdP6H+@H>Q9a)5h^Q+Vfw$prd&& z==lcEU=g==-U~VdysG^8tbK21kntHDW3D))C4TnLgNu%4HMU}H_Uw;o*drQxkn@Pb zU8g42G34GGm4dgO@8b4DKYB)EKP23&XmSr_6(OzbD+9#fCk04@pR^S$z2Z5x-{=!{==QIQq)CV-rGm6)yrkd<33_lo&FcN< zY>S4tA@|5nD$)|~|AL=jWzxa(nuBzoX+d}N`2J3G#yDzRAtiO)kE?`}?dprtLRub^zcRpL--t@O& zj@W0rRI7x_DNFy&YwH#H(J5}V9@0)WHSPh1%grzNS(>Ii!`~ayDC+E30H&0L4n3`6Y^7w z#?tqlW?*^Fw6SE9bL6CA^_McxJRrv&#Ajh_fYY)!Zz`{OtV%a&u--9KqZ2`LJzno< zv$er`2MM-2AL{iS4_5|_OI^G-*fmH$mvSX=O*y*nbBP<)LGr%ibdakEZdA%}Cd6!% zbOiI7tKk2a5B{s3@xy(3N0wF3;H;#amT{NYG7f;1l;pGwXRU;Gr2H`?s*~{iIW6Pq z{Mq;Ox|Jsn5UbK1BO{H@k&CM^cft{Tw!gYZzKZn<@_s*Xn8V`HvhBmL;3eJRSoj1+ zwF&D)`)N4mEW7VJ%LIs*wE_LXsy)CtNyagJume~E<}`7mswc^9i0 zHaBko>v2~>@-X`FxF_m*hF)LiaWC{H&}(N!h8x^u5_(`OHGAK-kpvr~ZHxy+fhKWL zK(0(B)vHrUyr&*68dP+54+@B_<8+s)hq#^l?ekHfTX=tiey3ZE;dBelSAlvt)-4Wz zL{y!$zdAVUUKu@FKIT8yEoO7N1>Rd8-lkom-KtG@wae8d@5mB{wF?sNvP`YuwF{8Y zf2UovBgb+gQio%GM-4P%>#sE$C)POXKhX&ffN!uY0jzP}D+wvw8wE^sF}AaAaX*ge z9Fb*diJ%*{aaxC3)RspxqCA#8n8zNfT$Mf_S^=LxZwP7{#vb>`i)Ce6ry#8F96n(NtaRN6%Ztz(Ny+`M}rT4%`=+HE4^#}Pnyc+ zt`MuHGUtEMRKh@0iKPeXLw*-|(qmfWVGu(kH2w$oJq%j#4=W5}GDxok?L`m2VJ+ql zG?-QYu?8aynL4b&EFaNe;QlckeOaz&K!a(mlzT3ud*f{9YC(hPYqRsnhxx3a;2+%V zhBSzo*}{Mx?~Tf6;72 z|DxGAiqBa*L9@ZqC+pVSF{w(Bc-q3>|D2{}$2PZ*`**FzARhgH)oR9cV5zZTF{jmR zX`-!Kja_#a$c~Aupu3%QZ*JaJc^Y($^^k4wcNz`TYyUfqMmnO=Z1@hW<)G2D ze(l6*G>=`K=VFa!>t}BN?QVmX!|gVF&dlU>9d>l)V=T!&)pYcr=@dMp>6FulAfqinHJR#T7mwuizVI2g|rRjSpadVFeNS zSvh?;&fYolDCRMvF^}QzwSlIy#pv^&YdYg9hsXanO-DVV>D*&SG@Zg{H67wl-?lrVV?7+cX;UdMrKd+`v%{E*XfMm^PXw5@j;E`rp#ip`tT%I{6dT8>|F zdlM7H?@bI;y!V%24afFhG@J%EUc+JKx4SqEM+6#<{{NSTbL#BB=y~SuN`98AD2|tL zv!rJ6v!q@!J6uTS+iRC|oQ!K{tgE1cq5U1}^Pp>khQmJ}V10fzv?p1gU&?V^{`vXV z_7G@Kw6-q+40h(9XXaYlUxxM_*7rwpT$z9WWNZ7B5$AQ&2aJZf=Gx?q| zFjMbs)^-)F)SVxxWjf#9G9TKvuw$vyBN|TVxfR>OA3@4gsFb|^)XMv3G6O`5kwdia z!14!9(W@cKl>A)e)840PnUh1#V<5kU43%ar$gEDMCH4+_F>so-1EbVNjStQau>kD+ z8l}2Yq*Q+?8o#uAL0{_PTiR9kR`$ncc4oF`7dN^`%(3{jUC)}*@i?ct;cD}OoZ`f} zx(dSMb$6t2nS@Ro)Sp1o#Y7@RUmz9e>rF%*Wc#1=F*UwIJe|-NK!zOaZ;jv3i3VGz zg^pr2t!Hq3Lt3K3bv#;NfM0EX-#2d|aKMfp$<-XTz2cGY`h-kD;;2H1?t`3R)f@8Y zrkJK(>f@RTnss*TN|VAN!m%Woxk3NQA^>hJAVCu&^lGEXSK;i6=Hz29ung)qGw?V6aSUaV zjXPq^73R;3c+Pk{eN-#AW{4?ts7_o^APm+UgaSofE3v%5Gx)P_AZJE1*k&7wv`&zn z5c;odC2ke$4?dsHOpJMgBiv87`NRogv7COsBbBR>E zQh%&Pa}!-j=PReg?7rjek&tr%B9+(3ggy`-0(YPwV-68|s%m6@o5~^kibQ!*M(}Oh zD!sN9x4C{Hg4|W>)?RIZ-0-NRc{peB>W=8P*k<*r#fV(B9%(wJWR>dR#?f5$Uv#KQ zNFnvSbmWo!>(Jc(bW$C)7^Oa6k=-9y(Y2kVUU2-F?lwSG1EoI7>DB^1VqbJELOly9hS-5FK@W$ee6JXCP(zgfwU{ptq2c7x}YJ^OG zBB-Y8+rd{5M{ZLxPwV_(Uhf%7(;+u-;1J|2b4F#_W>hKW^UTVatJ+M)SHso6h8$$h zd(J=wXTJV*Y2G<)RPQXv4ImQ~?wxaBB4nmImp9OBMi<^J)hbVZ0#z-TD|}S}up)h;ba-bD6K8i?7*|yC}cb*q@ zn;kxQY=9t2abr7 z+X!4?&QNFQWm`5Is=%4In)_tid9N9_nzQ10rCXC%;GWRx{qpzRuO;Gn_o|jR;yRA7 zKi)%W84Z)ZPF+0p2>yk(ET%Hnluz8m^ zlhxRfbL zS`71B%Df(kj3M#C|B1XL;0;38kO~UF04V^nQxrJ+=c9wujrktPQ&Mo_mivG+)wWhynfM0 zMqNgD$CF*p85ZQJR|-+C>1!kZ*R{JInw}vAL|;vV1dcuiydPxLMA#FJSSM!3z-XNA+pMe$pa!L@l_#PgGc|o6( zBXSqh-~S|1uY{~PD<&f4mpR1np7Yr~8I|(mpAmk;s(i=^Mk-I*Lhmqy{p)iYHfuVW zI|Xc>HUw68_rv=7E~3e}!0aGE?Cb zWA^^#0EU_FN^$bN@|?vn<@|mYCl{9SXRo!t@X{9V_x2A{i`IVpyIvdjB!hNrC2F$c zwrt%}o|dx3`{e?zk`HoxGqnctxEZ=3&$LeiS}SVy450~)z(YF`L2O{F2|-Tv%R8dz zy{%|C`*>Ok{icQc25q&t9;GCH$4&E*SEnjp5~6#MM-%HnC3iuBl<{(1OubdEtB0)n zui}xQhR=EtuHbXz!DJr>XF3lews`-NowUub*_Eqc6We0|`VIc?2hSnQbDW3kRRY>ba4icz&gi>^r`N&NNN!$Dye#Fr4%tsvEB^~2xB=P(&AN>=? zaxK+L;yo?=FAV&0(}f9>ba`Gb=IXLzS~PHH0n|Je3#f^1&-}{sl9)Chje*O~NZmJk z2fayzj66q#;U^v$!`pn;1Kk5|XkP+R>Xb9dWd-+s@o#?Vldma66j`DTXHG*lUCj9? z%=z+hF7k5)1HIi*4p4aLD{;8X>ffWXs}I0L2+M67p~k@*UVQIOR#AAuUa;DlE)pTslGG6Q@N&49A7VpiFP0WTW>GrrkxV_`7C~0fz|ZwKCoUuO(=iiE3}ukj zlC}X~X*qZmwB-c!KsTo==0PQ1AtN7W%X)2pLW|)37SKC>trN~eE>4s?4a`+IFJ|R} zX2_Ar>m^^}mIwYT?&ErMJ~6n;8?NbwE4}eG&jiU$o20Pkde`Zw&Y-Roqe>$l#S0*% zt_1ppYo~bc-RsvJdeLpCl>C&}^<8f6RVbe)if8@~d>&tSopq58`ZZHVLGx6Q&J?aQ z5P#ys8htESN;_u|b@_Ir(0;npP^IRK(9jFHLbP#E_biWI-e7RTa!mTR+^hUw&0D`r z^ffrJxlqdr;?;;f;`4bKYj}=OdYnd~6hPw^&X6uhaBr|Z;+rmy&#eiE>Q85p`NGBV zk~PAOFxziA{QUO51#@zYd3<(eLBa#0?KVy4s)wh-=!WC-irY&}xDpqgLb)s*)JuiL z)uxp_7(d~@#A!w0Y-AV>^UKVPGh4RqSXro^Aw_scZz>?ezXOlqp+(CdFpL&;jauEQ@R*JaPhibi&!?1WHxT5PV&vNb(dN^!)-j#%(Ey!z%P*6b zQ`6m63`CW#qsd<6dD~SAyDeS6pUxOh;4xoa;@1LPa+(kG0s#`m4J;p0{@B}er$}wg z60L-Ls1XDQH^Xeer3@P0lz9x|Qzj5*?^mk!Nb3rfCkqi-F0-K}!@u9CRQ^3v<_dd4 z&YD>6xsaLYdC9u|Vzb3RGB^g{UD30~Z^O!UXV$r_f0(p<*XdmkH!R<{iW&9J48UBz zcg$h4Wm!1(R1Nn#y{l)%pyfLGoU49L;2jxS%3!QE;?x7&jRrzJ{aJt6;G)AxP zj5Q@Rbq*+GsS?9IfVpn{7FYNLIL2G?YkA=kS6h6JuB8D*aLXgc$;Zi#O2LF3^y2`{Ev3qnUl7#zk!M+t?N2z!%KwH8 zy#l<>-8erkaQoxRzbDx65EdWyT=;Oq>5Zc{btaEM`lBqfW#3E;Y4b4whWD|aHN#NE z&>n#`tc%MGehcy%@K+D)tI_y|PH!HB=aOT|*Z=8si+IcbbkcZU#sXpsN}VKNpv2$D^-W@&4jE8%}_y zw7Lgl=_6cKP`a5FJ>Lp74dA@i8CG|yVSiU)SqhC?>)3KDPkC}X@o>Y@a;TbwZjQZ` zm(lQW1M5XKmBa0)M}np4nEL6{#ge+b1qTYl%NNs-E`po^^jAEAIJky~1>idx@0-1jpVP!Vyu+_U?Zy3usHpt_qLs zwK%_uhr4biJNEfsYtG&REwC_jMku|pi`7UQZ!$JcFOT@9X29_8ObZkJy?s{I0NFd@oh>gr~i#_VDl0zCPS5?p3~* z>D@_Bd%c;>_nNqKxR>@XR(S26{Iu7Qj_-BlPtc1y0~7aH;k9?_(_V+QuE1HLzR#0I zI}Kfc)9IH3Xeu9>9jfkz^x{En)b74DNqFt*UxYk2_~tqjcrQ$ne;O1B2@Ataz$NAih!IW zfk}RvaBYdEm~rg}%1^~WR@L*rTHilzRQ~W-G2Wx{$5F%In6absgYY*F*N)HU$DcT6 zl);UDAO1PKH=TZI1H@lCK!zHySc$#&v3afge@#m{4bh)CT4D>@M-g1*RnI`armS=^ z$Za_jDSF8xLCz((T~pX9k*q5LZdWy+nC*<3xC*M_T;0~Rl)nc0>IUkeS3#?YoSlxY z8EwPpeXSz?iNlW-Gn|nfRC7l0o`I}k;uHS&v5)>5I6n+*YU)@fVlBp#1&xc9Gt zlb|MB_bhsIFK<}}OEh1rO8igAtiJG^Ax(>CKrAj^H#`TThFbiYal&o>9dG^?F#8Dl zq$)uANnpTiZz8p7_SXTg>jX!Q@QXl){|{8mc1IJc0%m`L6pP)_d}F}u2?YMjnfq%t z*D{WKgS5)8aJG@C2}sfj+>PTx&1lLa{P+Dz{P*TQ{N{mj&utinzRjWzTqh6eOq0wF zs9i**llfOb!i{yjFJA+eH_Nv%(tGmwjCha$V~CcF5YG^=Lp(ewkoe@gZ&qdOZZxjg zR@}I>Thrn@Fq{b%`#?>v1=`h^@y?FTn9=GcmgvO0z;-q}G4 zJQaVH3z+9ClJm*AS-XQOvWtTB1&~P`d>zXTl7%?d-MlP#3Nc~*#Uf$%5dC1hJ!EVl z)0|TGseN+@MZt754fj)vMnQ#d$nl-_Jj|(^m_WyN3!oxSw|a&xTC@;m3~kku)H8(L z9%2d!TnYVB=3KtnV)@gGuj$53_7yo_60aK-9*}qMFE&sW>rQ4_dN{$PC=AmP{njc9 zR!8Cy)pKnjThdPpb88ns&4%LfxVBK5Ybw00jDfnV7RypPl#)%TQDi!ykvFhwR}B#1 zU{(I@#G2&{+#k2*mB87mu}{RrWvX5e`%$48A4JZ|5h@Bq;NhqxW*VGmcI!_)@;HF1 z#bNQ(M|kbS^Q4>C;h9kZS?hvE+1xSUdLFoz1=K?7s$>BYaC0S!SZl1vNhV@&wa9LW z+Ohn3A%;qKWl84LDl^*m%H&G*tQ?Y@2$m>-=NZFS3$ZT>=N6&`;xPb!7o0O1uW`Wv z^Rj5?BAGKv8?C=16RfR*k$$5y#BQJk5VX+7O>bi>0lQPf)^+N6Iby{@$dGr?PCm|a z+{fzKw&DTLrb5VSiN<+?hA|JM&rx?6HcvhXPguNhjW^2$4-%e(HHj6jo+#R&_nZaw zsImt!7M(vN{TONspk&XZUhw=&@Vwm}rc=kd$Om!dQazImm`KeuJG`eW)zN#TKDaj1 zd@=Oh;g>~=C?6AOO`jmZg5RKjSMpz#U+4&hSlFAY;^l4CKYEbv z6zcH#AI_aoqmVO*|0Sk68fI!)sfT(`ykEi(yb?`X88heio(ZtW%!JBJQw$1uIz(rP zQ8cqkW8SxI3#E!?^o$N}kYDbD?@p!KXl6mS`N&aQ+EwlkyCDXT1bBUv^9Dp5G`EpP z9U6#Y#l4WR7Vh~l;?Yp4Jf+nI<0sH4y8H^>cSWWaO)57W2g~_!ZLQ%mkO6XRYngAz ziX6l$Y)m|@j%&iQ-$9zJ(8^LP1k&*3=^ZDAbJ^n+M(^rHM5NwE*o$ES z75I8mk5Dl|&dQUY3C!rt!8b0#QvxRLsHD!kwqdq}jpVB>h@1)(s_Li)w@as^nE?PpOSiVF{{74G7E*H?CmF zD$B&Dhd*(>OAGZ|Sf2m#L6n8CG2mITr!G>T^N&o{Mm6^S(8uUwn*6fvYD+aME^@X+T$yVxROYhU z5@GMZ*hJv{pM7=;^nRHw)g_(%{k+*Xdrw;RsKc=ShS_Jx3AVzcp>wGTgut1|H9P!L zqWt?Oa5IUzI}oM(`y({Y2=y%Yo%rXYGW1*>AyhvPd8B-4dbje0*Sf(1{4V$!{f}9!aLB{;)Ssa z3|1Ou`1|=h^O33BamEF`*k1_wRtkIIR<<)@F6l*3&n>4Oxwc@5Fm$^a?fKM70S<^? zfN{JJSC(phnFTuKbeOGo)t6_827o6>E*L*}K{Pq=GX^38-~`SRK6E^COAB1P^WmE1>rSs5wZ1cH>8=yI z?B40zuyo^zjdq*blNT_~z_n8&4Zp(tv%ZOj+c}{iX(g1V2i^A5+|?KWj-ZD%!v2F4 zNk+( z2xDoRLKT6B1xb=dH6;l?VjK6hit}^&!2Tm`|W@S_dIV=4k zqgoCgB(vqk#!~J4n&c>!Xz9cd0!)7hm1Q5n`X2y9expU=QTT5|9oBbLTlWRK(NLus zPLP50>~*-|^aS4aV3a}W4R9N4Glqv~Xf*ephOHw0d(A4qXOK|Re}ig)<#K^OBU?Z~ zbOhC`oR@A^zO>z}oIc*Ho}2z~PPR%1e&iXtA?gJhf%Q*2Jkz~(15x9otZjGGrke`a zc_`KZ6>0>f+E0uIh~813mAZcfbm)^xPq@izBe0J9IzNwwWb3?^n;X27VIB_xw4k5C zobjBz%Ap2XnbTWpkO$PW#bkN{e(I~;X3HyQ`qtncemZt%%j5Hf=hKr{ozF~m_ho3& zVpqV&9EvK zkTPUA;00eJ7a|q*K%|0@uaQf_Q>zQFGLZklDo03hgagoEKEeU!X$d#X!4fr`u#`xC zZ!|0M+xG?I-SN{N?AqU!2lwH|6Z`(bubo+slUSv6E~#}MRU zr=FeO1@J3=3cu|wcYg;zo5k3I{Rr2=J)g(6VhG+WE74voBf}sfNG86lhdOnvTkox- zr%JT8m4qW$vGQQ9>FKk5+AeGtbvR!RZ*aYbEtU74_go`c_fr>V9YjOdB=Jz2`Wko( z(972@Y~NuKtaqhw%tlKOPhH~tIO`*N^P8`>8g2t#mxt~ITl{k=+YJWbCKcj&?w5TS zv?iqsxZ&5yeIr^DuGH$6&cleBCxTk7xNhqd@Pgcen_T9Glo{AZVg6Miaz+C1lL#8Z zp%OPAg9NfAM|r4u5V1MB)cTf>W|}|LhscF18Hbf>kysT8y_Cyn}&?#1(b8vgX0qBRr$tdt! zWCEnDXPBC7Zden|t?%dRw@dIXzC@oyYGHsV2F+|(+FZQwL>6AP7EZk&UN2m2MT162te zTe&~b=qk)-RKUe2&upVTdVL}O0K5V(ep8xFOQ>M7Gz3-0DPPKi6MhgWkM%<(>3M|m zQ@FQuQZ6W3DGQ>)ApU1fy?e`aheX`kpJ1`u^2^K~hP9(Li6uKV5Gkd4t7M~UU2GC$2U&@+0@q_y z9+3+b+HB$RtzrT8?%e1*vtfC1YN=5?>aJcJwU~A7mEAS*SX6&OxEf>P@vQ{tZ?6<{ z5{5%{+*g5A#J^!9V50KVjf6R{*b%B529;)c$Y7V&|LT_kIn$#Zl*c}WnvdK6fw7X$ z0HA8pBC$Z5DgsQElV2^0N_CtTwRPJy?KVPC?>+Svo*}?TuKe^PY)1AS)p4LTJ6y-~a+!T*EM8wbru*vS6Ipy}&m_6*TDjrj zZVyfGP)`CC=5|@>^AAK^J-24`x}NPTlUz2w4s^p6bBbx=hSQ)?^~+KxQeo_}-a(%F z#oRTg+}(GvDw;8;ysP=){Fx1Z1liP3<=0~_9!Ycmv);gD6+;`)dBuqKBJhJw` zjaP+RW*GTj!oG8_!aT!#ryF#CA~yj1$~(^D^Pv!XQ>jpmqUAan>IdKU30bd}e~_Vb z5ag*5c#zCv#aqAGvuyl7jBcZlKEo~Tw1knAeIJi-9vxOIxvE|i4*C64NP17ar-F1K z>74i%Ko%$I!+m4Og{$B_-Xx4LO7XRNQ37H=kkl55YaZbYuCIpD8@dsn12pE{OmQjL zT}#34%AeUQr~V&f-yau6wFN%2v$M0yZ(I-%Fl7ad%1{hVjR1vJOj4ge%CgYmhgycb zr;#SfvO7C0Kg9)C1QIDh>1FB)q=cx6sFj*8rK}7XeyE|lD(r%?@I7~DQR}_$_w)Tj znVoy)-gD1A_ug~QJwFu3XlFaOj3lCi!rGH69?yrSW0|j=_J%cvFa%$D5A_G4Yrs17 zKEzIP-Ik6K!fPFrCh&w;Kf?gNwVcaS6+zWnh9v~Usf zY81>*RNrQ-W6)18D;MZ<{v94v#_e<%LhlTJ@GCl6&jmN>(dIY!7G5|?do0EE>;lLD z%%!JVYB$#cFQT>`8>A{Zw%F*GMfgMZi3u@i4anF^0={o+M}uB&haXd0Xb8UlmN!`P z()i~joic&cjuwK&_%-}G*bcb=U~qZ0eY{g| zT@z{qTNc!!6#}gfoej%WiCGCJ_!SVXf8%SFb5~$of%xD5Yvjl^e;>KPoo{|4CE^Hr z#~LBe0pW-PT%`xB98e~%{9pAn{Z~Cz+G9tx)JY*--2XNai#Tba5bE(A`xz0t4t}`^ zIS=%_1)hUR&J{gp!E-ptd5_(zoVyz`_W@t3&n=fa0bgdF`-jvC__Fxi>%{D8fE!0} z9@0I^xyLc6b%*%Vr?6Vp_ZrWa`{JMUj_*qx!TCr_P*311op|?CUp?k#Ch^HvJU4f% z<{j}a^1v!mA&r9~tY~*@^x%x1&{l)-#t#{ZtCQM4649K1{5c~PkCh$zH|#T%K)UiQ z>@NH8u(GgTwEH3c2@$P_%(G~BxqY*%=R&XLt=in}1;m3c)IGSE?(q&k^4KbNZ9FaHmq1>a5j4cD$Bm9DOwdBBw159f1&s z1N=+vsjHKuzvI9G`_G}7+|WTQQlH`d30i>rRWv}kynCdQjZs(gr!KG?hn(}ekyBSt z@pxfc9WHkjUT0_YEY9}J3RA&4;~#_3U?~gz4S?GO(I$J;7wOd&+^-0-$LCO^$J^a% zl!Au>uD!r~FrxVdjjwxNC}=kL6Wfg9<7G_a+u=1o{nChL7%oS&=Sorshz<~T_+N#o z1CJ?=W??GOvyey>Vmx($3VTuw%A`5i_Ri8a&`sF&3((gUK=8l8<)vEAH>^%#=IUBlCQLq`VYJ`tWVpIu`Bm-SNrBXEHv_@+#-Kew5_to?XdvuN#qaXm>NV zI4#+D=^k*7@za~O@8kG=cVtyYJ8H7=D_E!RZ;kj`*MhWH-O=#ox~>X6SFKAn8h+uw z4P5!;TYlG0Hab5<*h+VTP6TGMbop7F^Lls=ui5P$y^d}3cTzd}a&{SCfMeC{c@b$v5-+rp8vUQDk>4Mz zHTaG_#qSTnB<+Eo(f$xl(yn7qDd%SKdqUPZSL>dTch1qeCzPF&5VLn%_XMC%1L`;6 zvP=BUQ|%_e>G&m(*2vDMdTgU}0MP$9&js=rp#L%3cm)FeZJg5V2jgXXru+fEj)#%M zxB0a;cp1Rk_@Nn|ooj&lE<9$|v3o|Uw~k4P_{dY3t?zT-F=NI)p)uP3Xx*AaR(P%W z&{Od5^?CB}O@A3{fZy|%JwCZlXscKDq+TA=BrlksU+~XWqmzxv)qL-hX25(nV0-Td z^I^XYUJCI0c@7Pn5Aan_-hWkTgLen`eYW?b0N(Z-2;U}uu8;#gKIcnWSD@c#{IlE< z=vQHT?+oi>|~%{?vwYcY;4^LT zy#UYhoYL$8@T~3qeSlZn>M;U5W5Z`6z^k6TcUJM=QovcSEBW{Gy8xeItLF~DEBJ4l zCqVrQ8$9BdbQ}Di$*p^aZSc2~TmKlc!H-XFeP+n^{$_IPyA~Tf!0Z|1pIP|!k4Lum z0Q1ZvTmAL`|Iqfn6W|B`)&1m1AM`P zHQ1`Rd0l1j%inBO%){sP!EI#OcYgg|`^E9JFbX$p`0=0LY$YXa5_;PJR{l|Jp*YT9 zJZKTG(Nd6U?(V}ugYn|vkByNV_kUzCP8!VI0KXrV&dH1`xRkR7&LPF^8w8u%*G8_Z zSQo%lY#hHT*?4ilV9XontV6yW9%n(vAv${^`SSKzQXKzH%U;E0(-nTQS+0JvsRe$r z;PEoqtjXhL(<8>qrY;&U3tlz;#&G+iF7xdNcMa)6o4;OWHEX9n_&?>YF; zg#wvOPkoI=GP)*oUlR3aAiObbckzaMd}s1`pNR2EvRT3#EAu^1oywLUoa~ zUw^pZYp|A@o zy*U+ETq2s?z*peOd-S%??DZ|}zFb0!!7l)!O`XdA{Xgj5D{KI?-+vTbLVLQF4Q$Jy zGv5Pc0P@ej6A=wDKRm#u;19Sh`b`g9r4}1A{2=%|008@b^AB{)*m9)jpUe!L{45oRE)(EKHJ1 zPvGw4_q7~AH(xFgM*{Q62HmLrcUOp4!24htL`L}7;sWvz)@Z5DO@zO%THr0tI4WPV z7idB29gGrsE^a4yz_G3qO-DM{+%T3^+0^00?{3GCPKnkW5 zS1%Ck^uCk*L`+C-U7~C=3*jIBr2bYs| zA?n{@|HZ=T4=Tk+iXs`=)SrHnO^^RgHtWpqaO-+QHudNY(ChpGJbe=^s5=OFMp!9d zQbD#&;SC~8^*a$F{2lI1egloH1Ys+i`h`FiTrUX9+*>ztr^r*{xzjCi9y>>!>asd*8CU=pEyo5Ll`SIdc#c#T zNN}-KM-<$?5B&#mb(nNJ9M0E~5x+4W?<}w&D}cdN1EEFYts%TW)7F$EW@S)$nkY*M_w z<$Ty7I=K&SnPKCU5172ZmCYIu;B&wlfI{u^)(~{8SyUP4$B5$FH%4x**eux6zAo~; ziuYE57OkGC3P;}w|WjRn+nZ>Pn%c6nYLs=l5J>4$1%-rw60By+51BMM3TWT6@>#qj2=!z^3 zHspPOwIKp|DX9QX82`C=BX}nnFCGxDvH6Y}oeoS+S=M=?<3!d)dCa{VgQ1%0>=}&T z0LrYq_|}THyO3)_WNGj3>b-58VSHzBQZ~dw>p#(|O`8XH-tT@Fq|!=)kfw%pwBEtI zdO<66$E0b`VzGq~w~TVc{5Bb|Kh9|-?wEF~7gkY-11v=Ig}2+9r3iMb2CFQF8o-Lq zDFJSz&Y~J7CBzm66vF&#s#f_G8Cp+V0N)WBc7~0oi%%mh#ith6nAxXBFr$T#_pe!d0&eNnItjN;ao~k^CEN>*^ zVsnU>9Iy%oKX14kw-S6}#?YXhZ&wksa&S)SFr-d`EF21IOy7s@Nm})?r6tR~!ll&m zrG5D!skg9Wd(uA4P4sRF4A-hdL!_e6kiPts{8#prESHBfiO2RxS(9-f-@AnkKemUI z&-5{4S8`V5Di+XAcAo2Cg?dJhG;bCkk_;+i966oCPzaMtxRXw#q4k|QuzA4AF<9G* z+{G#c{puk}PMVt))*+!EPT84*qhu4{Hf1{47~~2^mA)^V1;4&g;a61GHNcbDGhb?Q zEbv8jF)8eXFD~TJZoOEE!@#g~-oP-vfd0t=+gEOxr8hs1-x;Ru?Sxw2SFrZ76)L@O zKF-WTcT#`sKbVB>3{QU)){&Rw_mLnqtabIK%B0wvUFr%reGa!E&vlD{bo67uHf(bt z@YbGv=>s zu@5y5yso+fM`xkP2?qv4-QiHyD3BQn&$*pfdEq`jnUt3g%Jiw9fcR){U z$0SXV>RyxX7)VK)^HYhhHKHI^FRXzm$as`e4l5F+-RXgy-l@DMf}9zYMO#;e?aeAa zO_FJOoQrPAzYFNn8m0@%oYzF?HDJ9hp(t_Lo~lbt26;gj z>T^meehK3oB!hb41l)%I#D+%KsJ2Et>c_g3DFK5q{fl8W2QO&2y@P+j6#S*I%r@lv zdt5b*5Ma~5-;o4$V5nw>79uXH#iEK800UfXhOLziZ7MM6*Mb>KH%QJ<@#`C99rQQGk#mp+AiI4e7LEOwuhK0 zkSh+4(ISf?szrb}kRA)smndix+V*Kz%H6>GSQIZ^mxV2;6UA?C6vg8)s~VRXQMnXw z%WNe8M!PNuvcn$-zbH)T-%P8ofEl0k8zq$}NJ+eGR>2n8)X5*qf+Ieb z&04fsHhtA*+0>NH0Jj;+Qf1Tkrpl%shJUVGgKpNUF63UwkqU(=QipU0e1T&A=C`Cy z8yx&&bmu{K)<`DYTOmtN!}aXhSu0Fuz97(_bU>E^1AXundPZ3fjs6U@X9^@X`m2g$w=#yQd=?YJLcKip--^m zpP~%$d7=}ae)t$#h@e5TSo-u zlQ#a4Xi}ZXp>yU#e&EfxlBKW{`H7%XG0XMCj`B&&+*|Ng2^96yIv)f+4-aE$qf!R{eM&>g~9s#?jP-m8Ji+MS-lO9dRPQCduw$wv9i2VFX@_* z7O>eavrC_w7I9FA`bIF2YZPuF_KFVdp>GXg4|U3m>?mtysEmUn`1ml6n#Xt^w&X_9 z(gtkvTPaJ?mpo?4q2%jyRux3rrn`p#LuC^?iq7qHq_e&ul&odg;@dX*qP4|ajXb4Z z4;ksXrY|>&8`JQRlgB;cM%zCm=g{DT3KD(mP%)faw)!z}a@h(emyhA(@-duTw!p~+ zk|QZL!^vf{a;D-VVix|9a+V^Mcm+>YzM}XLI65sO9pe8CD;q`F35Yx<8s;?4JseB* zz~~7cw*GT)Qh%uN6Ue@9Xg%0ik<^}?@!{!Bt3MGXb0m2?AW0J`o8E`NamuGtHf|}F z&;S^EH5dUqBRMCx4#sFS_m2$^DpDO6@Z;#Hw~fDl2$_s4ok*-czXiWqADJX2FoFN; z$}pgHlM^O6PYV-3i{0r>G>yd=r}YDo5ap)@w{lHfpQj=gpKqhj__TV|4&(UCVTALR z{(l-L^`Mz?@Mr}@6cT(Axed+`?GQ@?8{e>NH7%s3Tj6XRF#{l-j`$^wa04wQLm9c+ zgP}Y-ecFE4m#!v&D&U3XM%zV{j@r=gV=ay%uEVvI} zI#NRpQi_`2^8xZ$R+lAGU82eGrfgHY$Ehm$zWl?HaD(^S$c5 zofC$o+lHOB#5hWuF&6WNTUok?BXlyDmrCU=JLj=`h!>r)v3mshQhOJdtB1pw8Bfj5 z;eCEdGnm}N_#AhAWRfNp!N`J_V|<(W0>mx9)Z+6kCx}a9v3;+56ZV!8CufVaZ^)T$ z`$`~nmtn-EQP`Lw5gDR9h>esn0`9?ALy<{e#*P6y$mMW8j&rf`j|J74dxHO!Jc#%* zG6``efI{4=}Aq+I605d`1KwHnS0bV zYH6bv)VB}H!~eU!TO;-Pf8!Xnw$3-|m&P#W@p{n#w}i%5HLGDPVQ0^*Nd5%=zM45Q zOYo@8M`tjPXR2|JdW4(tsG@HqbNp*hfnyQuDe~5xC0^`JPXsEV`D84cd zSs_(yM$!|KoJ8>zn=9jVsUX?1RX(UpBQI@@gmP4h;`CIrzRgX`?u%ZTYZ?7dIJ=J` zXB35`l6c66S268U7BnSZ--a|bVMun}^dKW0kIG1&#J-SngjGcOf^9bjnV(o}xe>H2 za7rYm!#Wwjiao`VtyxSUoa3f+;L!!&x=6I*IPu=-e_k@M~^u6r!W-)@{>6LVHCRHAuwiNkJqqn*3T1q`UKKewFB(GXm zxM~;O<^i68Z6TBiYjaO{l#veSt{oWCS~h|0TGi5X>tII zfjCTi27wZ09TotmK(OF8?s=rF$_5!z`Hj6mc?_)7kAoiTcs5QeyGKdnD{|?aZsC{T zG3P3nW$JZ|V0RZoFDZBOV`6zb;=kQWTih;|#unb|579hJbg}E$mJcBk2v8 z`vcwoR_7>5|E9XztgVlL_0!Sd(!8LLWt^wv?y9;Kxy3&}#`Mi{%qQI9<|>36W~{&g zFbzbQx;pZ|IUmVjF~mLz=n|lBsx;a$37AD>NRJuN#I{k8>c!~vXj`ol1UJ3#Yo29g+}PO4kU72C>8*o z!lzkobOPier|^pq57w#!0-pEHKe01VC>Dh6N;C6VaE2&z#p5%oz#7$#^Resw`@2fU zw-KbeTF~#yLEk@@nMd~?6NC1DE@=DZpzR0i$yHF20$!m7bKxdn9-5I5Q!smq3Sy*X z(H+eYA*)FsmEZ)FgkMn6ZB=giq>Z>=M{c&G{L4!#)Hj%k*oV(q zjB@$Ydmw+#1Nn0<$e(jT_LPI{84a>$G{~M&Afe6!nN$wg#lTsrC<-*7I5DNj){3D@ zFkY^aSAZ_;1`|TIVSN2FI>OGuDXcxEu|Q7BIYDp#Ub&;38{2Ernm-1cj4yw6lsDAr z4!|0J?AcAwPdJUt!-#)_*U#k>g*%F68zl?g8zq}{cy^k1?mX$+-k5Z) zH)eU8e*Za1JDkg;xo+5EHEmgs!txBjvSb6*#?mK2Vyod16 zQ?Fr4D~6wDjVhImD+LTwPJwJ51+w{^MGffbYD1dOW-o43sX4?Uo_MDewa^ahNt!q4 zU8}%bQ>2)~ye8G~IKK}#Pas5+5VG(uI45cVXZvD-6=#PDJkF(EPvM-%(7%GN#0PT! zIKbIxFCAZkUjUp#9CE@_Ktua~AI}kd;Vdx+&Jwf98pI_dG|tUV^XAH^n+0;tzW3%{ zIpiC^EJ5qK)qMW1>?n@YaOfm6MNNzD2mjTo9_&+Gak%2k`4R}p9$v+W?J=Mr22I6kym zm(tN@7d#3@oO%*(s{P~0trc4ZX(-kdM9H(Q@o4=+t2b|X^kyTR>5La)#|2$s2jBPG zGymRqPDL3PGkou}Up6cp`zxXVS0FT=iozH8H=_O&)m0>gFo8JICSK&Kv#QlG?7Z{* zDkDLwjMYaFX`21k>)9Y&N?j&o>D{0iTb}xg^;Rdu@lN>hQhwFqMmr99oW(%1uO8GT zz)c#%gn*C24V)M;d+R}lVCvUhn!9v&iZPRlQ;ow@@(x`@K&*R`ZAnHN(;z6pS=75fa zDlJILF|AWHhC>@Rc-?|y3wR4$fH^5xTM>^(ldBfhSHug}>Z*_|ST&^`JPG)?FlkGX zRKULvocyMomv}PL*PeelCB`Tkw6>x70sOZv6NW>F)SShZ&t(Tsvb6t-PpSPV5z?$E6t~H&(2B zihrWaf{Kmko)?d5ha2DVfN3SWD~aE`5{3tm_tL^o>)&kTDYVZEenH&1$c>vC`PQik zBRx7*XT!&DgFKc|5UC>U_|xA3H5P__ zwWu+|Rn+0v3g-nAkJ0B25V3C`U{J%n4BGIu5PuGAz4`caw*Cd-5Z$Mg_AR&leilWk zKyO_4+xiZ*IHvnFNZF>sr+Lo`+^3K!6wXGby7wBXvP$`0jOJM7=7 zk^~gn5wt&W=X^~i-4#gCZ;L^)wB9;DF1eL&G1IxCpo*IpTHk@po|gr*+T^LF4hbNW zd4|b_I0Kqm5Y=g-*KJe#-l%7z@p-hX-6Wj}bWCcH+vwo+eJPBIOB|s?5Zr6jA%4Y4I2mV&_?q?KS?fc zWgS-%_~2^ef47fn*QT0=4qpNdj*ABDd`vFNCO3?yQukL!w`Gx1a-8ts&caAqSqbrg z*Y9V9%>0IioFq6$I}^tl$j5DmSwc|`czWGcvGN!xMA4+U?V?u13!U{()mP2emrh#i z%dd2L~QKOj-RZ$SXEJnvYfBe?{sE z++pREu8XIOs&^84kRmRLKr@feyQ7C2f3e98(b~#IHaMP}y1zT919;#h#8C*Ir&Chd zf_htw=l2R~IMTi!wLZ_bI#6wZnIJlThmIfnw54F(S%dm{4Eh;i?Psx`XzmzBJk7b9 zdo6CV;1X=4#vkfmj*5uZ)Ww2M2ktjben~-^lqQ9Id^tnW8G()=>H$oz?!^emA*(zK zGBtT^h&BbE7;4oif z-(PCv%z+j(AI?6W55>(|j|tdrpg;F!|HCWlSakrx@MKwyUlN+3L0M>K)*R;C?0P*O z2rwdqKH)J8e_uD$jZm&xv+r1d6|UfLC9|oqmPKpLrrKH-tuRY#t67h)!Lw03_mJi+ z|1|N)vvQj15=F>qQ5Q(Jw4h5U7>)0k#Dtie1!?Xl)R8(uPGS0%X1Md~#JIk*LvZG2 zUWt~P%~+%k-QkC^X`s=%iWMli#4c;8FO;VKtu)tGT6gXH@3rb{-%E8O!6atiTs_%> z>1*o*Vd^yZ+zhEM01MTj%zUSHNXt;mT3c;B2leuCnjKt3NTPq><3exj13z6q7TF2F zJsI_xbIXvM3s>AS6k1rZAp~x11RJAZMm~vpx-vyd;DRZ}(B3g>MYO1AMt|7g>DIFy zV>%4mx8v<`NDneMfd~|2Es5~zF7A>|1r6Ich`^GrIa|V-hTlGwk&fQgf;7;_d*{4i z9!g&LK?~Za0y1GjVK?Qz1Bb51_leRwEQ4PI|)c3S$NZUi-?h;laU(aZ8%64|$Pn-iQiHXH!w8MTO?I0HJ zW{GnYc0?^zdSH?4Owl=vOa6Lr&dK&Thm$@XF6U%HZaBgqf2>T1yrlE_L$Mv<-to|%105BLlDMO0uBap=;o zK8td{^GtAA<+EN9?Fw-|>1GP{xo&|s1N+OTRaim$$ZF2+l~RXuiyx&^SQ9tkh96>!bM=5)^z32^oe% zFJACj^b6F8;xC~)(SxeP&3-qrgcyk04mYKsnPG&AT(FpG9U81)14eugKMGHg1#FXw zFoA9#8ne!=9`IL6Cj85A=&O?%>7JW>QawMWyShPYAPFf&+I!yefqRIIbe9BA7|G2k zAyikm+gkok{kYEOj#NV01HWqmNH{MLbiN7m+~n{vT~zDfVy1=H#4fFfo{?)2EjjON zL&_+U5N|RBJGDWC4#z&B=SFLbo!wXr3y~uU&zn9SKCSoa#G4kkdVoGtN>zPC%wQau zBy@wXWz9PvJ}VJI-453aLnG)r-9qKGEFu87AVWvvMS}MDinW4u6&qyZgo2TFr4Z}b z=ax%nQKQesU8$uX(;LlLnC7@fHhlsvn+oQ3!BcU5)X}#*t_GL9I`PJ(bv(_wQlz3d zlBe0e_j#J_TaPeW+-f-F{AKB;U7HJ{WwS`kq0jBd|3yEaMVd2Nj@ z3qr&{hu2y)I!Nax9x9FZ$^owtU1>)Ocq=1L;Qf_>lhXG})2^1r?^?r^cH6ihdX1I; ztz1AR@;xH|0sLPMxJ2-npjEG+`Hcv$vlr2n+0JL9%li&%_FbZvgQiu85eK3tfkl*J zp5(mG`<`pGY7Z=ra_c#+%j8hoU>j=nm-gHs{^*E$k{Z^exOB_v$l*Y@^0!^-9sicKn1PE`%3 zjpkc!i;&IwdP5pfOAS#)^B8t4&G>U*QY51vxmof*Rwj@GL1g>NC-9c(_=+%E0>?gm~6;p z`3^D7-fCa!L_tKC{tt9{R12~b1w4xKL7M@Z>rk*0g*N-a9@Iq7F^#1&n|%-tX|rhR z3x7nbwU85IvqOUQ*($w4JKXjkU(ca5he4R^WeBu8q`(8s+*NH1x`sWnr8l2 z^%Tg&h-u9d0c~d|^tNjrrVFSb`rYtn7bCl50nA_Ho_uBCocnYUHBtHIc?2s2J=PfQ z0PGfO$wV}>>B4R-*=3vz?MJ&hq@Yzrnv{mml>q>65|NP7F$mRt?*X?c+_JKcK4(9v zUOgXK>=E=&E%0qQL=iB=Eus;%AbyL9pU+?$YeF+s_Pnr{?_HG_5deFN|2z!!PCGgP z*64+Bx=?~#12dzC2$H~_)Z0TVyJM80DmazKiHJa9AD3-%DF)pyl+3e(xisev?GBO6 zt#8m+a3nR#RnEPeI=_VK8YW zBMvjf;aj*lWIGybz}&11750NIugOW&l8UT@L8G0AG}@FPjOS1@g3?mygm!c&$fU}b z*x`_tKFEe{c1F?(rxT5B^RSrlsB54f23*dOkoPYMY{JZsW_o1d2lmuE^ke#4x3IKX zobMOE%ATLv$1OgIqT!f{Ft~9RI-#+Ug59vGno-Qd<&yoS346)C60OJs;~Pye|m&s)jBwPKp)cy{k48f+HZ39Rstqc@fs^8vvo6JhGf52ePfsMf*58H zCalj|ht0HqD}ozqKbj-#xVs&LPJbD zY#z1c{<_8Q9eHom`**j-rX5U60V%=Tu4S0pLtWlm4>EIKA5pKq8Xi`Jc(dST#3uyc zGt+JhUb6gQL`h2(UeC&Lw7!MuWK%m#U>EW=>Wy^tG_ZC%0xMC6DYL!k#1$kb#-+T3 zdSfkzd4eo=tmPcszli%ps0_V>89ZFfm99Q~iQoN2&XD8m8GiSV>gV^$rhY^Do-b|l zo&0~#ce@8@zH_-#4#w96^T7l> z*nc3}5I1?D?M=UI>Y0A8^N7blzf;E!{~)J(VXeRpZQHd9@mmPl8ooIYX-^JCBrrpR4?Yn*N6wJFeDE1MXwl47lHfSzZEu3~1iLDF)8SfbTo?qMyTIe4YX8 zc$4dSVw$R73Y?Bs<}>|aIx&ad?2FdkhFuQE1<@R`mH{r@ZPP{+{cL5eG89G7%0>|u z&5S5dba!W(2lQeb^umn12*P&0+>|yN)#vyP`i)lq@gzh2zgK_M3z+NuV9hB+Hjz+U zzwG(mUdxfq*1CQ_A`3dxi&hpo+HS)%3QK2Vq;m7{wQPu1+9QLNMym;gNTi1J;0W3D z&wDtWoUUaDuu~<(bHYBfcf$HLb;4bUzt#iXb5{c~3ww>UyFJ8+139&idt<{3u?%Ae zH}|*6=RV7?9^&SGJPcI2hh|O*`)C+N01eZj`LZ`#(+zbPA*#;@@b@0_%V1(;7)17Z zMP-D&`7XYId<|wk@qwD2+kn$c7ZBi)V4@d&69gCLiEGC*Oy_!h)&*`IAR^q6hXUo%GvG~x- zDsko6!C@||c8K_eK%;?qcv z`C0lPyixV-gGiCjWAv4lpaXJmT_D(Ym*`*({na!yZB1gLRQyq*R(x3$!cv6yRdd7% zh7@U+2S#f4)Sop8O4K6aGiNw+Kt1(cCV}kvpL)6Pz8*yHW!N?Fd>IWAgwTlgR82GN zs$zO46(52QhPLi7a?ZhA0bWaY4JVy;zjTz-*sW=vBLb(?Zlai5YumDMA81kunclVplU|CN@$U5{y*(I=o6E+qJtkwr4J z-ulcil7qPI)a?;Dh%Tfiz{ug8lDciBMt)2D2;Gqk#M6CM4H2R;0e9O=WiV&V+#d4s zm`vK9_yFPNMC>jC?)7YQrv>5HhraO$tvGj>=VoT5 zMp$L6zer41)I}83I8`=PXjH^-mX;$+8|x{vjb}MW5!{DLgdkD6ASsfAv>@kexXlMo zOSg={Xg7%Sp%kB{F-I}c#IGG%W^fqvRO0P~Rt%iZR4t^(l5fh=-BCQedqh*;u*IDW z;C5Ca*}_PRO!4ryM=RPOBAQ63tp$9DR7L_gW2U+rW*w{q8C3$besGbM4NWH;qqxF- ze%vmn^I~qiBtr}uE|7jWrHQbew+X>i#2yLbZHo07u zF2XINY4y*TvI%s%ntgzY@E+Z18jF52{<8F1h+qQk#Z=am)pAOwqnx9-e{$n-27F)J zth|%n^1%r2pt0h4=kQ^~BVbkVHS~iJA0(y&|BMpf7?atihZam1;noB+T9nhc5b9(^ zNNO{z1t7&OgNWcD#nEo!4QM|F?hwACQ_iKZ`po|DlFWYMEW`>X1R+#hct~mz=v$up zW~_M2lW&lY)_0FL1!ph{+WF}w>>F@%@r+$GePMYLlIX6f;bbibikJz&6xMT-xBVDQ z&n7_$Do2_1K<)-PxgZKg0CYz}Q;3~BLOXf}@@j;AxR?vEONxN~4m@rzor-Wp>#~#@ z4?8v5+d7QLnys_I%_J;_D5@X>8tbfkrMB5TEStXM4wCB8UaJgM-G%n=NntKnrhTS3 zi=o|Crs#qkOwpKPKAJs_$DgjlS_6Cy`zY+83l7uoggZk|OiT=S@nIgq^mtAw&E->h zeTTTW;=X*m61Bd2;+Lb|cHncC7s@6Z4d0=$)rw%Q;#VCIcMua{KM}dWoCF)JrDzYJ zfmxWSFF!^5Kyf=drvu!bdi57LccW!T*{3rde-GE^{1(p5tJD@8Awq?BVdM=r)Sy#+ z0BcW$5@ZFm?p!^BBm+eZeZOVs*fB*6nqv&|Mz;_%RCg5fbC3PcQFRwDw2mtHA^<1A zs1{kz=DrPDDhLD5;{M|~40!#&t3X)M`Khm?UZ5T@&wU2G2)>N4Rv)WV#EeLXS!&RI zA(_T1^;taVH%*?zbjU~54-#YMM9mbI6l>k5V`1vEMTWRl_Eu=1ZAfT2lC%0DhuzN2 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%0AW8(22Uf&(o+rvd*FpQ%XRXG*Yk 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 z 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 z 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
    C3O*Uxe;!J#Hd-C*ZrkmcZSvxg( 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 z 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

    {gRaVLPkI2NCEO;TwM-62 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 +#include +#include +#include + +const int M = 31, K = 31, N = 31; +const float alpha = 1.0f, beta = 0.0f; + +hfloat16 A[961] = { 5.00000, 4.00000, 2.00000, 9.00000, 2.00000, 2.00000, 7.00000, 6.00000, 5.00000, 1.00000, 8.00000, 3.00000, 1.00000, 10.00000, 6.00000, 5.00000, 0.00000, 1.00000, 5.00000, 10.00000, 1.00000, 4.00000, 7.00000, 0.00000, 1.00000, 5.00000, 9.00000, 0.00000, 0.00000, 7.00000, 8.00000, 9.00000, 10.00000, 5.00000, 8.00000, 9.00000, 9.00000, 7.00000, 2.00000, 6.00000, 1.00000, 3.00000, 9.00000, 9.00000, 4.00000, 10.00000, 6.00000, 3.00000, 2.00000, 1.00000, 10.00000, 10.00000, 1.00000, 0.00000, 10.00000, 6.00000, 8.00000, 10.00000, 6.00000, 0.00000, 3.00000, 5.00000, 8.00000, 0.00000, 5.00000, 3.00000, 4.00000, 4.00000, 0.00000, 10.00000, 4.00000, 5.00000, 9.00000, 0.00000, 9.00000, 8.00000, 10.00000, 2.00000, 8.00000, 0.00000, 10.00000, 7.00000, 8.00000, 9.00000, 7.00000, 3.00000, 1.00000, 1.00000, 1.00000, 8.00000, 6.00000, 9.00000, 0.00000, 1.00000, 3.00000, 2.00000, 2.00000, 6.00000, 2.00000, 4.00000, 3.00000, 9.00000, 10.00000, 5.00000, 7.00000, 2.00000, 4.00000, 6.00000, 7.00000, 2.00000, 6.00000, 4.00000, 2.00000, 6.00000, 0.00000, 8.00000, 10.00000, 3.00000, 6.00000, 10.00000, 4.00000, 7.00000, 5.00000, 6.00000, 8.00000, 4.00000, 3.00000, 7.00000, 9.00000, 5.00000, 5.00000, 3.00000, 5.00000, 2.00000, 0.00000, 2.00000, 8.00000, 7.00000, 3.00000, 6.00000, 9.00000, 7.00000, 0.00000, 8.00000, 7.00000, 0.00000, 6.00000, 8.00000, 6.00000, 5.00000, 9.00000, 5.00000, 9.00000, 1.00000, 7.00000, 1.00000, 2.00000, 3.00000, 2.00000, 7.00000, 3.00000, 2.00000, 2.00000, 7.00000, 5.00000, 3.00000, 9.00000, 6.00000, 2.00000, 1.00000, 0.00000, 3.00000, 6.00000, 6.00000, 6.00000, 0.00000, 8.00000, 5.00000, 6.00000, 1.00000, 2.00000, 1.00000, 8.00000, 6.00000, 4.00000, 3.00000, 1.00000, 4.00000, 2.00000, 2.00000, 0.00000, 2.00000, 7.00000, 2.00000, 7.00000, 1.00000, 1.00000, 2.00000, 0.00000, 10.00000, 3.00000, 5.00000, 2.00000, 3.00000, 0.00000, 6.00000, 9.00000, 1.00000, 7.00000, 10.00000, 4.00000, 2.00000, 5.00000, 9.00000, 1.00000, 6.00000, 2.00000, 0.00000, 8.00000, 3.00000, 2.00000, 6.00000, 1.00000, 7.00000, 4.00000, 6.00000, 2.00000, 7.00000, 0.00000, 4.00000, 5.00000, 0.00000, 2.00000, 2.00000, 3.00000, 5.00000, 1.00000, 10.00000, 0.00000, 2.00000, 4.00000, 5.00000, 2.00000, 10.00000, 5.00000, 7.00000, 2.00000, 4.00000, 5.00000, 2.00000, 10.00000, 4.00000, 3.00000, 9.00000, 3.00000, 3.00000, 0.00000, 8.00000, 6.00000, 8.00000, 2.00000, 9.00000, 1.00000, 0.00000, 4.00000, 9.00000, 0.00000, 9.00000, 2.00000, 5.00000, 1.00000, 9.00000, 5.00000, 2.00000, 4.00000, 4.00000, 6.00000, 3.00000, 7.00000, 5.00000, 2.00000, 8.00000, 2.00000, 4.00000, 0.00000, 6.00000, 0.00000, 9.00000, 10.00000, 2.00000, 4.00000, 10.00000, 10.00000, 10.00000, 0.00000, 9.00000, 3.00000, 6.00000, 0.00000, 10.00000, 0.00000, 9.00000, 6.00000, 6.00000, 4.00000, 1.00000, 7.00000, 8.00000, 6.00000, 0.00000, 4.00000, 0.00000, 9.00000, 10.00000, 4.00000, 2.00000, 5.00000, 10.00000, 9.00000, 5.00000, 8.00000, 7.00000, 0.00000, 7.00000, 2.00000, 10.00000, 3.00000, 4.00000, 4.00000, 8.00000, 7.00000, 9.00000, 2.00000, 4.00000, 5.00000, 7.00000, 8.00000, 3.00000, 9.00000, 10.00000, 5.00000, 0.00000, 3.00000, 8.00000, 2.00000, 9.00000, 3.00000, 5.00000, 4.00000, 7.00000, 3.00000, 4.00000, 0.00000, 1.00000, 1.00000, 6.00000, 1.00000, 10.00000, 1.00000, 7.00000, 1.00000, 10.00000, 9.00000, 1.00000, 4.00000, 0.00000, 2.00000, 9.00000, 3.00000, 0.00000, 10.00000, 7.00000, 7.00000, 4.00000, 7.00000, 2.00000, 5.00000, 6.00000, 6.00000, 7.00000, 7.00000, 3.00000, 4.00000, 0.00000, 8.00000, 10.00000, 7.00000, 9.00000, 1.00000, 6.00000, 5.00000, 5.00000, 4.00000, 8.00000, 8.00000, 7.00000, 2.00000, 8.00000, 5.00000, 2.00000, 9.00000, 3.00000, 9.00000, 5.00000, 6.00000, 3.00000, 9.00000, 9.00000, 7.00000, 4.00000, 8.00000, 6.00000, 0.00000, 2.00000, 8.00000, 2.00000, 1.00000, 4.00000, 8.00000, 3.00000, 6.00000, 10.00000, 9.00000, 10.00000, 5.00000, 1.00000, 7.00000, 3.00000, 10.00000, 0.00000, 8.00000, 8.00000, 0.00000, 5.00000, 4.00000, 7.00000, 0.00000, 3.00000, 2.00000, 6.00000, 6.00000, 10.00000, 0.00000, 10.00000, 0.00000, 1.00000, 3.00000, 10.00000, 3.00000, 10.00000, 3.00000, 1.00000, 6.00000, 3.00000, 5.00000, 3.00000, 8.00000, 4.00000, 6.00000, 0.00000, 4.00000, 3.00000, 3.00000, 7.00000, 0.00000, 1.00000, 3.00000, 2.00000, 10.00000, 7.00000, 10.00000, 10.00000, 3.00000, 4.00000, 2.00000, 1.00000, 1.00000, 10.00000, 5.00000, 0.00000, 2.00000, 5.00000, 5.00000, 2.00000, 7.00000, 9.00000, 5.00000, 4.00000, 7.00000, 10.00000, 8.00000, 5.00000, 9.00000, 10.00000, 9.00000, 1.00000, 9.00000, 2.00000, 8.00000, 6.00000, 5.00000, 4.00000, 6.00000, 9.00000, 0.00000, 0.00000, 0.00000, 8.00000, 0.00000, 0.00000, 6.00000, 0.00000, 5.00000, 7.00000, 7.00000, 5.00000, 3.00000, 5.00000, 3.00000, 8.00000, 5.00000, 2.00000, 7.00000, 7.00000, 9.00000, 3.00000, 4.00000, 9.00000, 8.00000, 7.00000, 7.00000, 8.00000, 5.00000, 6.00000, 1.00000, 2.00000, 1.00000, 2.00000, 6.00000, 5.00000, 6.00000, 0.00000, 2.00000, 1.00000, 9.00000, 3.00000, 5.00000, 3.00000, 3.00000, 1.00000, 9.00000, 0.00000, 7.00000, 0.00000, 2.00000, 2.00000, 4.00000, 8.00000, 2.00000, 2.00000, 7.00000, 7.00000, 8.00000, 5.00000, 5.00000, 5.00000, 7.00000, 6.00000, 7.00000, 0.00000, 3.00000, 8.00000, 6.00000, 3.00000, 7.00000, 1.00000, 2.00000, 2.00000, 4.00000, 2.00000, 3.00000, 10.00000, 5.00000, 0.00000, 9.00000, 3.00000, 8.00000, 7.00000, 4.00000, 5.00000, 1.00000, 7.00000, 1.00000, 9.00000, 8.00000, 1.00000, 10.00000, 6.00000, 1.00000, 10.00000, 9.00000, 2.00000, 7.00000, 8.00000, 3.00000, 7.00000, 5.00000, 9.00000, 3.00000, 0.00000, 5.00000, 2.00000, 7.00000, 8.00000, 0.00000, 4.00000, 5.00000, 5.00000, 10.00000, 5.00000, 5.00000, 6.00000, 8.00000, 0.00000, 3.00000, 3.00000, 5.00000, 5.00000, 3.00000, 9.00000, 1.00000, 9.00000, 5.00000, 0.00000, 6.00000, 4.00000, 4.00000, 0.00000, 4.00000, 0.00000, 2.00000, 4.00000, 7.00000, 5.00000, 8.00000, 0.00000, 5.00000, 4.00000, 1.00000, 8.00000, 1.00000, 6.00000, 4.00000, 5.00000, 8.00000, 3.00000, 1.00000, 4.00000, 5.00000, 4.00000, 10.00000, 2.00000, 4.00000, 6.00000, 1.00000, 5.00000, 6.00000, 3.00000, 7.00000, 0.00000, 1.00000, 0.00000, 0.00000, 1.00000, 10.00000, 8.00000, 2.00000, 4.00000, 0.00000, 4.00000, 9.00000, 5.00000, 3.00000, 7.00000, 5.00000, 1.00000, 6.00000, 2.00000, 1.00000, 8.00000, 0.00000, 7.00000, 4.00000, 5.00000, 8.00000, 5.00000, 1.00000, 6.00000, 9.00000, 2.00000, 5.00000, 10.00000, 7.00000, 5.00000, 0.00000, 7.00000, 5.00000, 1.00000, 0.00000, 1.00000, 5.00000, 2.00000, 2.00000, 3.00000, 6.00000, 9.00000, 9.00000, 3.00000, 8.00000, 10.00000, 1.00000, 4.00000, 5.00000, 8.00000, 2.00000, 2.00000, 1.00000, 8.00000, 4.00000, 8.00000, 7.00000, 5.00000, 10.00000, 1.00000, 2.00000, 6.00000, 8.00000, 2.00000, 3.00000, 1.00000, 3.00000, 10.00000, 9.00000, 0.00000, 5.00000, 2.00000, 9.00000, 0.00000, 2.00000, 7.00000, 5.00000, 3.00000, 6.00000, 6.00000, 6.00000, 10.00000, 10.00000, 5.00000, 4.00000, 2.00000, 0.00000, 0.00000, 5.00000, 1.00000, 0.00000, 8.00000, 1.00000, 10.00000, 4.00000, 8.00000, 7.00000, 10.00000, 8.00000, 0.00000, 10.00000, 2.00000, 10.00000, 5.00000, 9.00000, 8.00000, 0.00000, 9.00000, 2.00000, 3.00000, 10.00000, 2.00000, 10.00000, 5.00000, 5.00000, 6.00000, 3.00000, 5.00000, 1.00000, 2.00000, 0.00000, 6.00000, 6.00000, 1.00000, 4.00000, 5.00000, 8.00000, 8.00000, 2.00000, 10.00000, 6.00000, 5.00000, 10.00000, 8.00000, 0.00000, 3.00000, 1.00000, 4.00000, 5.00000, 2.00000, 0.00000, 7.00000, 1.00000, 5.00000, 4.00000, 2.00000, 9.00000, 4.00000, 1.00000, 5.00000, 9.00000, 8.00000, 5.00000, 2.00000, 8.00000, 8.00000, 8.00000, 7.00000, 4.00000, 10.00000, 2.00000, 8.00000, 10.00000, 3.00000, 8.00000, 6.00000, 1.00000, 6.00000, 3.00000, 2.00000, 0.00000, 3.00000, 10.00000, 8.00000, 3.00000, 3.00000, 3.00000, 5.00000, 2.00000, 9.00000, 5.00000, 5.00000, 4.00000, 4.00000, 8.00000, 6.00000, 8.00000, 1.00000, 4.00000, 4.00000, 1.00000, 6.00000, 8.00000, 6.00000, 10.00000, 9.00000, 6.00000, 0.00000, 2.00000, 6.00000, 3.00000, 3.00000, 1.00000, 6.00000, 6.00000, 8.00000, 5.00000, 7.00000, 6.00000, 2.00000, 3.00000, 0.00000, 10.00000, 10.00000, 5.00000, 0.00000, 1.00000, 0.00000, 3.00000, 4.00000, 2.00000, 7.00000, 4.00000, 7.00000, 2.00000, 7.00000, 9.00000, 0.00000, 0.00000, 8.00000, 3.00000, 3.00000, 10.00000, 3.00000, 3.00000, 2.00000, 7.00000, 4.00000, 2.00000, 4.00000, 6.00000, 6.00000, 5.00000, 3.00000, 7.00000, 10.00000, 4.00000, 10.00000, 0.00000, 5.00000, 0.00000, 6.00000, 7.00000, 9.00000, 10.00000, 6.00000, 1.00000, 1.00000, 9.00000, 1.00000, 1.00000, 4.00000, 6.00000, 6.00000, 1.00000, 6.00000, 9.00000, 6.00000, 0.00000, 3.00000, 2.00000, 4.00000, 3.00000, 9.00000, 2.00000, 0.00000, 9.00000, 4.00000, 0.00000, 10.00000, 4.00000, 2.00000, 5.00000, 6.00000, 2.00000, 9.00000, 4.00000 }; +hfloat16 B[961] = { 1.00000, 9.00000, 6.00000, 5.00000, 4.00000, 9.00000, 9.00000, 10.00000, 9.00000, 7.00000, 0.00000, 8.00000, 6.00000, 1.00000, 1.00000, 10.00000, 2.00000, 8.00000, 4.00000, 5.00000, 6.00000, 7.00000, 0.00000, 3.00000, 5.00000, 7.00000, 4.00000, 1.00000, 9.00000, 8.00000, 2.00000, 4.00000, 6.00000, 3.00000, 8.00000, 1.00000, 7.00000, 0.00000, 0.00000, 6.00000, 1.00000, 3.00000, 6.00000, 8.00000, 7.00000, 2.00000, 6.00000, 6.00000, 2.00000, 6.00000, 2.00000, 2.00000, 0.00000, 7.00000, 3.00000, 3.00000, 7.00000, 2.00000, 6.00000, 10.00000, 8.00000, 2.00000, 8.00000, 7.00000, 3.00000, 6.00000, 2.00000, 0.00000, 8.00000, 7.00000, 4.00000, 10.00000, 6.00000, 2.00000, 6.00000, 7.00000, 5.00000, 3.00000, 9.00000, 9.00000, 7.00000, 3.00000, 5.00000, 10.00000, 3.00000, 3.00000, 9.00000, 4.00000, 3.00000, 6.00000, 2.00000, 7.00000, 8.00000, 10.00000, 4.00000, 9.00000, 8.00000, 10.00000, 6.00000, 7.00000, 10.00000, 9.00000, 5.00000, 8.00000, 9.00000, 1.00000, 1.00000, 8.00000, 2.00000, 7.00000, 0.00000, 6.00000, 2.00000, 2.00000, 9.00000, 6.00000, 3.00000, 9.00000, 7.00000, 9.00000, 1.00000, 7.00000, 1.00000, 8.00000, 0.00000, 4.00000, 5.00000, 2.00000, 5.00000, 6.00000, 4.00000, 8.00000, 1.00000, 10.00000, 10.00000, 10.00000, 8.00000, 4.00000, 10.00000, 8.00000, 1.00000, 9.00000, 9.00000, 8.00000, 8.00000, 3.00000, 4.00000, 4.00000, 7.00000, 9.00000, 4.00000, 0.00000, 6.00000, 9.00000, 5.00000, 2.00000, 3.00000, 7.00000, 5.00000, 0.00000, 5.00000, 6.00000, 4.00000, 2.00000, 2.00000, 5.00000, 7.00000, 8.00000, 7.00000, 9.00000, 6.00000, 8.00000, 7.00000, 4.00000, 9.00000, 8.00000, 3.00000, 7.00000, 9.00000, 8.00000, 1.00000, 3.00000, 3.00000, 8.00000, 3.00000, 0.00000, 9.00000, 9.00000, 2.00000, 5.00000, 3.00000, 4.00000, 0.00000, 8.00000, 10.00000, 4.00000, 7.00000, 2.00000, 8.00000, 2.00000, 7.00000, 1.00000, 10.00000, 0.00000, 8.00000, 8.00000, 1.00000, 3.00000, 3.00000, 8.00000, 7.00000, 3.00000, 0.00000, 2.00000, 1.00000, 4.00000, 1.00000, 2.00000, 10.00000, 5.00000, 0.00000, 10.00000, 7.00000, 10.00000, 3.00000, 5.00000, 1.00000, 3.00000, 6.00000, 3.00000, 7.00000, 4.00000, 9.00000, 2.00000, 3.00000, 10.00000, 8.00000, 1.00000, 10.00000, 3.00000, 7.00000, 8.00000, 7.00000, 5.00000, 3.00000, 1.00000, 9.00000, 7.00000, 1.00000, 9.00000, 9.00000, 0.00000, 7.00000, 7.00000, 10.00000, 6.00000, 8.00000, 7.00000, 3.00000, 10.00000, 1.00000, 5.00000, 0.00000, 10.00000, 1.00000, 6.00000, 5.00000, 6.00000, 7.00000, 10.00000, 0.00000, 3.00000, 1.00000, 8.00000, 2.00000, 9.00000, 3.00000, 3.00000, 6.00000, 2.00000, 10.00000, 6.00000, 7.00000, 9.00000, 2.00000, 3.00000, 4.00000, 3.00000, 5.00000, 0.00000, 0.00000, 5.00000, 2.00000, 3.00000, 1.00000, 3.00000, 4.00000, 5.00000, 6.00000, 8.00000, 7.00000, 0.00000, 4.00000, 9.00000, 5.00000, 3.00000, 7.00000, 9.00000, 6.00000, 2.00000, 7.00000, 6.00000, 1.00000, 10.00000, 6.00000, 10.00000, 10.00000, 10.00000, 10.00000, 4.00000, 6.00000, 6.00000, 9.00000, 1.00000, 1.00000, 6.00000, 1.00000, 8.00000, 9.00000, 6.00000, 5.00000, 2.00000, 8.00000, 4.00000, 10.00000, 2.00000, 8.00000, 6.00000, 4.00000, 0.00000, 9.00000, 1.00000, 8.00000, 0.00000, 1.00000, 8.00000, 5.00000, 1.00000, 1.00000, 2.00000, 0.00000, 2.00000, 0.00000, 10.00000, 5.00000, 0.00000, 2.00000, 7.00000, 4.00000, 6.00000, 7.00000, 2.00000, 6.00000, 0.00000, 9.00000, 3.00000, 5.00000, 8.00000, 8.00000, 8.00000, 1.00000, 3.00000, 3.00000, 4.00000, 4.00000, 5.00000, 2.00000, 5.00000, 8.00000, 8.00000, 6.00000, 10.00000, 10.00000, 7.00000, 1.00000, 6.00000, 6.00000, 3.00000, 4.00000, 9.00000, 10.00000, 3.00000, 4.00000, 9.00000, 4.00000, 1.00000, 5.00000, 7.00000, 9.00000, 4.00000, 1.00000, 3.00000, 6.00000, 10.00000, 1.00000, 4.00000, 8.00000, 2.00000, 7.00000, 4.00000, 7.00000, 6.00000, 5.00000, 1.00000, 9.00000, 10.00000, 0.00000, 9.00000, 8.00000, 1.00000, 9.00000, 4.00000, 7.00000, 8.00000, 1.00000, 4.00000, 2.00000, 5.00000, 6.00000, 7.00000, 6.00000, 4.00000, 8.00000, 8.00000, 5.00000, 4.00000, 0.00000, 4.00000, 9.00000, 5.00000, 0.00000, 8.00000, 2.00000, 2.00000, 0.00000, 9.00000, 2.00000, 5.00000, 4.00000, 1.00000, 8.00000, 5.00000, 5.00000, 4.00000, 5.00000, 3.00000, 4.00000, 6.00000, 3.00000, 10.00000, 1.00000, 6.00000, 7.00000, 6.00000, 0.00000, 0.00000, 7.00000, 10.00000, 10.00000, 3.00000, 8.00000, 8.00000, 1.00000, 0.00000, 2.00000, 5.00000, 5.00000, 4.00000, 4.00000, 2.00000, 1.00000, 2.00000, 8.00000, 2.00000, 6.00000, 3.00000, 7.00000, 10.00000, 9.00000, 7.00000, 0.00000, 5.00000, 7.00000, 0.00000, 2.00000, 8.00000, 6.00000, 5.00000, 3.00000, 8.00000, 1.00000, 6.00000, 3.00000, 3.00000, 8.00000, 8.00000, 0.00000, 4.00000, 5.00000, 6.00000, 4.00000, 8.00000, 8.00000, 2.00000, 10.00000, 10.00000, 0.00000, 4.00000, 4.00000, 3.00000, 8.00000, 1.00000, 9.00000, 9.00000, 10.00000, 7.00000, 3.00000, 2.00000, 0.00000, 0.00000, 7.00000, 0.00000, 6.00000, 7.00000, 0.00000, 6.00000, 6.00000, 7.00000, 9.00000, 9.00000, 10.00000, 4.00000, 10.00000, 3.00000, 4.00000, 2.00000, 8.00000, 4.00000, 7.00000, 3.00000, 10.00000, 4.00000, 2.00000, 8.00000, 6.00000, 3.00000, 4.00000, 1.00000, 4.00000, 0.00000, 8.00000, 1.00000, 2.00000, 0.00000, 0.00000, 5.00000, 7.00000, 10.00000, 7.00000, 10.00000, 7.00000, 2.00000, 2.00000, 4.00000, 2.00000, 9.00000, 0.00000, 0.00000, 10.00000, 3.00000, 10.00000, 2.00000, 0.00000, 5.00000, 5.00000, 10.00000, 1.00000, 5.00000, 3.00000, 10.00000, 4.00000, 4.00000, 3.00000, 10.00000, 6.00000, 4.00000, 8.00000, 7.00000, 10.00000, 1.00000, 3.00000, 10.00000, 10.00000, 4.00000, 3.00000, 0.00000, 9.00000, 7.00000, 10.00000, 7.00000, 9.00000, 3.00000, 10.00000, 9.00000, 9.00000, 5.00000, 2.00000, 7.00000, 1.00000, 7.00000, 3.00000, 9.00000, 2.00000, 3.00000, 4.00000, 7.00000, 1.00000, 8.00000, 4.00000, 8.00000, 7.00000, 8.00000, 10.00000, 2.00000, 8.00000, 3.00000, 5.00000, 3.00000, 4.00000, 3.00000, 6.00000, 0.00000, 7.00000, 7.00000, 4.00000, 6.00000, 6.00000, 2.00000, 8.00000, 10.00000, 7.00000, 2.00000, 2.00000, 7.00000, 3.00000, 5.00000, 4.00000, 7.00000, 2.00000, 9.00000, 3.00000, 5.00000, 6.00000, 7.00000, 9.00000, 7.00000, 6.00000, 5.00000, 7.00000, 1.00000, 2.00000, 4.00000, 10.00000, 0.00000, 3.00000, 5.00000, 6.00000, 1.00000, 1.00000, 9.00000, 3.00000, 4.00000, 6.00000, 8.00000, 1.00000, 6.00000, 3.00000, 4.00000, 5.00000, 10.00000, 9.00000, 7.00000, 7.00000, 1.00000, 1.00000, 1.00000, 2.00000, 6.00000, 10.00000, 5.00000, 3.00000, 2.00000, 6.00000, 7.00000, 6.00000, 3.00000, 10.00000, 2.00000, 4.00000, 9.00000, 5.00000, 1.00000, 0.00000, 4.00000, 2.00000, 7.00000, 8.00000, 8.00000, 3.00000, 10.00000, 3.00000, 10.00000, 7.00000, 9.00000, 1.00000, 9.00000, 7.00000, 6.00000, 4.00000, 2.00000, 8.00000, 3.00000, 8.00000, 9.00000, 10.00000, 4.00000, 10.00000, 2.00000, 10.00000, 4.00000, 10.00000, 1.00000, 9.00000, 6.00000, 8.00000, 4.00000, 3.00000, 2.00000, 9.00000, 8.00000, 10.00000, 9.00000, 9.00000, 7.00000, 10.00000, 2.00000, 6.00000, 9.00000, 6.00000, 7.00000, 10.00000, 10.00000, 5.00000, 5.00000, 4.00000, 0.00000, 8.00000, 0.00000, 3.00000, 4.00000, 6.00000, 9.00000, 6.00000, 4.00000, 1.00000, 7.00000, 4.00000, 10.00000, 8.00000, 3.00000, 3.00000, 4.00000, 6.00000, 3.00000, 2.00000, 7.00000, 8.00000, 2.00000, 6.00000, 4.00000, 4.00000, 3.00000, 7.00000, 8.00000, 1.00000, 9.00000, 1.00000, 10.00000, 9.00000, 6.00000, 6.00000, 4.00000, 6.00000, 4.00000, 8.00000, 0.00000, 6.00000, 6.00000, 9.00000, 10.00000, 3.00000, 2.00000, 2.00000, 10.00000, 1.00000, 1.00000, 7.00000, 7.00000, 6.00000, 0.00000, 2.00000, 7.00000, 3.00000, 2.00000, 9.00000, 6.00000, 9.00000, 9.00000, 1.00000, 10.00000, 10.00000, 6.00000, 7.00000, 1.00000, 5.00000, 1.00000, 8.00000, 9.00000, 4.00000, 10.00000, 10.00000, 7.00000, 4.00000, 5.00000, 7.00000, 9.00000, 10.00000, 3.00000, 3.00000, 9.00000, 4.00000, 9.00000, 8.00000, 10.00000, 2.00000, 0.00000, 5.00000, 8.00000, 6.00000, 9.00000, 10.00000, 9.00000, 0.00000, 0.00000, 4.00000, 8.00000, 2.00000, 5.00000, 4.00000, 5.00000, 8.00000, 10.00000, 7.00000, 7.00000, 4.00000, 10.00000, 3.00000, 6.00000, 0.00000, 5.00000, 1.00000, 10.00000, 7.00000, 8.00000, 0.00000, 6.00000, 7.00000, 2.00000, 2.00000, 4.00000, 5.00000, 5.00000, 6.00000, 5.00000, 10.00000, 1.00000, 4.00000, 7.00000, 7.00000, 10.00000, 10.00000, 6.00000, 3.00000, 4.00000, 6.00000, 10.00000, 9.00000, 3.00000, 8.00000, 0.00000, 10.00000, 7.00000, 0.00000, 3.00000, 3.00000, 8.00000, 9.00000, 4.00000, 5.00000, 3.00000, 4.00000, 4.00000, 4.00000, 7.00000, 9.00000, 8.00000, 9.00000, 8.00000, 8.00000, 7.00000, 9.00000, 8.00000, 8.00000, 0.00000, 10.00000, 0.00000, 8.00000, 3.00000, 0.00000, 1.00000, 5.00000, 7.00000, 3.00000, 4.00000, 7.00000, 6.00000, 3.00000, 2.00000, 9.00000, 5.00000, 0.00000, 2.00000, 9.00000, 0.00000, 6.00000, 9.00000, 9.00000, 1.00000, 8.00000, 3.00000, 4.00000 }; +float C[961] = { 0 }; + +int main() { + cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, + M, N, K, + alpha, + A, K, + B, N, + beta, + C, N); + + printf("Result C = A * B:\n"); + for (int i = 0; i < M * N; i++) { + printf("%.5f ", C[i]); + if ((i + 1) % N == 0) printf("\n"); + } + return 0; +} + +// Reference result computed in Python: +// C_ref = { 819.00000, 781.00000, 707.00000, 691.00000, 730.00000, 696.00000, 721.00000, 907.00000, 739.00000, 631.00000, 583.00000, 866.00000, 766.00000, 476.00000, 572.00000, 674.00000, 564.00000, 742.00000, 791.00000, 699.00000, 668.00000, 723.00000, 630.00000, 687.00000, 882.00000, 804.00000, 708.00000, 611.00000, 704.00000, 555.00000, 667.00000, 900.00000, 1007.00000, 938.00000, 967.00000, 939.00000, 958.00000, 917.00000, 1132.00000, 950.00000, 958.00000, 917.00000, 1085.00000, 1138.00000, 842.00000, 889.00000, 889.00000, 861.00000, 1017.00000, 1072.00000, 1001.00000, 972.00000, 949.00000, 852.00000, 1077.00000, 1059.00000, 1097.00000, 882.00000, 825.00000, 1024.00000, 899.00000, 809.00000, 801.00000, 871.00000, 794.00000, 815.00000, 818.00000, 859.00000, 896.00000, 1080.00000, 959.00000, 1015.00000, 620.00000, 1000.00000, 914.00000, 681.00000, 759.00000, 863.00000, 707.00000, 1005.00000, 839.00000, 791.00000, 849.00000, 895.00000, 727.00000, 754.00000, 990.00000, 887.00000, 807.00000, 805.00000, 870.00000, 834.00000, 786.00000, 702.00000, 898.00000, 815.00000, 855.00000, 819.00000, 738.00000, 792.00000, 915.00000, 749.00000, 779.00000, 718.00000, 844.00000, 861.00000, 643.00000, 648.00000, 782.00000, 635.00000, 830.00000, 834.00000, 808.00000, 839.00000, 828.00000, 697.00000, 887.00000, 903.00000, 850.00000, 790.00000, 839.00000, 763.00000, 736.00000, 686.00000, 827.00000, 878.00000, 882.00000, 949.00000, 813.00000, 874.00000, 889.00000, 1055.00000, 886.00000, 954.00000, 809.00000, 963.00000, 927.00000, 794.00000, 856.00000, 943.00000, 706.00000, 901.00000, 983.00000, 924.00000, 826.00000, 891.00000, 768.00000, 901.00000, 1021.00000, 909.00000, 919.00000, 725.00000, 877.00000, 828.00000, 755.00000, 546.00000, 609.00000, 629.00000, 590.00000, 642.00000, 571.00000, 657.00000, 675.00000, 702.00000, 737.00000, 553.00000, 651.00000, 738.00000, 633.00000, 568.00000, 667.00000, 528.00000, 715.00000, 614.00000, 638.00000, 641.00000, 741.00000, 492.00000, 653.00000, 694.00000, 661.00000, 603.00000, 629.00000, 652.00000, 529.00000, 529.00000, 685.00000, 660.00000, 599.00000, 670.00000, 590.00000, 615.00000, 621.00000, 730.00000, 715.00000, 670.00000, 531.00000, 625.00000, 776.00000, 478.00000, 585.00000, 610.00000, 587.00000, 626.00000, 550.00000, 659.00000, 644.00000, 612.00000, 562.00000, 715.00000, 688.00000, 628.00000, 529.00000, 646.00000, 597.00000, 583.00000, 566.00000, 619.00000, 681.00000, 626.00000, 685.00000, 564.00000, 625.00000, 586.00000, 787.00000, 661.00000, 668.00000, 645.00000, 730.00000, 741.00000, 500.00000, 595.00000, 682.00000, 502.00000, 617.00000, 717.00000, 599.00000, 622.00000, 546.00000, 615.00000, 625.00000, 710.00000, 643.00000, 631.00000, 549.00000, 582.00000, 617.00000, 618.00000, 772.00000, 734.00000, 683.00000, 805.00000, 756.00000, 700.00000, 832.00000, 820.00000, 786.00000, 778.00000, 622.00000, 720.00000, 977.00000, 752.00000, 739.00000, 776.00000, 637.00000, 849.00000, 804.00000, 858.00000, 734.00000, 811.00000, 588.00000, 809.00000, 921.00000, 766.00000, 785.00000, 680.00000, 813.00000, 688.00000, 663.00000, 807.00000, 899.00000, 716.00000, 860.00000, 757.00000, 790.00000, 771.00000, 1070.00000, 926.00000, 1034.00000, 675.00000, 880.00000, 863.00000, 655.00000, 754.00000, 805.00000, 809.00000, 921.00000, 843.00000, 762.00000, 846.00000, 790.00000, 689.00000, 722.00000, 883.00000, 856.00000, 790.00000, 923.00000, 831.00000, 878.00000, 665.00000, 941.00000, 1071.00000, 1021.00000, 951.00000, 1009.00000, 954.00000, 1080.00000, 1131.00000, 954.00000, 940.00000, 792.00000, 1072.00000, 1039.00000, 815.00000, 820.00000, 933.00000, 745.00000, 1043.00000, 1015.00000, 940.00000, 870.00000, 1058.00000, 802.00000, 988.00000, 1147.00000, 1000.00000, 982.00000, 857.00000, 912.00000, 857.00000, 975.00000, 667.00000, 773.00000, 699.00000, 612.00000, 618.00000, 585.00000, 667.00000, 797.00000, 666.00000, 760.00000, 622.00000, 864.00000, 801.00000, 535.00000, 647.00000, 686.00000, 644.00000, 702.00000, 764.00000, 685.00000, 665.00000, 692.00000, 582.00000, 649.00000, 799.00000, 777.00000, 636.00000, 636.00000, 758.00000, 722.00000, 644.00000, 838.00000, 936.00000, 951.00000, 941.00000, 838.00000, 872.00000, 999.00000, 1056.00000, 917.00000, 915.00000, 824.00000, 1071.00000, 935.00000, 836.00000, 848.00000, 952.00000, 698.00000, 1059.00000, 960.00000, 870.00000, 901.00000, 966.00000, 832.00000, 899.00000, 1035.00000, 982.00000, 870.00000, 818.00000, 819.00000, 883.00000, 791.00000, 750.00000, 859.00000, 951.00000, 834.00000, 899.00000, 870.00000, 851.00000, 934.00000, 897.00000, 918.00000, 827.00000, 1025.00000, 1006.00000, 884.00000, 844.00000, 881.00000, 694.00000, 929.00000, 878.00000, 848.00000, 861.00000, 877.00000, 892.00000, 1001.00000, 932.00000, 925.00000, 830.00000, 762.00000, 872.00000, 850.00000, 744.00000, 633.00000, 777.00000, 684.00000, 725.00000, 634.00000, 708.00000, 675.00000, 766.00000, 712.00000, 675.00000, 550.00000, 717.00000, 784.00000, 525.00000, 622.00000, 653.00000, 629.00000, 746.00000, 654.00000, 703.00000, 665.00000, 673.00000, 634.00000, 684.00000, 819.00000, 668.00000, 632.00000, 707.00000, 684.00000, 701.00000, 576.00000, 934.00000, 864.00000, 932.00000, 941.00000, 818.00000, 887.00000, 923.00000, 1128.00000, 984.00000, 1022.00000, 893.00000, 981.00000, 987.00000, 831.00000, 971.00000, 879.00000, 855.00000, 945.00000, 935.00000, 877.00000, 854.00000, 856.00000, 844.00000, 935.00000, 1045.00000, 887.00000, 885.00000, 757.00000, 889.00000, 831.00000, 758.00000, 711.00000, 764.00000, 729.00000, 731.00000, 780.00000, 686.00000, 751.00000, 876.00000, 812.00000, 794.00000, 653.00000, 784.00000, 871.00000, 743.00000, 699.00000, 806.00000, 707.00000, 760.00000, 781.00000, 763.00000, 688.00000, 847.00000, 611.00000, 839.00000, 855.00000, 796.00000, 730.00000, 643.00000, 768.00000, 735.00000, 615.00000, 662.00000, 679.00000, 676.00000, 697.00000, 611.00000, 653.00000, 742.00000, 731.00000, 733.00000, 733.00000, 676.00000, 811.00000, 856.00000, 640.00000, 675.00000, 706.00000, 563.00000, 766.00000, 738.00000, 704.00000, 661.00000, 702.00000, 612.00000, 713.00000, 751.00000, 791.00000, 690.00000, 598.00000, 707.00000, 711.00000, 570.00000, 793.00000, 834.00000, 796.00000, 853.00000, 792.00000, 764.00000, 859.00000, 999.00000, 813.00000, 844.00000, 689.00000, 874.00000, 848.00000, 626.00000, 758.00000, 804.00000, 660.00000, 848.00000, 888.00000, 830.00000, 766.00000, 818.00000, 651.00000, 747.00000, 945.00000, 853.00000, 794.00000, 738.00000, 762.00000, 775.00000, 774.00000, 789.00000, 865.00000, 793.00000, 768.00000, 861.00000, 864.00000, 988.00000, 975.00000, 881.00000, 904.00000, 709.00000, 991.00000, 1026.00000, 775.00000, 745.00000, 947.00000, 741.00000, 1044.00000, 904.00000, 936.00000, 821.00000, 866.00000, 742.00000, 827.00000, 947.00000, 902.00000, 874.00000, 900.00000, 855.00000, 819.00000, 765.00000, 575.00000, 803.00000, 576.00000, 614.00000, 643.00000, 598.00000, 666.00000, 738.00000, 675.00000, 678.00000, 552.00000, 591.00000, 731.00000, 552.00000, 503.00000, 591.00000, 727.00000, 723.00000, 673.00000, 641.00000, 608.00000, 712.00000, 504.00000, 622.00000, 745.00000, 672.00000, 572.00000, 739.00000, 703.00000, 627.00000, 494.00000, 626.00000, 774.00000, 666.00000, 700.00000, 734.00000, 662.00000, 821.00000, 756.00000, 685.00000, 680.00000, 601.00000, 701.00000, 684.00000, 599.00000, 559.00000, 625.00000, 599.00000, 727.00000, 742.00000, 701.00000, 579.00000, 765.00000, 532.00000, 651.00000, 758.00000, 767.00000, 714.00000, 704.00000, 659.00000, 666.00000, 578.00000, 587.00000, 705.00000, 615.00000, 671.00000, 678.00000, 705.00000, 696.00000, 700.00000, 719.00000, 778.00000, 575.00000, 680.00000, 838.00000, 709.00000, 626.00000, 660.00000, 512.00000, 809.00000, 775.00000, 738.00000, 619.00000, 710.00000, 592.00000, 664.00000, 770.00000, 733.00000, 716.00000, 663.00000, 702.00000, 722.00000, 648.00000, 882.00000, 852.00000, 757.00000, 944.00000, 779.00000, 821.00000, 838.00000, 1012.00000, 948.00000, 934.00000, 674.00000, 867.00000, 929.00000, 786.00000, 734.00000, 756.00000, 797.00000, 898.00000, 876.00000, 859.00000, 757.00000, 873.00000, 740.00000, 890.00000, 1016.00000, 827.00000, 799.00000, 836.00000, 833.00000, 752.00000, 695.00000, 754.00000, 827.00000, 893.00000, 837.00000, 829.00000, 670.00000, 874.00000, 908.00000, 822.00000, 787.00000, 746.00000, 797.00000, 889.00000, 763.00000, 751.00000, 807.00000, 693.00000, 913.00000, 870.00000, 764.00000, 837.00000, 886.00000, 704.00000, 827.00000, 899.00000, 846.00000, 749.00000, 749.00000, 775.00000, 701.00000, 690.00000, 798.00000, 936.00000, 822.00000, 887.00000, 840.00000, 777.00000, 710.00000, 964.00000, 783.00000, 768.00000, 721.00000, 887.00000, 889.00000, 699.00000, 770.00000, 741.00000, 764.00000, 796.00000, 967.00000, 755.00000, 724.00000, 775.00000, 686.00000, 799.00000, 942.00000, 929.00000, 835.00000, 737.00000, 916.00000, 835.00000, 702.00000, 868.00000, 889.00000, 840.00000, 826.00000, 870.00000, 762.00000, 810.00000, 971.00000, 893.00000, 874.00000, 713.00000, 889.00000, 966.00000, 710.00000, 721.00000, 790.00000, 810.00000, 895.00000, 780.00000, 785.00000, 852.00000, 778.00000, 843.00000, 873.00000, 914.00000, 917.00000, 765.00000, 845.00000, 942.00000, 779.00000, 576.00000, 710.00000, 803.00000, 705.00000, 820.00000, 695.00000, 699.00000, 758.00000, 832.00000, 789.00000, 811.00000, 618.00000, 813.00000, 879.00000, 677.00000, 642.00000, 749.00000, 645.00000, 847.00000, 811.00000, 745.00000, 736.00000, 754.00000, 645.00000, 711.00000, 887.00000, 817.00000, 757.00000, 788.00000, 859.00000, 761.00000, 630.00000, 727.00000, 785.00000, 664.00000, 716.00000, 671.00000, 722.00000, 638.00000, 870.00000, 743.00000, 802.00000, 490.00000, 800.00000, 921.00000, 599.00000, 588.00000, 688.00000, 633.00000, 858.00000, 743.00000, 704.00000, 748.00000, 640.00000, 667.00000, 719.00000, 814.00000, 762.00000, 682.00000, 712.00000, 821.00000, 709.00000, 601.00000, 733.00000, 999.00000, 764.00000, 782.00000, 815.00000, 892.00000, 817.00000, 970.00000, 807.00000, 871.00000, 646.00000, 925.00000, 948.00000, 740.00000, 720.00000, 912.00000, 750.00000, 855.00000, 889.00000, 845.00000, 713.00000, 805.00000, 739.00000, 850.00000, 987.00000, 867.00000, 852.00000, 742.00000, 951.00000, 816.00000, 708.00000, 666.00000, 756.00000, 606.00000, 726.00000, 647.00000, 637.00000, 771.00000, 722.00000, 707.00000, 688.00000, 624.00000, 680.00000, 904.00000, 584.00000, 615.00000, 648.00000, 643.00000, 713.00000, 679.00000, 735.00000, 639.00000, 698.00000, 595.00000, 789.00000, 802.00000, 648.00000, 673.00000, 702.00000, 655.00000, 674.00000, 640.00000 } diff --git a/install/include/cblas.h b/install/include/cblas.h new file mode 100644 index 0000000000..448befd34d --- /dev/null +++ b/install/include/cblas.h @@ -0,0 +1,457 @@ +#ifndef CBLAS_H +#define CBLAS_H + +#include +#include "openblas_config.h" + +#ifdef __cplusplus +extern "C" { + /* Assume C declarations for C++ */ +#endif /* __cplusplus */ + +/*Set the number of threads on runtime.*/ +void openblas_set_num_threads(int num_threads); +void goto_set_num_threads(int num_threads); +int openblas_set_num_threads_local(int num_threads); + +/*Get the number of threads on runtime.*/ +int openblas_get_num_threads(void); + +/*Get the number of physical processors (cores).*/ +int openblas_get_num_procs(void); + +/*Get the build configure on runtime.*/ +char* openblas_get_config(void); + +/*Get the CPU corename on runtime.*/ +char* openblas_get_corename(void); + +/*Set the threading backend to a custom callback.*/ +typedef void (*openblas_dojob_callback)(int thread_num, void *jobdata, int dojob_data); +typedef void (*openblas_threads_callback)(int sync, openblas_dojob_callback dojob, int numjobs, size_t jobdata_elsize, void *jobdata, int dojob_data); +void openblas_set_threads_callback_function(openblas_threads_callback callback); + +#ifdef OPENBLAS_OS_LINUX +/* Sets thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */ +int openblas_setaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set); +/* Queries thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */ +int openblas_getaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set); +#endif + +/* Get the parallelization type which is used by OpenBLAS */ +int openblas_get_parallel(void); +/* OpenBLAS is compiled for sequential use */ +#define OPENBLAS_SEQUENTIAL 0 +/* OpenBLAS is compiled using normal threading model */ +#define OPENBLAS_THREAD 1 +/* OpenBLAS is compiled using OpenMP threading model */ +#define OPENBLAS_OPENMP 2 + + +/* + * Since all of GotoBlas was written without const, + * we disable it at build time. + */ +#ifndef OPENBLAS_CONST +# define OPENBLAS_CONST const +#endif + + +#define CBLAS_INDEX size_t + +typedef enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102} CBLAS_ORDER; +typedef enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114} CBLAS_TRANSPOSE; +typedef enum CBLAS_UPLO {CblasUpper=121, CblasLower=122} CBLAS_UPLO; +typedef enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132} CBLAS_DIAG; +typedef enum CBLAS_SIDE {CblasLeft=141, CblasRight=142} CBLAS_SIDE; +typedef CBLAS_ORDER CBLAS_LAYOUT; + +float cblas_sdsdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); +double cblas_dsdot (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); +float cblas_sdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); +double cblas_ddot(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy); + +openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); +openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); +openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); +openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); + +void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); +void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); +void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); +void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); + +float cblas_sasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +double cblas_dasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +float cblas_ssum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +double cblas_dsum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +float cblas_scsum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +double cblas_dzsum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +float cblas_snrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX); +double cblas_dnrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX); +float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); +double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); + +CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +CBLAS_INDEX cblas_isamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_idamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_icamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_izamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +float cblas_samax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +double cblas_damax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +float cblas_scamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +double cblas_dzamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +float cblas_samin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +double cblas_damin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +float cblas_scamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +double cblas_dzamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +CBLAS_INDEX cblas_ismax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_idmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_icmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_izmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +CBLAS_INDEX cblas_ismin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_idmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_icmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); +CBLAS_INDEX cblas_izmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); + +void cblas_saxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); +void cblas_daxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); +void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); +void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); + +void cblas_caxpyc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); +void cblas_zaxpyc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); + +void cblas_scopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); +void cblas_dcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); +void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); +void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); + +void cblas_sswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); +void cblas_dswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); +void cblas_cswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); +void cblas_zswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); + +void cblas_srot(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s); +void cblas_drot(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s); +void cblas_csrot(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s); +void cblas_zdrot(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s); + +void cblas_srotg(float *a, float *b, float *c, float *s); +void cblas_drotg(double *a, double *b, double *c, double *s); +void cblas_crotg(void *a, void *b, float *c, void *s); +void cblas_zrotg(void *a, void *b, double *c, void *s); + + +void cblas_srotm(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float *P); +void cblas_drotm(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double *P); + +void cblas_srotmg(float *d1, float *d2, float *b1, OPENBLAS_CONST float b2, float *P); +void cblas_drotmg(double *d1, double *d2, double *b1, OPENBLAS_CONST double b2, double *P); + +void cblas_sscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX); +void cblas_dscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX); +void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); +void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); +void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, void *X, OPENBLAS_CONST blasint incX); +void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, void *X, OPENBLAS_CONST blasint incX); + +void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, + OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); +void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, + OPENBLAS_CONST double alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); +void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); +void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); + +void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); +void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); +void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); +void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); +void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); +void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); + +void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); + +void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); + +void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda); +void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda); +void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); +void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); + +void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo,OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, + OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); +void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, + OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); +void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, + OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); +void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, + OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); + +void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); +void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); +void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); +void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); + +void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); +void cblas_dsbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); + + +void cblas_stbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); + +void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); + +void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); + +void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); +void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); +void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); +void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, + OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); + +void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); +void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); +void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); +void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, + OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); + + +void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *Ap, + OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); +void cblas_dspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *Ap, + OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); + +void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *Ap); +void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *Ap); + +void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A); +void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X,OPENBLAS_CONST blasint incX, void *A); + +void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A); +void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A); +void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); +void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); + +void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); +void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); + +void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); +void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); + +void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_sgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_dgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, + OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +void cblas_cgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, + OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); +void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); +void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); +void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); + +void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); +void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); +void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); +void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, + OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); + +void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST double alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); +void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); + +void cblas_xerbla(blasint p, OPENBLAS_CONST char *rout, OPENBLAS_CONST char *form, ...); + +/*** BLAS extensions ***/ + +void cblas_saxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); + +void cblas_daxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); + +void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); + +void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); + +void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a, + OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb); +void cblas_domatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, OPENBLAS_CONST double *a, + OPENBLAS_CONST blasint clda, double *b, OPENBLAS_CONST blasint cldb); +void cblas_comatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float* calpha, OPENBLAS_CONST float* a, + OPENBLAS_CONST blasint clda, float*b, OPENBLAS_CONST blasint cldb); +void cblas_zomatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, OPENBLAS_CONST double* a, + OPENBLAS_CONST blasint clda, double *b, OPENBLAS_CONST blasint cldb); + +void cblas_simatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, float *a, + OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); +void cblas_dimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, double *a, + OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); +void cblas_cimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float* calpha, float* a, + OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); +void cblas_zimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, double* a, + OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); + +void cblas_sgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST float cbeta, + float *c, OPENBLAS_CONST blasint cldc); +void cblas_dgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST double cbeta, + double *c, OPENBLAS_CONST blasint cldc); +void cblas_cgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float *calpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST float *cbeta, + float *c, OPENBLAS_CONST blasint cldc); +void cblas_zgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double *calpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST double *cbeta, + double *c, OPENBLAS_CONST blasint cldc); + +void cblas_sgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, + OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST float ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST float ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); + +void cblas_dgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, + OPENBLAS_CONST double * alpha_array, OPENBLAS_CONST double ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST double ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST double * beta_array, double ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); + +void cblas_cgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, + OPENBLAS_CONST void * alpha_array, OPENBLAS_CONST void ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST void ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST void * beta_array, void ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); + +void cblas_zgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, + OPENBLAS_CONST void * alpha_array, OPENBLAS_CONST void ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST void ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST void * beta_array, void ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); + +/*** BFLOAT16 and INT8 extensions ***/ +/* convert float array to BFLOAT16 array by rounding */ +void cblas_sbstobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *in, OPENBLAS_CONST blasint incin, bfloat16 *out, OPENBLAS_CONST blasint incout); +/* convert double array to BFLOAT16 array by rounding */ +void cblas_sbdtobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *in, OPENBLAS_CONST blasint incin, bfloat16 *out, OPENBLAS_CONST blasint incout); +/* convert BFLOAT16 array to float array */ +void cblas_sbf16tos(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, float *out, OPENBLAS_CONST blasint incout); +/* convert BFLOAT16 array to double array */ +void cblas_dbf16tod(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, double *out, OPENBLAS_CONST blasint incout); +/* dot production of BFLOAT16 input arrays, and output as float */ +float cblas_sbdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST bfloat16 *y, OPENBLAS_CONST blasint incy); +void cblas_sbgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); + +void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, + OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST bfloat16 ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST bfloat16 ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); + +/*** FLOAT16 extensions ***/ +void cblas_shgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST float alpha, OPENBLAS_CONST hfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST hfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/install/include/f77blas.h b/install/include/f77blas.h new file mode 100644 index 0000000000..a683e87a02 --- /dev/null +++ b/install/include/f77blas.h @@ -0,0 +1,811 @@ +#ifndef OPENBLAS_F77BLAS_H +#define OPENBLAS_F77BLAS_H +#include "openblas_config.h" +/*********************************************************************/ +/* Copyright 2009, 2010 The University of Texas at Austin. */ +/* All rights reserved. */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* 1. Redistributions of source code must retain the above */ +/* copyright notice, this list of conditions and the following */ +/* disclaimer. */ +/* */ +/* 2. Redistributions in binary form must reproduce the above */ +/* copyright notice, this list of conditions and the following */ +/* disclaimer in the documentation and/or other materials */ +/* provided with the distribution. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ +/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ +/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ +/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ +/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ +/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ +/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ +/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ +/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ +/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ +/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ +/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ +/* POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* The views and conclusions contained in the software and */ +/* documentation are those of the authors and should not be */ +/* interpreted as representing official policies, either expressed */ +/* or implied, of The University of Texas at Austin. */ +/*********************************************************************/ + +#ifndef ASSEMBLER + +#ifdef __cplusplus +extern "C" { + /* Assume C declarations for C++ */ +#endif /* __cplusplus */ + +int BLASFUNC(xerbla)(char *, blasint *info, blasint); + +void openblas_set_num_threads_(int *); + +/*Set the threading backend to a custom callback.*/ +typedef void (*openblas_dojob_callback)(int thread_num, void *jobdata, int dojob_data); +typedef void (*openblas_threads_callback)(int sync, openblas_dojob_callback dojob, int numjobs, size_t jobdata_elsize, void *jobdata, int dojob_data); +extern openblas_threads_callback openblas_threads_callback_; + +FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *); +FLOATRET BLASFUNC(sdsdot)(blasint *, float *, float *, blasint *, float *, blasint *); + +double BLASFUNC(dsdot) (blasint *, float *, blasint *, float *, blasint *); +double BLASFUNC(ddot) (blasint *, double *, blasint *, double *, blasint *); +xdouble BLASFUNC(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + +float BLASFUNC(sbdot) (blasint *, bfloat16 *, blasint *, bfloat16 *, blasint *); +void BLASFUNC(sbstobf16) (blasint *, float *, blasint *, bfloat16 *, blasint *); +void BLASFUNC(sbdtobf16) (blasint *, double *, blasint *, bfloat16 *, blasint *); +void BLASFUNC(sbf16tos) (blasint *, bfloat16 *, blasint *, float *, blasint *); +void BLASFUNC(dbf16tod) (blasint *, bfloat16 *, blasint *, double *, blasint *); + +#ifdef RETURN_BY_STRUCT +typedef struct { + float r, i; +} myccomplex_t; + +typedef struct { + double r, i; +} myzcomplex_t; + +typedef struct { + xdouble r, i; +} myxcomplex_t; + +myccomplex_t BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); +myccomplex_t BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); +myzcomplex_t BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); +myzcomplex_t BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); +myxcomplex_t BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +myxcomplex_t BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + +#elif defined RETURN_BY_STACK +void BLASFUNC(cdotu) (openblas_complex_float *, blasint *, float * , blasint *, float *, blasint *); +void BLASFUNC(cdotc) (openblas_complex_float *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(zdotu) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(zdotc) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xdotu) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(xdotc) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +#else +openblas_complex_float BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); +openblas_complex_float BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); +openblas_complex_double BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); +openblas_complex_double BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); +openblas_complex_xdouble BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +openblas_complex_xdouble BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +#endif + +void BLASFUNC(saxpy) (blasint *, float *, float *, blasint *, float *, blasint *); +void BLASFUNC(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *); +void BLASFUNC(qaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *); +void BLASFUNC(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *); +void BLASFUNC(xaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(caxpyc)(blasint *, float *, float *, blasint *, float *, blasint *); +void BLASFUNC(zaxpyc)(blasint *, double *, double *, blasint *, double *, blasint *); +void BLASFUNC(xaxpyc)(blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(scopy) (blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(dcopy) (blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(qcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(ccopy) (blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(zcopy) (blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(sswap) (blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(dswap) (blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(cswap) (blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(zswap) (blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(sasum) (blasint *, float *, blasint *); +FLOATRET BLASFUNC(scasum)(blasint *, float *, blasint *); +double BLASFUNC(dasum) (blasint *, double *, blasint *); +xdouble BLASFUNC(qasum) (blasint *, xdouble *, blasint *); +double BLASFUNC(dzasum)(blasint *, double *, blasint *); +xdouble BLASFUNC(qxasum)(blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(ssum) (blasint *, float *, blasint *); +FLOATRET BLASFUNC(scsum)(blasint *, float *, blasint *); +double BLASFUNC(dsum) (blasint *, double *, blasint *); +xdouble BLASFUNC(qsum) (blasint *, xdouble *, blasint *); +double BLASFUNC(dzsum)(blasint *, double *, blasint *); +xdouble BLASFUNC(qxsum)(blasint *, xdouble *, blasint *); + +blasint BLASFUNC(isamax)(blasint *, float *, blasint *); +blasint BLASFUNC(idamax)(blasint *, double *, blasint *); +blasint BLASFUNC(iqamax)(blasint *, xdouble *, blasint *); +blasint BLASFUNC(icamax)(blasint *, float *, blasint *); +blasint BLASFUNC(izamax)(blasint *, double *, blasint *); +blasint BLASFUNC(ixamax)(blasint *, xdouble *, blasint *); + +blasint BLASFUNC(ismax) (blasint *, float *, blasint *); +blasint BLASFUNC(idmax) (blasint *, double *, blasint *); +blasint BLASFUNC(iqmax) (blasint *, xdouble *, blasint *); +blasint BLASFUNC(icmax) (blasint *, float *, blasint *); +blasint BLASFUNC(izmax) (blasint *, double *, blasint *); +blasint BLASFUNC(ixmax) (blasint *, xdouble *, blasint *); + +blasint BLASFUNC(isamin)(blasint *, float *, blasint *); +blasint BLASFUNC(idamin)(blasint *, double *, blasint *); +blasint BLASFUNC(iqamin)(blasint *, xdouble *, blasint *); +blasint BLASFUNC(icamin)(blasint *, float *, blasint *); +blasint BLASFUNC(izamin)(blasint *, double *, blasint *); +blasint BLASFUNC(ixamin)(blasint *, xdouble *, blasint *); + +blasint BLASFUNC(ismin)(blasint *, float *, blasint *); +blasint BLASFUNC(idmin)(blasint *, double *, blasint *); +blasint BLASFUNC(iqmin)(blasint *, xdouble *, blasint *); +blasint BLASFUNC(icmin)(blasint *, float *, blasint *); +blasint BLASFUNC(izmin)(blasint *, double *, blasint *); +blasint BLASFUNC(ixmin)(blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(samax) (blasint *, float *, blasint *); +double BLASFUNC(damax) (blasint *, double *, blasint *); +xdouble BLASFUNC(qamax) (blasint *, xdouble *, blasint *); +FLOATRET BLASFUNC(scamax)(blasint *, float *, blasint *); +double BLASFUNC(dzamax)(blasint *, double *, blasint *); +xdouble BLASFUNC(qxamax)(blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(samin) (blasint *, float *, blasint *); +double BLASFUNC(damin) (blasint *, double *, blasint *); +xdouble BLASFUNC(qamin) (blasint *, xdouble *, blasint *); +FLOATRET BLASFUNC(scamin)(blasint *, float *, blasint *); +double BLASFUNC(dzamin)(blasint *, double *, blasint *); +xdouble BLASFUNC(qxamin)(blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(smax) (blasint *, float *, blasint *); +double BLASFUNC(dmax) (blasint *, double *, blasint *); +xdouble BLASFUNC(qmax) (blasint *, xdouble *, blasint *); +FLOATRET BLASFUNC(scmax) (blasint *, float *, blasint *); +double BLASFUNC(dzmax) (blasint *, double *, blasint *); +xdouble BLASFUNC(qxmax) (blasint *, xdouble *, blasint *); + +FLOATRET BLASFUNC(smin) (blasint *, float *, blasint *); +double BLASFUNC(dmin) (blasint *, double *, blasint *); +xdouble BLASFUNC(qmin) (blasint *, xdouble *, blasint *); +FLOATRET BLASFUNC(scmin) (blasint *, float *, blasint *); +double BLASFUNC(dzmin) (blasint *, double *, blasint *); +xdouble BLASFUNC(qxmin) (blasint *, xdouble *, blasint *); + +void BLASFUNC(sscal) (blasint *, float *, float *, blasint *); +void BLASFUNC(dscal) (blasint *, double *, double *, blasint *); +void BLASFUNC(qscal) (blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(cscal) (blasint *, float *, float *, blasint *); +void BLASFUNC(zscal) (blasint *, double *, double *, blasint *); +void BLASFUNC(xscal) (blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(csscal)(blasint *, float *, float *, blasint *); +void BLASFUNC(zdscal)(blasint *, double *, double *, blasint *); +void BLASFUNC(xqscal)(blasint *, xdouble *, xdouble *, blasint *); + +FLOATRET BLASFUNC(snrm2) (blasint *, float *, blasint *); +FLOATRET BLASFUNC(scnrm2)(blasint *, float *, blasint *); + +double BLASFUNC(dnrm2) (blasint *, double *, blasint *); +xdouble BLASFUNC(qnrm2) (blasint *, xdouble *, blasint *); +double BLASFUNC(dznrm2)(blasint *, double *, blasint *); +xdouble BLASFUNC(qxnrm2)(blasint *, xdouble *, blasint *); + +void BLASFUNC(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); +void BLASFUNC(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); +void BLASFUNC(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); +void BLASFUNC(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); +void BLASFUNC(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); +void BLASFUNC(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); + +void BLASFUNC(srotg) (float *, float *, float *, float *); +void BLASFUNC(drotg) (double *, double *, double *, double *); +void BLASFUNC(qrotg) (xdouble *, xdouble *, xdouble *, xdouble *); +void BLASFUNC(crotg) (float *, float *, float *, float *); +void BLASFUNC(zrotg) (double *, double *, double *, double *); +void BLASFUNC(xrotg) (xdouble *, xdouble *, xdouble *, xdouble *); + +void BLASFUNC(srotmg)(float *, float *, float *, float *, float *); +void BLASFUNC(drotmg)(double *, double *, double *, double *, double *); + +void BLASFUNC(srotm) (blasint *, float *, blasint *, float *, blasint *, float *); +void BLASFUNC(drotm) (blasint *, double *, blasint *, double *, blasint *, double *); +void BLASFUNC(qrotm) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *); + +/* Level 2 routines */ + +void BLASFUNC(sger)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +void BLASFUNC(dger)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +void BLASFUNC(qger)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(cgeru)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +void BLASFUNC(cgerc)(blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, blasint *); +void BLASFUNC(zgeru)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +void BLASFUNC(zgerc)(blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, blasint *); +void BLASFUNC(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(sbgemv)(char *, blasint *, blasint *, float *, bfloat16 *, blasint *, + bfloat16 *, blasint *, float *, float *, blasint *); +void BLASFUNC(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dgemv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(cgemv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zgemv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(strsv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +void BLASFUNC(dtrsv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +void BLASFUNC(qtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); +void BLASFUNC(ctrsv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +void BLASFUNC(ztrsv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +void BLASFUNC(xtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); + +void BLASFUNC(strmv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +void BLASFUNC(dtrmv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +void BLASFUNC(qtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); +void BLASFUNC(ctrmv) (char *, char *, char *, blasint *, float *, blasint *, + float *, blasint *); +void BLASFUNC(ztrmv) (char *, char *, char *, blasint *, double *, blasint *, + double *, blasint *); +void BLASFUNC(xtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, + xdouble *, blasint *); + +void BLASFUNC(stpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); +void BLASFUNC(dtpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); +void BLASFUNC(qtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(ctpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); +void BLASFUNC(ztpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); +void BLASFUNC(xtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(stpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); +void BLASFUNC(dtpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); +void BLASFUNC(qtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(ctpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); +void BLASFUNC(ztpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); +void BLASFUNC(xtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(stbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(dtbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(qtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(ctbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(ztbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(stbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(dtbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(qtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(ctbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(ztbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(ssymv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dsymv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(csymv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zsymv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(sspmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dspmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qspmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(cspmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zspmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xspmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(ssyr) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +void BLASFUNC(dsyr) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +void BLASFUNC(qsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); +void BLASFUNC(csyr) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +void BLASFUNC(zsyr) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +void BLASFUNC(xsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); + +void BLASFUNC(ssyr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(dsyr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(qsyr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(csyr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(zsyr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xsyr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(sspr) (char *, blasint *, float *, float *, blasint *, + float *); +void BLASFUNC(dspr) (char *, blasint *, double *, double *, blasint *, + double *); +void BLASFUNC(qspr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *); +void BLASFUNC(cspr) (char *, blasint *, float *, float *, blasint *, + float *); +void BLASFUNC(zspr) (char *, blasint *, double *, double *, blasint *, + double *); +void BLASFUNC(xspr) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *); + +void BLASFUNC(sspr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +void BLASFUNC(dspr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +void BLASFUNC(qspr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); +void BLASFUNC(cspr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +void BLASFUNC(zspr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +void BLASFUNC(xspr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); + +void BLASFUNC(cher) (char *, blasint *, float *, float *, blasint *, + float *, blasint *); +void BLASFUNC(zher) (char *, blasint *, double *, double *, blasint *, + double *, blasint *); +void BLASFUNC(xher) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *); + +void BLASFUNC(chpr) (char *, blasint *, float *, float *, blasint *, float *); +void BLASFUNC(zhpr) (char *, blasint *, double *, double *, blasint *, double *); +void BLASFUNC(xhpr) (char *, blasint *, xdouble *, xdouble *, blasint *, xdouble *); + +void BLASFUNC(cher2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *); +void BLASFUNC(zher2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *); +void BLASFUNC(xher2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(chpr2) (char *, blasint *, float *, + float *, blasint *, float *, blasint *, float *); +void BLASFUNC(zhpr2) (char *, blasint *, double *, + double *, blasint *, double *, blasint *, double *); +void BLASFUNC(xhpr2) (char *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *); + +void BLASFUNC(chemv) (char *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zhemv) (char *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xhemv) (char *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(chpmv) (char *, blasint *, float *, float *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zhpmv) (char *, blasint *, double *, double *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xhpmv) (char *, blasint *, xdouble *, xdouble *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +int BLASFUNC(snorm)(char *, blasint *, blasint *, float *, blasint *); +int BLASFUNC(dnorm)(char *, blasint *, blasint *, double *, blasint *); +int BLASFUNC(cnorm)(char *, blasint *, blasint *, float *, blasint *); +int BLASFUNC(znorm)(char *, blasint *, blasint *, double *, blasint *); + +void BLASFUNC(sgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(cgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(ssbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(csbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(chbmv)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zhbmv)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +/* Level 3 routines */ + +void BLASFUNC(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + hfloat16 *, blasint *, hfloat16 *, blasint *, float *, float *, blasint *); +void BLASFUNC(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); +void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dgemm)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(cgemm)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zgemm)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(sgemmt)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dgemmt)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +void BLASFUNC(cgemmt)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zgemmt)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); + +int BLASFUNC(sge2mm)(char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *, + float *, float *, blasint *); +int BLASFUNC(dge2mm)(char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *, + double *, double *, blasint *); +int BLASFUNC(cge2mm)(char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *, + float *, float *, blasint *); +int BLASFUNC(zge2mm)(char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *, + double *, double *, blasint *); + +void BLASFUNC(strsm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +void BLASFUNC(dtrsm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +void BLASFUNC(qtrsm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(ctrsm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +void BLASFUNC(ztrsm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +void BLASFUNC(xtrsm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(strmm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +void BLASFUNC(dtrmm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +void BLASFUNC(qtrmm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(ctrmm)(char *, char *, char *, char *, blasint *, blasint *, + float *, float *, blasint *, float *, blasint *); +void BLASFUNC(ztrmm)(char *, char *, char *, char *, blasint *, blasint *, + double *, double *, blasint *, double *, blasint *); +void BLASFUNC(xtrmm)(char *, char *, char *, char *, blasint *, blasint *, + xdouble *, xdouble *, blasint *, xdouble *, blasint *); + +void BLASFUNC(ssymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(qsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(csymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(csymm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zsymm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xsymm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(ssyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +void BLASFUNC(dsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +void BLASFUNC(qsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); +void BLASFUNC(csyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +void BLASFUNC(zsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +void BLASFUNC(xsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); + +void BLASFUNC(ssyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(dsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +void BLASFUNC(qsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); +void BLASFUNC(csyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +void BLASFUNC(xsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(chemm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zhemm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xhemm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(chemm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zhemm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *, double *, double *, blasint *); +void BLASFUNC(xhemm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +void BLASFUNC(cherk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, float *, blasint *); +void BLASFUNC(zherk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double *, double *, blasint *); +void BLASFUNC(xherk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble *, xdouble *, blasint *); + +void BLASFUNC(cher2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +void BLASFUNC(zher2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +void BLASFUNC(xher2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +int BLASFUNC(cher2m)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *, float *, float *, blasint *); +int BLASFUNC(zher2m)(char *, char *, char *, blasint *, blasint *, double *, double *, blasint *, + double*, blasint *, double *, double *, blasint *); +int BLASFUNC(xher2m)(char *, char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, + xdouble*, blasint *, xdouble *, xdouble *, blasint *); + +int BLASFUNC(sgemt)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *); +int BLASFUNC(dgemt)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *); +int BLASFUNC(cgemt)(char *, blasint *, blasint *, float *, float *, blasint *, + float *, blasint *); +int BLASFUNC(zgemt)(char *, blasint *, blasint *, double *, double *, blasint *, + double *, blasint *); + +int BLASFUNC(sgema)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +int BLASFUNC(dgema)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); +int BLASFUNC(cgema)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +int BLASFUNC(zgema)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); + +int BLASFUNC(sgems)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +int BLASFUNC(dgems)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); +int BLASFUNC(cgems)(char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, float *, blasint *, float *, blasint *); +int BLASFUNC(zgems)(char *, char *, blasint *, blasint *, double *, + double *, blasint *, double*, double *, blasint *, double*, blasint *); + +int BLASFUNC(sgemc)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); +int BLASFUNC(dgemc)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); +int BLASFUNC(qgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +int BLASFUNC(cgemc)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); +int BLASFUNC(zgemc)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); +int BLASFUNC(xgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, + xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); + +/* Lapack routines */ + +int BLASFUNC(sgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +int BLASFUNC(dgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +int BLASFUNC(qgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +int BLASFUNC(cgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +int BLASFUNC(zgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +int BLASFUNC(xgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); + +int BLASFUNC(sgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +int BLASFUNC(dgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +int BLASFUNC(qgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); +int BLASFUNC(cgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); +int BLASFUNC(zgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); +int BLASFUNC(xgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); + +int BLASFUNC(slaswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); +int BLASFUNC(dlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); +int BLASFUNC(qlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); +int BLASFUNC(claswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); +int BLASFUNC(zlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); +int BLASFUNC(xlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); + +int BLASFUNC(sgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(cgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(sgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); +int BLASFUNC(qgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); +int BLASFUNC(cgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); +int BLASFUNC(xgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); + +int BLASFUNC(spotf2)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dpotf2)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(cpotf2)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zpotf2)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(spotrf)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dpotrf)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(cpotrf)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zpotrf)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(spotri)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dpotri)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qpotri)(char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(cpotri)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zpotri)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xpotri)(char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(spotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(cpotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(slauu2)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dlauu2)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(clauu2)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zlauu2)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(slauum)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dlauum)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qlauum)(char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(clauum)(char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(zlauum)(char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xlauum)(char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(strti2)(char *, char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dtrti2)(char *, char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(ctrti2)(char *, char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(ztrti2)(char *, char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); + +int BLASFUNC(strtri)(char *, char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(dtrtri)(char *, char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(qtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); +int BLASFUNC(ctrtri)(char *, char *, blasint *, float *, blasint *, blasint *); +int BLASFUNC(ztrtri)(char *, char *, blasint *, double *, blasint *, blasint *); +int BLASFUNC(xtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); + + +FLOATRET BLASFUNC(slamch)(char *); +double BLASFUNC(dlamch)(char *); +xdouble BLASFUNC(qlamch)(char *); + +FLOATRET BLASFUNC(slamc3)(float *, float *); +double BLASFUNC(dlamc3)(double *, double *); +xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *); + +/* BLAS extensions */ + +void BLASFUNC(saxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *); +void BLASFUNC(daxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *); +void BLASFUNC(caxpby) (blasint *, void *, float *, blasint *, void *, float *, blasint *); +void BLASFUNC(zaxpby) (blasint *, void *, double *, blasint *, void *, double *, blasint *); + +void BLASFUNC(somatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); +void BLASFUNC(domatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); +void BLASFUNC(comatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); +void BLASFUNC(zomatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); + +void BLASFUNC(simatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); +void BLASFUNC(dimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); +void BLASFUNC(cimatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); +void BLASFUNC(zimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); + +void BLASFUNC(sgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); +void BLASFUNC(dgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); +void BLASFUNC(cgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); +void BLASFUNC(zgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); + + +#ifdef __cplusplus +} + +#endif /* __cplusplus */ + +#endif +#endif diff --git a/install/include/lapack.h b/install/include/lapack.h new file mode 100644 index 0000000000..0ed9ad01a9 --- /dev/null +++ b/install/include/lapack.h @@ -0,0 +1,23341 @@ +#ifndef LAPACK_H +#define LAPACK_H + +/* +* Turn on HAVE_LAPACK_CONFIG_H to redefine C-LAPACK datatypes +*/ +#ifdef HAVE_LAPACK_CONFIG_H +#include "lapacke_config.h" +#endif + +#include "lapacke_mangling.h" + +#include +#include +#include + +/* It seems all current Fortran compilers put strlen at end. +* Some historical compilers put strlen after the str argument +* or make the str argument into a struct. */ +#ifndef __EMSCRIPTEN__ +#define LAPACK_FORTRAN_STRLEN_END +#endif + +#ifndef FORTRAN_STRLEN + #define FORTRAN_STRLEN size_t +#endif + +/* Complex types are structures equivalent to the +* Fortran complex types COMPLEX(4) and COMPLEX(8). +* +* One can also redefine the types with his own types +* for example by including in the code definitions like +* +* #define lapack_complex_float std::complex +* #define lapack_complex_double std::complex +* +* or define these types in the command line: +* +* -Dlapack_complex_float="std::complex" +* -Dlapack_complex_double="std::complex" +*/ + +#ifndef LAPACK_COMPLEX_CUSTOM + +/* Complex type (single precision) */ +#ifndef lapack_complex_float +#ifndef __cplusplus +#include +#else +#include +#endif +#define lapack_complex_float float _Complex +#endif + +#ifndef lapack_complex_float_real +#define lapack_complex_float_real(z) (creal(z)) +#endif + +#ifndef lapack_complex_float_imag +#define lapack_complex_float_imag(z) (cimag(z)) +#endif + +/* Complex type (double precision) */ +#ifndef lapack_complex_double +#ifndef __cplusplus +#include +#else +#include +#endif +#define lapack_complex_double double _Complex +#endif + +#ifndef lapack_complex_double_real +#define lapack_complex_double_real(z) (creal(z)) +#endif + +#ifndef lapack_complex_double_imag +#define lapack_complex_double_imag(z) (cimag(z)) +#endif + +#endif /* LAPACK_COMPLEX_CUSTOM */ + + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------------------------*/ +#ifndef lapack_int +#if defined(LAPACK_ILP64) +#define lapack_int int64_t +#else +#define lapack_int int32_t +#endif +#endif + +/* + * Integer format string + */ +#ifndef LAPACK_IFMT +#if defined(LAPACK_ILP64) +#define LAPACK_IFMT PRId64 +#else +#define LAPACK_IFMT PRId32 +#endif +#endif + +#ifndef lapack_logical +#define lapack_logical lapack_int +#endif + +/* f2c, hence clapack and MacOS Accelerate, returns double instead of float + * for sdot, slange, clange, etc. */ +#if defined(LAPACK_F2C) + typedef double lapack_float_return; +#else + typedef float lapack_float_return; +#endif + + +/* Callback logical functions of one, two, or three arguments are used +* to select eigenvalues to sort to the top left of the Schur form. +* The value is selected if function returns TRUE (non-zero). */ + +typedef lapack_logical (*LAPACK_S_SELECT2) ( const float*, const float* ); +typedef lapack_logical (*LAPACK_S_SELECT3) + ( const float*, const float*, const float* ); +typedef lapack_logical (*LAPACK_D_SELECT2) ( const double*, const double* ); +typedef lapack_logical (*LAPACK_D_SELECT3) + ( const double*, const double*, const double* ); + +typedef lapack_logical (*LAPACK_C_SELECT1) ( const lapack_complex_float* ); +typedef lapack_logical (*LAPACK_C_SELECT2) + ( const lapack_complex_float*, const lapack_complex_float* ); +typedef lapack_logical (*LAPACK_Z_SELECT1) ( const lapack_complex_double* ); +typedef lapack_logical (*LAPACK_Z_SELECT2) + ( const lapack_complex_double*, const lapack_complex_double* ); + +#define LAPACK_lsame_base LAPACK_GLOBAL(lsame,LSAME) +lapack_logical LAPACK_lsame_base( const char* ca, const char* cb +#ifndef __EMSCRIPTEN__ + , lapack_int lca, lapack_int lcb +#endif +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_lsame(...) LAPACK_lsame_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_lsame(...) LAPACK_lsame_base(__VA_ARGS__) +#endif + + +/*----------------------------------------------------------------------------*/ +/* This is in alphabetical order (ignoring leading precision). */ + +#define LAPACK_cbbcsd_base LAPACK_GLOBAL(cbbcsd,CBBCSD) +void LAPACK_cbbcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + float* theta, + float* phi, + lapack_complex_float* U1, lapack_int const* ldu1, + lapack_complex_float* U2, lapack_int const* ldu2, + lapack_complex_float* V1T, lapack_int const* ldv1t, + lapack_complex_float* V2T, lapack_int const* ldv2t, + float* B11D, + float* B11E, + float* B12D, + float* B12E, + float* B21D, + float* B21E, + float* B22D, + float* B22E, + float* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cbbcsd(...) LAPACK_cbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_cbbcsd(...) LAPACK_cbbcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_dbbcsd_base LAPACK_GLOBAL(dbbcsd,DBBCSD) +void LAPACK_dbbcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + double* theta, + double* phi, + double* U1, lapack_int const* ldu1, + double* U2, lapack_int const* ldu2, + double* V1T, lapack_int const* ldv1t, + double* V2T, lapack_int const* ldv2t, + double* B11D, + double* B11E, + double* B12D, + double* B12E, + double* b21d, + double* b21e, + double* b22d, + double* b22e, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dbbcsd(...) LAPACK_dbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_dbbcsd(...) LAPACK_dbbcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_sbbcsd_base LAPACK_GLOBAL(sbbcsd,SBBCSD) +void LAPACK_sbbcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + float* theta, + float* phi, + float* U1, lapack_int const* ldu1, + float* U2, lapack_int const* ldu2, + float* V1T, lapack_int const* ldv1t, + float* V2T, lapack_int const* ldv2t, + float* B11D, + float* B11E, + float* B12D, + float* B12E, + float* B21D, + float* B21E, + float* B22D, + float* B22E, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sbbcsd(...) LAPACK_sbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_sbbcsd(...) LAPACK_sbbcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_zbbcsd_base LAPACK_GLOBAL(zbbcsd,ZBBCSD) +void LAPACK_zbbcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + double* theta, + double* phi, + lapack_complex_double* U1, lapack_int const* ldu1, + lapack_complex_double* U2, lapack_int const* ldu2, + lapack_complex_double* V1T, lapack_int const* ldv1t, + lapack_complex_double* V2T, lapack_int const* ldv2t, + double* B11D, + double* B11E, + double* B12D, + double* B12E, + double* B21D, + double* B21E, + double* B22D, + double* B22E, + double* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zbbcsd(...) LAPACK_zbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_zbbcsd(...) LAPACK_zbbcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_dbdsdc_base LAPACK_GLOBAL(dbdsdc,DBDSDC) +void LAPACK_dbdsdc_base( + char const* uplo, char const* compq, + lapack_int const* n, + double* D, + double* E, + double* U, lapack_int const* ldu, + double* VT, lapack_int const* ldvt, + double* Q, lapack_int* IQ, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dbdsdc(...) LAPACK_dbdsdc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dbdsdc(...) LAPACK_dbdsdc_base(__VA_ARGS__) +#endif + +#define LAPACK_sbdsdc_base LAPACK_GLOBAL(sbdsdc,SBDSDC) +void LAPACK_sbdsdc_base( + char const* uplo, char const* compq, + lapack_int const* n, + float* D, + float* E, + float* U, lapack_int const* ldu, + float* VT, lapack_int const* ldvt, + float* Q, lapack_int* IQ, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sbdsdc(...) LAPACK_sbdsdc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sbdsdc(...) LAPACK_sbdsdc_base(__VA_ARGS__) +#endif + +#define LAPACK_cbdsqr_base LAPACK_GLOBAL(cbdsqr,CBDSQR) +void LAPACK_cbdsqr_base( + char const* uplo, + lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, + float* D, + float* E, + lapack_complex_float* VT, lapack_int const* ldvt, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* C, lapack_int const* ldc, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cbdsqr(...) LAPACK_cbdsqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cbdsqr(...) LAPACK_cbdsqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dbdsqr_base LAPACK_GLOBAL(dbdsqr,DBDSQR) +void LAPACK_dbdsqr_base( + char const* uplo, + lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, + double* D, + double* E, + double* VT, lapack_int const* ldvt, + double* U, lapack_int const* ldu, + double* C, lapack_int const* ldc, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dbdsqr(...) LAPACK_dbdsqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dbdsqr(...) LAPACK_dbdsqr_base(__VA_ARGS__) +#endif + +#define LAPACK_sbdsqr_base LAPACK_GLOBAL(sbdsqr,SBDSQR) +void LAPACK_sbdsqr_base( + char const* uplo, + lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, + float* D, + float* E, + float* VT, lapack_int const* ldvt, + float* U, lapack_int const* ldu, + float* C, lapack_int const* ldc, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sbdsqr(...) LAPACK_sbdsqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_sbdsqr(...) LAPACK_sbdsqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zbdsqr_base LAPACK_GLOBAL(zbdsqr,ZBDSQR) +void LAPACK_zbdsqr_base( + char const* uplo, + lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, + double* D, + double* E, + lapack_complex_double* VT, lapack_int const* ldvt, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* C, lapack_int const* ldc, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zbdsqr(...) LAPACK_zbdsqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zbdsqr(...) LAPACK_zbdsqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dbdsvdx_base LAPACK_GLOBAL(dbdsvdx,DBDSVDX) +void LAPACK_dbdsvdx_base( + char const* uplo, char const* jobz, char const* range, + lapack_int const* n, + double const* D, + double const* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + double* S, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dbdsvdx(...) LAPACK_dbdsvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dbdsvdx(...) LAPACK_dbdsvdx_base(__VA_ARGS__) +#endif + +#define LAPACK_sbdsvdx_base LAPACK_GLOBAL(sbdsvdx,SBDSVDX) +void LAPACK_sbdsvdx_base( + char const* uplo, char const* jobz, char const* range, + lapack_int const* n, + float const* D, + float const* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + float* S, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sbdsvdx(...) LAPACK_sbdsvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sbdsvdx(...) LAPACK_sbdsvdx_base(__VA_ARGS__) +#endif + +#define LAPACK_ddisna_base LAPACK_GLOBAL(ddisna,DDISNA) +void LAPACK_ddisna_base( + char const* job, + lapack_int const* m, lapack_int const* n, + double const* D, + double* SEP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ddisna(...) LAPACK_ddisna_base(__VA_ARGS__, 1) +#else + #define LAPACK_ddisna(...) LAPACK_ddisna_base(__VA_ARGS__) +#endif + +#define LAPACK_sdisna_base LAPACK_GLOBAL(sdisna,SDISNA) +void LAPACK_sdisna_base( + char const* job, + lapack_int const* m, lapack_int const* n, + float const* D, + float* SEP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sdisna(...) LAPACK_sdisna_base(__VA_ARGS__, 1) +#else + #define LAPACK_sdisna(...) LAPACK_sdisna_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbbrd_base LAPACK_GLOBAL(cgbbrd,CGBBRD) +void LAPACK_cgbbrd_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float* AB, lapack_int const* ldab, + float* D, + float* E, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* PT, lapack_int const* ldpt, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbbrd(...) LAPACK_cgbbrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgbbrd(...) LAPACK_cgbbrd_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbbrd_base LAPACK_GLOBAL(dgbbrd,DGBBRD) +void LAPACK_dgbbrd_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, + double* AB, lapack_int const* ldab, + double* D, + double* E, + double* Q, lapack_int const* ldq, + double* PT, lapack_int const* ldpt, + double* C, lapack_int const* ldc, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbbrd(...) LAPACK_dgbbrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgbbrd(...) LAPACK_dgbbrd_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbbrd_base LAPACK_GLOBAL(sgbbrd,SGBBRD) +void LAPACK_sgbbrd_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, + float* AB, lapack_int const* ldab, + float* D, + float* E, + float* Q, lapack_int const* ldq, + float* PT, lapack_int const* ldpt, + float* C, lapack_int const* ldc, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbbrd(...) LAPACK_sgbbrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgbbrd(...) LAPACK_sgbbrd_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbbrd_base LAPACK_GLOBAL(zgbbrd,ZGBBRD) +void LAPACK_zgbbrd_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double* AB, lapack_int const* ldab, + double* D, + double* E, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* PT, lapack_int const* ldpt, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbbrd(...) LAPACK_zgbbrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgbbrd(...) LAPACK_zgbbrd_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbcon_base LAPACK_GLOBAL(cgbcon,CGBCON) +void LAPACK_cgbcon_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float const* AB, lapack_int const* ldab, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbcon(...) LAPACK_cgbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgbcon(...) LAPACK_cgbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbcon_base LAPACK_GLOBAL(dgbcon,DGBCON) +void LAPACK_dgbcon_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* AB, lapack_int const* ldab, lapack_int const* ipiv, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbcon(...) LAPACK_dgbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgbcon(...) LAPACK_dgbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbcon_base LAPACK_GLOBAL(sgbcon,SGBCON) +void LAPACK_sgbcon_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* AB, lapack_int const* ldab, lapack_int const* ipiv, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbcon(...) LAPACK_sgbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgbcon(...) LAPACK_sgbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbcon_base LAPACK_GLOBAL(zgbcon,ZGBCON) +void LAPACK_zgbcon_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double const* AB, lapack_int const* ldab, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbcon(...) LAPACK_zgbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgbcon(...) LAPACK_zgbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbequ LAPACK_GLOBAL(cgbequ,CGBEQU) +void LAPACK_cgbequ( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float const* AB, lapack_int const* ldab, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_dgbequ LAPACK_GLOBAL(dgbequ,DGBEQU) +void LAPACK_dgbequ( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* AB, lapack_int const* ldab, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_sgbequ LAPACK_GLOBAL(sgbequ,SGBEQU) +void LAPACK_sgbequ( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* AB, lapack_int const* ldab, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_zgbequ LAPACK_GLOBAL(zgbequ,ZGBEQU) +void LAPACK_zgbequ( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double const* AB, lapack_int const* ldab, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_cgbequb LAPACK_GLOBAL(cgbequb,CGBEQUB) +void LAPACK_cgbequb( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float const* AB, lapack_int const* ldab, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_dgbequb LAPACK_GLOBAL(dgbequb,DGBEQUB) +void LAPACK_dgbequb( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* AB, lapack_int const* ldab, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_sgbequb LAPACK_GLOBAL(sgbequb,SGBEQUB) +void LAPACK_sgbequb( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* AB, lapack_int const* ldab, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_zgbequb LAPACK_GLOBAL(zgbequb,ZGBEQUB) +void LAPACK_zgbequb( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double const* AB, lapack_int const* ldab, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_cgbrfs_base LAPACK_GLOBAL(cgbrfs,CGBRFS) +void LAPACK_cgbrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbrfs(...) LAPACK_cgbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgbrfs(...) LAPACK_cgbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbrfs_base LAPACK_GLOBAL(dgbrfs,DGBRFS) +void LAPACK_dgbrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbrfs(...) LAPACK_dgbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgbrfs(...) LAPACK_dgbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbrfs_base LAPACK_GLOBAL(sgbrfs,SGBRFS) +void LAPACK_sgbrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbrfs(...) LAPACK_sgbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgbrfs(...) LAPACK_sgbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbrfs_base LAPACK_GLOBAL(zgbrfs,ZGBRFS) +void LAPACK_zgbrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbrfs(...) LAPACK_zgbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgbrfs(...) LAPACK_zgbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbrfsx_base LAPACK_GLOBAL(cgbrfsx,CGBRFSX) +void LAPACK_cgbrfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + const float* R, + const float* C, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbrfsx(...) LAPACK_cgbrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgbrfsx(...) LAPACK_cgbrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbrfsx_base LAPACK_GLOBAL(dgbrfsx,DGBRFSX) +void LAPACK_dgbrfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + const double* R, + const double* C, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbrfsx(...) LAPACK_dgbrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgbrfsx(...) LAPACK_dgbrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbrfsx_base LAPACK_GLOBAL(sgbrfsx,SGBRFSX) +void LAPACK_sgbrfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + const float* R, + const float* C, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbrfsx(...) LAPACK_sgbrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgbrfsx(...) LAPACK_sgbrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbrfsx_base LAPACK_GLOBAL(zgbrfsx,ZGBRFSX) +void LAPACK_zgbrfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, + const double* R, + const double* C, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbrfsx(...) LAPACK_zgbrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgbrfsx(...) LAPACK_zgbrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbsv LAPACK_GLOBAL(cgbsv,CGBSV) +void LAPACK_cgbsv( + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_dgbsv LAPACK_GLOBAL(dgbsv,DGBSV) +void LAPACK_dgbsv( + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double* AB, lapack_int const* ldab, lapack_int* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_sgbsv LAPACK_GLOBAL(sgbsv,SGBSV) +void LAPACK_sgbsv( + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float* AB, lapack_int const* ldab, lapack_int* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_zgbsv LAPACK_GLOBAL(zgbsv,ZGBSV) +void LAPACK_zgbsv( + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_cgbsvx_base LAPACK_GLOBAL(cgbsvx,CGBSVX) +void LAPACK_cgbsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + float* R, + float* C, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbsvx(...) LAPACK_cgbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgbsvx(...) LAPACK_cgbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbsvx_base LAPACK_GLOBAL(dgbsvx,DGBSVX) +void LAPACK_dgbsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double* AB, lapack_int const* ldab, + double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + double* R, + double* C, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbsvx(...) LAPACK_dgbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgbsvx(...) LAPACK_dgbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbsvx_base LAPACK_GLOBAL(sgbsvx,SGBSVX) +void LAPACK_sgbsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float* AB, lapack_int const* ldab, + float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + float* R, + float* C, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbsvx(...) LAPACK_sgbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgbsvx(...) LAPACK_sgbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbsvx_base LAPACK_GLOBAL(zgbsvx,ZGBSVX) +void LAPACK_zgbsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + double* R, + double* C, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbsvx(...) LAPACK_zgbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgbsvx(...) LAPACK_zgbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbsvxx_base LAPACK_GLOBAL(cgbsvxx,CGBSVXX) +void LAPACK_cgbsvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + float* R, + float* C, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbsvxx(...) LAPACK_cgbsvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgbsvxx(...) LAPACK_cgbsvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbsvxx_base LAPACK_GLOBAL(dgbsvxx,DGBSVXX) +void LAPACK_dgbsvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double* AB, lapack_int const* ldab, + double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + double* R, + double* C, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbsvxx(...) LAPACK_dgbsvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgbsvxx(...) LAPACK_dgbsvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbsvxx_base LAPACK_GLOBAL(sgbsvxx,SGBSVXX) +void LAPACK_sgbsvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float* AB, lapack_int const* ldab, + float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + float* R, + float* C, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbsvxx(...) LAPACK_sgbsvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgbsvxx(...) LAPACK_sgbsvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbsvxx_base LAPACK_GLOBAL(zgbsvxx,ZGBSVXX) +void LAPACK_zgbsvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, + double* R, + double* C, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbsvxx(...) LAPACK_zgbsvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgbsvxx(...) LAPACK_zgbsvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgbtrf LAPACK_GLOBAL(cgbtrf,CGBTRF) +void LAPACK_cgbtrf( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_dgbtrf LAPACK_GLOBAL(dgbtrf,DGBTRF) +void LAPACK_dgbtrf( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_sgbtrf LAPACK_GLOBAL(sgbtrf,SGBTRF) +void LAPACK_sgbtrf( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_zgbtrf LAPACK_GLOBAL(zgbtrf,ZGBTRF) +void LAPACK_zgbtrf( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double* AB, lapack_int const* ldab, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_cgbtrs_base LAPACK_GLOBAL(cgbtrs,CGBTRS) +void LAPACK_cgbtrs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgbtrs(...) LAPACK_cgbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgbtrs(...) LAPACK_cgbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgbtrs_base LAPACK_GLOBAL(dgbtrs,DGBTRS) +void LAPACK_dgbtrs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgbtrs(...) LAPACK_dgbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgbtrs(...) LAPACK_dgbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgbtrs_base LAPACK_GLOBAL(sgbtrs,SGBTRS) +void LAPACK_sgbtrs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgbtrs(...) LAPACK_sgbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgbtrs(...) LAPACK_sgbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgbtrs_base LAPACK_GLOBAL(zgbtrs,ZGBTRS) +void LAPACK_zgbtrs_base( + char const* trans, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgbtrs(...) LAPACK_zgbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgbtrs(...) LAPACK_zgbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cgebak_base LAPACK_GLOBAL(cgebak,CGEBAK) +void LAPACK_cgebak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float const* scale, lapack_int const* m, + lapack_complex_float* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgebak(...) LAPACK_cgebak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgebak(...) LAPACK_cgebak_base(__VA_ARGS__) +#endif + +#define LAPACK_dgebak_base LAPACK_GLOBAL(dgebak,DGEBAK) +void LAPACK_dgebak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double const* scale, lapack_int const* m, + double* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgebak(...) LAPACK_dgebak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgebak(...) LAPACK_dgebak_base(__VA_ARGS__) +#endif + +#define LAPACK_sgebak_base LAPACK_GLOBAL(sgebak,SGEBAK) +void LAPACK_sgebak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float const* scale, lapack_int const* m, + float* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgebak(...) LAPACK_sgebak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgebak(...) LAPACK_sgebak_base(__VA_ARGS__) +#endif + +#define LAPACK_zgebak_base LAPACK_GLOBAL(zgebak,ZGEBAK) +void LAPACK_zgebak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double const* scale, lapack_int const* m, + lapack_complex_double* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgebak(...) LAPACK_zgebak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgebak(...) LAPACK_zgebak_base(__VA_ARGS__) +#endif + +#define LAPACK_cgebal_base LAPACK_GLOBAL(cgebal,CGEBAL) +void LAPACK_cgebal_base( + char const* job, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, + float* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgebal(...) LAPACK_cgebal_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgebal(...) LAPACK_cgebal_base(__VA_ARGS__) +#endif + +#define LAPACK_dgebal_base LAPACK_GLOBAL(dgebal,DGEBAL) +void LAPACK_dgebal_base( + char const* job, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, + double* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgebal(...) LAPACK_dgebal_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgebal(...) LAPACK_dgebal_base(__VA_ARGS__) +#endif + +#define LAPACK_sgebal_base LAPACK_GLOBAL(sgebal,SGEBAL) +void LAPACK_sgebal_base( + char const* job, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, + float* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgebal(...) LAPACK_sgebal_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgebal(...) LAPACK_sgebal_base(__VA_ARGS__) +#endif + +#define LAPACK_zgebal_base LAPACK_GLOBAL(zgebal,ZGEBAL) +void LAPACK_zgebal_base( + char const* job, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, + double* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgebal(...) LAPACK_zgebal_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgebal(...) LAPACK_zgebal_base(__VA_ARGS__) +#endif + +#define LAPACK_cgebrd LAPACK_GLOBAL(cgebrd,CGEBRD) +void LAPACK_cgebrd( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* D, + float* E, + lapack_complex_float* tauq, + lapack_complex_float* taup, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgebrd LAPACK_GLOBAL(dgebrd,DGEBRD) +void LAPACK_dgebrd( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* D, + double* E, + double* tauq, + double* taup, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgebrd LAPACK_GLOBAL(sgebrd,SGEBRD) +void LAPACK_sgebrd( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* D, + float* E, + float* tauq, + float* taup, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgebrd LAPACK_GLOBAL(zgebrd,ZGEBRD) +void LAPACK_zgebrd( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* D, + double* E, + lapack_complex_double* tauq, + lapack_complex_double* taup, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgecon_base LAPACK_GLOBAL(cgecon,CGECON) +void LAPACK_cgecon_base( + char const* norm, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float const* anorm, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgecon(...) LAPACK_cgecon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgecon(...) LAPACK_cgecon_base(__VA_ARGS__) +#endif + +#define LAPACK_dgecon_base LAPACK_GLOBAL(dgecon,DGECON) +void LAPACK_dgecon_base( + char const* norm, + lapack_int const* n, + double const* A, lapack_int const* lda, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgecon(...) LAPACK_dgecon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgecon(...) LAPACK_dgecon_base(__VA_ARGS__) +#endif + +#define LAPACK_sgecon_base LAPACK_GLOBAL(sgecon,SGECON) +void LAPACK_sgecon_base( + char const* norm, + lapack_int const* n, + float const* A, lapack_int const* lda, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgecon(...) LAPACK_sgecon_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgecon(...) LAPACK_sgecon_base(__VA_ARGS__) +#endif + +#define LAPACK_zgecon_base LAPACK_GLOBAL(zgecon,ZGECON) +void LAPACK_zgecon_base( + char const* norm, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double const* anorm, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgecon(...) LAPACK_zgecon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgecon(...) LAPACK_zgecon_base(__VA_ARGS__) +#endif + +#define LAPACK_cgeequ LAPACK_GLOBAL(cgeequ,CGEEQU) +void LAPACK_cgeequ( + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_dgeequ LAPACK_GLOBAL(dgeequ,DGEEQU) +void LAPACK_dgeequ( + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_sgeequ LAPACK_GLOBAL(sgeequ,SGEEQU) +void LAPACK_sgeequ( + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_zgeequ LAPACK_GLOBAL(zgeequ,ZGEEQU) +void LAPACK_zgeequ( + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_cgeequb LAPACK_GLOBAL(cgeequb,CGEEQUB) +void LAPACK_cgeequb( + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_dgeequb LAPACK_GLOBAL(dgeequb,DGEEQUB) +void LAPACK_dgeequb( + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_sgeequb LAPACK_GLOBAL(sgeequb,SGEEQUB) +void LAPACK_sgeequb( + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float* R, + float* C, + float* rowcnd, + float* colcnd, + float* amax, + lapack_int* info ); + +#define LAPACK_zgeequb LAPACK_GLOBAL(zgeequb,ZGEEQUB) +void LAPACK_zgeequb( + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* R, + double* C, + double* rowcnd, + double* colcnd, + double* amax, + lapack_int* info ); + +#define LAPACK_cgees_base LAPACK_GLOBAL(cgees,CGEES) +void LAPACK_cgees_base( + char const* jobvs, char const* sort, LAPACK_C_SELECT1 select, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* sdim, + lapack_complex_float* W, + lapack_complex_float* VS, lapack_int const* ldvs, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgees(...) LAPACK_cgees_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgees(...) LAPACK_cgees_base(__VA_ARGS__) +#endif + +#define LAPACK_dgees_base LAPACK_GLOBAL(dgees,DGEES) +void LAPACK_dgees_base( + char const* jobvs, char const* sort, LAPACK_D_SELECT2 select, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* sdim, + double* WR, + double* WI, + double* VS, lapack_int const* ldvs, + double* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgees(...) LAPACK_dgees_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgees(...) LAPACK_dgees_base(__VA_ARGS__) +#endif + +#define LAPACK_sgees_base LAPACK_GLOBAL(sgees,SGEES) +void LAPACK_sgees_base( + char const* jobvs, char const* sort, LAPACK_S_SELECT2 select, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* sdim, + float* WR, + float* WI, + float* VS, lapack_int const* ldvs, + float* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgees(...) LAPACK_sgees_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgees(...) LAPACK_sgees_base(__VA_ARGS__) +#endif + +#define LAPACK_zgees_base LAPACK_GLOBAL(zgees,ZGEES) +void LAPACK_zgees_base( + char const* jobvs, char const* sort, LAPACK_Z_SELECT1 select, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* sdim, + lapack_complex_double* W, + lapack_complex_double* VS, lapack_int const* ldvs, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgees(...) LAPACK_zgees_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgees(...) LAPACK_zgees_base(__VA_ARGS__) +#endif + +#define LAPACK_cgeesx_base LAPACK_GLOBAL(cgeesx,CGEESX) +void LAPACK_cgeesx_base( + char const* jobvs, char const* sort, LAPACK_C_SELECT1 select, char const* sense, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* sdim, + lapack_complex_float* W, + lapack_complex_float* VS, lapack_int const* ldvs, + float* rconde, + float* rcondv, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgeesx(...) LAPACK_cgeesx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgeesx(...) LAPACK_cgeesx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgeesx_base LAPACK_GLOBAL(dgeesx,DGEESX) +void LAPACK_dgeesx_base( + char const* jobvs, char const* sort, LAPACK_D_SELECT2 select, char const* sense, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* sdim, + double* WR, + double* WI, + double* VS, lapack_int const* ldvs, + double* rconde, + double* rcondv, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgeesx(...) LAPACK_dgeesx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgeesx(...) LAPACK_dgeesx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgeesx_base LAPACK_GLOBAL(sgeesx,SGEESX) +void LAPACK_sgeesx_base( + char const* jobvs, char const* sort, LAPACK_S_SELECT2 select, char const* sense, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* sdim, + float* WR, + float* WI, + float* VS, lapack_int const* ldvs, + float* rconde, + float* rcondv, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgeesx(...) LAPACK_sgeesx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgeesx(...) LAPACK_sgeesx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgeesx_base LAPACK_GLOBAL(zgeesx,ZGEESX) +void LAPACK_zgeesx_base( + char const* jobvs, char const* sort, LAPACK_Z_SELECT1 select, char const* sense, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* sdim, + lapack_complex_double* W, + lapack_complex_double* VS, lapack_int const* ldvs, + double* rconde, + double* rcondv, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgeesx(...) LAPACK_zgeesx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgeesx(...) LAPACK_zgeesx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgeev_base LAPACK_GLOBAL(cgeev,CGEEV) +void LAPACK_cgeev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* W, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgeev(...) LAPACK_cgeev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgeev(...) LAPACK_cgeev_base(__VA_ARGS__) +#endif + +#define LAPACK_dgeev_base LAPACK_GLOBAL(dgeev,DGEEV) +void LAPACK_dgeev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + double* A, lapack_int const* lda, + double* WR, + double* WI, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgeev(...) LAPACK_dgeev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgeev(...) LAPACK_dgeev_base(__VA_ARGS__) +#endif + +#define LAPACK_sgeev_base LAPACK_GLOBAL(sgeev,SGEEV) +void LAPACK_sgeev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + float* A, lapack_int const* lda, + float* WR, + float* WI, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgeev(...) LAPACK_sgeev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgeev(...) LAPACK_sgeev_base(__VA_ARGS__) +#endif + +#define LAPACK_zgeev_base LAPACK_GLOBAL(zgeev,ZGEEV) +void LAPACK_zgeev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* W, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgeev(...) LAPACK_zgeev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgeev(...) LAPACK_zgeev_base(__VA_ARGS__) +#endif + +#define LAPACK_cgeevx_base LAPACK_GLOBAL(cgeevx,CGEEVX) +void LAPACK_cgeevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* W, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + float* scale, + float* abnrm, + float* rconde, + float* rcondv, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgeevx(...) LAPACK_cgeevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_cgeevx(...) LAPACK_cgeevx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgeevx_base LAPACK_GLOBAL(dgeevx,DGEEVX) +void LAPACK_dgeevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + double* A, lapack_int const* lda, + double* WR, + double* WI, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + double* scale, + double* abnrm, + double* rconde, + double* rcondv, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgeevx(...) LAPACK_dgeevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dgeevx(...) LAPACK_dgeevx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgeevx_base LAPACK_GLOBAL(sgeevx,SGEEVX) +void LAPACK_sgeevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + float* A, lapack_int const* lda, + float* WR, + float* WI, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + float* scale, + float* abnrm, + float* rconde, + float* rcondv, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgeevx(...) LAPACK_sgeevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_sgeevx(...) LAPACK_sgeevx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgeevx_base LAPACK_GLOBAL(zgeevx,ZGEEVX) +void LAPACK_zgeevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* W, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + double* scale, + double* abnrm, + double* rconde, + double* rcondv, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgeevx(...) LAPACK_zgeevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_zgeevx(...) LAPACK_zgeevx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgehrd LAPACK_GLOBAL(cgehrd,CGEHRD) +void LAPACK_cgehrd( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgehrd LAPACK_GLOBAL(dgehrd,DGEHRD) +void LAPACK_dgehrd( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgehrd LAPACK_GLOBAL(sgehrd,SGEHRD) +void LAPACK_sgehrd( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgehrd LAPACK_GLOBAL(zgehrd,ZGEHRD) +void LAPACK_zgehrd( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgejsv_base LAPACK_GLOBAL(cgejsv,CGEJSV) +void LAPACK_cgejsv_base( + char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* SVA, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* V, lapack_int const* ldv, + lapack_complex_float* cwork, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgejsv(...) LAPACK_cgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_cgejsv(...) LAPACK_cgejsv_base(__VA_ARGS__) +#endif + +#define LAPACK_dgejsv_base LAPACK_GLOBAL(dgejsv,DGEJSV) +void LAPACK_dgejsv_base( + char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* SVA, + double* U, lapack_int const* ldu, + double* V, lapack_int const* ldv, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgejsv(...) LAPACK_dgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_dgejsv(...) LAPACK_dgejsv_base(__VA_ARGS__) +#endif + +#define LAPACK_sgejsv_base LAPACK_GLOBAL(sgejsv,SGEJSV) +void LAPACK_sgejsv_base( + char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* SVA, + float* U, lapack_int const* ldu, + float* V, lapack_int const* ldv, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgejsv(...) LAPACK_sgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_sgejsv(...) LAPACK_sgejsv_base(__VA_ARGS__) +#endif + +#define LAPACK_zgejsv_base LAPACK_GLOBAL(zgejsv,ZGEJSV) +void LAPACK_zgejsv_base( + char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* SVA, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* V, lapack_int const* ldv, + lapack_complex_double* cwork, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgejsv(...) LAPACK_zgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_zgejsv(...) LAPACK_zgejsv_base(__VA_ARGS__) +#endif + +#define LAPACK_cgelq LAPACK_GLOBAL(cgelq,CGELQ) +void LAPACK_cgelq( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* tsize, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgelq LAPACK_GLOBAL(dgelq,DGELQ) +void LAPACK_dgelq( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* T, lapack_int const* tsize, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgelq LAPACK_GLOBAL(sgelq,SGELQ) +void LAPACK_sgelq( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* T, lapack_int const* tsize, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgelq LAPACK_GLOBAL(zgelq,ZGELQ) +void LAPACK_zgelq( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* tsize, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgelq2 LAPACK_GLOBAL(cgelq2,CGELQ2) +void LAPACK_cgelq2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dgelq2 LAPACK_GLOBAL(dgelq2,DGELQ2) +void LAPACK_dgelq2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, + lapack_int* info ); + +#define LAPACK_sgelq2 LAPACK_GLOBAL(sgelq2,SGELQ2) +void LAPACK_sgelq2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, + lapack_int* info ); + +#define LAPACK_zgelq2 LAPACK_GLOBAL(zgelq2,ZGELQ2) +void LAPACK_zgelq2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_cgelqf LAPACK_GLOBAL(cgelqf,CGELQF) +void LAPACK_cgelqf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgelqf LAPACK_GLOBAL(dgelqf,DGELQF) +void LAPACK_dgelqf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgelqf LAPACK_GLOBAL(sgelqf,SGELQF) +void LAPACK_sgelqf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgelqf LAPACK_GLOBAL(zgelqf,ZGELQF) +void LAPACK_zgelqf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgels_base LAPACK_GLOBAL(cgels,CGELS) +void LAPACK_cgels_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgels(...) LAPACK_cgels_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgels(...) LAPACK_cgels_base(__VA_ARGS__) +#endif + +#define LAPACK_dgels_base LAPACK_GLOBAL(dgels,DGELS) +void LAPACK_dgels_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgels(...) LAPACK_dgels_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgels(...) LAPACK_dgels_base(__VA_ARGS__) +#endif + +#define LAPACK_sgels_base LAPACK_GLOBAL(sgels,SGELS) +void LAPACK_sgels_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgels(...) LAPACK_sgels_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgels(...) LAPACK_sgels_base(__VA_ARGS__) +#endif + +#define LAPACK_zgels_base LAPACK_GLOBAL(zgels,ZGELS) +void LAPACK_zgels_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgels(...) LAPACK_zgels_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgels(...) LAPACK_zgels_base(__VA_ARGS__) +#endif + +#define LAPACK_cgelsd LAPACK_GLOBAL(cgelsd,CGELSD) +void LAPACK_cgelsd( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* S, + float const* rcond, lapack_int* rank, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, + lapack_int* info ); + +#define LAPACK_dgelsd LAPACK_GLOBAL(dgelsd,DGELSD) +void LAPACK_dgelsd( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* S, + double const* rcond, lapack_int* rank, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info ); + +#define LAPACK_sgelsd LAPACK_GLOBAL(sgelsd,SGELSD) +void LAPACK_sgelsd( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* S, + float const* rcond, lapack_int* rank, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info ); + +#define LAPACK_zgelsd LAPACK_GLOBAL(zgelsd,ZGELSD) +void LAPACK_zgelsd( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* S, + double const* rcond, lapack_int* rank, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, + lapack_int* info ); + +#define LAPACK_cgelss LAPACK_GLOBAL(cgelss,CGELSS) +void LAPACK_cgelss( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* S, + float const* rcond, lapack_int* rank, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info ); + +#define LAPACK_dgelss LAPACK_GLOBAL(dgelss,DGELSS) +void LAPACK_dgelss( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* S, + double const* rcond, lapack_int* rank, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgelss LAPACK_GLOBAL(sgelss,SGELSS) +void LAPACK_sgelss( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* S, + float const* rcond, lapack_int* rank, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgelss LAPACK_GLOBAL(zgelss,ZGELSS) +void LAPACK_zgelss( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* S, + double const* rcond, lapack_int* rank, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info ); + +#define LAPACK_cgelsy LAPACK_GLOBAL(cgelsy,CGELSY) +void LAPACK_cgelsy( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, lapack_int* JPVT, + float const* rcond, lapack_int* rank, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info ); + +#define LAPACK_dgelsy LAPACK_GLOBAL(dgelsy,DGELSY) +void LAPACK_dgelsy( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, lapack_int* JPVT, + double const* rcond, lapack_int* rank, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgelsy LAPACK_GLOBAL(sgelsy,SGELSY) +void LAPACK_sgelsy( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, lapack_int* JPVT, + float const* rcond, lapack_int* rank, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgelsy LAPACK_GLOBAL(zgelsy,ZGELSY) +void LAPACK_zgelsy( + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, lapack_int* JPVT, + double const* rcond, lapack_int* rank, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info ); + +#define LAPACK_cgemlq_base LAPACK_GLOBAL(cgemlq,CGEMLQ) +void LAPACK_cgemlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* T, lapack_int const* tsize, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgemlq(...) LAPACK_cgemlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgemlq(...) LAPACK_cgemlq_base(__VA_ARGS__) +#endif + +#define LAPACK_dgemlq_base LAPACK_GLOBAL(dgemlq,DGEMLQ) +void LAPACK_dgemlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* T, lapack_int const* tsize, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgemlq(...) LAPACK_dgemlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgemlq(...) LAPACK_dgemlq_base(__VA_ARGS__) +#endif + +#define LAPACK_sgemlq_base LAPACK_GLOBAL(sgemlq,SGEMLQ) +void LAPACK_sgemlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* T, lapack_int const* tsize, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgemlq(...) LAPACK_sgemlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgemlq(...) LAPACK_sgemlq_base(__VA_ARGS__) +#endif + +#define LAPACK_zgemlq_base LAPACK_GLOBAL(zgemlq,ZGEMLQ) +void LAPACK_zgemlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* T, lapack_int const* tsize, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgemlq(...) LAPACK_zgemlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgemlq(...) LAPACK_zgemlq_base(__VA_ARGS__) +#endif + +#define LAPACK_cgemqr_base LAPACK_GLOBAL(cgemqr,CGEMQR) +void LAPACK_cgemqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* T, lapack_int const* tsize, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgemqr(...) LAPACK_cgemqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgemqr(...) LAPACK_cgemqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dgemqr_base LAPACK_GLOBAL(dgemqr,DGEMQR) +void LAPACK_dgemqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* T, lapack_int const* tsize, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgemqr(...) LAPACK_dgemqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgemqr(...) LAPACK_dgemqr_base(__VA_ARGS__) +#endif + +#define LAPACK_sgemqr_base LAPACK_GLOBAL(sgemqr,SGEMQR) +void LAPACK_sgemqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* T, lapack_int const* tsize, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgemqr(...) LAPACK_sgemqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgemqr(...) LAPACK_sgemqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zgemqr_base LAPACK_GLOBAL(zgemqr,ZGEMQR) +void LAPACK_zgemqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* T, lapack_int const* tsize, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgemqr(...) LAPACK_zgemqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgemqr(...) LAPACK_zgemqr_base(__VA_ARGS__) +#endif + +#define LAPACK_cgemqrt_base LAPACK_GLOBAL(cgemqrt,CGEMQRT) +void LAPACK_cgemqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgemqrt(...) LAPACK_cgemqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgemqrt(...) LAPACK_cgemqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_dgemqrt_base LAPACK_GLOBAL(dgemqrt,DGEMQRT) +void LAPACK_dgemqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, + double const* V, lapack_int const* ldv, + double const* T, lapack_int const* ldt, + double* C, lapack_int const* ldc, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgemqrt(...) LAPACK_dgemqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgemqrt(...) LAPACK_dgemqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_sgemqrt_base LAPACK_GLOBAL(sgemqrt,SGEMQRT) +void LAPACK_sgemqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, + float const* V, lapack_int const* ldv, + float const* T, lapack_int const* ldt, + float* C, lapack_int const* ldc, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgemqrt(...) LAPACK_sgemqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgemqrt(...) LAPACK_sgemqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_zgemqrt_base LAPACK_GLOBAL(zgemqrt,ZGEMQRT) +void LAPACK_zgemqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgemqrt(...) LAPACK_zgemqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgemqrt(...) LAPACK_zgemqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_cgeql2 LAPACK_GLOBAL(cgeql2,CGEQL2) +void LAPACK_cgeql2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dgeql2 LAPACK_GLOBAL(dgeql2,DGEQL2) +void LAPACK_dgeql2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, + lapack_int* info ); + +#define LAPACK_sgeql2 LAPACK_GLOBAL(sgeql2,SGEQL2) +void LAPACK_sgeql2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, + lapack_int* info ); + +#define LAPACK_zgeql2 LAPACK_GLOBAL(zgeql2,ZGEQL2) +void LAPACK_zgeql2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_cgeqlf LAPACK_GLOBAL(cgeqlf,CGEQLF) +void LAPACK_cgeqlf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgeqlf LAPACK_GLOBAL(dgeqlf,DGEQLF) +void LAPACK_dgeqlf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqlf LAPACK_GLOBAL(sgeqlf,SGEQLF) +void LAPACK_sgeqlf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgeqlf LAPACK_GLOBAL(zgeqlf,ZGEQLF) +void LAPACK_zgeqlf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqpf LAPACK_GLOBAL(sgeqpf,SGEQPF) +void LAPACK_sgeqpf( lapack_int* m, lapack_int* n, float* a, lapack_int* lda, + lapack_int* jpvt, float* tau, float* work, + lapack_int *info ); + +#define LAPACK_dgeqpf LAPACK_GLOBAL(dgeqpf,DGEQPF) +void LAPACK_dgeqpf( lapack_int* m, lapack_int* n, double* a, lapack_int* lda, + lapack_int* jpvt, double* tau, double* work, + lapack_int *info ); + +#define LAPACK_cgeqpf LAPACK_GLOBAL(cgeqpf,CGEQPF) +void LAPACK_cgeqpf( lapack_int* m, lapack_int* n, lapack_complex_float* a, + lapack_int* lda, lapack_int* jpvt, + lapack_complex_float* tau, lapack_complex_float* work, + float* rwork, lapack_int *info ); + +#define LAPACK_zgeqpf LAPACK_GLOBAL(zgeqpf,ZGEQPF) +void LAPACK_zgeqpf( lapack_int* m, lapack_int* n, lapack_complex_double* a, + lapack_int* lda, lapack_int* jpvt, + lapack_complex_double* tau, lapack_complex_double* work, + double* rwork, lapack_int *info ); + +#define LAPACK_cgeqp3 LAPACK_GLOBAL(cgeqp3,CGEQP3) +void LAPACK_cgeqp3( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* JPVT, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info ); + +#define LAPACK_dgeqp3 LAPACK_GLOBAL(dgeqp3,DGEQP3) +void LAPACK_dgeqp3( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* JPVT, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqp3 LAPACK_GLOBAL(sgeqp3,SGEQP3) +void LAPACK_sgeqp3( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* JPVT, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgeqp3 LAPACK_GLOBAL(zgeqp3,ZGEQP3) +void LAPACK_zgeqp3( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* JPVT, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info ); + +#define LAPACK_cgeqr LAPACK_GLOBAL(cgeqr,CGEQR) +void LAPACK_cgeqr( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* tsize, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgeqr LAPACK_GLOBAL(dgeqr,DGEQR) +void LAPACK_dgeqr( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* T, lapack_int const* tsize, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqr LAPACK_GLOBAL(sgeqr,SGEQR) +void LAPACK_sgeqr( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* T, lapack_int const* tsize, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgeqr LAPACK_GLOBAL(zgeqr,ZGEQR) +void LAPACK_zgeqr( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* tsize, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgeqr2 LAPACK_GLOBAL(cgeqr2,CGEQR2) +void LAPACK_cgeqr2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dgeqr2 LAPACK_GLOBAL(dgeqr2,DGEQR2) +void LAPACK_dgeqr2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, + lapack_int* info ); + +#define LAPACK_sgeqr2 LAPACK_GLOBAL(sgeqr2,SGEQR2) +void LAPACK_sgeqr2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, + lapack_int* info ); + +#define LAPACK_zgeqr2 LAPACK_GLOBAL(zgeqr2,ZGEQR2) +void LAPACK_zgeqr2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_cgeqrf LAPACK_GLOBAL(cgeqrf,CGEQRF) +void LAPACK_cgeqrf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgeqrf LAPACK_GLOBAL(dgeqrf,DGEQRF) +void LAPACK_dgeqrf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqrf LAPACK_GLOBAL(sgeqrf,SGEQRF) +void LAPACK_sgeqrf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgeqrf LAPACK_GLOBAL(zgeqrf,ZGEQRF) +void LAPACK_zgeqrf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgeqrfp LAPACK_GLOBAL(cgeqrfp,CGEQRFP) +void LAPACK_cgeqrfp( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgeqrfp LAPACK_GLOBAL(dgeqrfp,DGEQRFP) +void LAPACK_dgeqrfp( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgeqrfp LAPACK_GLOBAL(sgeqrfp,SGEQRFP) +void LAPACK_sgeqrfp( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgeqrfp LAPACK_GLOBAL(zgeqrfp,ZGEQRFP) +void LAPACK_zgeqrfp( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgeqrt LAPACK_GLOBAL(cgeqrt,CGEQRT) +void LAPACK_cgeqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* nb, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dgeqrt LAPACK_GLOBAL(dgeqrt,DGEQRT) +void LAPACK_dgeqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* nb, + double* A, lapack_int const* lda, + double* T, lapack_int const* ldt, + double* work, + lapack_int* info ); + +#define LAPACK_sgeqrt LAPACK_GLOBAL(sgeqrt,SGEQRT) +void LAPACK_sgeqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* nb, + float* A, lapack_int const* lda, + float* T, lapack_int const* ldt, + float* work, + lapack_int* info ); + +#define LAPACK_zgeqrt LAPACK_GLOBAL(zgeqrt,ZGEQRT) +void LAPACK_zgeqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* nb, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_cgeqrt2 LAPACK_GLOBAL(cgeqrt2,CGEQRT2) +void LAPACK_cgeqrt2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_dgeqrt2 LAPACK_GLOBAL(dgeqrt2,DGEQRT2) +void LAPACK_dgeqrt2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_sgeqrt2 LAPACK_GLOBAL(sgeqrt2,SGEQRT2) +void LAPACK_sgeqrt2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_zgeqrt2 LAPACK_GLOBAL(zgeqrt2,ZGEQRT2) +void LAPACK_zgeqrt2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_cgeqrt3 LAPACK_GLOBAL(cgeqrt3,CGEQRT3) +void LAPACK_cgeqrt3( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_dgeqrt3 LAPACK_GLOBAL(dgeqrt3,DGEQRT3) +void LAPACK_dgeqrt3( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_sgeqrt3 LAPACK_GLOBAL(sgeqrt3,SGEQRT3) +void LAPACK_sgeqrt3( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_zgeqrt3 LAPACK_GLOBAL(zgeqrt3,ZGEQRT3) +void LAPACK_zgeqrt3( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_cgerfs_base LAPACK_GLOBAL(cgerfs,CGERFS) +void LAPACK_cgerfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgerfs(...) LAPACK_cgerfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgerfs(...) LAPACK_cgerfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgerfs_base LAPACK_GLOBAL(dgerfs,DGERFS) +void LAPACK_dgerfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgerfs(...) LAPACK_dgerfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgerfs(...) LAPACK_dgerfs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgerfs_base LAPACK_GLOBAL(sgerfs,SGERFS) +void LAPACK_sgerfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgerfs(...) LAPACK_sgerfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgerfs(...) LAPACK_sgerfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgerfs_base LAPACK_GLOBAL(zgerfs,ZGERFS) +void LAPACK_zgerfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgerfs(...) LAPACK_zgerfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgerfs(...) LAPACK_zgerfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cgerfsx_base LAPACK_GLOBAL(cgerfsx,CGERFSX) +void LAPACK_cgerfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + float const* R, + float const* C, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgerfsx(...) LAPACK_cgerfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgerfsx(...) LAPACK_cgerfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgerfsx_base LAPACK_GLOBAL(dgerfsx,DGERFSX) +void LAPACK_dgerfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + double const* R, + double const* C, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgerfsx(...) LAPACK_dgerfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgerfsx(...) LAPACK_dgerfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgerfsx_base LAPACK_GLOBAL(sgerfsx,SGERFSX) +void LAPACK_sgerfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + float const* R, + float const* C, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgerfsx(...) LAPACK_sgerfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgerfsx(...) LAPACK_sgerfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgerfsx_base LAPACK_GLOBAL(zgerfsx,ZGERFSX) +void LAPACK_zgerfsx_base( + char const* trans, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + double const* R, + double const* C, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgerfsx(...) LAPACK_zgerfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgerfsx(...) LAPACK_zgerfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgerq2 LAPACK_GLOBAL(cgerq2,CGERQ2) +void LAPACK_cgerq2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dgerq2 LAPACK_GLOBAL(dgerq2,DGERQ2) +void LAPACK_dgerq2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, + lapack_int* info ); + +#define LAPACK_sgerq2 LAPACK_GLOBAL(sgerq2,SGERQ2) +void LAPACK_sgerq2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, + lapack_int* info ); + +#define LAPACK_zgerq2 LAPACK_GLOBAL(zgerq2,ZGERQ2) +void LAPACK_zgerq2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_cgerqf LAPACK_GLOBAL(cgerqf,CGERQF) +void LAPACK_cgerqf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgerqf LAPACK_GLOBAL(dgerqf,DGERQF) +void LAPACK_dgerqf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgerqf LAPACK_GLOBAL(sgerqf,SGERQF) +void LAPACK_sgerqf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgerqf LAPACK_GLOBAL(zgerqf,ZGERQF) +void LAPACK_zgerqf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgesdd_base LAPACK_GLOBAL(cgesdd,CGESDD) +void LAPACK_cgesdd_base( + char const* jobz, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* S, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* VT, lapack_int const* ldvt, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesdd(...) LAPACK_cgesdd_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgesdd(...) LAPACK_cgesdd_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesdd_base LAPACK_GLOBAL(dgesdd,DGESDD) +void LAPACK_dgesdd_base( + char const* jobz, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* S, + double* U, lapack_int const* ldu, + double* VT, lapack_int const* ldvt, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesdd(...) LAPACK_dgesdd_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgesdd(...) LAPACK_dgesdd_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesdd_base LAPACK_GLOBAL(sgesdd,SGESDD) +void LAPACK_sgesdd_base( + char const* jobz, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* S, + float* U, lapack_int const* ldu, + float* VT, lapack_int const* ldvt, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesdd(...) LAPACK_sgesdd_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgesdd(...) LAPACK_sgesdd_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesdd_base LAPACK_GLOBAL(zgesdd,ZGESDD) +void LAPACK_zgesdd_base( + char const* jobz, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* S, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* VT, lapack_int const* ldvt, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__) +#endif + +#define LAPACK_cgedmd_base LAPACK_GLOBAL(cgedmd,CGEDMD) +void LAPACK_cgedmd_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobf, + lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, + lapack_complex_float* x, lapack_int const* ldx, + lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, + const float* tol, lapack_int* k, lapack_complex_float* eigs, + lapack_complex_float* z, lapack_int const* ldz, float* res, + lapack_complex_float* b, lapack_int const* ldb, + lapack_complex_float* w, lapack_int const* ldw, + lapack_complex_float* s, lapack_int const* lds, + lapack_complex_float* zwork, lapack_int const* lzwork, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__) +#endif + + +#define LAPACK_dgedmd_base LAPACK_GLOBAL(dgedmd,DGEDMD) +void LAPACK_dgedmd_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobf, + lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, + double* x, lapack_int const* ldx, + double* y, lapack_int const* ldy, lapack_int const* nrnk, + const double* tol, lapack_int* k, double* reig, double* imeig, + double* z, lapack_int const* ldz, double* res, + double* b, lapack_int const* ldb, + double* w, lapack_int const* ldw, + double* s, lapack_int const* lds, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__) +#endif + +#define LAPACK_sgedmd_base LAPACK_GLOBAL(sgedmd,SGEDMD) +void LAPACK_sgedmd_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobf, + lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, + float* x, lapack_int const* ldx, + float* y, lapack_int const* ldy, lapack_int const* nrnk, + const float* tol, lapack_int* k, float* reig, float *imeig, + float* z, lapack_int const* ldz, float* res, + float* b, lapack_int const* ldb, + float* w, lapack_int const* ldw, + float* s, lapack_int const* lds, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__) +#endif + +#define LAPACK_zgedmd_base LAPACK_GLOBAL(zgedmd,ZGEDMD) +void LAPACK_zgedmd_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobf, + lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, + lapack_complex_double* x, lapack_int const* ldx, + lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, + const double* tol, lapack_int *k, lapack_complex_double* eigs, + lapack_complex_double* z, lapack_int const* ldz, double* res, + lapack_complex_double* b, lapack_int const* ldb, + lapack_complex_double* w, lapack_int const* ldw, + lapack_complex_double* s, lapack_int const* lds, + lapack_complex_double* zwork, lapack_int const* lzwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__) +#endif + +#define LAPACK_cgedmdq_base LAPACK_GLOBAL(cgedmdq,CGEDMDQ) +void LAPACK_cgedmdq_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobq, + char const* jobt, char const* jobf, lapack_int const* whtsvd, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* f, lapack_int const* ldf, + lapack_complex_float* x, lapack_int const* ldx, + lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, + float const* tol, lapack_int const* k, + lapack_complex_float* eigs, + lapack_complex_float* z, lapack_int const* ldz, float* res, + lapack_complex_float* b, lapack_int const* ldb, + lapack_complex_float* v, lapack_int const* ldv, + lapack_complex_float* s, lapack_int const* lds, + lapack_complex_float* zwork, lapack_int const* lzwork, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__) +#endif + +#define LAPACK_dgedmdq_base LAPACK_GLOBAL(dgedmdq,DGEDMDQ) +void LAPACK_dgedmdq_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobq, + char const* jobt, char const* jobf, lapack_int const* whtsvd, + lapack_int const* m, lapack_int const* n, + double* f, lapack_int const* ldf, + double* x, lapack_int const* ldx, + double* y, lapack_int const* ldy, lapack_int const* nrnk, + double const* tol, lapack_int* k, + double* reig, double *imeig, + double* z, lapack_int const* ldz, double* res, + double* b, lapack_int const* ldb, + double* v, lapack_int const* ldv, + double* s, lapack_int const* lds, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__) +#endif + +#define LAPACK_sgedmdq_base LAPACK_GLOBAL(sgedmdq,SGEDMDQ) +void LAPACK_sgedmdq_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobq, + char const* jobt, char const* jobf, lapack_int const* whtsvd, + lapack_int const* m, lapack_int const* n, + float* f, lapack_int const* ldf, + float* x, lapack_int const* ldx, + float* y, lapack_int const* ldy, lapack_int const* nrnk, + float const* tol, lapack_int const* k, + float* reig, float* imeig, + float* z, lapack_int const* ldz, float* res, + float* b, lapack_int const* ldb, + float* v, lapack_int const* ldv, + float* s, lapack_int const* lds, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__) +#endif + +#define LAPACK_zgedmdq_base LAPACK_GLOBAL(zgedmdq,ZGEDMDQ) +void LAPACK_zgedmdq_base( + char const* jobs, char const* jobz, char const* jobr, char const* jobq, + char const* jobt, char const* jobf, lapack_int const* whtsvd, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* f, lapack_int const* ldf, + lapack_complex_double* x, lapack_int const* ldx, + lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, + double const* tol, lapack_int const* k, + lapack_complex_double* eigs, + lapack_complex_double* z, lapack_int const* ldz, double* res, + lapack_complex_double* b, lapack_int const* ldb, + lapack_complex_double* v, lapack_int const* ldv, + lapack_complex_double* s, lapack_int const* lds, + lapack_complex_double* zwork, lapack_int const* lzwork, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info + +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesv LAPACK_GLOBAL(cgesv,CGESV) +lapack_int LAPACK_cgesv( + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_dgesv LAPACK_GLOBAL(dgesv,DGESV) +lapack_int LAPACK_dgesv( + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_sgesv LAPACK_GLOBAL(sgesv,SGESV) +lapack_int LAPACK_sgesv( + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_zgesv LAPACK_GLOBAL(zgesv,ZGESV) +lapack_int LAPACK_zgesv( + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_dsgesv LAPACK_GLOBAL(dsgesv,DSGESV) +void LAPACK_dsgesv( + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, lapack_int* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* work, + float* swork, lapack_int* iter, + lapack_int* info ); + +#define LAPACK_zcgesv LAPACK_GLOBAL(zcgesv,ZCGESV) +void LAPACK_zcgesv( + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + lapack_complex_double* work, + lapack_complex_float* swork, + double* rwork, lapack_int* iter, + lapack_int* info ); + +#define LAPACK_cgesvd_base LAPACK_GLOBAL(cgesvd,CGESVD) +void LAPACK_cgesvd_base( + char const* jobu, char const* jobvt, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* S, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* VT, lapack_int const* ldvt, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvd(...) LAPACK_cgesvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgesvd(...) LAPACK_cgesvd_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesvd_base LAPACK_GLOBAL(dgesvd,DGESVD) +void LAPACK_dgesvd_base( + char const* jobu, char const* jobvt, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* S, + double* U, lapack_int const* ldu, + double* VT, lapack_int const* ldvt, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvd(...) LAPACK_dgesvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgesvd(...) LAPACK_dgesvd_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvd_base LAPACK_GLOBAL(sgesvd,SGESVD) +void LAPACK_sgesvd_base( + char const* jobu, char const* jobvt, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* S, + float* U, lapack_int const* ldu, + float* VT, lapack_int const* ldvt, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvd(...) LAPACK_sgesvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgesvd(...) LAPACK_sgesvd_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvd_base LAPACK_GLOBAL(zgesvd,ZGESVD) +void LAPACK_zgesvd_base( + char const* jobu, char const* jobvt, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* S, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* VT, lapack_int const* ldvt, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvd(...) LAPACK_zgesvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgesvd(...) LAPACK_zgesvd_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesvdq_base LAPACK_GLOBAL(cgesvdq,CGESVDQ) +void LAPACK_cgesvdq_base( + char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* S, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* V, lapack_int const* ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int const* liwork, + lapack_complex_float* cwork, lapack_int* lcwork, + float* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvdq(...) LAPACK_cgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_cgesvdq(...) LAPACK_cgesvdq_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesvdq_base LAPACK_GLOBAL(dgesvdq,DGESVDQ) +void LAPACK_dgesvdq_base( + char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* S, + double* U, lapack_int const* ldu, + double* V, lapack_int const* ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int const* liwork, + double* work, lapack_int* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvdq(...) LAPACK_dgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_dgesvdq(...) LAPACK_dgesvdq_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvdq_base LAPACK_GLOBAL(sgesvdq,SGESVDQ) +void LAPACK_sgesvdq_base( + char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* S, + float* U, lapack_int const* ldu, + float* V, lapack_int const* ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int const* liwork, + float* work, lapack_int* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvdq(...) LAPACK_sgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_sgesvdq(...) LAPACK_sgesvdq_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvdq_base LAPACK_GLOBAL(zgesvdq,ZGESVDQ) +void LAPACK_zgesvdq_base( + char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* S, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* V, lapack_int const* ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int const* liwork, + lapack_complex_double* cwork, lapack_int* lcwork, + double* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvdq(...) LAPACK_zgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_zgesvdq(...) LAPACK_zgesvdq_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesvdx_base LAPACK_GLOBAL(cgesvdx,CGESVDX) +void LAPACK_cgesvdx_base( + char const* jobu, char const* jobvt, char const* range, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + float* S, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* VT, lapack_int const* ldvt, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvdx(...) LAPACK_cgesvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgesvdx(...) LAPACK_cgesvdx_base(__VA_ARGS__) +#endif + + +#define LAPACK_dgesvdx_base LAPACK_GLOBAL(dgesvdx,DGESVDX) +void LAPACK_dgesvdx_base( + char const* jobu, char const* jobvt, char const* range, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + double* S, + double* U, lapack_int const* ldu, + double* VT, lapack_int const* ldvt, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvdx(...) LAPACK_dgesvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgesvdx(...) LAPACK_dgesvdx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvdx_base LAPACK_GLOBAL(sgesvdx,SGESVDX) +void LAPACK_sgesvdx_base( + char const* jobu, char const* jobvt, char const* range, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + float* S, + float* U, lapack_int const* ldu, + float* VT, lapack_int const* ldvt, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvdx(...) LAPACK_sgesvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgesvdx(...) LAPACK_sgesvdx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvdx_base LAPACK_GLOBAL(zgesvdx,ZGESVDX) +void LAPACK_zgesvdx_base( + char const* jobu, char const* jobvt, char const* range, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, + double* S, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* VT, lapack_int const* ldvt, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvdx(...) LAPACK_zgesvdx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgesvdx(...) LAPACK_zgesvdx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesvj_base LAPACK_GLOBAL(cgesvj,CGESVJ) +void LAPACK_cgesvj_base( + char const* joba, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* SVA, lapack_int const* mv, + lapack_complex_float* V, lapack_int const* ldv, + lapack_complex_float* cwork, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvj(...) LAPACK_cgesvj_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgesvj(...) LAPACK_cgesvj_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesvj_base LAPACK_GLOBAL(dgesvj,DGESVJ) +void LAPACK_dgesvj_base( + char const* joba, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* SVA, lapack_int const* mv, + double* V, lapack_int const* ldv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvj(...) LAPACK_dgesvj_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgesvj(...) LAPACK_dgesvj_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvj_base LAPACK_GLOBAL(sgesvj,SGESVJ) +void LAPACK_sgesvj_base( + char const* joba, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* SVA, lapack_int const* mv, + float* V, lapack_int const* ldv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvj(...) LAPACK_sgesvj_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgesvj(...) LAPACK_sgesvj_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvj_base LAPACK_GLOBAL(zgesvj,ZGESVJ) +void LAPACK_zgesvj_base( + char const* joba, char const* jobu, char const* jobv, + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* SVA, lapack_int const* mv, + lapack_complex_double* V, lapack_int const* ldv, + lapack_complex_double* cwork, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvj(...) LAPACK_zgesvj_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgesvj(...) LAPACK_zgesvj_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesvx_base LAPACK_GLOBAL(cgesvx,CGESVX) +void LAPACK_cgesvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* R, + float* C, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvx(...) LAPACK_cgesvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgesvx(...) LAPACK_cgesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesvx_base LAPACK_GLOBAL(dgesvx,DGESVX) +void LAPACK_dgesvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* R, + double* C, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvx(...) LAPACK_dgesvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgesvx(...) LAPACK_dgesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvx_base LAPACK_GLOBAL(sgesvx,SGESVX) +void LAPACK_sgesvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* R, + float* C, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvx(...) LAPACK_sgesvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgesvx(...) LAPACK_sgesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvx_base LAPACK_GLOBAL(zgesvx,ZGESVX) +void LAPACK_zgesvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* R, + double* C, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvx(...) LAPACK_zgesvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgesvx(...) LAPACK_zgesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgesvxx_base LAPACK_GLOBAL(cgesvxx,CGESVXX) +void LAPACK_cgesvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* R, + float* C, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgesvxx(...) LAPACK_cgesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgesvxx(...) LAPACK_cgesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgesvxx_base LAPACK_GLOBAL(dgesvxx,DGESVXX) +void LAPACK_dgesvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* R, + double* C, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgesvxx(...) LAPACK_dgesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgesvxx(...) LAPACK_dgesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgesvxx_base LAPACK_GLOBAL(sgesvxx,SGESVXX) +void LAPACK_sgesvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* R, + float* C, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgesvxx(...) LAPACK_sgesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgesvxx(...) LAPACK_sgesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgesvxx_base LAPACK_GLOBAL(zgesvxx,ZGESVXX) +void LAPACK_zgesvxx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* R, + double* C, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgesvxx(...) LAPACK_zgesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgesvxx(...) LAPACK_zgesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgetf2 LAPACK_GLOBAL(cgetf2,CGETF2) +lapack_int LAPACK_cgetf2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_dgetf2 LAPACK_GLOBAL(dgetf2,DGETF2) +lapack_int LAPACK_dgetf2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_sgetf2 LAPACK_GLOBAL(sgetf2,SGETF2) +lapack_int LAPACK_sgetf2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_zgetf2 LAPACK_GLOBAL(zgetf2,ZGETF2) +lapack_int LAPACK_zgetf2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_cgetrf LAPACK_GLOBAL(cgetrf,CGETRF) +lapack_int LAPACK_cgetrf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_dgetrf LAPACK_GLOBAL(dgetrf,DGETRF) +lapack_int LAPACK_dgetrf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_sgetrf LAPACK_GLOBAL(sgetrf,SGETRF) +lapack_int LAPACK_sgetrf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_zgetrf LAPACK_GLOBAL(zgetrf,ZGETRF) +lapack_int LAPACK_zgetrf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_cgetrf2 LAPACK_GLOBAL(cgetrf2,CGETRF2) +void LAPACK_cgetrf2( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_dgetrf2 LAPACK_GLOBAL(dgetrf2,DGETRF2) +void LAPACK_dgetrf2( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_sgetrf2 LAPACK_GLOBAL(sgetrf2,SGETRF2) +void LAPACK_sgetrf2( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_zgetrf2 LAPACK_GLOBAL(zgetrf2,ZGETRF2) +void LAPACK_zgetrf2( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_cgetri LAPACK_GLOBAL(cgetri,CGETRI) +void LAPACK_cgetri( + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgetri LAPACK_GLOBAL(dgetri,DGETRI) +void LAPACK_dgetri( + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgetri LAPACK_GLOBAL(sgetri,SGETRI) +void LAPACK_sgetri( + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgetri LAPACK_GLOBAL(zgetri,ZGETRI) +void LAPACK_zgetri( + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgetrs_base LAPACK_GLOBAL(cgetrs,CGETRS) +lapack_int LAPACK_cgetrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgetrs(...) LAPACK_cgetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgetrs(...) LAPACK_cgetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgetrs_base LAPACK_GLOBAL(dgetrs,DGETRS) +lapack_int LAPACK_dgetrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgetrs(...) LAPACK_dgetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgetrs(...) LAPACK_dgetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgetrs_base LAPACK_GLOBAL(sgetrs,SGETRS) +lapack_int LAPACK_sgetrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgetrs(...) LAPACK_sgetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgetrs(...) LAPACK_sgetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgetrs_base LAPACK_GLOBAL(zgetrs,ZGETRS) +lapack_int LAPACK_zgetrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgetrs(...) LAPACK_zgetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgetrs(...) LAPACK_zgetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cgetsls_base LAPACK_GLOBAL(cgetsls,CGETSLS) +void LAPACK_cgetsls_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgetsls(...) LAPACK_cgetsls_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgetsls(...) LAPACK_cgetsls_base(__VA_ARGS__) +#endif + +#define LAPACK_dgetsls_base LAPACK_GLOBAL(dgetsls,DGETSLS) +void LAPACK_dgetsls_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgetsls(...) LAPACK_dgetsls_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgetsls(...) LAPACK_dgetsls_base(__VA_ARGS__) +#endif + +#define LAPACK_sgetsls_base LAPACK_GLOBAL(sgetsls,SGETSLS) +void LAPACK_sgetsls_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgetsls(...) LAPACK_sgetsls_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgetsls(...) LAPACK_sgetsls_base(__VA_ARGS__) +#endif + +#define LAPACK_zgetsls_base LAPACK_GLOBAL(zgetsls,ZGETSLS) +void LAPACK_zgetsls_base( + char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgetsls(...) LAPACK_zgetsls_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgetsls(...) LAPACK_zgetsls_base(__VA_ARGS__) +#endif + +#define LAPACK_cgetsqrhrt LAPACK_GLOBAL(cgetsqrhrt,CGETSQRHRT) +void LAPACK_cgetsqrhrt( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgetsqrhrt LAPACK_GLOBAL(dgetsqrhrt,DGETSQRHRT) +void LAPACK_dgetsqrhrt( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, + double* A, lapack_int const* lda, + double* T, lapack_int const* ldt, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgetsqrhrt LAPACK_GLOBAL(sgetsqrhrt,SGETSQRHRT) +void LAPACK_sgetsqrhrt( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, + float* A, lapack_int const* lda, + float* T, lapack_int const* ldt, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgetsqrhrt LAPACK_GLOBAL(zgetsqrhrt,ZGETSQRHRT) +void LAPACK_zgetsqrhrt( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cggbak_base LAPACK_GLOBAL(cggbak,CGGBAK) +void LAPACK_cggbak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float const* lscale, + float const* rscale, lapack_int const* m, + lapack_complex_float* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggbak(...) LAPACK_cggbak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cggbak(...) LAPACK_cggbak_base(__VA_ARGS__) +#endif + +#define LAPACK_dggbak_base LAPACK_GLOBAL(dggbak,DGGBAK) +void LAPACK_dggbak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double const* lscale, + double const* rscale, lapack_int const* m, + double* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggbak(...) LAPACK_dggbak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dggbak(...) LAPACK_dggbak_base(__VA_ARGS__) +#endif + +#define LAPACK_sggbak_base LAPACK_GLOBAL(sggbak,SGGBAK) +void LAPACK_sggbak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float const* lscale, + float const* rscale, lapack_int const* m, + float* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggbak(...) LAPACK_sggbak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sggbak(...) LAPACK_sggbak_base(__VA_ARGS__) +#endif + +#define LAPACK_zggbak_base LAPACK_GLOBAL(zggbak,ZGGBAK) +void LAPACK_zggbak_base( + char const* job, char const* side, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double const* lscale, + double const* rscale, lapack_int const* m, + lapack_complex_double* V, lapack_int const* ldv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggbak(...) LAPACK_zggbak_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zggbak(...) LAPACK_zggbak_base(__VA_ARGS__) +#endif + +#define LAPACK_cggbal_base LAPACK_GLOBAL(cggbal,CGGBAL) +void LAPACK_cggbal_base( + char const* job, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, + float* lscale, + float* rscale, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggbal(...) LAPACK_cggbal_base(__VA_ARGS__, 1) +#else + #define LAPACK_cggbal(...) LAPACK_cggbal_base(__VA_ARGS__) +#endif + +#define LAPACK_dggbal_base LAPACK_GLOBAL(dggbal,DGGBAL) +void LAPACK_dggbal_base( + char const* job, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, + double* lscale, + double* rscale, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggbal(...) LAPACK_dggbal_base(__VA_ARGS__, 1) +#else + #define LAPACK_dggbal(...) LAPACK_dggbal_base(__VA_ARGS__) +#endif + +#define LAPACK_sggbal_base LAPACK_GLOBAL(sggbal,SGGBAL) +void LAPACK_sggbal_base( + char const* job, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, + float* lscale, + float* rscale, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggbal(...) LAPACK_sggbal_base(__VA_ARGS__, 1) +#else + #define LAPACK_sggbal(...) LAPACK_sggbal_base(__VA_ARGS__) +#endif + +#define LAPACK_zggbal_base LAPACK_GLOBAL(zggbal,ZGGBAL) +void LAPACK_zggbal_base( + char const* job, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, + double* lscale, + double* rscale, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggbal(...) LAPACK_zggbal_base(__VA_ARGS__, 1) +#else + #define LAPACK_zggbal(...) LAPACK_zggbal_base(__VA_ARGS__) +#endif + +#define LAPACK_cgges_base LAPACK_GLOBAL(cgges,CGGES) +void LAPACK_cgges_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VSL, lapack_int const* ldvsl, + lapack_complex_float* VSR, lapack_int const* ldvsr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgges(...) LAPACK_cgges_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgges(...) LAPACK_cgges_base(__VA_ARGS__) +#endif + +#define LAPACK_dgges_base LAPACK_GLOBAL(dgges,DGGES) +void LAPACK_dgges_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, lapack_int* sdim, + double* alphar, + double* alphai, + double* beta, + double* VSL, lapack_int const* ldvsl, + double* VSR, lapack_int const* ldvsr, + double* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgges(...) LAPACK_dgges_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgges(...) LAPACK_dgges_base(__VA_ARGS__) +#endif + +#define LAPACK_sgges_base LAPACK_GLOBAL(sgges,SGGES) +void LAPACK_sgges_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, lapack_int* sdim, + float* alphar, + float* alphai, + float* beta, + float* VSL, lapack_int const* ldvsl, + float* VSR, lapack_int const* ldvsr, + float* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgges(...) LAPACK_sgges_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgges(...) LAPACK_sgges_base(__VA_ARGS__) +#endif + +#define LAPACK_zgges_base LAPACK_GLOBAL(zgges,ZGGES) +void LAPACK_zgges_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VSL, lapack_int const* ldvsl, + lapack_complex_double* VSR, lapack_int const* ldvsr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgges(...) LAPACK_zgges_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgges(...) LAPACK_zgges_base(__VA_ARGS__) +#endif + +#define LAPACK_cgges3_base LAPACK_GLOBAL(cgges3,CGGES3) +void LAPACK_cgges3_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VSL, lapack_int const* ldvsl, + lapack_complex_float* VSR, lapack_int const* ldvsr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgges3(...) LAPACK_cgges3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cgges3(...) LAPACK_cgges3_base(__VA_ARGS__) +#endif + +#define LAPACK_dgges3_base LAPACK_GLOBAL(dgges3,DGGES3) +void LAPACK_dgges3_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, lapack_int* sdim, + double* alphar, + double* alphai, + double* beta, + double* VSL, lapack_int const* ldvsl, + double* VSR, lapack_int const* ldvsr, + double* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgges3(...) LAPACK_dgges3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dgges3(...) LAPACK_dgges3_base(__VA_ARGS__) +#endif + +#define LAPACK_sgges3_base LAPACK_GLOBAL(sgges3,SGGES3) +void LAPACK_sgges3_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, lapack_int* sdim, + float* alphar, + float* alphai, + float* beta, + float* VSL, lapack_int const* ldvsl, + float* VSR, lapack_int const* ldvsr, + float* work, lapack_int const* lwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgges3(...) LAPACK_sgges3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sgges3(...) LAPACK_sgges3_base(__VA_ARGS__) +#endif + +#define LAPACK_zgges3_base LAPACK_GLOBAL(zgges3,ZGGES3) +void LAPACK_zgges3_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VSL, lapack_int const* ldvsl, + lapack_complex_double* VSR, lapack_int const* ldvsr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgges3(...) LAPACK_zgges3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zgges3(...) LAPACK_zgges3_base(__VA_ARGS__) +#endif + +#define LAPACK_cggesx_base LAPACK_GLOBAL(cggesx,CGGESX) +void LAPACK_cggesx_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, char const* sense, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VSL, lapack_int const* ldvsl, + lapack_complex_float* VSR, lapack_int const* ldvsr, + float* rconde, + float* rcondv, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggesx(...) LAPACK_cggesx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_cggesx(...) LAPACK_cggesx_base(__VA_ARGS__) +#endif + +#define LAPACK_dggesx_base LAPACK_GLOBAL(dggesx,DGGESX) +void LAPACK_dggesx_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, char const* sense, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, lapack_int* sdim, + double* alphar, + double* alphai, + double* beta, + double* VSL, lapack_int const* ldvsl, + double* VSR, lapack_int const* ldvsr, + double* rconde, + double* rcondv, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggesx(...) LAPACK_dggesx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dggesx(...) LAPACK_dggesx_base(__VA_ARGS__) +#endif + +#define LAPACK_sggesx_base LAPACK_GLOBAL(sggesx,SGGESX) +void LAPACK_sggesx_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, char const* sense, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, lapack_int* sdim, + float* alphar, + float* alphai, + float* beta, + float* VSL, lapack_int const* ldvsl, + float* VSR, lapack_int const* ldvsr, + float* rconde, + float* rcondv, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggesx(...) LAPACK_sggesx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_sggesx(...) LAPACK_sggesx_base(__VA_ARGS__) +#endif + +#define LAPACK_zggesx_base LAPACK_GLOBAL(zggesx,ZGGESX) +void LAPACK_zggesx_base( + char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, char const* sense, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VSL, lapack_int const* ldvsl, + lapack_complex_double* VSR, lapack_int const* ldvsr, + double* rconde, + double* rcondv, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggesx(...) LAPACK_zggesx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_zggesx(...) LAPACK_zggesx_base(__VA_ARGS__) +#endif + +#define LAPACK_cggev_base LAPACK_GLOBAL(cggev,CGGEV) +void LAPACK_cggev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggev(...) LAPACK_cggev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cggev(...) LAPACK_cggev_base(__VA_ARGS__) +#endif + +#define LAPACK_dggev_base LAPACK_GLOBAL(dggev,DGGEV) +void LAPACK_dggev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* alphar, + double* alphai, + double* beta, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggev(...) LAPACK_dggev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dggev(...) LAPACK_dggev_base(__VA_ARGS__) +#endif + +#define LAPACK_sggev_base LAPACK_GLOBAL(sggev,SGGEV) +void LAPACK_sggev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* alphar, + float* alphai, + float* beta, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggev(...) LAPACK_sggev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sggev(...) LAPACK_sggev_base(__VA_ARGS__) +#endif + +#define LAPACK_zggev_base LAPACK_GLOBAL(zggev,ZGGEV) +void LAPACK_zggev_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggev(...) LAPACK_zggev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zggev(...) LAPACK_zggev_base(__VA_ARGS__) +#endif + +#define LAPACK_cggev3_base LAPACK_GLOBAL(cggev3,CGGEV3) +void LAPACK_cggev3_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggev3(...) LAPACK_cggev3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cggev3(...) LAPACK_cggev3_base(__VA_ARGS__) +#endif + +#define LAPACK_dggev3_base LAPACK_GLOBAL(dggev3,DGGEV3) +void LAPACK_dggev3_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* alphar, + double* alphai, + double* beta, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggev3(...) LAPACK_dggev3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dggev3(...) LAPACK_dggev3_base(__VA_ARGS__) +#endif + +#define LAPACK_sggev3_base LAPACK_GLOBAL(sggev3,SGGEV3) +void LAPACK_sggev3_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* alphar, + float* alphai, + float* beta, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggev3(...) LAPACK_sggev3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sggev3(...) LAPACK_sggev3_base(__VA_ARGS__) +#endif + +#define LAPACK_zggev3_base LAPACK_GLOBAL(zggev3,ZGGEV3) +void LAPACK_zggev3_base( + char const* jobvl, char const* jobvr, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggev3(...) LAPACK_zggev3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zggev3(...) LAPACK_zggev3_base(__VA_ARGS__) +#endif + +#define LAPACK_cggevx_base LAPACK_GLOBAL(cggevx,CGGEVX) +void LAPACK_cggevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + float* lscale, + float* rscale, + float* abnrm, + float* bbnrm, + float* rconde, + float* rcondv, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggevx(...) LAPACK_cggevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_cggevx(...) LAPACK_cggevx_base(__VA_ARGS__) +#endif + +#define LAPACK_dggevx_base LAPACK_GLOBAL(dggevx,DGGEVX) +void LAPACK_dggevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* alphar, + double* alphai, + double* beta, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + double* lscale, + double* rscale, + double* abnrm, + double* bbnrm, + double* rconde, + double* rcondv, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggevx(...) LAPACK_dggevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dggevx(...) LAPACK_dggevx_base(__VA_ARGS__) +#endif + +#define LAPACK_sggevx_base LAPACK_GLOBAL(sggevx,SGGEVX) +void LAPACK_sggevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* alphar, + float* alphai, + float* beta, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + float* lscale, + float* rscale, + float* abnrm, + float* bbnrm, + float* rconde, + float* rcondv, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggevx(...) LAPACK_sggevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_sggevx(...) LAPACK_sggevx_base(__VA_ARGS__) +#endif + +#define LAPACK_zggevx_base LAPACK_GLOBAL(zggevx,ZGGEVX) +void LAPACK_zggevx_base( + char const* balanc, char const* jobvl, char const* jobvr, char const* sense, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, + double* lscale, + double* rscale, + double* abnrm, + double* bbnrm, + double* rconde, + double* rcondv, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_logical* BWORK, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggevx(...) LAPACK_zggevx_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_zggevx(...) LAPACK_zggevx_base(__VA_ARGS__) +#endif + +#define LAPACK_cggglm LAPACK_GLOBAL(cggglm,CGGGLM) +void LAPACK_cggglm( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* D, + lapack_complex_float* X, + lapack_complex_float* Y, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dggglm LAPACK_GLOBAL(dggglm,DGGGLM) +void LAPACK_dggglm( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* D, + double* X, + double* Y, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sggglm LAPACK_GLOBAL(sggglm,SGGGLM) +void LAPACK_sggglm( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* D, + float* X, + float* Y, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zggglm LAPACK_GLOBAL(zggglm,ZGGGLM) +void LAPACK_zggglm( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* D, + lapack_complex_double* X, + lapack_complex_double* Y, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cgghd3_base LAPACK_GLOBAL(cgghd3,CGGHD3) +void LAPACK_cgghd3_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgghd3(...) LAPACK_cgghd3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgghd3(...) LAPACK_cgghd3_base(__VA_ARGS__) +#endif + +#define LAPACK_dgghd3_base LAPACK_GLOBAL(dgghd3,DGGHD3) +void LAPACK_dgghd3_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* Q, lapack_int const* ldq, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgghd3(...) LAPACK_dgghd3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgghd3(...) LAPACK_dgghd3_base(__VA_ARGS__) +#endif + +#define LAPACK_sgghd3_base LAPACK_GLOBAL(sgghd3,SGGHD3) +void LAPACK_sgghd3_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* Q, lapack_int const* ldq, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgghd3(...) LAPACK_sgghd3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgghd3(...) LAPACK_sgghd3_base(__VA_ARGS__) +#endif + +#define LAPACK_zgghd3_base LAPACK_GLOBAL(zgghd3,ZGGHD3) +void LAPACK_zgghd3_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgghd3(...) LAPACK_zgghd3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgghd3(...) LAPACK_zgghd3_base(__VA_ARGS__) +#endif + +#define LAPACK_cgghrd_base LAPACK_GLOBAL(cgghrd,CGGHRD) +void LAPACK_cgghrd_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgghrd(...) LAPACK_cgghrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgghrd(...) LAPACK_cgghrd_base(__VA_ARGS__) +#endif + +#define LAPACK_dgghrd_base LAPACK_GLOBAL(dgghrd,DGGHRD) +void LAPACK_dgghrd_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* Q, lapack_int const* ldq, + double* Z, lapack_int const* ldz, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgghrd(...) LAPACK_dgghrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgghrd(...) LAPACK_dgghrd_base(__VA_ARGS__) +#endif + +#define LAPACK_sgghrd_base LAPACK_GLOBAL(sgghrd,SGGHRD) +void LAPACK_sgghrd_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* Q, lapack_int const* ldq, + float* Z, lapack_int const* ldz, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgghrd(...) LAPACK_sgghrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgghrd(...) LAPACK_sgghrd_base(__VA_ARGS__) +#endif + +#define LAPACK_zgghrd_base LAPACK_GLOBAL(zgghrd,ZGGHRD) +void LAPACK_zgghrd_base( + char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgghrd(...) LAPACK_zgghrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgghrd(...) LAPACK_zgghrd_base(__VA_ARGS__) +#endif + +#define LAPACK_cgglse LAPACK_GLOBAL(cgglse,CGGLSE) +void LAPACK_cgglse( + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* C, + lapack_complex_float* D, + lapack_complex_float* X, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dgglse LAPACK_GLOBAL(dgglse,DGGLSE) +void LAPACK_dgglse( + lapack_int const* m, lapack_int const* n, lapack_int const* p, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* C, + double* D, + double* X, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sgglse LAPACK_GLOBAL(sgglse,SGGLSE) +void LAPACK_sgglse( + lapack_int const* m, lapack_int const* n, lapack_int const* p, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* C, + float* D, + float* X, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zgglse LAPACK_GLOBAL(zgglse,ZGGLSE) +void LAPACK_zgglse( + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* C, + lapack_complex_double* D, + lapack_complex_double* X, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cggqrf LAPACK_GLOBAL(cggqrf,CGGQRF) +void LAPACK_cggqrf( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* taua, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* taub, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dggqrf LAPACK_GLOBAL(dggqrf,DGGQRF) +void LAPACK_dggqrf( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + double* A, lapack_int const* lda, + double* taua, + double* B, lapack_int const* ldb, + double* taub, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sggqrf LAPACK_GLOBAL(sggqrf,SGGQRF) +void LAPACK_sggqrf( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + float* A, lapack_int const* lda, + float* taua, + float* B, lapack_int const* ldb, + float* taub, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zggqrf LAPACK_GLOBAL(zggqrf,ZGGQRF) +void LAPACK_zggqrf( + lapack_int const* n, lapack_int const* m, lapack_int const* p, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* taua, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* taub, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cggrqf LAPACK_GLOBAL(cggrqf,CGGRQF) +void LAPACK_cggrqf( + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* taua, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* taub, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dggrqf LAPACK_GLOBAL(dggrqf,DGGRQF) +void LAPACK_dggrqf( + lapack_int const* m, lapack_int const* p, lapack_int const* n, + double* A, lapack_int const* lda, + double* taua, + double* B, lapack_int const* ldb, + double* taub, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sggrqf LAPACK_GLOBAL(sggrqf,SGGRQF) +void LAPACK_sggrqf( + lapack_int const* m, lapack_int const* p, lapack_int const* n, + float* A, lapack_int const* lda, + float* taua, + float* B, lapack_int const* ldb, + float* taub, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zggrqf LAPACK_GLOBAL(zggrqf,ZGGRQF) +void LAPACK_zggrqf( + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* taua, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* taub, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cggsvd_base LAPACK_GLOBAL(cggsvd,CGGSVD) +void LAPACK_cggsvd_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_int* k, lapack_int* l, + lapack_complex_float* a, lapack_int const* lda, + lapack_complex_float* b, lapack_int const* ldb, + float* alpha, float* beta, + lapack_complex_float* u, lapack_int const* ldu, + lapack_complex_float* v, lapack_int const* ldv, + lapack_complex_float* q, lapack_int const* ldq, + lapack_complex_float* work, float* rwork, + lapack_int* iwork, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggsvd(...) LAPACK_cggsvd_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cggsvd(...) LAPACK_cggsvd_base(__VA_ARGS__) +#endif + +#define LAPACK_sggsvd_base LAPACK_GLOBAL(sggsvd,SGGSVD) +void LAPACK_sggsvd_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_int* k, lapack_int* l, + float* a, lapack_int const* lda, + float* b, lapack_int const* ldb, + float* alpha, float* beta, + float* u, lapack_int const* ldu, + float* v, lapack_int const* ldv, + float* q, lapack_int const* ldq, + float* work, lapack_int* iwork, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggsvd(...) LAPACK_sggsvd_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sggsvd(...) LAPACK_sggsvd_base(__VA_ARGS__) +#endif + +#define LAPACK_dggsvd_base LAPACK_GLOBAL(dggsvd,DGGSVD) +void LAPACK_dggsvd_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_int* k, lapack_int* l, + double* a, lapack_int const* lda, + double* b, lapack_int const* ldb, + double* alpha, double* beta, + double* u, lapack_int const* ldu, + double* v, lapack_int const* ldv, + double* q, lapack_int const* ldq, + double* work, lapack_int* iwork, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggsvd(...) LAPACK_dggsvd_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dggsvd(...) LAPACK_dggsvd_base(__VA_ARGS__) +#endif + +#define LAPACK_zggsvd_base LAPACK_GLOBAL(zggsvd,ZGGSVD) +void LAPACK_zggsvd_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, + lapack_int* k, lapack_int* l, + lapack_complex_double* a, lapack_int const* lda, + lapack_complex_double* b, lapack_int const* ldb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int const* ldu, + lapack_complex_double* v, lapack_int const* ldv, + lapack_complex_double* q, lapack_int const* ldq, + lapack_complex_double* work, double* rwork, + lapack_int* iwork, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggsvd(...) LAPACK_zggsvd_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zggsvd(...) LAPACK_zggsvd_base(__VA_ARGS__) +#endif + +#define LAPACK_cggsvd3_base LAPACK_GLOBAL(cggsvd3,CGGSVD3) +void LAPACK_cggsvd3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* alpha, + float* beta, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* V, lapack_int const* ldv, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggsvd3(...) LAPACK_cggsvd3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cggsvd3(...) LAPACK_cggsvd3_base(__VA_ARGS__) +#endif + +#define LAPACK_dggsvd3_base LAPACK_GLOBAL(dggsvd3,DGGSVD3) +void LAPACK_dggsvd3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* alpha, + double* beta, + double* U, lapack_int const* ldu, + double* V, lapack_int const* ldv, + double* Q, lapack_int const* ldq, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggsvd3(...) LAPACK_dggsvd3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dggsvd3(...) LAPACK_dggsvd3_base(__VA_ARGS__) +#endif + +#define LAPACK_sggsvd3_base LAPACK_GLOBAL(sggsvd3,SGGSVD3) +void LAPACK_sggsvd3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* alpha, + float* beta, + float* U, lapack_int const* ldu, + float* V, lapack_int const* ldv, + float* Q, lapack_int const* ldq, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggsvd3(...) LAPACK_sggsvd3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sggsvd3(...) LAPACK_sggsvd3_base(__VA_ARGS__) +#endif + +#define LAPACK_zggsvd3_base LAPACK_GLOBAL(zggsvd3,ZGGSVD3) +void LAPACK_zggsvd3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* alpha, + double* beta, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* V, lapack_int const* ldv, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggsvd3(...) LAPACK_zggsvd3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zggsvd3(...) LAPACK_zggsvd3_base(__VA_ARGS__) +#endif + +#define LAPACK_sggsvp_base LAPACK_GLOBAL(sggsvp,SGGSVP) +void LAPACK_sggsvp_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + float* a, lapack_int const* lda, + float* b, lapack_int const* ldb, + float* tola, float* tolb, + lapack_int* k, lapack_int* l, + float* u, lapack_int const* ldu, + float* v, lapack_int const* ldv, + float* q, lapack_int const* ldq, + lapack_int* iwork, float* tau, + float* work, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggsvp(...) LAPACK_sggsvp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sggsvp(...) LAPACK_sggsvp_base(__VA_ARGS__) +#endif + +#define LAPACK_dggsvp_base LAPACK_GLOBAL(dggsvp,DGGSVP) +void LAPACK_dggsvp_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + double* a, lapack_int const* lda, + double* b, lapack_int const* ldb, + double* tola, double* tolb, + lapack_int* k, lapack_int* l, + double* u, lapack_int const* ldu, + double* v, lapack_int const* ldv, + double* q, lapack_int const* ldq, + lapack_int* iwork, double* tau, + double* work, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggsvp(...) LAPACK_dggsvp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dggsvp(...) LAPACK_dggsvp_base(__VA_ARGS__) +#endif + +#define LAPACK_cggsvp_base LAPACK_GLOBAL(cggsvp,CGGSVP) +void LAPACK_cggsvp_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_float* a, lapack_int const* lda, + lapack_complex_float* b, lapack_int const* ldb, + float* tola, float* tolb, lapack_int* k, lapack_int* l, + lapack_complex_float* u, lapack_int const* ldu, + lapack_complex_float* v, lapack_int const* ldv, + lapack_complex_float* q, lapack_int const* ldq, + lapack_int* iwork, float* rwork, lapack_complex_float* tau, + lapack_complex_float* work, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggsvp(...) LAPACK_cggsvp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cggsvp(...) LAPACK_cggsvp_base(__VA_ARGS__) +#endif + +#define LAPACK_zggsvp_base LAPACK_GLOBAL(zggsvp,ZGGSVP) +void LAPACK_zggsvp_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_double* a, lapack_int const* lda, + lapack_complex_double* b, lapack_int const* ldb, + double* tola, double* tolb, lapack_int* k, lapack_int* l, + lapack_complex_double* u, lapack_int const* ldu, + lapack_complex_double* v, lapack_int const* ldv, + lapack_complex_double* q, lapack_int const* ldq, + lapack_int* iwork, double* rwork, lapack_complex_double* tau, + lapack_complex_double* work, lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggsvp(...) LAPACK_zggsvp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zggsvp(...) LAPACK_zggsvp_base(__VA_ARGS__) +#endif + +#define LAPACK_cggsvp3_base LAPACK_GLOBAL(cggsvp3,CGGSVP3) +void LAPACK_cggsvp3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float const* tola, + float const* tolb, lapack_int* k, lapack_int* l, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* V, lapack_int const* ldv, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_int* iwork, + float* rwork, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cggsvp3(...) LAPACK_cggsvp3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cggsvp3(...) LAPACK_cggsvp3_base(__VA_ARGS__) +#endif + +#define LAPACK_dggsvp3_base LAPACK_GLOBAL(dggsvp3,DGGSVP3) +void LAPACK_dggsvp3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double const* tola, + double const* tolb, lapack_int* k, lapack_int* l, + double* U, lapack_int const* ldu, + double* V, lapack_int const* ldv, + double* Q, lapack_int const* ldq, + lapack_int* iwork, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dggsvp3(...) LAPACK_dggsvp3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dggsvp3(...) LAPACK_dggsvp3_base(__VA_ARGS__) +#endif + +#define LAPACK_sggsvp3_base LAPACK_GLOBAL(sggsvp3,SGGSVP3) +void LAPACK_sggsvp3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float const* tola, + float const* tolb, lapack_int* k, lapack_int* l, + float* U, lapack_int const* ldu, + float* V, lapack_int const* ldv, + float* Q, lapack_int const* ldq, + lapack_int* iwork, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sggsvp3(...) LAPACK_sggsvp3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sggsvp3(...) LAPACK_sggsvp3_base(__VA_ARGS__) +#endif + +#define LAPACK_zggsvp3_base LAPACK_GLOBAL(zggsvp3,ZGGSVP3) +void LAPACK_zggsvp3_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double const* tola, + double const* tolb, lapack_int* k, lapack_int* l, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* V, lapack_int const* ldv, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_int* iwork, + double* rwork, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zggsvp3(...) LAPACK_zggsvp3_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zggsvp3(...) LAPACK_zggsvp3_base(__VA_ARGS__) +#endif + +#define LAPACK_cgtcon_base LAPACK_GLOBAL(cgtcon,CGTCON) +void LAPACK_cgtcon_base( + char const* norm, + lapack_int const* n, + lapack_complex_float const* DL, + lapack_complex_float const* D, + lapack_complex_float const* DU, + lapack_complex_float const* DU2, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgtcon(...) LAPACK_cgtcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgtcon(...) LAPACK_cgtcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dgtcon_base LAPACK_GLOBAL(dgtcon,DGTCON) +void LAPACK_dgtcon_base( + char const* norm, + lapack_int const* n, + double const* DL, + double const* D, + double const* DU, + double const* DU2, lapack_int const* ipiv, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgtcon(...) LAPACK_dgtcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgtcon(...) LAPACK_dgtcon_base(__VA_ARGS__) +#endif + +#define LAPACK_sgtcon_base LAPACK_GLOBAL(sgtcon,SGTCON) +void LAPACK_sgtcon_base( + char const* norm, + lapack_int const* n, + float const* DL, + float const* D, + float const* DU, + float const* DU2, lapack_int const* ipiv, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgtcon(...) LAPACK_sgtcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgtcon(...) LAPACK_sgtcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zgtcon_base LAPACK_GLOBAL(zgtcon,ZGTCON) +void LAPACK_zgtcon_base( + char const* norm, + lapack_int const* n, + lapack_complex_double const* DL, + lapack_complex_double const* D, + lapack_complex_double const* DU, + lapack_complex_double const* DU2, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgtcon(...) LAPACK_zgtcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgtcon(...) LAPACK_zgtcon_base(__VA_ARGS__) +#endif + +#define LAPACK_cgtrfs_base LAPACK_GLOBAL(cgtrfs,CGTRFS) +void LAPACK_cgtrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* DL, + lapack_complex_float const* D, + lapack_complex_float const* DU, + lapack_complex_float const* DLF, + lapack_complex_float const* DF, + lapack_complex_float const* DUF, + lapack_complex_float const* DU2, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgtrfs(...) LAPACK_cgtrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgtrfs(...) LAPACK_cgtrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgtrfs_base LAPACK_GLOBAL(dgtrfs,DGTRFS) +void LAPACK_dgtrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double const* DL, + double const* D, + double const* DU, + double const* DLF, + double const* DF, + double const* DUF, + double const* DU2, lapack_int const* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgtrfs(...) LAPACK_dgtrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgtrfs(...) LAPACK_dgtrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgtrfs_base LAPACK_GLOBAL(sgtrfs,SGTRFS) +void LAPACK_sgtrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float const* DL, + float const* D, + float const* DU, + float const* DLF, + float const* DF, + float const* DUF, + float const* DU2, lapack_int const* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgtrfs(...) LAPACK_sgtrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgtrfs(...) LAPACK_sgtrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgtrfs_base LAPACK_GLOBAL(zgtrfs,ZGTRFS) +void LAPACK_zgtrfs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* DL, + lapack_complex_double const* D, + lapack_complex_double const* DU, + lapack_complex_double const* DLF, + lapack_complex_double const* DF, + lapack_complex_double const* DUF, + lapack_complex_double const* DU2, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgtrfs(...) LAPACK_zgtrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgtrfs(...) LAPACK_zgtrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cgtsv LAPACK_GLOBAL(cgtsv,CGTSV) +void LAPACK_cgtsv( + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* DL, + lapack_complex_float* D, + lapack_complex_float* DU, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_dgtsv LAPACK_GLOBAL(dgtsv,DGTSV) +void LAPACK_dgtsv( + lapack_int const* n, lapack_int const* nrhs, + double* DL, + double* D, + double* DU, + double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_sgtsv LAPACK_GLOBAL(sgtsv,SGTSV) +void LAPACK_sgtsv( + lapack_int const* n, lapack_int const* nrhs, + float* DL, + float* D, + float* DU, + float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_zgtsv LAPACK_GLOBAL(zgtsv,ZGTSV) +void LAPACK_zgtsv( + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* DL, + lapack_complex_double* D, + lapack_complex_double* DU, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_cgtsvx_base LAPACK_GLOBAL(cgtsvx,CGTSVX) +void LAPACK_cgtsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* DL, + lapack_complex_float const* D, + lapack_complex_float const* DU, + lapack_complex_float* DLF, + lapack_complex_float* DF, + lapack_complex_float* DUF, + lapack_complex_float* DU2, lapack_int* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgtsvx(...) LAPACK_cgtsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cgtsvx(...) LAPACK_cgtsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dgtsvx_base LAPACK_GLOBAL(dgtsvx,DGTSVX) +void LAPACK_dgtsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double const* DL, + double const* D, + double const* DU, + double* DLF, + double* DF, + double* DUF, + double* DU2, lapack_int* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgtsvx(...) LAPACK_dgtsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dgtsvx(...) LAPACK_dgtsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sgtsvx_base LAPACK_GLOBAL(sgtsvx,SGTSVX) +void LAPACK_sgtsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float const* DL, + float const* D, + float const* DU, + float* DLF, + float* DF, + float* DUF, + float* DU2, lapack_int* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgtsvx(...) LAPACK_sgtsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sgtsvx(...) LAPACK_sgtsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zgtsvx_base LAPACK_GLOBAL(zgtsvx,ZGTSVX) +void LAPACK_zgtsvx_base( + char const* fact, char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* DL, + lapack_complex_double const* D, + lapack_complex_double const* DU, + lapack_complex_double* DLF, + lapack_complex_double* DF, + lapack_complex_double* DUF, + lapack_complex_double* DU2, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgtsvx(...) LAPACK_zgtsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zgtsvx(...) LAPACK_zgtsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cgttrf LAPACK_GLOBAL(cgttrf,CGTTRF) +void LAPACK_cgttrf( + lapack_int const* n, + lapack_complex_float* DL, + lapack_complex_float* D, + lapack_complex_float* DU, + lapack_complex_float* DU2, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_dgttrf LAPACK_GLOBAL(dgttrf,DGTTRF) +void LAPACK_dgttrf( + lapack_int const* n, + double* DL, + double* D, + double* DU, + double* DU2, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_sgttrf LAPACK_GLOBAL(sgttrf,SGTTRF) +void LAPACK_sgttrf( + lapack_int const* n, + float* DL, + float* D, + float* DU, + float* DU2, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_zgttrf LAPACK_GLOBAL(zgttrf,ZGTTRF) +void LAPACK_zgttrf( + lapack_int const* n, + lapack_complex_double* DL, + lapack_complex_double* D, + lapack_complex_double* DU, + lapack_complex_double* DU2, lapack_int* ipiv, + lapack_int* info ); + +#define LAPACK_cgttrs_base LAPACK_GLOBAL(cgttrs,CGTTRS) +void LAPACK_cgttrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* DL, + lapack_complex_float const* D, + lapack_complex_float const* DU, + lapack_complex_float const* DU2, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cgttrs(...) LAPACK_cgttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cgttrs(...) LAPACK_cgttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dgttrs_base LAPACK_GLOBAL(dgttrs,DGTTRS) +void LAPACK_dgttrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + double const* DL, + double const* D, + double const* DU, + double const* DU2, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dgttrs(...) LAPACK_dgttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dgttrs(...) LAPACK_dgttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_sgttrs_base LAPACK_GLOBAL(sgttrs,SGTTRS) +void LAPACK_sgttrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + float const* DL, + float const* D, + float const* DU, + float const* DU2, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sgttrs(...) LAPACK_sgttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sgttrs(...) LAPACK_sgttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zgttrs_base LAPACK_GLOBAL(zgttrs,ZGTTRS) +void LAPACK_zgttrs_base( + char const* trans, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* DL, + lapack_complex_double const* D, + lapack_complex_double const* DU, + lapack_complex_double const* DU2, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zgttrs(...) LAPACK_zgttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zgttrs(...) LAPACK_zgttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_chbev_base LAPACK_GLOBAL(chbev,CHBEV) +void LAPACK_chbev_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbev(...) LAPACK_chbev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbev(...) LAPACK_chbev_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbev_base LAPACK_GLOBAL(zhbev,ZHBEV) +void LAPACK_zhbev_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbev(...) LAPACK_zhbev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbev(...) LAPACK_zhbev_base(__VA_ARGS__) +#endif + +#define LAPACK_chbev_2stage_base LAPACK_GLOBAL(chbev_2stage,CHBEV_2STAGE) +void LAPACK_chbev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbev_2stage(...) LAPACK_chbev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbev_2stage(...) LAPACK_chbev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbev_2stage_base LAPACK_GLOBAL(zhbev_2stage,ZHBEV_2STAGE) +void LAPACK_zhbev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbev_2stage(...) LAPACK_zhbev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbev_2stage(...) LAPACK_zhbev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chbevd_base LAPACK_GLOBAL(chbevd,CHBEVD) +void LAPACK_chbevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbevd(...) LAPACK_chbevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbevd(...) LAPACK_chbevd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbevd_base LAPACK_GLOBAL(zhbevd,ZHBEVD) +void LAPACK_zhbevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbevd(...) LAPACK_zhbevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbevd(...) LAPACK_zhbevd_base(__VA_ARGS__) +#endif + +#define LAPACK_chbevd_2stage_base LAPACK_GLOBAL(chbevd_2stage,CHBEVD_2STAGE) +void LAPACK_chbevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbevd_2stage(...) LAPACK_chbevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbevd_2stage(...) LAPACK_chbevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbevd_2stage_base LAPACK_GLOBAL(zhbevd_2stage,ZHBEVD_2STAGE) +void LAPACK_zhbevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbevd_2stage(...) LAPACK_zhbevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbevd_2stage(...) LAPACK_zhbevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chbevx_base LAPACK_GLOBAL(chbevx,CHBEVX) +void LAPACK_chbevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbevx(...) LAPACK_chbevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chbevx(...) LAPACK_chbevx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbevx_base LAPACK_GLOBAL(zhbevx,ZHBEVX) +void LAPACK_zhbevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbevx(...) LAPACK_zhbevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhbevx(...) LAPACK_zhbevx_base(__VA_ARGS__) +#endif + +#define LAPACK_chbevx_2stage_base LAPACK_GLOBAL(chbevx_2stage,CHBEVX_2STAGE) +void LAPACK_chbevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbevx_2stage(...) LAPACK_chbevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chbevx_2stage(...) LAPACK_chbevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbevx_2stage_base LAPACK_GLOBAL(zhbevx_2stage,ZHBEVX_2STAGE) +void LAPACK_zhbevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbevx_2stage(...) LAPACK_zhbevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhbevx_2stage(...) LAPACK_zhbevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chbgst_base LAPACK_GLOBAL(chbgst,CHBGST) +void LAPACK_chbgst_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float const* BB, lapack_int const* ldbb, + lapack_complex_float* X, lapack_int const* ldx, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbgst(...) LAPACK_chbgst_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbgst(...) LAPACK_chbgst_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbgst_base LAPACK_GLOBAL(zhbgst,ZHBGST) +void LAPACK_zhbgst_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double const* BB, lapack_int const* ldbb, + lapack_complex_double* X, lapack_int const* ldx, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbgst(...) LAPACK_zhbgst_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbgst(...) LAPACK_zhbgst_base(__VA_ARGS__) +#endif + +#define LAPACK_chbgv_base LAPACK_GLOBAL(chbgv,CHBGV) +void LAPACK_chbgv_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* BB, lapack_int const* ldbb, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbgv(...) LAPACK_chbgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbgv(...) LAPACK_chbgv_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbgv_base LAPACK_GLOBAL(zhbgv,ZHBGV) +void LAPACK_zhbgv_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* BB, lapack_int const* ldbb, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbgv(...) LAPACK_zhbgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbgv(...) LAPACK_zhbgv_base(__VA_ARGS__) +#endif + +#define LAPACK_chbgvd_base LAPACK_GLOBAL(chbgvd,CHBGVD) +void LAPACK_chbgvd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* BB, lapack_int const* ldbb, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbgvd(...) LAPACK_chbgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbgvd(...) LAPACK_chbgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbgvd_base LAPACK_GLOBAL(zhbgvd,ZHBGVD) +void LAPACK_zhbgvd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* BB, lapack_int const* ldbb, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbgvd(...) LAPACK_zhbgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbgvd(...) LAPACK_zhbgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_chbgvx_base LAPACK_GLOBAL(chbgvx,CHBGVX) +void LAPACK_chbgvx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* BB, lapack_int const* ldbb, + lapack_complex_float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbgvx(...) LAPACK_chbgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chbgvx(...) LAPACK_chbgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbgvx_base LAPACK_GLOBAL(zhbgvx,ZHBGVX) +void LAPACK_zhbgvx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* BB, lapack_int const* ldbb, + lapack_complex_double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbgvx(...) LAPACK_zhbgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhbgvx(...) LAPACK_zhbgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_chbtrd_base LAPACK_GLOBAL(chbtrd,CHBTRD) +void LAPACK_chbtrd_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + float* D, + float* E, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chbtrd(...) LAPACK_chbtrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chbtrd(...) LAPACK_chbtrd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhbtrd_base LAPACK_GLOBAL(zhbtrd,ZHBTRD) +void LAPACK_zhbtrd_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + double* D, + double* E, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhbtrd(...) LAPACK_zhbtrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhbtrd(...) LAPACK_zhbtrd_base(__VA_ARGS__) +#endif + +#define LAPACK_checon_base LAPACK_GLOBAL(checon,CHECON) +void LAPACK_checon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_checon(...) LAPACK_checon_base(__VA_ARGS__, 1) +#else + #define LAPACK_checon(...) LAPACK_checon_base(__VA_ARGS__) +#endif + +#define LAPACK_zhecon_base LAPACK_GLOBAL(zhecon,ZHECON) +void LAPACK_zhecon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhecon(...) LAPACK_zhecon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhecon(...) LAPACK_zhecon_base(__VA_ARGS__) +#endif + +#define LAPACK_checon_3_base LAPACK_GLOBAL(checon_3,CHECON_3) +void LAPACK_checon_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_checon_3(...) LAPACK_checon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_checon_3(...) LAPACK_checon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zhecon_3_base LAPACK_GLOBAL(zhecon_3,ZHECON_3) +void LAPACK_zhecon_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhecon_3(...) LAPACK_zhecon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhecon_3(...) LAPACK_zhecon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_cheequb_base LAPACK_GLOBAL(cheequb,CHEEQUB) +void LAPACK_cheequb_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheequb(...) LAPACK_cheequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_cheequb(...) LAPACK_cheequb_base(__VA_ARGS__) +#endif + +#define LAPACK_zheequb_base LAPACK_GLOBAL(zheequb,ZHEEQUB) +void LAPACK_zheequb_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheequb(...) LAPACK_zheequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_zheequb(...) LAPACK_zheequb_base(__VA_ARGS__) +#endif + +#define LAPACK_cheev_base LAPACK_GLOBAL(cheev,CHEEV) +void LAPACK_cheev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheev(...) LAPACK_cheev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cheev(...) LAPACK_cheev_base(__VA_ARGS__) +#endif + +#define LAPACK_zheev_base LAPACK_GLOBAL(zheev,ZHEEV) +void LAPACK_zheev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheev(...) LAPACK_zheev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zheev(...) LAPACK_zheev_base(__VA_ARGS__) +#endif + +#define LAPACK_cheev_2stage_base LAPACK_GLOBAL(cheev_2stage,CHEEV_2STAGE) +void LAPACK_cheev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheev_2stage(...) LAPACK_cheev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cheev_2stage(...) LAPACK_cheev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zheev_2stage_base LAPACK_GLOBAL(zheev_2stage,ZHEEV_2STAGE) +void LAPACK_zheev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheev_2stage(...) LAPACK_zheev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zheev_2stage(...) LAPACK_zheev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevd_base LAPACK_GLOBAL(cheevd,CHEEVD) +void LAPACK_cheevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevd(...) LAPACK_cheevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cheevd(...) LAPACK_cheevd_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevd_base LAPACK_GLOBAL(zheevd,ZHEEVD) +void LAPACK_zheevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevd(...) LAPACK_zheevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zheevd(...) LAPACK_zheevd_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevd_2stage_base LAPACK_GLOBAL(cheevd_2stage,CHEEVD_2STAGE) +void LAPACK_cheevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevd_2stage(...) LAPACK_cheevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cheevd_2stage(...) LAPACK_cheevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevd_2stage_base LAPACK_GLOBAL(zheevd_2stage,ZHEEVD_2STAGE) +void LAPACK_zheevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevd_2stage(...) LAPACK_zheevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zheevd_2stage(...) LAPACK_zheevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevr_base LAPACK_GLOBAL(cheevr,CHEEVR) +void LAPACK_cheevr_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevr(...) LAPACK_cheevr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cheevr(...) LAPACK_cheevr_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevr_base LAPACK_GLOBAL(zheevr,ZHEEVR) +void LAPACK_zheevr_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevr(...) LAPACK_zheevr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zheevr(...) LAPACK_zheevr_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevr_2stage_base LAPACK_GLOBAL(cheevr_2stage,CHEEVR_2STAGE) +void LAPACK_cheevr_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevr_2stage(...) LAPACK_cheevr_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cheevr_2stage(...) LAPACK_cheevr_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevr_2stage_base LAPACK_GLOBAL(zheevr_2stage,ZHEEVR_2STAGE) +void LAPACK_zheevr_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevr_2stage(...) LAPACK_zheevr_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zheevr_2stage(...) LAPACK_zheevr_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevx_base LAPACK_GLOBAL(cheevx,CHEEVX) +void LAPACK_cheevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevx(...) LAPACK_cheevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cheevx(...) LAPACK_cheevx_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevx_base LAPACK_GLOBAL(zheevx,ZHEEVX) +void LAPACK_zheevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevx(...) LAPACK_zheevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zheevx(...) LAPACK_zheevx_base(__VA_ARGS__) +#endif + +#define LAPACK_cheevx_2stage_base LAPACK_GLOBAL(cheevx_2stage,CHEEVX_2STAGE) +void LAPACK_cheevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheevx_2stage(...) LAPACK_cheevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cheevx_2stage(...) LAPACK_cheevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zheevx_2stage_base LAPACK_GLOBAL(zheevx_2stage,ZHEEVX_2STAGE) +void LAPACK_zheevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheevx_2stage(...) LAPACK_zheevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zheevx_2stage(...) LAPACK_zheevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chegst_base LAPACK_GLOBAL(chegst,CHEGST) +void LAPACK_chegst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + const lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chegst(...) LAPACK_chegst_base(__VA_ARGS__, 1) +#else + #define LAPACK_chegst(...) LAPACK_chegst_base(__VA_ARGS__) +#endif + +#define LAPACK_zhegst_base LAPACK_GLOBAL(zhegst,ZHEGST) +void LAPACK_zhegst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + const lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhegst(...) LAPACK_zhegst_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhegst(...) LAPACK_zhegst_base(__VA_ARGS__) +#endif + +#define LAPACK_chegv_base LAPACK_GLOBAL(chegv,CHEGV) +void LAPACK_chegv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chegv(...) LAPACK_chegv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chegv(...) LAPACK_chegv_base(__VA_ARGS__) +#endif + +#define LAPACK_zhegv_base LAPACK_GLOBAL(zhegv,ZHEGV) +void LAPACK_zhegv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhegv(...) LAPACK_zhegv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhegv(...) LAPACK_zhegv_base(__VA_ARGS__) +#endif + +#define LAPACK_chegv_2stage_base LAPACK_GLOBAL(chegv_2stage,CHEGV_2STAGE) +void LAPACK_chegv_2stage_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chegv_2stage(...) LAPACK_chegv_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chegv_2stage(...) LAPACK_chegv_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhegv_2stage_base LAPACK_GLOBAL(zhegv_2stage,ZHEGV_2STAGE) +void LAPACK_zhegv_2stage_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhegv_2stage(...) LAPACK_zhegv_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhegv_2stage(...) LAPACK_zhegv_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chegvd_base LAPACK_GLOBAL(chegvd,CHEGVD) +void LAPACK_chegvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float* W, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chegvd(...) LAPACK_chegvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chegvd(...) LAPACK_chegvd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhegvd_base LAPACK_GLOBAL(zhegvd,ZHEGVD) +void LAPACK_zhegvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double* W, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhegvd(...) LAPACK_zhegvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhegvd(...) LAPACK_zhegvd_base(__VA_ARGS__) +#endif + +#define LAPACK_chegvx_base LAPACK_GLOBAL(chegvx,CHEGVX) +void LAPACK_chegvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chegvx(...) LAPACK_chegvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chegvx(...) LAPACK_chegvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhegvx_base LAPACK_GLOBAL(zhegvx,ZHEGVX) +void LAPACK_zhegvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhegvx(...) LAPACK_zhegvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhegvx(...) LAPACK_zhegvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cherfs_base LAPACK_GLOBAL(cherfs,CHERFS) +void LAPACK_cherfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cherfs(...) LAPACK_cherfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cherfs(...) LAPACK_cherfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zherfs_base LAPACK_GLOBAL(zherfs,ZHERFS) +void LAPACK_zherfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zherfs(...) LAPACK_zherfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zherfs(...) LAPACK_zherfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cherfsx_base LAPACK_GLOBAL(cherfsx,CHERFSX) +void LAPACK_cherfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const float* S, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cherfsx(...) LAPACK_cherfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cherfsx(...) LAPACK_cherfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_zherfsx_base LAPACK_GLOBAL(zherfsx,ZHERFSX) +void LAPACK_zherfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const double* S, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zherfsx(...) LAPACK_zherfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zherfsx(...) LAPACK_zherfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_chesv_base LAPACK_GLOBAL(chesv,CHESV) +void LAPACK_chesv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesv(...) LAPACK_chesv_base(__VA_ARGS__, 1) +#else + #define LAPACK_chesv(...) LAPACK_chesv_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesv_base LAPACK_GLOBAL(zhesv,ZHESV) +void LAPACK_zhesv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesv(...) LAPACK_zhesv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhesv(...) LAPACK_zhesv_base(__VA_ARGS__) +#endif + +#define LAPACK_chesv_aa_base LAPACK_GLOBAL(chesv_aa,CHESV_AA) +void LAPACK_chesv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesv_aa(...) LAPACK_chesv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_chesv_aa(...) LAPACK_chesv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesv_aa_base LAPACK_GLOBAL(zhesv_aa,ZHESV_AA) +void LAPACK_zhesv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesv_aa(...) LAPACK_zhesv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhesv_aa(...) LAPACK_zhesv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_chesv_aa_2stage_base LAPACK_GLOBAL(chesv_aa_2stage,CHESV_AA_2STAGE) +void LAPACK_chesv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesv_aa_2stage(...) LAPACK_chesv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_chesv_aa_2stage(...) LAPACK_chesv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesv_aa_2stage_base LAPACK_GLOBAL(zhesv_aa_2stage,ZHESV_AA_2STAGE) +void LAPACK_zhesv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesv_aa_2stage(...) LAPACK_zhesv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhesv_aa_2stage(...) LAPACK_zhesv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chesv_rk_base LAPACK_GLOBAL(chesv_rk,CHESV_RK) +void LAPACK_chesv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* E, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesv_rk(...) LAPACK_chesv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_chesv_rk(...) LAPACK_chesv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesv_rk_base LAPACK_GLOBAL(zhesv_rk,ZHESV_RK) +void LAPACK_zhesv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* E, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesv_rk(...) LAPACK_zhesv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhesv_rk(...) LAPACK_zhesv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_chesv_rook_base LAPACK_GLOBAL(chesv_rook,CHESV_ROOK) +void LAPACK_chesv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesv_rook(...) LAPACK_chesv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_chesv_rook(...) LAPACK_chesv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesv_rook_base LAPACK_GLOBAL(zhesv_rook,ZHESV_ROOK) +void LAPACK_zhesv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesv_rook(...) LAPACK_zhesv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhesv_rook(...) LAPACK_zhesv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_chesvx_base LAPACK_GLOBAL(chesvx,CHESVX) +void LAPACK_chesvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesvx(...) LAPACK_chesvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chesvx(...) LAPACK_chesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesvx_base LAPACK_GLOBAL(zhesvx,ZHESVX) +void LAPACK_zhesvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesvx(...) LAPACK_zhesvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhesvx(...) LAPACK_zhesvx_base(__VA_ARGS__) +#endif + +#define LAPACK_chesvxx_base LAPACK_GLOBAL(chesvxx,CHESVXX) +void LAPACK_chesvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chesvxx(...) LAPACK_chesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chesvxx(...) LAPACK_chesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhesvxx_base LAPACK_GLOBAL(zhesvxx,ZHESVXX) +void LAPACK_zhesvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhesvxx(...) LAPACK_zhesvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhesvxx(...) LAPACK_zhesvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_cheswapr_base LAPACK_GLOBAL(cheswapr,CHESWAPR) +void LAPACK_cheswapr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cheswapr(...) LAPACK_cheswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cheswapr(...) LAPACK_cheswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_zheswapr_base LAPACK_GLOBAL(zheswapr,ZHESWAPR) +void LAPACK_zheswapr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zheswapr(...) LAPACK_zheswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zheswapr(...) LAPACK_zheswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrd_base LAPACK_GLOBAL(chetrd,CHETRD) +void LAPACK_chetrd_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* D, + float* E, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrd(...) LAPACK_chetrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrd(...) LAPACK_chetrd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrd_base LAPACK_GLOBAL(zhetrd,ZHETRD) +void LAPACK_zhetrd_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* D, + double* E, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrd(...) LAPACK_zhetrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrd(...) LAPACK_zhetrd_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrd_2stage_base LAPACK_GLOBAL(chetrd_2stage,CHETRD_2STAGE) +void LAPACK_chetrd_2stage_base( + char const* vect, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + float* D, + float* E, + lapack_complex_float* tau, + lapack_complex_float* HOUS2, lapack_int const* lhous2, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrd_2stage(...) LAPACK_chetrd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chetrd_2stage(...) LAPACK_chetrd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrd_2stage_base LAPACK_GLOBAL(zhetrd_2stage,ZHETRD_2STAGE) +void LAPACK_zhetrd_2stage_base( + char const* vect, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + double* D, + double* E, + lapack_complex_double* tau, + lapack_complex_double* HOUS2, lapack_int const* lhous2, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrd_2stage(...) LAPACK_zhetrd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhetrd_2stage(...) LAPACK_zhetrd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrf_base LAPACK_GLOBAL(chetrf,CHETRF) +void LAPACK_chetrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrf(...) LAPACK_chetrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrf(...) LAPACK_chetrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrf_base LAPACK_GLOBAL(zhetrf,ZHETRF) +void LAPACK_zhetrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrf(...) LAPACK_zhetrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrf(...) LAPACK_zhetrf_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrf_aa_base LAPACK_GLOBAL(chetrf_aa,CHETRF_AA) +void LAPACK_chetrf_aa_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrf_aa(...) LAPACK_chetrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrf_aa(...) LAPACK_chetrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrf_aa_base LAPACK_GLOBAL(zhetrf_aa,ZHETRF_AA) +void LAPACK_zhetrf_aa_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrf_aa(...) LAPACK_zhetrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrf_aa(...) LAPACK_zhetrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrf_aa_2stage_base LAPACK_GLOBAL(chetrf_aa_2stage,CHETRF_AA_2STAGE) +void LAPACK_chetrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrf_aa_2stage(...) LAPACK_chetrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrf_aa_2stage(...) LAPACK_chetrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrf_aa_2stage_base LAPACK_GLOBAL(zhetrf_aa_2stage,ZHETRF_AA_2STAGE) +void LAPACK_zhetrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrf_aa_2stage(...) LAPACK_zhetrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrf_aa_2stage(...) LAPACK_zhetrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrf_rk_base LAPACK_GLOBAL(chetrf_rk,CHETRF_RK) +void LAPACK_chetrf_rk_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* E, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrf_rk(...) LAPACK_chetrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrf_rk(...) LAPACK_chetrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrf_rk_base LAPACK_GLOBAL(zhetrf_rk,ZHETRF_RK) +void LAPACK_zhetrf_rk_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* E, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrf_rk(...) LAPACK_zhetrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrf_rk(...) LAPACK_zhetrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrf_rook_base LAPACK_GLOBAL(chetrf_rook,CHETRF_ROOK) +void LAPACK_chetrf_rook_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrf_rook(...) LAPACK_chetrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrf_rook(...) LAPACK_chetrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrf_rook_base LAPACK_GLOBAL(zhetrf_rook,ZHETRF_ROOK) +void LAPACK_zhetrf_rook_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrf_rook(...) LAPACK_zhetrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrf_rook(...) LAPACK_zhetrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_chetri_base LAPACK_GLOBAL(chetri,CHETRI) +void LAPACK_chetri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetri(...) LAPACK_chetri_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetri(...) LAPACK_chetri_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetri_base LAPACK_GLOBAL(zhetri,ZHETRI) +void LAPACK_zhetri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetri(...) LAPACK_zhetri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetri(...) LAPACK_zhetri_base(__VA_ARGS__) +#endif + +#define LAPACK_chetri2_base LAPACK_GLOBAL(chetri2,CHETRI2) +void LAPACK_chetri2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetri2(...) LAPACK_chetri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetri2(...) LAPACK_chetri2_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetri2_base LAPACK_GLOBAL(zhetri2,ZHETRI2) +void LAPACK_zhetri2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetri2(...) LAPACK_zhetri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetri2(...) LAPACK_zhetri2_base(__VA_ARGS__) +#endif + +#define LAPACK_chetri2x_base LAPACK_GLOBAL(chetri2x,CHETRI2X) +void LAPACK_chetri2x_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetri2x(...) LAPACK_chetri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetri2x(...) LAPACK_chetri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetri2x_base LAPACK_GLOBAL(zhetri2x,ZHETRI2X) +void LAPACK_zhetri2x_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetri2x(...) LAPACK_zhetri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetri2x(...) LAPACK_zhetri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_chetri_3_base LAPACK_GLOBAL(chetri_3,CHETRI_3) +void LAPACK_chetri_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetri_3(...) LAPACK_chetri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetri_3(...) LAPACK_chetri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetri_3_base LAPACK_GLOBAL(zhetri_3,ZHETRI_3) +void LAPACK_zhetri_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetri_3(...) LAPACK_zhetri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetri_3(...) LAPACK_zhetri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs_base LAPACK_GLOBAL(chetrs,CHETRS) +void LAPACK_chetrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs(...) LAPACK_chetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs(...) LAPACK_chetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs_base LAPACK_GLOBAL(zhetrs,ZHETRS) +void LAPACK_zhetrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs(...) LAPACK_zhetrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs(...) LAPACK_zhetrs_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs2_base LAPACK_GLOBAL(chetrs2,CHETRS2) +void LAPACK_chetrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs2(...) LAPACK_chetrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs2(...) LAPACK_chetrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs2_base LAPACK_GLOBAL(zhetrs2,ZHETRS2) +void LAPACK_zhetrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs2(...) LAPACK_zhetrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs2(...) LAPACK_zhetrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs_3_base LAPACK_GLOBAL(chetrs_3,CHETRS_3) +void LAPACK_chetrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs_3(...) LAPACK_chetrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs_3(...) LAPACK_chetrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs_3_base LAPACK_GLOBAL(zhetrs_3,ZHETRS_3) +void LAPACK_zhetrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs_3(...) LAPACK_zhetrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs_3(...) LAPACK_zhetrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs_aa_base LAPACK_GLOBAL(chetrs_aa,CHETRS_AA) +void LAPACK_chetrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs_aa(...) LAPACK_chetrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs_aa(...) LAPACK_chetrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs_aa_base LAPACK_GLOBAL(zhetrs_aa,ZHETRS_AA) +void LAPACK_zhetrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs_aa(...) LAPACK_zhetrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs_aa(...) LAPACK_zhetrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs_aa_2stage_base LAPACK_GLOBAL(chetrs_aa_2stage,CHETRS_AA_2STAGE) +void LAPACK_chetrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs_aa_2stage(...) LAPACK_chetrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs_aa_2stage(...) LAPACK_chetrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs_aa_2stage_base LAPACK_GLOBAL(zhetrs_aa_2stage,ZHETRS_AA_2STAGE) +void LAPACK_zhetrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs_aa_2stage(...) LAPACK_zhetrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs_aa_2stage(...) LAPACK_zhetrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_chetrs_rook_base LAPACK_GLOBAL(chetrs_rook,CHETRS_ROOK) +void LAPACK_chetrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chetrs_rook(...) LAPACK_chetrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_chetrs_rook(...) LAPACK_chetrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zhetrs_rook_base LAPACK_GLOBAL(zhetrs_rook,ZHETRS_ROOK) +void LAPACK_zhetrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhetrs_rook(...) LAPACK_zhetrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhetrs_rook(...) LAPACK_zhetrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_chfrk_base LAPACK_GLOBAL(chfrk,CHFRK) +void LAPACK_chfrk_base( + char const* transr, char const* uplo, char const* trans, + lapack_int const* n, lapack_int const* k, + float const* alpha, + lapack_complex_float const* A, lapack_int const* lda, + float const* beta, + lapack_complex_float* C +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chfrk(...) LAPACK_chfrk_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chfrk(...) LAPACK_chfrk_base(__VA_ARGS__) +#endif + +#define LAPACK_zhfrk_base LAPACK_GLOBAL(zhfrk,ZHFRK) +void LAPACK_zhfrk_base( + char const* transr, char const* uplo, char const* trans, + lapack_int const* n, lapack_int const* k, + double const* alpha, + lapack_complex_double const* A, lapack_int const* lda, + double const* beta, + lapack_complex_double* C +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhfrk(...) LAPACK_zhfrk_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhfrk(...) LAPACK_zhfrk_base(__VA_ARGS__) +#endif + +#define LAPACK_chgeqz_base LAPACK_GLOBAL(chgeqz,CHGEQZ) +void LAPACK_chgeqz_base( + char const* job, char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* H, lapack_int const* ldh, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chgeqz(...) LAPACK_chgeqz_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chgeqz(...) LAPACK_chgeqz_base(__VA_ARGS__) +#endif + +#define LAPACK_dhgeqz_base LAPACK_GLOBAL(dhgeqz,DHGEQZ) +void LAPACK_dhgeqz_base( + char const* job, char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* H, lapack_int const* ldh, + double* T, lapack_int const* ldt, + double* alphar, + double* alphai, + double* beta, + double* Q, lapack_int const* ldq, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dhgeqz(...) LAPACK_dhgeqz_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dhgeqz(...) LAPACK_dhgeqz_base(__VA_ARGS__) +#endif + +#define LAPACK_shgeqz_base LAPACK_GLOBAL(shgeqz,SHGEQZ) +void LAPACK_shgeqz_base( + char const* job, char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* H, lapack_int const* ldh, + float* T, lapack_int const* ldt, + float* alphar, + float* alphai, + float* beta, + float* Q, lapack_int const* ldq, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_shgeqz(...) LAPACK_shgeqz_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_shgeqz(...) LAPACK_shgeqz_base(__VA_ARGS__) +#endif + +#define LAPACK_zhgeqz_base LAPACK_GLOBAL(zhgeqz,ZHGEQZ) +void LAPACK_zhgeqz_base( + char const* job, char const* compq, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* H, lapack_int const* ldh, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhgeqz(...) LAPACK_zhgeqz_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhgeqz(...) LAPACK_zhgeqz_base(__VA_ARGS__) +#endif + +#define LAPACK_chpcon_base LAPACK_GLOBAL(chpcon,CHPCON) +void LAPACK_chpcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpcon(...) LAPACK_chpcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_chpcon(...) LAPACK_chpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpcon_base LAPACK_GLOBAL(zhpcon,ZHPCON) +void LAPACK_zhpcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpcon(...) LAPACK_zhpcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhpcon(...) LAPACK_zhpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_chpev_base LAPACK_GLOBAL(chpev,CHPEV) +void LAPACK_chpev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpev(...) LAPACK_chpev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chpev(...) LAPACK_chpev_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpev_base LAPACK_GLOBAL(zhpev,ZHPEV) +void LAPACK_zhpev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpev(...) LAPACK_zhpev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhpev(...) LAPACK_zhpev_base(__VA_ARGS__) +#endif + +#define LAPACK_chpevd_base LAPACK_GLOBAL(chpevd,CHPEVD) +void LAPACK_chpevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpevd(...) LAPACK_chpevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chpevd(...) LAPACK_chpevd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpevd_base LAPACK_GLOBAL(zhpevd,ZHPEVD) +void LAPACK_zhpevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpevd(...) LAPACK_zhpevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhpevd(...) LAPACK_zhpevd_base(__VA_ARGS__) +#endif + +#define LAPACK_chpevx_base LAPACK_GLOBAL(chpevx,CHPEVX) +void LAPACK_chpevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpevx(...) LAPACK_chpevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chpevx(...) LAPACK_chpevx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpevx_base LAPACK_GLOBAL(zhpevx,ZHPEVX) +void LAPACK_zhpevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpevx(...) LAPACK_zhpevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhpevx(...) LAPACK_zhpevx_base(__VA_ARGS__) +#endif + +#define LAPACK_chpgst_base LAPACK_GLOBAL(chpgst,CHPGST) +void LAPACK_chpgst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_complex_float const* BP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpgst(...) LAPACK_chpgst_base(__VA_ARGS__, 1) +#else + #define LAPACK_chpgst(...) LAPACK_chpgst_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpgst_base LAPACK_GLOBAL(zhpgst,ZHPGST) +void LAPACK_zhpgst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_complex_double const* BP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpgst(...) LAPACK_zhpgst_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhpgst(...) LAPACK_zhpgst_base(__VA_ARGS__) +#endif + +#define LAPACK_chpgv_base LAPACK_GLOBAL(chpgv,CHPGV) +void LAPACK_chpgv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_complex_float* BP, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpgv(...) LAPACK_chpgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chpgv(...) LAPACK_chpgv_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpgv_base LAPACK_GLOBAL(zhpgv,ZHPGV) +void LAPACK_zhpgv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_complex_double* BP, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpgv(...) LAPACK_zhpgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhpgv(...) LAPACK_zhpgv_base(__VA_ARGS__) +#endif + +#define LAPACK_chpgvd_base LAPACK_GLOBAL(chpgvd,CHPGVD) +void LAPACK_chpgvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_complex_float* BP, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpgvd(...) LAPACK_chpgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chpgvd(...) LAPACK_chpgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpgvd_base LAPACK_GLOBAL(zhpgvd,ZHPGVD) +void LAPACK_zhpgvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_complex_double* BP, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpgvd(...) LAPACK_zhpgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhpgvd(...) LAPACK_zhpgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_chpgvx_base LAPACK_GLOBAL(chpgvx,CHPGVX) +void LAPACK_chpgvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_complex_float* BP, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, + float* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpgvx(...) LAPACK_chpgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chpgvx(...) LAPACK_chpgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpgvx_base LAPACK_GLOBAL(zhpgvx,ZHPGVX) +void LAPACK_zhpgvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_complex_double* BP, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, + double* rwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpgvx(...) LAPACK_zhpgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhpgvx(...) LAPACK_zhpgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_chprfs_base LAPACK_GLOBAL(chprfs,CHPRFS) +void LAPACK_chprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float const* AFP, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chprfs(...) LAPACK_chprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_chprfs(...) LAPACK_chprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zhprfs_base LAPACK_GLOBAL(zhprfs,ZHPRFS) +void LAPACK_zhprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double const* AFP, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhprfs(...) LAPACK_zhprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhprfs(...) LAPACK_zhprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_chpsv_base LAPACK_GLOBAL(chpsv,CHPSV) +void LAPACK_chpsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* AP, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpsv(...) LAPACK_chpsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_chpsv(...) LAPACK_chpsv_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpsv_base LAPACK_GLOBAL(zhpsv,ZHPSV) +void LAPACK_zhpsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* AP, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpsv(...) LAPACK_zhpsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhpsv(...) LAPACK_zhpsv_base(__VA_ARGS__) +#endif + +#define LAPACK_chpsvx_base LAPACK_GLOBAL(chpsvx,CHPSVX) +void LAPACK_chpsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float* AFP, lapack_int* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chpsvx(...) LAPACK_chpsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chpsvx(...) LAPACK_chpsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zhpsvx_base LAPACK_GLOBAL(zhpsvx,ZHPSVX) +void LAPACK_zhpsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double* AFP, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhpsvx(...) LAPACK_zhpsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhpsvx(...) LAPACK_zhpsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_chptrd_base LAPACK_GLOBAL(chptrd,CHPTRD) +void LAPACK_chptrd_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + float* D, + float* E, + lapack_complex_float* tau, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chptrd(...) LAPACK_chptrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_chptrd(...) LAPACK_chptrd_base(__VA_ARGS__) +#endif + +#define LAPACK_zhptrd_base LAPACK_GLOBAL(zhptrd,ZHPTRD) +void LAPACK_zhptrd_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + double* D, + double* E, + lapack_complex_double* tau, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhptrd(...) LAPACK_zhptrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhptrd(...) LAPACK_zhptrd_base(__VA_ARGS__) +#endif + +#define LAPACK_chptrf_base LAPACK_GLOBAL(chptrf,CHPTRF) +void LAPACK_chptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chptrf(...) LAPACK_chptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_chptrf(...) LAPACK_chptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zhptrf_base LAPACK_GLOBAL(zhptrf,ZHPTRF) +void LAPACK_zhptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhptrf(...) LAPACK_zhptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhptrf(...) LAPACK_zhptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_chptri_base LAPACK_GLOBAL(chptri,CHPTRI) +void LAPACK_chptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, lapack_int const* ipiv, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chptri(...) LAPACK_chptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_chptri(...) LAPACK_chptri_base(__VA_ARGS__) +#endif + +#define LAPACK_zhptri_base LAPACK_GLOBAL(zhptri,ZHPTRI) +void LAPACK_zhptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, lapack_int const* ipiv, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhptri(...) LAPACK_zhptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhptri(...) LAPACK_zhptri_base(__VA_ARGS__) +#endif + +#define LAPACK_chptrs_base LAPACK_GLOBAL(chptrs,CHPTRS) +void LAPACK_chptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chptrs(...) LAPACK_chptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_chptrs(...) LAPACK_chptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zhptrs_base LAPACK_GLOBAL(zhptrs,ZHPTRS) +void LAPACK_zhptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhptrs(...) LAPACK_zhptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zhptrs(...) LAPACK_zhptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_chsein_base LAPACK_GLOBAL(chsein,CHSEIN) +void LAPACK_chsein_base( + char const* side, char const* eigsrc, char const* initv, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float const* H, lapack_int const* ldh, + lapack_complex_float* W, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, + float* rwork, lapack_int* IFAILL, lapack_int* IFAILR, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chsein(...) LAPACK_chsein_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_chsein(...) LAPACK_chsein_base(__VA_ARGS__) +#endif + +#define LAPACK_dhsein_base LAPACK_GLOBAL(dhsein,DHSEIN) +void LAPACK_dhsein_base( + char const* side, char const* eigsrc, char const* initv, + lapack_logical* select, + lapack_int const* n, + double const* H, lapack_int const* ldh, + double* WR, + double const* WI, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + double* work, lapack_int* IFAILL, lapack_int* IFAILR, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dhsein(...) LAPACK_dhsein_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dhsein(...) LAPACK_dhsein_base(__VA_ARGS__) +#endif + +#define LAPACK_shsein_base LAPACK_GLOBAL(shsein,SHSEIN) +void LAPACK_shsein_base( + char const* side, char const* eigsrc, char const* initv, + lapack_logical* select, + lapack_int const* n, + float const* H, lapack_int const* ldh, + float* WR, + float const* WI, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + float* work, lapack_int* IFAILL, lapack_int* IFAILR, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_shsein(...) LAPACK_shsein_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_shsein(...) LAPACK_shsein_base(__VA_ARGS__) +#endif + +#define LAPACK_zhsein_base LAPACK_GLOBAL(zhsein,ZHSEIN) +void LAPACK_zhsein_base( + char const* side, char const* eigsrc, char const* initv, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double const* H, lapack_int const* ldh, + lapack_complex_double* W, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, + double* rwork, lapack_int* IFAILL, lapack_int* IFAILR, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhsein(...) LAPACK_zhsein_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zhsein(...) LAPACK_zhsein_base(__VA_ARGS__) +#endif + +#define LAPACK_chseqr_base LAPACK_GLOBAL(chseqr,CHSEQR) +void LAPACK_chseqr_base( + char const* job, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* H, lapack_int const* ldh, + lapack_complex_float* W, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_chseqr(...) LAPACK_chseqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_chseqr(...) LAPACK_chseqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dhseqr_base LAPACK_GLOBAL(dhseqr,DHSEQR) +void LAPACK_dhseqr_base( + char const* job, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* H, lapack_int const* ldh, + double* WR, + double* WI, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dhseqr(...) LAPACK_dhseqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dhseqr(...) LAPACK_dhseqr_base(__VA_ARGS__) +#endif + +#define LAPACK_shseqr_base LAPACK_GLOBAL(shseqr,SHSEQR) +void LAPACK_shseqr_base( + char const* job, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* H, lapack_int const* ldh, + float* WR, + float* WI, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_shseqr(...) LAPACK_shseqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_shseqr(...) LAPACK_shseqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zhseqr_base LAPACK_GLOBAL(zhseqr,ZHSEQR) +void LAPACK_zhseqr_base( + char const* job, char const* compz, + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* H, lapack_int const* ldh, + lapack_complex_double* W, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zhseqr(...) LAPACK_zhseqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zhseqr(...) LAPACK_zhseqr_base(__VA_ARGS__) +#endif + +#define LAPACK_clacgv LAPACK_GLOBAL(clacgv,CLACGV) +void LAPACK_clacgv( + lapack_int const* n, + lapack_complex_float* X, lapack_int const* incx ); + +#define LAPACK_zlacgv LAPACK_GLOBAL(zlacgv,ZLACGV) +void LAPACK_zlacgv( + lapack_int const* n, + lapack_complex_double* X, lapack_int const* incx ); + +#define LAPACK_clacn2 LAPACK_GLOBAL(clacn2,CLACN2) +void LAPACK_clacn2( + lapack_int const* n, + lapack_complex_float* V, + lapack_complex_float* X, + float* est, lapack_int* kase, lapack_int* ISAVE ); + +#define LAPACK_dlacn2 LAPACK_GLOBAL(dlacn2,DLACN2) +void LAPACK_dlacn2( + lapack_int const* n, + double* V, + double* X, lapack_int* ISGN, + double* est, lapack_int* kase, lapack_int* ISAVE ); + +#define LAPACK_slacn2 LAPACK_GLOBAL(slacn2,SLACN2) +void LAPACK_slacn2( + lapack_int const* n, + float* V, + float* X, lapack_int* ISGN, + float* est, lapack_int* kase, lapack_int* ISAVE ); + +#define LAPACK_zlacn2 LAPACK_GLOBAL(zlacn2,ZLACN2) +void LAPACK_zlacn2( + lapack_int const* n, + lapack_complex_double* V, + lapack_complex_double* X, + double* est, lapack_int* kase, lapack_int* ISAVE ); + +#define LAPACK_clacp2_base LAPACK_GLOBAL(clacp2,CLACP2) +void LAPACK_clacp2_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clacp2(...) LAPACK_clacp2_base(__VA_ARGS__, 1) +#else + #define LAPACK_clacp2(...) LAPACK_clacp2_base(__VA_ARGS__) +#endif + +#define LAPACK_zlacp2_base LAPACK_GLOBAL(zlacp2,ZLACP2) +void LAPACK_zlacp2_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlacp2(...) LAPACK_zlacp2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlacp2(...) LAPACK_zlacp2_base(__VA_ARGS__) +#endif + +#define LAPACK_clacpy_base LAPACK_GLOBAL(clacpy,CLACPY) +void LAPACK_clacpy_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clacpy(...) LAPACK_clacpy_base(__VA_ARGS__, 1) +#else + #define LAPACK_clacpy(...) LAPACK_clacpy_base(__VA_ARGS__) +#endif + +#define LAPACK_dlacpy_base LAPACK_GLOBAL(dlacpy,DLACPY) +void LAPACK_dlacpy_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlacpy(...) LAPACK_dlacpy_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlacpy(...) LAPACK_dlacpy_base(__VA_ARGS__) +#endif + +#define LAPACK_slacpy_base LAPACK_GLOBAL(slacpy,SLACPY) +void LAPACK_slacpy_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slacpy(...) LAPACK_slacpy_base(__VA_ARGS__, 1) +#else + #define LAPACK_slacpy(...) LAPACK_slacpy_base(__VA_ARGS__) +#endif + +#define LAPACK_zlacpy_base LAPACK_GLOBAL(zlacpy,ZLACPY) +void LAPACK_zlacpy_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlacpy(...) LAPACK_zlacpy_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlacpy(...) LAPACK_zlacpy_base(__VA_ARGS__) +#endif + +#define LAPACK_clacrm LAPACK_GLOBAL(clacrm,CLACRM) +void LAPACK_clacrm( + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + lapack_complex_float* C, lapack_int const* ldc, + float* rwork ); + +#define LAPACK_zlacrm LAPACK_GLOBAL(zlacrm,ZLACRM) +void LAPACK_zlacrm( + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + lapack_complex_double* C, lapack_int const* ldc, + double* rwork ); + +#define LAPACK_zlag2c LAPACK_GLOBAL(zlag2c,ZLAG2C) +void LAPACK_zlag2c( + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_float* SA, lapack_int const* ldsa, + lapack_int* info ); + +#define LAPACK_slag2d LAPACK_GLOBAL(slag2d,SLAG2D) +void LAPACK_slag2d( + lapack_int const* m, lapack_int const* n, + float const* SA, lapack_int const* ldsa, + double* A, lapack_int const* lda, + lapack_int* info ); + +#define LAPACK_dlag2s LAPACK_GLOBAL(dlag2s,DLAG2S) +void LAPACK_dlag2s( + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + float* SA, lapack_int const* ldsa, + lapack_int* info ); + +#define LAPACK_clag2z LAPACK_GLOBAL(clag2z,CLAG2Z) +void LAPACK_clag2z( + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* SA, lapack_int const* ldsa, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info ); + +#define LAPACK_clagge LAPACK_GLOBAL(clagge,CLAGGE) +void LAPACK_clagge( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* D, + lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dlagge LAPACK_GLOBAL(dlagge,DLAGGE) +void LAPACK_dlagge( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* D, + double* A, lapack_int const* lda, lapack_int* iseed, + double* work, + lapack_int* info ); + +#define LAPACK_slagge LAPACK_GLOBAL(slagge,SLAGGE) +void LAPACK_slagge( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* D, + float* A, lapack_int const* lda, lapack_int* iseed, + float* work, + lapack_int* info ); + +#define LAPACK_zlagge LAPACK_GLOBAL(zlagge,ZLAGGE) +void LAPACK_zlagge( + lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* D, + lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_claghe LAPACK_GLOBAL(claghe,CLAGHE) +void LAPACK_claghe( + lapack_int const* n, lapack_int const* k, + float const* D, + lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_zlaghe LAPACK_GLOBAL(zlaghe,ZLAGHE) +void LAPACK_zlaghe( + lapack_int const* n, lapack_int const* k, + double const* D, + lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_clagsy LAPACK_GLOBAL(clagsy,CLAGSY) +void LAPACK_clagsy( + lapack_int const* n, lapack_int const* k, + float const* D, + lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dlagsy LAPACK_GLOBAL(dlagsy,DLAGSY) +void LAPACK_dlagsy( + lapack_int const* n, lapack_int const* k, + double const* D, + double* A, lapack_int const* lda, lapack_int* iseed, + double* work, + lapack_int* info ); + +#define LAPACK_slagsy LAPACK_GLOBAL(slagsy,SLAGSY) +void LAPACK_slagsy( + lapack_int const* n, lapack_int const* k, + float const* D, + float* A, lapack_int const* lda, lapack_int* iseed, + float* work, + lapack_int* info ); + +#define LAPACK_zlagsy LAPACK_GLOBAL(zlagsy,ZLAGSY) +void LAPACK_zlagsy( + lapack_int const* n, lapack_int const* k, + double const* D, + lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_dlamch_base LAPACK_GLOBAL(dlamch,DLAMCH) +double LAPACK_dlamch_base( + char const* cmach +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlamch(...) LAPACK_dlamch_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlamch(...) LAPACK_dlamch_base(__VA_ARGS__) +#endif + +#define LAPACK_slamch_base LAPACK_GLOBAL(slamch,SLAMCH) +lapack_float_return LAPACK_slamch_base( + char const* cmach +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slamch(...) LAPACK_slamch_base(__VA_ARGS__, 1) +#else + #define LAPACK_slamch(...) LAPACK_slamch_base(__VA_ARGS__) +#endif + +#define LAPACK_clangb_base LAPACK_GLOBAL(clangb,CLANGB) +lapack_float_return LAPACK_clangb_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clangb(...) LAPACK_clangb_base(__VA_ARGS__, 1) +#else + #define LAPACK_clangb(...) LAPACK_clangb_base(__VA_ARGS__) +#endif + +#define LAPACK_dlangb_base LAPACK_GLOBAL(dlangb,DLANGB) +double LAPACK_dlangb_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlangb(...) LAPACK_dlangb_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlangb(...) LAPACK_dlangb_base(__VA_ARGS__) +#endif + +#define LAPACK_slangb_base LAPACK_GLOBAL(slangb,SLANGB) +lapack_float_return LAPACK_slangb_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slangb(...) LAPACK_slangb_base(__VA_ARGS__, 1) +#else + #define LAPACK_slangb(...) LAPACK_slangb_base(__VA_ARGS__) +#endif + +#define LAPACK_zlangb_base LAPACK_GLOBAL(zlangb,ZLANGB) +double LAPACK_zlangb_base( + char const* norm, + lapack_int const* n, lapack_int const* kl, lapack_int const* ku, + lapack_complex_double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlangb(...) LAPACK_zlangb_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlangb(...) LAPACK_zlangb_base(__VA_ARGS__) +#endif + +#define LAPACK_clange_base LAPACK_GLOBAL(clange,CLANGE) +lapack_float_return LAPACK_clange_base( + char const* norm, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clange(...) LAPACK_clange_base(__VA_ARGS__, 1) +#else + #define LAPACK_clange(...) LAPACK_clange_base(__VA_ARGS__) +#endif + +#define LAPACK_dlange_base LAPACK_GLOBAL(dlange,DLANGE) +double LAPACK_dlange_base( + char const* norm, + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlange(...) LAPACK_dlange_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlange(...) LAPACK_dlange_base(__VA_ARGS__) +#endif + +#define LAPACK_slange_base LAPACK_GLOBAL(slange,SLANGE) +lapack_float_return LAPACK_slange_base( + char const* norm, + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slange(...) LAPACK_slange_base(__VA_ARGS__, 1) +#else + #define LAPACK_slange(...) LAPACK_slange_base(__VA_ARGS__) +#endif + +#define LAPACK_zlange_base LAPACK_GLOBAL(zlange,ZLANGE) +double LAPACK_zlange_base( + char const* norm, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlange(...) LAPACK_zlange_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlange(...) LAPACK_zlange_base(__VA_ARGS__) +#endif + +#define LAPACK_clangt_base LAPACK_GLOBAL(clangt,CLANGT) +lapack_float_return LAPACK_clangt_base( + char const* norm, + lapack_int const* n, + lapack_complex_float const* DL, + lapack_complex_float const* D, + lapack_complex_float const* DU +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clangt(...) LAPACK_clangt_base(__VA_ARGS__, 1) +#else + #define LAPACK_clangt(...) LAPACK_clangt_base(__VA_ARGS__) +#endif + +#define LAPACK_dlangt_base LAPACK_GLOBAL(dlangt,DLANGT) +double LAPACK_dlangt_base( + char const* norm, + lapack_int const* n, + double const* DL, + double const* D, + double const* DU +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlangt(...) LAPACK_dlangt_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlangt(...) LAPACK_dlangt_base(__VA_ARGS__) +#endif + +#define LAPACK_slangt_base LAPACK_GLOBAL(slangt,SLANGT) +lapack_float_return LAPACK_slangt_base( + char const* norm, + lapack_int const* n, + float const* DL, + float const* D, + float const* DU +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slangt(...) LAPACK_slangt_base(__VA_ARGS__, 1) +#else + #define LAPACK_slangt(...) LAPACK_slangt_base(__VA_ARGS__) +#endif + +#define LAPACK_zlangt_base LAPACK_GLOBAL(zlangt,ZLANGT) +double LAPACK_zlangt_base( + char const* norm, + lapack_int const* n, + lapack_complex_double const* DL, + lapack_complex_double const* D, + lapack_complex_double const* DU +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlangt(...) LAPACK_zlangt_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlangt(...) LAPACK_zlangt_base(__VA_ARGS__) +#endif + +#define LAPACK_clanhb_base LAPACK_GLOBAL(clanhb,CLANHB) +lapack_float_return LAPACK_clanhb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + lapack_complex_float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clanhb(...) LAPACK_clanhb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clanhb(...) LAPACK_clanhb_base(__VA_ARGS__) +#endif + +#define LAPACK_zlanhb_base LAPACK_GLOBAL(zlanhb,ZLANHB) +double LAPACK_zlanhb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + lapack_complex_double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlanhb(...) LAPACK_zlanhb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlanhb(...) LAPACK_zlanhb_base(__VA_ARGS__) +#endif + +#define LAPACK_clanhe_base LAPACK_GLOBAL(clanhe,CLANHE) +lapack_float_return LAPACK_clanhe_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clanhe(...) LAPACK_clanhe_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clanhe(...) LAPACK_clanhe_base(__VA_ARGS__) +#endif + +#define LAPACK_zlanhe_base LAPACK_GLOBAL(zlanhe,ZLANHE) +double LAPACK_zlanhe_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlanhe(...) LAPACK_zlanhe_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlanhe(...) LAPACK_zlanhe_base(__VA_ARGS__) +#endif + +#define LAPACK_clanhp_base LAPACK_GLOBAL(clanhp,CLANHP) +lapack_float_return LAPACK_clanhp_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clanhp(...) LAPACK_clanhp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clanhp(...) LAPACK_clanhp_base(__VA_ARGS__) +#endif + +#define LAPACK_zlanhp_base LAPACK_GLOBAL(zlanhp,ZLANHP) +double LAPACK_zlanhp_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlanhp(...) LAPACK_zlanhp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlanhp(...) LAPACK_zlanhp_base(__VA_ARGS__) +#endif + +#define LAPACK_clanhs_base LAPACK_GLOBAL(clanhs,CLANHS) +lapack_float_return LAPACK_clanhs_base( + char const* norm, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clanhs(...) LAPACK_clanhs_base(__VA_ARGS__, 1) +#else + #define LAPACK_clanhs(...) LAPACK_clanhs_base(__VA_ARGS__) +#endif + +#define LAPACK_dlanhs_base LAPACK_GLOBAL(dlanhs,DLANHS) +double LAPACK_dlanhs_base( + char const* norm, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlanhs(...) LAPACK_dlanhs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlanhs(...) LAPACK_dlanhs_base(__VA_ARGS__) +#endif + +#define LAPACK_slanhs_base LAPACK_GLOBAL(slanhs,SLANHS) +lapack_float_return LAPACK_slanhs_base( + char const* norm, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slanhs(...) LAPACK_slanhs_base(__VA_ARGS__, 1) +#else + #define LAPACK_slanhs(...) LAPACK_slanhs_base(__VA_ARGS__) +#endif + +#define LAPACK_zlanhs_base LAPACK_GLOBAL(zlanhs,ZLANHS) +double LAPACK_zlanhs_base( + char const* norm, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlanhs(...) LAPACK_zlanhs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlanhs(...) LAPACK_zlanhs_base(__VA_ARGS__) +#endif + +#define LAPACK_clanht_base LAPACK_GLOBAL(clanht,CLANHT) +lapack_float_return LAPACK_clanht_base( + char const* norm, + lapack_int const* n, + float const* D, + lapack_complex_float const* E +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clanht(...) LAPACK_clanht_base(__VA_ARGS__, 1) +#else + #define LAPACK_clanht(...) LAPACK_clanht_base(__VA_ARGS__) +#endif + +#define LAPACK_zlanht_base LAPACK_GLOBAL(zlanht,ZLANHT) +double LAPACK_zlanht_base( + char const* norm, + lapack_int const* n, + double const* D, + lapack_complex_double const* E +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlanht(...) LAPACK_zlanht_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlanht(...) LAPACK_zlanht_base(__VA_ARGS__) +#endif + +#define LAPACK_clansb_base LAPACK_GLOBAL(clansb,CLANSB) +lapack_float_return LAPACK_clansb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + lapack_complex_float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clansb(...) LAPACK_clansb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clansb(...) LAPACK_clansb_base(__VA_ARGS__) +#endif + +#define LAPACK_dlansb_base LAPACK_GLOBAL(dlansb,DLANSB) +double LAPACK_dlansb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlansb(...) LAPACK_dlansb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dlansb(...) LAPACK_dlansb_base(__VA_ARGS__) +#endif + +#define LAPACK_slansb_base LAPACK_GLOBAL(slansb,SLANSB) +lapack_float_return LAPACK_slansb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slansb(...) LAPACK_slansb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_slansb(...) LAPACK_slansb_base(__VA_ARGS__) +#endif + +#define LAPACK_zlansb_base LAPACK_GLOBAL(zlansb,ZLANSB) +double LAPACK_zlansb_base( + char const* norm, char const* uplo, + lapack_int const* n, lapack_int const* k, + lapack_complex_double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlansb(...) LAPACK_zlansb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlansb(...) LAPACK_zlansb_base(__VA_ARGS__) +#endif + +#define LAPACK_clansp_base LAPACK_GLOBAL(clansp,CLANSP) +lapack_float_return LAPACK_clansp_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clansp(...) LAPACK_clansp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clansp(...) LAPACK_clansp_base(__VA_ARGS__) +#endif + +#define LAPACK_dlansp_base LAPACK_GLOBAL(dlansp,DLANSP) +double LAPACK_dlansp_base( + char const* norm, char const* uplo, + lapack_int const* n, + double const* AP, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlansp(...) LAPACK_dlansp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dlansp(...) LAPACK_dlansp_base(__VA_ARGS__) +#endif + +#define LAPACK_slansp_base LAPACK_GLOBAL(slansp,SLANSP) +lapack_float_return LAPACK_slansp_base( + char const* norm, char const* uplo, + lapack_int const* n, + float const* AP, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slansp(...) LAPACK_slansp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_slansp(...) LAPACK_slansp_base(__VA_ARGS__) +#endif + +#define LAPACK_zlansp_base LAPACK_GLOBAL(zlansp,ZLANSP) +double LAPACK_zlansp_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlansp(...) LAPACK_zlansp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlansp(...) LAPACK_zlansp_base(__VA_ARGS__) +#endif + +#define LAPACK_dlanst_base LAPACK_GLOBAL(dlanst,DLANST) +double LAPACK_dlanst_base( + char const* norm, + lapack_int const* n, + double const* D, + double const* E +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlanst(...) LAPACK_dlanst_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlanst(...) LAPACK_dlanst_base(__VA_ARGS__) +#endif + +#define LAPACK_slanst_base LAPACK_GLOBAL(slanst,SLANST) +lapack_float_return LAPACK_slanst_base( + char const* norm, + lapack_int const* n, + float const* D, + float const* E +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slanst(...) LAPACK_slanst_base(__VA_ARGS__, 1) +#else + #define LAPACK_slanst(...) LAPACK_slanst_base(__VA_ARGS__) +#endif + +#define LAPACK_clansy_base LAPACK_GLOBAL(clansy,CLANSY) +lapack_float_return LAPACK_clansy_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clansy(...) LAPACK_clansy_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clansy(...) LAPACK_clansy_base(__VA_ARGS__) +#endif + +#define LAPACK_dlansy_base LAPACK_GLOBAL(dlansy,DLANSY) +double LAPACK_dlansy_base( + char const* norm, char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlansy(...) LAPACK_dlansy_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dlansy(...) LAPACK_dlansy_base(__VA_ARGS__) +#endif + +#define LAPACK_slansy_base LAPACK_GLOBAL(slansy,SLANSY) +lapack_float_return LAPACK_slansy_base( + char const* norm, char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slansy(...) LAPACK_slansy_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_slansy(...) LAPACK_slansy_base(__VA_ARGS__) +#endif + +#define LAPACK_zlansy_base LAPACK_GLOBAL(zlansy,ZLANSY) +double LAPACK_zlansy_base( + char const* norm, char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlansy(...) LAPACK_zlansy_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlansy(...) LAPACK_zlansy_base(__VA_ARGS__) +#endif + +#define LAPACK_clantb_base LAPACK_GLOBAL(clantb,CLANTB) +lapack_float_return LAPACK_clantb_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* k, + lapack_complex_float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clantb(...) LAPACK_clantb_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_clantb(...) LAPACK_clantb_base(__VA_ARGS__) +#endif + +#define LAPACK_dlantb_base LAPACK_GLOBAL(dlantb,DLANTB) +double LAPACK_dlantb_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* k, + double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlantb(...) LAPACK_dlantb_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dlantb(...) LAPACK_dlantb_base(__VA_ARGS__) +#endif + +#define LAPACK_slantb_base LAPACK_GLOBAL(slantb,SLANTB) +lapack_float_return LAPACK_slantb_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* k, + float const* AB, lapack_int const* ldab, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slantb(...) LAPACK_slantb_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_slantb(...) LAPACK_slantb_base(__VA_ARGS__) +#endif + +#define LAPACK_zlantb_base LAPACK_GLOBAL(zlantb,ZLANTB) +double LAPACK_zlantb_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* k, + lapack_complex_double const* AB, lapack_int const* ldab, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlantb(...) LAPACK_zlantb_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zlantb(...) LAPACK_zlantb_base(__VA_ARGS__) +#endif + +#define LAPACK_clantp_base LAPACK_GLOBAL(clantp,CLANTP) +lapack_float_return LAPACK_clantp_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float const* AP, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clantp(...) LAPACK_clantp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_clantp(...) LAPACK_clantp_base(__VA_ARGS__) +#endif + +#define LAPACK_dlantp_base LAPACK_GLOBAL(dlantp,DLANTP) +double LAPACK_dlantp_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + double const* AP, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlantp(...) LAPACK_dlantp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dlantp(...) LAPACK_dlantp_base(__VA_ARGS__) +#endif + +#define LAPACK_slantp_base LAPACK_GLOBAL(slantp,SLANTP) +lapack_float_return LAPACK_slantp_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + float const* AP, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slantp(...) LAPACK_slantp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_slantp(...) LAPACK_slantp_base(__VA_ARGS__) +#endif + +#define LAPACK_zlantp_base LAPACK_GLOBAL(zlantp,ZLANTP) +double LAPACK_zlantp_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double const* AP, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlantp(...) LAPACK_zlantp_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zlantp(...) LAPACK_zlantp_base(__VA_ARGS__) +#endif + +#define LAPACK_clantr_base LAPACK_GLOBAL(clantr,CLANTR) +lapack_float_return LAPACK_clantr_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clantr(...) LAPACK_clantr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_clantr(...) LAPACK_clantr_base(__VA_ARGS__) +#endif + +#define LAPACK_dlantr_base LAPACK_GLOBAL(dlantr,DLANTR) +double LAPACK_dlantr_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlantr(...) LAPACK_dlantr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dlantr(...) LAPACK_dlantr_base(__VA_ARGS__) +#endif + +#define LAPACK_slantr_base LAPACK_GLOBAL(slantr,SLANTR) +lapack_float_return LAPACK_slantr_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slantr(...) LAPACK_slantr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_slantr(...) LAPACK_slantr_base(__VA_ARGS__) +#endif + +#define LAPACK_zlantr_base LAPACK_GLOBAL(zlantr,ZLANTR) +double LAPACK_zlantr_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlantr(...) LAPACK_zlantr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zlantr(...) LAPACK_zlantr_base(__VA_ARGS__) +#endif + +#define LAPACK_clapmr LAPACK_GLOBAL(clapmr,CLAPMR) +void LAPACK_clapmr( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + lapack_complex_float* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_dlapmr LAPACK_GLOBAL(dlapmr,DLAPMR) +void LAPACK_dlapmr( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + double* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_slapmr LAPACK_GLOBAL(slapmr,SLAPMR) +void LAPACK_slapmr( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + float* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_zlapmr LAPACK_GLOBAL(zlapmr,ZLAPMR) +void LAPACK_zlapmr( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + lapack_complex_double* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_clapmt LAPACK_GLOBAL(clapmt,CLAPMT) +void LAPACK_clapmt( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + lapack_complex_float* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_dlapmt LAPACK_GLOBAL(dlapmt,DLAPMT) +void LAPACK_dlapmt( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + double* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_slapmt LAPACK_GLOBAL(slapmt,SLAPMT) +void LAPACK_slapmt( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + float* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_zlapmt LAPACK_GLOBAL(zlapmt,ZLAPMT) +void LAPACK_zlapmt( + lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, + lapack_complex_double* X, lapack_int const* ldx, lapack_int* K ); + +#define LAPACK_dlapy2 LAPACK_GLOBAL(dlapy2,DLAPY2) +double LAPACK_dlapy2( + double const* x, + double const* y ); + +#define LAPACK_slapy2 LAPACK_GLOBAL(slapy2,SLAPY2) +lapack_float_return LAPACK_slapy2( + float const* x, + float const* y ); + +#define LAPACK_dlapy3 LAPACK_GLOBAL(dlapy3,DLAPY3) +double LAPACK_dlapy3( + double const* x, + double const* y, + double const* z ); + +#define LAPACK_slapy3 LAPACK_GLOBAL(slapy3,SLAPY3) +lapack_float_return LAPACK_slapy3( + float const* x, + float const* y, + float const* z ); + +#define LAPACK_clarcm LAPACK_GLOBAL(clarcm,CLARCM) +void LAPACK_clarcm( + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* C, lapack_int const* ldc, + float* rwork ); + +#define LAPACK_zlarcm LAPACK_GLOBAL(zlarcm,ZLARCM) +void LAPACK_zlarcm( + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* C, lapack_int const* ldc, + double* rwork ); + +#define LAPACK_clarf_base LAPACK_GLOBAL(clarf,CLARF) +void LAPACK_clarf_base( + char const* side, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* V, lapack_int const* incv, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clarf(...) LAPACK_clarf_base(__VA_ARGS__, 1) +#else + #define LAPACK_clarf(...) LAPACK_clarf_base(__VA_ARGS__) +#endif + +#define LAPACK_dlarf_base LAPACK_GLOBAL(dlarf,DLARF) +void LAPACK_dlarf_base( + char const* side, + lapack_int const* m, lapack_int const* n, + double const* V, lapack_int const* incv, + double const* tau, + double* C, lapack_int const* ldc, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlarf(...) LAPACK_dlarf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlarf(...) LAPACK_dlarf_base(__VA_ARGS__) +#endif + +#define LAPACK_slarf_base LAPACK_GLOBAL(slarf,SLARF) +void LAPACK_slarf_base( + char const* side, + lapack_int const* m, lapack_int const* n, + float const* V, lapack_int const* incv, + float const* tau, + float* C, lapack_int const* ldc, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slarf(...) LAPACK_slarf_base(__VA_ARGS__, 1) +#else + #define LAPACK_slarf(...) LAPACK_slarf_base(__VA_ARGS__) +#endif + +#define LAPACK_zlarf_base LAPACK_GLOBAL(zlarf,ZLARF) +void LAPACK_zlarf_base( + char const* side, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* V, lapack_int const* incv, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlarf(...) LAPACK_zlarf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlarf(...) LAPACK_zlarf_base(__VA_ARGS__) +#endif + +#define LAPACK_clarfb_base LAPACK_GLOBAL(clarfb,CLARFB) +void LAPACK_clarfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clarfb(...) LAPACK_clarfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_clarfb(...) LAPACK_clarfb_base(__VA_ARGS__) +#endif + +#define LAPACK_dlarfb_base LAPACK_GLOBAL(dlarfb,DLARFB) +void LAPACK_dlarfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* V, lapack_int const* ldv, + double const* T, lapack_int const* ldt, + double* C, lapack_int const* ldc, + double* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlarfb(...) LAPACK_dlarfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dlarfb(...) LAPACK_dlarfb_base(__VA_ARGS__) +#endif + +#define LAPACK_slarfb_base LAPACK_GLOBAL(slarfb,SLARFB) +void LAPACK_slarfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* V, lapack_int const* ldv, + float const* T, lapack_int const* ldt, + float* C, lapack_int const* ldc, + float* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slarfb(...) LAPACK_slarfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_slarfb(...) LAPACK_slarfb_base(__VA_ARGS__) +#endif + +#define LAPACK_zlarfb_base LAPACK_GLOBAL(zlarfb,ZLARFB) +void LAPACK_zlarfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlarfb(...) LAPACK_zlarfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_zlarfb(...) LAPACK_zlarfb_base(__VA_ARGS__) +#endif + +#define LAPACK_clarfg LAPACK_GLOBAL(clarfg,CLARFG) +void LAPACK_clarfg( + lapack_int const* n, + lapack_complex_float* alpha, + lapack_complex_float* X, lapack_int const* incx, + lapack_complex_float* tau ); + +#define LAPACK_dlarfg LAPACK_GLOBAL(dlarfg,DLARFG) +void LAPACK_dlarfg( + lapack_int const* n, + double* alpha, + double* X, lapack_int const* incx, + double* tau ); + +#define LAPACK_slarfg LAPACK_GLOBAL(slarfg,SLARFG) +void LAPACK_slarfg( + lapack_int const* n, + float* alpha, + float* X, lapack_int const* incx, + float* tau ); + +#define LAPACK_zlarfg LAPACK_GLOBAL(zlarfg,ZLARFG) +void LAPACK_zlarfg( + lapack_int const* n, + lapack_complex_double* alpha, + lapack_complex_double* X, lapack_int const* incx, + lapack_complex_double* tau ); + +#define LAPACK_clarft_base LAPACK_GLOBAL(clarft,CLARFT) +void LAPACK_clarft_base( + char const* direct, char const* storev, + lapack_int const* n, lapack_int const* k, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* tau, + lapack_complex_float* T, lapack_int const* ldt +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clarft(...) LAPACK_clarft_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_clarft(...) LAPACK_clarft_base(__VA_ARGS__) +#endif + +#define LAPACK_dlarft_base LAPACK_GLOBAL(dlarft,DLARFT) +void LAPACK_dlarft_base( + char const* direct, char const* storev, + lapack_int const* n, lapack_int const* k, + double const* V, lapack_int const* ldv, + double const* tau, + double* T, lapack_int const* ldt +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlarft(...) LAPACK_dlarft_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dlarft(...) LAPACK_dlarft_base(__VA_ARGS__) +#endif + +#define LAPACK_slarft_base LAPACK_GLOBAL(slarft,SLARFT) +void LAPACK_slarft_base( + char const* direct, char const* storev, + lapack_int const* n, lapack_int const* k, + float const* V, lapack_int const* ldv, + float const* tau, + float* T, lapack_int const* ldt +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slarft(...) LAPACK_slarft_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_slarft(...) LAPACK_slarft_base(__VA_ARGS__) +#endif + +#define LAPACK_zlarft_base LAPACK_GLOBAL(zlarft,ZLARFT) +void LAPACK_zlarft_base( + char const* direct, char const* storev, + lapack_int const* n, lapack_int const* k, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* tau, + lapack_complex_double* T, lapack_int const* ldt +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlarft(...) LAPACK_zlarft_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zlarft(...) LAPACK_zlarft_base(__VA_ARGS__) +#endif + +#define LAPACK_clarfx_base LAPACK_GLOBAL(clarfx,CLARFX) +void LAPACK_clarfx_base( + char const* side, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* V, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clarfx(...) LAPACK_clarfx_base(__VA_ARGS__, 1) +#else + #define LAPACK_clarfx(...) LAPACK_clarfx_base(__VA_ARGS__) +#endif + +#define LAPACK_dlarfx_base LAPACK_GLOBAL(dlarfx,DLARFX) +void LAPACK_dlarfx_base( + char const* side, + lapack_int const* m, lapack_int const* n, + double const* V, + double const* tau, + double* C, lapack_int const* ldc, + double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlarfx(...) LAPACK_dlarfx_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlarfx(...) LAPACK_dlarfx_base(__VA_ARGS__) +#endif + +#define LAPACK_slarfx_base LAPACK_GLOBAL(slarfx,SLARFX) +void LAPACK_slarfx_base( + char const* side, + lapack_int const* m, lapack_int const* n, + float const* V, + float const* tau, + float* C, lapack_int const* ldc, + float* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slarfx(...) LAPACK_slarfx_base(__VA_ARGS__, 1) +#else + #define LAPACK_slarfx(...) LAPACK_slarfx_base(__VA_ARGS__) +#endif + +#define LAPACK_zlarfx_base LAPACK_GLOBAL(zlarfx,ZLARFX) +void LAPACK_zlarfx_base( + char const* side, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* V, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlarfx(...) LAPACK_zlarfx_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlarfx(...) LAPACK_zlarfx_base(__VA_ARGS__) +#endif + +#define LAPACK_clarnv LAPACK_GLOBAL(clarnv,CLARNV) +void LAPACK_clarnv( + lapack_int const* idist, lapack_int* iseed, lapack_int const* n, + lapack_complex_float* X ); + +#define LAPACK_dlarnv LAPACK_GLOBAL(dlarnv,DLARNV) +void LAPACK_dlarnv( + lapack_int const* idist, lapack_int* iseed, lapack_int const* n, + double* X ); + +#define LAPACK_slarnv LAPACK_GLOBAL(slarnv,SLARNV) +void LAPACK_slarnv( + lapack_int const* idist, lapack_int* iseed, lapack_int const* n, + float* X ); + +#define LAPACK_zlarnv LAPACK_GLOBAL(zlarnv,ZLARNV) +void LAPACK_zlarnv( + lapack_int const* idist, lapack_int* iseed, lapack_int const* n, + lapack_complex_double* X ); + +#define LAPACK_dlartgp LAPACK_GLOBAL(dlartgp,DLARTGP) +void LAPACK_dlartgp( + double const* f, + double const* g, + double* cs, + double* sn, + double* r ); + +#define LAPACK_slartgp LAPACK_GLOBAL(slartgp,SLARTGP) +void LAPACK_slartgp( + float const* f, + float const* g, + float* cs, + float* sn, + float* r ); + +#define LAPACK_dlartgs LAPACK_GLOBAL(dlartgs,DLARTGS) +void LAPACK_dlartgs( + double const* x, + double const* y, + double const* sigma, + double* cs, + double* sn ); + +#define LAPACK_slartgs LAPACK_GLOBAL(slartgs,SLARTGS) +void LAPACK_slartgs( + float const* x, + float const* y, + float const* sigma, + float* cs, + float* sn ); + +#define LAPACK_clascl_base LAPACK_GLOBAL(clascl,CLASCL) +void LAPACK_clascl_base( + char const* type, + lapack_int const* kl, lapack_int const* ku, + float const* cfrom, + float const* cto, lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clascl(...) LAPACK_clascl_base(__VA_ARGS__, 1) +#else + #define LAPACK_clascl(...) LAPACK_clascl_base(__VA_ARGS__) +#endif + +#define LAPACK_dlascl_base LAPACK_GLOBAL(dlascl,DLASCL) +void LAPACK_dlascl_base( + char const* type, + lapack_int const* kl, lapack_int const* ku, + double const* cfrom, + double const* cto, lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlascl(...) LAPACK_dlascl_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlascl(...) LAPACK_dlascl_base(__VA_ARGS__) +#endif + +#define LAPACK_slascl_base LAPACK_GLOBAL(slascl,SLASCL) +void LAPACK_slascl_base( + char const* type, + lapack_int const* kl, lapack_int const* ku, + float const* cfrom, + float const* cto, lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slascl(...) LAPACK_slascl_base(__VA_ARGS__, 1) +#else + #define LAPACK_slascl(...) LAPACK_slascl_base(__VA_ARGS__) +#endif + +#define LAPACK_zlascl_base LAPACK_GLOBAL(zlascl,ZLASCL) +void LAPACK_zlascl_base( + char const* type, + lapack_int const* kl, lapack_int const* ku, + double const* cfrom, + double const* cto, lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlascl(...) LAPACK_zlascl_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlascl(...) LAPACK_zlascl_base(__VA_ARGS__) +#endif + +#define LAPACK_claset_base LAPACK_GLOBAL(claset,CLASET) +void LAPACK_claset_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* alpha, + lapack_complex_float const* beta, + lapack_complex_float* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_claset(...) LAPACK_claset_base(__VA_ARGS__, 1) +#else + #define LAPACK_claset(...) LAPACK_claset_base(__VA_ARGS__) +#endif + +#define LAPACK_dlaset_base LAPACK_GLOBAL(dlaset,DLASET) +void LAPACK_dlaset_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + double const* alpha, + double const* beta, + double* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlaset(...) LAPACK_dlaset_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlaset(...) LAPACK_dlaset_base(__VA_ARGS__) +#endif + +#define LAPACK_slaset_base LAPACK_GLOBAL(slaset,SLASET) +void LAPACK_slaset_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + float const* alpha, + float const* beta, + float* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slaset(...) LAPACK_slaset_base(__VA_ARGS__, 1) +#else + #define LAPACK_slaset(...) LAPACK_slaset_base(__VA_ARGS__) +#endif + +#define LAPACK_zlaset_base LAPACK_GLOBAL(zlaset,ZLASET) +void LAPACK_zlaset_base( + char const* uplo, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* alpha, + lapack_complex_double const* beta, + lapack_complex_double* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlaset(...) LAPACK_zlaset_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlaset(...) LAPACK_zlaset_base(__VA_ARGS__) +#endif + +#define LAPACK_dlasrt_base LAPACK_GLOBAL(dlasrt,DLASRT) +void LAPACK_dlasrt_base( + char const* id, + lapack_int const* n, + double* D, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlasrt(...) LAPACK_dlasrt_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlasrt(...) LAPACK_dlasrt_base(__VA_ARGS__) +#endif + +#define LAPACK_slasrt_base LAPACK_GLOBAL(slasrt,SLASRT) +void LAPACK_slasrt_base( + char const* id, + lapack_int const* n, + float* D, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slasrt(...) LAPACK_slasrt_base(__VA_ARGS__, 1) +#else + #define LAPACK_slasrt(...) LAPACK_slasrt_base(__VA_ARGS__) +#endif + +#define LAPACK_classq LAPACK_GLOBAL(classq,CLASSQ) +void LAPACK_classq( + lapack_int const* n, + lapack_complex_float const* X, lapack_int const* incx, + float* scale, + float* sumsq ); + +#define LAPACK_dlassq LAPACK_GLOBAL(dlassq,DLASSQ) +void LAPACK_dlassq( + lapack_int const* n, + double const* X, lapack_int const* incx, + double* scale, + double* sumsq ); + +#define LAPACK_slassq LAPACK_GLOBAL(slassq,SLASSQ) +void LAPACK_slassq( + lapack_int const* n, + float const* X, lapack_int const* incx, + float* scale, + float* sumsq ); + +#define LAPACK_zlassq LAPACK_GLOBAL(zlassq,ZLASSQ) +void LAPACK_zlassq( + lapack_int const* n, + lapack_complex_double const* X, lapack_int const* incx, + double* scale, + double* sumsq ); + +#define LAPACK_claswp LAPACK_GLOBAL(claswp,CLASWP) +lapack_int LAPACK_claswp( + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); + +#define LAPACK_dlaswp LAPACK_GLOBAL(dlaswp,DLASWP) +lapack_int LAPACK_dlaswp( + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); + +#define LAPACK_slaswp LAPACK_GLOBAL(slaswp,SLASWP) +lapack_int LAPACK_slaswp( + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); + +#define LAPACK_zlaswp LAPACK_GLOBAL(zlaswp,ZLASWP) +lapack_int LAPACK_zlaswp( + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); + +#define LAPACK_clatms_base LAPACK_GLOBAL(clatms,CLATMS) +void LAPACK_clatms_base( + lapack_int const* m, lapack_int const* n, char const* dist, + lapack_int* iseed, char const* sym, + float* D, + lapack_int const* mode, + float const* cond, + float const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, + lapack_complex_float* A, + lapack_int const* lda, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clatms(...) LAPACK_clatms_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_clatms(...) LAPACK_clatms_base(__VA_ARGS__) +#endif + +#define LAPACK_dlatms_base LAPACK_GLOBAL(dlatms,DLATMS) +void LAPACK_dlatms_base( + lapack_int const* m, lapack_int const* n, char const* dist, + lapack_int* iseed, char const* sym, + double* D, + lapack_int const* mode, + double const* cond, + double const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, + double* A, + lapack_int const* lda, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlatms(...) LAPACK_dlatms_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dlatms(...) LAPACK_dlatms_base(__VA_ARGS__) +#endif + +#define LAPACK_slatms_base LAPACK_GLOBAL(slatms,SLATMS) +void LAPACK_slatms_base( + lapack_int const* m, lapack_int const* n, char const* dist, + lapack_int* iseed, char const* sym, + float* D, + lapack_int const* mode, + float const* cond, + float const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, + float* A, + lapack_int const* lda, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slatms(...) LAPACK_slatms_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_slatms(...) LAPACK_slatms_base(__VA_ARGS__) +#endif + +#define LAPACK_zlatms_base LAPACK_GLOBAL(zlatms,ZLATMS) +void LAPACK_zlatms_base( + lapack_int const* m, lapack_int const* n, char const* dist, + lapack_int* iseed, char const* sym, + double* D, + lapack_int const* mode, + double const* cond, + double const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, + lapack_complex_double* A, + lapack_int const* lda, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlatms(...) LAPACK_zlatms_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zlatms(...) LAPACK_zlatms_base(__VA_ARGS__) +#endif + +#define LAPACK_clauum_base LAPACK_GLOBAL(clauum,CLAUUM) +lapack_int LAPACK_clauum_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_clauum(...) LAPACK_clauum_base(__VA_ARGS__, 1) +#else + #define LAPACK_clauum(...) LAPACK_clauum_base(__VA_ARGS__) +#endif + +#define LAPACK_dlauum_base LAPACK_GLOBAL(dlauum,DLAUUM) +lapack_int LAPACK_dlauum_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dlauum(...) LAPACK_dlauum_base(__VA_ARGS__, 1) +#else + #define LAPACK_dlauum(...) LAPACK_dlauum_base(__VA_ARGS__) +#endif + +#define LAPACK_slauum_base LAPACK_GLOBAL(slauum,SLAUUM) +lapack_int LAPACK_slauum_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_slauum(...) LAPACK_slauum_base(__VA_ARGS__, 1) +#else + #define LAPACK_slauum(...) LAPACK_slauum_base(__VA_ARGS__) +#endif + +#define LAPACK_zlauum_base LAPACK_GLOBAL(zlauum,ZLAUUM) +lapack_int LAPACK_zlauum_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zlauum(...) LAPACK_zlauum_base(__VA_ARGS__, 1) +#else + #define LAPACK_zlauum(...) LAPACK_zlauum_base(__VA_ARGS__) +#endif + +#define LAPACK_ilaver LAPACK_GLOBAL(ilaver,ILAVER) +lapack_int LAPACK_ilaver( + lapack_int* vers_major, lapack_int* vers_minor, lapack_int* vers_patch ); + +#define LAPACK_dopgtr_base LAPACK_GLOBAL(dopgtr,DOPGTR) +void LAPACK_dopgtr_base( + char const* uplo, + lapack_int const* n, + double const* AP, + double const* tau, + double* Q, lapack_int const* ldq, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dopgtr(...) LAPACK_dopgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dopgtr(...) LAPACK_dopgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_sopgtr_base LAPACK_GLOBAL(sopgtr,SOPGTR) +void LAPACK_sopgtr_base( + char const* uplo, + lapack_int const* n, + float const* AP, + float const* tau, + float* Q, lapack_int const* ldq, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sopgtr(...) LAPACK_sopgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_sopgtr(...) LAPACK_sopgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_dopmtr_base LAPACK_GLOBAL(dopmtr,DOPMTR) +void LAPACK_dopmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + double const* AP, + double const* tau, + double* C, lapack_int const* ldc, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dopmtr(...) LAPACK_dopmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dopmtr(...) LAPACK_dopmtr_base(__VA_ARGS__) +#endif + +#define LAPACK_sopmtr_base LAPACK_GLOBAL(sopmtr,SOPMTR) +void LAPACK_sopmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + float const* AP, + float const* tau, + float* C, lapack_int const* ldc, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sopmtr(...) LAPACK_sopmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sopmtr(...) LAPACK_sopmtr_base(__VA_ARGS__) +#endif + +#define LAPACK_dorbdb_base LAPACK_GLOBAL(dorbdb,DORBDB) +void LAPACK_dorbdb_base( + char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + double* X11, lapack_int const* ldx11, + double* X12, lapack_int const* ldx12, + double* X21, lapack_int const* ldx21, + double* X22, lapack_int const* ldx22, + double* theta, + double* phi, + double* TAUP1, + double* TAUP2, + double* TAUQ1, + double* TAUQ2, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dorbdb(...) LAPACK_dorbdb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dorbdb(...) LAPACK_dorbdb_base(__VA_ARGS__) +#endif + +#define LAPACK_sorbdb_base LAPACK_GLOBAL(sorbdb,SORBDB) +void LAPACK_sorbdb_base( + char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + float* X11, lapack_int const* ldx11, + float* X12, lapack_int const* ldx12, + float* X21, lapack_int const* ldx21, + float* X22, lapack_int const* ldx22, + float* theta, + float* phi, + float* TAUP1, + float* TAUP2, + float* TAUQ1, + float* TAUQ2, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sorbdb(...) LAPACK_sorbdb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sorbdb(...) LAPACK_sorbdb_base(__VA_ARGS__) +#endif + +#define LAPACK_dorcsd_base LAPACK_GLOBAL(dorcsd,DORCSD) +void LAPACK_dorcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + double* X11, lapack_int const* ldx11, + double* X12, lapack_int const* ldx12, + double* X21, lapack_int const* ldx21, + double* X22, lapack_int const* ldx22, + double* theta, + double* U1, lapack_int const* ldu1, + double* U2, lapack_int const* ldu2, + double* V1T, lapack_int const* ldv1t, + double* V2T, lapack_int const* ldv2t, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dorcsd(...) LAPACK_dorcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_dorcsd(...) LAPACK_dorcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_sorcsd_base LAPACK_GLOBAL(sorcsd,SORCSD) +void LAPACK_sorcsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + float* X11, lapack_int const* ldx11, + float* X12, lapack_int const* ldx12, + float* X21, lapack_int const* ldx21, + float* X22, lapack_int const* ldx22, + float* theta, + float* U1, lapack_int const* ldu1, + float* U2, lapack_int const* ldu2, + float* V1T, lapack_int const* ldv1t, + float* V2T, lapack_int const* ldv2t, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sorcsd(...) LAPACK_sorcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_sorcsd(...) LAPACK_sorcsd_base(__VA_ARGS__) +#endif + +#define LAPACK_dorcsd2by1_base LAPACK_GLOBAL(dorcsd2by1,DORCSD2BY1) +void LAPACK_dorcsd2by1_base( + char const* jobu1, char const* jobu2, char const* jobv1t, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + double* X11, lapack_int const* ldx11, + double* X21, lapack_int const* ldx21, + double* theta, + double* U1, lapack_int const* ldu1, + double* U2, lapack_int const* ldu2, + double* V1T, lapack_int const* ldv1t, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dorcsd2by1(...) LAPACK_dorcsd2by1_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dorcsd2by1(...) LAPACK_dorcsd2by1_base(__VA_ARGS__) +#endif + +#define LAPACK_sorcsd2by1_base LAPACK_GLOBAL(sorcsd2by1,SORCSD2BY1) +void LAPACK_sorcsd2by1_base( + char const* jobu1, char const* jobu2, char const* jobv1t, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + float* X11, lapack_int const* ldx11, + float* X21, lapack_int const* ldx21, + float* theta, + float* U1, lapack_int const* ldu1, + float* U2, lapack_int const* ldu2, + float* V1T, lapack_int const* ldv1t, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sorcsd2by1(...) LAPACK_sorcsd2by1_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sorcsd2by1(...) LAPACK_sorcsd2by1_base(__VA_ARGS__) +#endif + +#define LAPACK_dorgbr_base LAPACK_GLOBAL(dorgbr,DORGBR) +void LAPACK_dorgbr_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dorgbr(...) LAPACK_dorgbr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dorgbr(...) LAPACK_dorgbr_base(__VA_ARGS__) +#endif + +#define LAPACK_sorgbr_base LAPACK_GLOBAL(sorgbr,SORGBR) +void LAPACK_sorgbr_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sorgbr(...) LAPACK_sorgbr_base(__VA_ARGS__, 1) +#else + #define LAPACK_sorgbr(...) LAPACK_sorgbr_base(__VA_ARGS__) +#endif + +#define LAPACK_dorghr LAPACK_GLOBAL(dorghr,DORGHR) +void LAPACK_dorghr( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorghr LAPACK_GLOBAL(sorghr,SORGHR) +void LAPACK_sorghr( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorglq LAPACK_GLOBAL(dorglq,DORGLQ) +void LAPACK_dorglq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorglq LAPACK_GLOBAL(sorglq,SORGLQ) +void LAPACK_sorglq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorgql LAPACK_GLOBAL(dorgql,DORGQL) +void LAPACK_dorgql( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorgql LAPACK_GLOBAL(sorgql,SORGQL) +void LAPACK_sorgql( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorgqr LAPACK_GLOBAL(dorgqr,DORGQR) +void LAPACK_dorgqr( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorgqr LAPACK_GLOBAL(sorgqr,SORGQR) +void LAPACK_sorgqr( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorgrq LAPACK_GLOBAL(dorgrq,DORGRQ) +void LAPACK_dorgrq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorgrq LAPACK_GLOBAL(sorgrq,SORGRQ) +void LAPACK_sorgrq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorgtr_base LAPACK_GLOBAL(dorgtr,DORGTR) +void LAPACK_dorgtr_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* tau, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dorgtr(...) LAPACK_dorgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dorgtr(...) LAPACK_dorgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_sorgtr_base LAPACK_GLOBAL(sorgtr,SORGTR) +void LAPACK_sorgtr_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* tau, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sorgtr(...) LAPACK_sorgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_sorgtr(...) LAPACK_sorgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_dorgtsqr_row LAPACK_GLOBAL(dorgtsqr_row,DORGTSQR_ROW) +void LAPACK_dorgtsqr_row( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb, lapack_int const* nb, + double* A, lapack_int const* lda, + double const* T, lapack_int const* ldt, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_sorgtsqr_row LAPACK_GLOBAL(sorgtsqr_row,SORGTSQR_ROW) +void LAPACK_sorgtsqr_row( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb, lapack_int const* nb, + float* A, lapack_int const* lda, + float const* T, lapack_int const* ldt, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dorhr_col LAPACK_GLOBAL(dorhr_col,DORHR_COL) +void LAPACK_dorhr_col( + lapack_int const* m, lapack_int const* n, + lapack_int const* nb, double* A, + lapack_int const* lda, double* T, + lapack_int const* ldt, double* D, + lapack_int* info ); + +#define LAPACK_sorhr_col LAPACK_GLOBAL(sorhr_col,SORHR_COL) +void LAPACK_sorhr_col( + lapack_int const* m, lapack_int const* n, + lapack_int const* nb, float* A, + lapack_int const* lda, float* T, + lapack_int const* ldt, float* D, + lapack_int* info ); + +#define LAPACK_dormbr_base LAPACK_GLOBAL(dormbr,DORMBR) +void LAPACK_dormbr_base( + char const* vect, char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormbr(...) LAPACK_dormbr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dormbr(...) LAPACK_dormbr_base(__VA_ARGS__) +#endif + +#define LAPACK_sormbr_base LAPACK_GLOBAL(sormbr,SORMBR) +void LAPACK_sormbr_base( + char const* vect, char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormbr(...) LAPACK_sormbr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sormbr(...) LAPACK_sormbr_base(__VA_ARGS__) +#endif + +#define LAPACK_dormhr_base LAPACK_GLOBAL(dormhr,DORMHR) +void LAPACK_dormhr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormhr(...) LAPACK_dormhr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormhr(...) LAPACK_dormhr_base(__VA_ARGS__) +#endif + +#define LAPACK_sormhr_base LAPACK_GLOBAL(sormhr,SORMHR) +void LAPACK_sormhr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormhr(...) LAPACK_sormhr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormhr(...) LAPACK_sormhr_base(__VA_ARGS__) +#endif + +#define LAPACK_dormlq_base LAPACK_GLOBAL(dormlq,DORMLQ) +void LAPACK_dormlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormlq(...) LAPACK_dormlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormlq(...) LAPACK_dormlq_base(__VA_ARGS__) +#endif + +#define LAPACK_sormlq_base LAPACK_GLOBAL(sormlq,SORMLQ) +void LAPACK_sormlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormlq(...) LAPACK_sormlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormlq(...) LAPACK_sormlq_base(__VA_ARGS__) +#endif + +#define LAPACK_dormql_base LAPACK_GLOBAL(dormql,DORMQL) +void LAPACK_dormql_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormql(...) LAPACK_dormql_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormql(...) LAPACK_dormql_base(__VA_ARGS__) +#endif + +#define LAPACK_sormql_base LAPACK_GLOBAL(sormql,SORMQL) +void LAPACK_sormql_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormql(...) LAPACK_sormql_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormql(...) LAPACK_sormql_base(__VA_ARGS__) +#endif + +#define LAPACK_dormqr_base LAPACK_GLOBAL(dormqr,DORMQR) +void LAPACK_dormqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormqr(...) LAPACK_dormqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormqr(...) LAPACK_dormqr_base(__VA_ARGS__) +#endif + +#define LAPACK_sormqr_base LAPACK_GLOBAL(sormqr,SORMQR) +void LAPACK_sormqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormqr(...) LAPACK_sormqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormqr(...) LAPACK_sormqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dormrq_base LAPACK_GLOBAL(dormrq,DORMRQ) +void LAPACK_dormrq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormrq(...) LAPACK_dormrq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormrq(...) LAPACK_dormrq_base(__VA_ARGS__) +#endif + +#define LAPACK_sormrq_base LAPACK_GLOBAL(sormrq,SORMRQ) +void LAPACK_sormrq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormrq(...) LAPACK_sormrq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormrq(...) LAPACK_sormrq_base(__VA_ARGS__) +#endif + +#define LAPACK_dormrz_base LAPACK_GLOBAL(dormrz,DORMRZ) +void LAPACK_dormrz_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormrz(...) LAPACK_dormrz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dormrz(...) LAPACK_dormrz_base(__VA_ARGS__) +#endif + +#define LAPACK_sormrz_base LAPACK_GLOBAL(sormrz,SORMRZ) +void LAPACK_sormrz_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormrz(...) LAPACK_sormrz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sormrz(...) LAPACK_sormrz_base(__VA_ARGS__) +#endif + +#define LAPACK_dormtr_base LAPACK_GLOBAL(dormtr,DORMTR) +void LAPACK_dormtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double const* tau, + double* C, lapack_int const* ldc, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dormtr(...) LAPACK_dormtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dormtr(...) LAPACK_dormtr_base(__VA_ARGS__) +#endif + +#define LAPACK_sormtr_base LAPACK_GLOBAL(sormtr,SORMTR) +void LAPACK_sormtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float const* tau, + float* C, lapack_int const* ldc, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sormtr(...) LAPACK_sormtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sormtr(...) LAPACK_sormtr_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbcon_base LAPACK_GLOBAL(cpbcon,CPBCON) +void LAPACK_cpbcon_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float const* AB, lapack_int const* ldab, + float const* anorm, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbcon(...) LAPACK_cpbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbcon(...) LAPACK_cpbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbcon_base LAPACK_GLOBAL(dpbcon,DPBCON) +void LAPACK_dpbcon_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + double const* AB, lapack_int const* ldab, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbcon(...) LAPACK_dpbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbcon(...) LAPACK_dpbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_spbcon_base LAPACK_GLOBAL(spbcon,SPBCON) +void LAPACK_spbcon_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + float const* AB, lapack_int const* ldab, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbcon(...) LAPACK_spbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbcon(...) LAPACK_spbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbcon_base LAPACK_GLOBAL(zpbcon,ZPBCON) +void LAPACK_zpbcon_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double const* AB, lapack_int const* ldab, + double const* anorm, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbcon(...) LAPACK_zpbcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbcon(...) LAPACK_zpbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbequ_base LAPACK_GLOBAL(cpbequ,CPBEQU) +void LAPACK_cpbequ_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float const* AB, lapack_int const* ldab, + float* S, + float* scond, + float* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbequ(...) LAPACK_cpbequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbequ(...) LAPACK_cpbequ_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbequ_base LAPACK_GLOBAL(dpbequ,DPBEQU) +void LAPACK_dpbequ_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + double const* AB, lapack_int const* ldab, + double* S, + double* scond, + double* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbequ(...) LAPACK_dpbequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbequ(...) LAPACK_dpbequ_base(__VA_ARGS__) +#endif + +#define LAPACK_spbequ_base LAPACK_GLOBAL(spbequ,SPBEQU) +void LAPACK_spbequ_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + float const* AB, lapack_int const* ldab, + float* S, + float* scond, + float* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbequ(...) LAPACK_spbequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbequ(...) LAPACK_spbequ_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbequ_base LAPACK_GLOBAL(zpbequ,ZPBEQU) +void LAPACK_zpbequ_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double const* AB, lapack_int const* ldab, + double* S, + double* scond, + double* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbequ(...) LAPACK_zpbequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbequ(...) LAPACK_zpbequ_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbrfs_base LAPACK_GLOBAL(cpbrfs,CPBRFS) +void LAPACK_cpbrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float const* AFB, lapack_int const* ldafb, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbrfs(...) LAPACK_cpbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbrfs(...) LAPACK_cpbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbrfs_base LAPACK_GLOBAL(dpbrfs,DPBRFS) +void LAPACK_dpbrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double const* AFB, lapack_int const* ldafb, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbrfs(...) LAPACK_dpbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbrfs(...) LAPACK_dpbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_spbrfs_base LAPACK_GLOBAL(spbrfs,SPBRFS) +void LAPACK_spbrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float const* AFB, lapack_int const* ldafb, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbrfs(...) LAPACK_spbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbrfs(...) LAPACK_spbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbrfs_base LAPACK_GLOBAL(zpbrfs,ZPBRFS) +void LAPACK_zpbrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double const* AFB, lapack_int const* ldafb, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbrfs(...) LAPACK_zpbrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbrfs(...) LAPACK_zpbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbstf_base LAPACK_GLOBAL(cpbstf,CPBSTF) +void LAPACK_cpbstf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbstf(...) LAPACK_cpbstf_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbstf(...) LAPACK_cpbstf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbstf_base LAPACK_GLOBAL(dpbstf,DPBSTF) +void LAPACK_dpbstf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbstf(...) LAPACK_dpbstf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbstf(...) LAPACK_dpbstf_base(__VA_ARGS__) +#endif + +#define LAPACK_spbstf_base LAPACK_GLOBAL(spbstf,SPBSTF) +void LAPACK_spbstf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbstf(...) LAPACK_spbstf_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbstf(...) LAPACK_spbstf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbstf_base LAPACK_GLOBAL(zpbstf,ZPBSTF) +void LAPACK_zpbstf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbstf(...) LAPACK_zpbstf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbstf(...) LAPACK_zpbstf_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbsv_base LAPACK_GLOBAL(cpbsv,CPBSV) +void LAPACK_cpbsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbsv(...) LAPACK_cpbsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbsv(...) LAPACK_cpbsv_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbsv_base LAPACK_GLOBAL(dpbsv,DPBSV) +void LAPACK_dpbsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double* AB, lapack_int const* ldab, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbsv(...) LAPACK_dpbsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbsv(...) LAPACK_dpbsv_base(__VA_ARGS__) +#endif + +#define LAPACK_spbsv_base LAPACK_GLOBAL(spbsv,SPBSV) +void LAPACK_spbsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float* AB, lapack_int const* ldab, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbsv(...) LAPACK_spbsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbsv(...) LAPACK_spbsv_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbsv_base LAPACK_GLOBAL(zpbsv,ZPBSV) +void LAPACK_zpbsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbsv(...) LAPACK_zpbsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbsv(...) LAPACK_zpbsv_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbsvx_base LAPACK_GLOBAL(cpbsvx,CPBSVX) +void LAPACK_cpbsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_complex_float* AFB, lapack_int const* ldafb, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbsvx(...) LAPACK_cpbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cpbsvx(...) LAPACK_cpbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbsvx_base LAPACK_GLOBAL(dpbsvx,DPBSVX) +void LAPACK_dpbsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double* AB, lapack_int const* ldab, + double* AFB, lapack_int const* ldafb, char* equed, + double* S, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbsvx(...) LAPACK_dpbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dpbsvx(...) LAPACK_dpbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_spbsvx_base LAPACK_GLOBAL(spbsvx,SPBSVX) +void LAPACK_spbsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float* AB, lapack_int const* ldab, + float* AFB, lapack_int const* ldafb, char* equed, + float* S, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbsvx(...) LAPACK_spbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_spbsvx(...) LAPACK_spbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbsvx_base LAPACK_GLOBAL(zpbsvx,ZPBSVX) +void LAPACK_zpbsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_complex_double* AFB, lapack_int const* ldafb, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbsvx(...) LAPACK_zpbsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zpbsvx(...) LAPACK_zpbsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbtrf_base LAPACK_GLOBAL(cpbtrf,CPBTRF) +void LAPACK_cpbtrf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbtrf(...) LAPACK_cpbtrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbtrf(...) LAPACK_cpbtrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbtrf_base LAPACK_GLOBAL(dpbtrf,DPBTRF) +void LAPACK_dpbtrf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbtrf(...) LAPACK_dpbtrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbtrf(...) LAPACK_dpbtrf_base(__VA_ARGS__) +#endif + +#define LAPACK_spbtrf_base LAPACK_GLOBAL(spbtrf,SPBTRF) +void LAPACK_spbtrf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbtrf(...) LAPACK_spbtrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbtrf(...) LAPACK_spbtrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbtrf_base LAPACK_GLOBAL(zpbtrf,ZPBTRF) +void LAPACK_zpbtrf_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double* AB, lapack_int const* ldab, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbtrf(...) LAPACK_zpbtrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbtrf(...) LAPACK_zpbtrf_base(__VA_ARGS__) +#endif + +#define LAPACK_cpbtrs_base LAPACK_GLOBAL(cpbtrs,CPBTRS) +void LAPACK_cpbtrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpbtrs(...) LAPACK_cpbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpbtrs(...) LAPACK_cpbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpbtrs_base LAPACK_GLOBAL(dpbtrs,DPBTRS) +void LAPACK_dpbtrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpbtrs(...) LAPACK_dpbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpbtrs(...) LAPACK_dpbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_spbtrs_base LAPACK_GLOBAL(spbtrs,SPBTRS) +void LAPACK_spbtrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spbtrs(...) LAPACK_spbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_spbtrs(...) LAPACK_spbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpbtrs_base LAPACK_GLOBAL(zpbtrs,ZPBTRS) +void LAPACK_zpbtrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpbtrs(...) LAPACK_zpbtrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpbtrs(...) LAPACK_zpbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cpftrf_base LAPACK_GLOBAL(cpftrf,CPFTRF) +void LAPACK_cpftrf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpftrf(...) LAPACK_cpftrf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cpftrf(...) LAPACK_cpftrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpftrf_base LAPACK_GLOBAL(dpftrf,DPFTRF) +void LAPACK_dpftrf_base( + char const* transr, char const* uplo, + lapack_int const* n, + double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpftrf(...) LAPACK_dpftrf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dpftrf(...) LAPACK_dpftrf_base(__VA_ARGS__) +#endif + +#define LAPACK_spftrf_base LAPACK_GLOBAL(spftrf,SPFTRF) +void LAPACK_spftrf_base( + char const* transr, char const* uplo, + lapack_int const* n, + float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spftrf(...) LAPACK_spftrf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_spftrf(...) LAPACK_spftrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpftrf_base LAPACK_GLOBAL(zpftrf,ZPFTRF) +void LAPACK_zpftrf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpftrf(...) LAPACK_zpftrf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zpftrf(...) LAPACK_zpftrf_base(__VA_ARGS__) +#endif + +#define LAPACK_cpftri_base LAPACK_GLOBAL(cpftri,CPFTRI) +void LAPACK_cpftri_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpftri(...) LAPACK_cpftri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cpftri(...) LAPACK_cpftri_base(__VA_ARGS__) +#endif + +#define LAPACK_dpftri_base LAPACK_GLOBAL(dpftri,DPFTRI) +void LAPACK_dpftri_base( + char const* transr, char const* uplo, + lapack_int const* n, + double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpftri(...) LAPACK_dpftri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dpftri(...) LAPACK_dpftri_base(__VA_ARGS__) +#endif + +#define LAPACK_spftri_base LAPACK_GLOBAL(spftri,SPFTRI) +void LAPACK_spftri_base( + char const* transr, char const* uplo, + lapack_int const* n, + float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spftri(...) LAPACK_spftri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_spftri(...) LAPACK_spftri_base(__VA_ARGS__) +#endif + +#define LAPACK_zpftri_base LAPACK_GLOBAL(zpftri,ZPFTRI) +void LAPACK_zpftri_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpftri(...) LAPACK_zpftri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zpftri(...) LAPACK_zpftri_base(__VA_ARGS__) +#endif + +#define LAPACK_cpftrs_base LAPACK_GLOBAL(cpftrs,CPFTRS) +void LAPACK_cpftrs_base( + char const* transr, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpftrs(...) LAPACK_cpftrs_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cpftrs(...) LAPACK_cpftrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpftrs_base LAPACK_GLOBAL(dpftrs,DPFTRS) +void LAPACK_dpftrs_base( + char const* transr, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpftrs(...) LAPACK_dpftrs_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dpftrs(...) LAPACK_dpftrs_base(__VA_ARGS__) +#endif + +#define LAPACK_spftrs_base LAPACK_GLOBAL(spftrs,SPFTRS) +void LAPACK_spftrs_base( + char const* transr, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spftrs(...) LAPACK_spftrs_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_spftrs(...) LAPACK_spftrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpftrs_base LAPACK_GLOBAL(zpftrs,ZPFTRS) +void LAPACK_zpftrs_base( + char const* transr, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpftrs(...) LAPACK_zpftrs_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zpftrs(...) LAPACK_zpftrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cpocon_base LAPACK_GLOBAL(cpocon,CPOCON) +void LAPACK_cpocon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float const* anorm, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpocon(...) LAPACK_cpocon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpocon(...) LAPACK_cpocon_base(__VA_ARGS__) +#endif + +#define LAPACK_dpocon_base LAPACK_GLOBAL(dpocon,DPOCON) +void LAPACK_dpocon_base( + char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpocon(...) LAPACK_dpocon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpocon(...) LAPACK_dpocon_base(__VA_ARGS__) +#endif + +#define LAPACK_spocon_base LAPACK_GLOBAL(spocon,SPOCON) +void LAPACK_spocon_base( + char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spocon(...) LAPACK_spocon_base(__VA_ARGS__, 1) +#else + #define LAPACK_spocon(...) LAPACK_spocon_base(__VA_ARGS__) +#endif + +#define LAPACK_zpocon_base LAPACK_GLOBAL(zpocon,ZPOCON) +void LAPACK_zpocon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double const* anorm, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpocon(...) LAPACK_zpocon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpocon(...) LAPACK_zpocon_base(__VA_ARGS__) +#endif + +#define LAPACK_cpoequ LAPACK_GLOBAL(cpoequ,CPOEQU) +void LAPACK_cpoequ( + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_int* info ); + +#define LAPACK_dpoequ LAPACK_GLOBAL(dpoequ,DPOEQU) +void LAPACK_dpoequ( + lapack_int const* n, + double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_int* info ); + +#define LAPACK_spoequ LAPACK_GLOBAL(spoequ,SPOEQU) +void LAPACK_spoequ( + lapack_int const* n, + float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_int* info ); + +#define LAPACK_zpoequ LAPACK_GLOBAL(zpoequ,ZPOEQU) +void LAPACK_zpoequ( + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_int* info ); + +#define LAPACK_cpoequb LAPACK_GLOBAL(cpoequb,CPOEQUB) +void LAPACK_cpoequb( + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_int* info ); + +#define LAPACK_dpoequb LAPACK_GLOBAL(dpoequb,DPOEQUB) +void LAPACK_dpoequb( + lapack_int const* n, + double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_int* info ); + +#define LAPACK_spoequb LAPACK_GLOBAL(spoequb,SPOEQUB) +void LAPACK_spoequb( + lapack_int const* n, + float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_int* info ); + +#define LAPACK_zpoequb LAPACK_GLOBAL(zpoequb,ZPOEQUB) +void LAPACK_zpoequb( + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_int* info ); + +#define LAPACK_cporfs_base LAPACK_GLOBAL(cporfs,CPORFS) +void LAPACK_cporfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cporfs(...) LAPACK_cporfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cporfs(...) LAPACK_cporfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dporfs_base LAPACK_GLOBAL(dporfs,DPORFS) +void LAPACK_dporfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dporfs(...) LAPACK_dporfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dporfs(...) LAPACK_dporfs_base(__VA_ARGS__) +#endif + +#define LAPACK_sporfs_base LAPACK_GLOBAL(sporfs,SPORFS) +void LAPACK_sporfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sporfs(...) LAPACK_sporfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_sporfs(...) LAPACK_sporfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zporfs_base LAPACK_GLOBAL(zporfs,ZPORFS) +void LAPACK_zporfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zporfs(...) LAPACK_zporfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zporfs(...) LAPACK_zporfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cporfsx_base LAPACK_GLOBAL(cporfsx,CPORFSX) +void LAPACK_cporfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, + const float* S, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cporfsx(...) LAPACK_cporfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cporfsx(...) LAPACK_cporfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_dporfsx_base LAPACK_GLOBAL(dporfsx,DPORFSX) +void LAPACK_dporfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, + const double* S, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dporfsx(...) LAPACK_dporfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dporfsx(...) LAPACK_dporfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_sporfsx_base LAPACK_GLOBAL(sporfsx,SPORFSX) +void LAPACK_sporfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, + const float* S, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sporfsx(...) LAPACK_sporfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sporfsx(...) LAPACK_sporfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_zporfsx_base LAPACK_GLOBAL(zporfsx,ZPORFSX) +void LAPACK_zporfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, + const double* S, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zporfsx(...) LAPACK_zporfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zporfsx(...) LAPACK_zporfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_cposv_base LAPACK_GLOBAL(cposv,CPOSV) +void LAPACK_cposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cposv(...) LAPACK_cposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_cposv(...) LAPACK_cposv_base(__VA_ARGS__) +#endif + +#define LAPACK_dposv_base LAPACK_GLOBAL(dposv,DPOSV) +void LAPACK_dposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dposv(...) LAPACK_dposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dposv(...) LAPACK_dposv_base(__VA_ARGS__) +#endif + +#define LAPACK_sposv_base LAPACK_GLOBAL(sposv,SPOSV) +void LAPACK_sposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sposv(...) LAPACK_sposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_sposv(...) LAPACK_sposv_base(__VA_ARGS__) +#endif + +#define LAPACK_zposv_base LAPACK_GLOBAL(zposv,ZPOSV) +void LAPACK_zposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zposv(...) LAPACK_zposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zposv(...) LAPACK_zposv_base(__VA_ARGS__) +#endif + +#define LAPACK_dsposv_base LAPACK_GLOBAL(dsposv,DSPOSV) +void LAPACK_dsposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* work, + float* swork, lapack_int* iter, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsposv(...) LAPACK_dsposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsposv(...) LAPACK_dsposv_base(__VA_ARGS__) +#endif + +#define LAPACK_zcposv_base LAPACK_GLOBAL(zcposv,ZCPOSV) +void LAPACK_zcposv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + lapack_complex_double* work, + lapack_complex_float* swork, + double* rwork, lapack_int* iter, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zcposv(...) LAPACK_zcposv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zcposv(...) LAPACK_zcposv_base(__VA_ARGS__) +#endif + +#define LAPACK_cposvx_base LAPACK_GLOBAL(cposvx,CPOSVX) +void LAPACK_cposvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cposvx(...) LAPACK_cposvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cposvx(...) LAPACK_cposvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dposvx_base LAPACK_GLOBAL(dposvx,DPOSVX) +void LAPACK_dposvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, char* equed, + double* S, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dposvx(...) LAPACK_dposvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dposvx(...) LAPACK_dposvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sposvx_base LAPACK_GLOBAL(sposvx,SPOSVX) +void LAPACK_sposvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, char* equed, + float* S, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sposvx(...) LAPACK_sposvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sposvx(...) LAPACK_sposvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zposvx_base LAPACK_GLOBAL(zposvx,ZPOSVX) +void LAPACK_zposvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zposvx(...) LAPACK_zposvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zposvx(...) LAPACK_zposvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cposvxx_base LAPACK_GLOBAL(cposvxx,CPOSVXX) +void LAPACK_cposvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cposvxx(...) LAPACK_cposvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cposvxx(...) LAPACK_cposvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_dposvxx_base LAPACK_GLOBAL(dposvxx,DPOSVXX) +void LAPACK_dposvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, char* equed, + double* S, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dposvxx(...) LAPACK_dposvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dposvxx(...) LAPACK_dposvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_sposvxx_base LAPACK_GLOBAL(sposvxx,SPOSVXX) +void LAPACK_sposvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, char* equed, + float* S, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sposvxx(...) LAPACK_sposvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sposvxx(...) LAPACK_sposvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_zposvxx_base LAPACK_GLOBAL(zposvxx,ZPOSVXX) +void LAPACK_zposvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zposvxx(...) LAPACK_zposvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zposvxx(...) LAPACK_zposvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_cpotf2_base LAPACK_GLOBAL(cpotf2,CPOTF2) +void LAPACK_cpotf2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpotf2(...) LAPACK_cpotf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpotf2(...) LAPACK_cpotf2_base(__VA_ARGS__) +#endif + +#define LAPACK_dpotf2_base LAPACK_GLOBAL(dpotf2,DPOTF2) +void LAPACK_dpotf2_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpotf2(...) LAPACK_dpotf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpotf2(...) LAPACK_dpotf2_base(__VA_ARGS__) +#endif + +#define LAPACK_spotf2_base LAPACK_GLOBAL(spotf2,SPOTF2) +void LAPACK_spotf2_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spotf2(...) LAPACK_spotf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_spotf2(...) LAPACK_spotf2_base(__VA_ARGS__) +#endif + +#define LAPACK_zpotf2_base LAPACK_GLOBAL(zpotf2,ZPOTF2) +void LAPACK_zpotf2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpotf2(...) LAPACK_zpotf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpotf2(...) LAPACK_zpotf2_base(__VA_ARGS__) +#endif + +#define LAPACK_cpotrf_base LAPACK_GLOBAL(cpotrf,CPOTRF) +lapack_int LAPACK_cpotrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpotrf(...) LAPACK_cpotrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpotrf(...) LAPACK_cpotrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpotrf_base LAPACK_GLOBAL(dpotrf,DPOTRF) +lapack_int LAPACK_dpotrf_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpotrf(...) LAPACK_dpotrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpotrf(...) LAPACK_dpotrf_base(__VA_ARGS__) +#endif + +#define LAPACK_spotrf_base LAPACK_GLOBAL(spotrf,SPOTRF) +lapack_int LAPACK_spotrf_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spotrf(...) LAPACK_spotrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_spotrf(...) LAPACK_spotrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpotrf_base LAPACK_GLOBAL(zpotrf,ZPOTRF) +lapack_int LAPACK_zpotrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpotrf(...) LAPACK_zpotrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpotrf(...) LAPACK_zpotrf_base(__VA_ARGS__) +#endif + +#define LAPACK_cpotrf2_base LAPACK_GLOBAL(cpotrf2,CPOTRF2) +void LAPACK_cpotrf2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpotrf2(...) LAPACK_cpotrf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpotrf2(...) LAPACK_cpotrf2_base(__VA_ARGS__) +#endif + +#define LAPACK_dpotrf2_base LAPACK_GLOBAL(dpotrf2,DPOTRF2) +void LAPACK_dpotrf2_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpotrf2(...) LAPACK_dpotrf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpotrf2(...) LAPACK_dpotrf2_base(__VA_ARGS__) +#endif + +#define LAPACK_spotrf2_base LAPACK_GLOBAL(spotrf2,SPOTRF2) +void LAPACK_spotrf2_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spotrf2(...) LAPACK_spotrf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_spotrf2(...) LAPACK_spotrf2_base(__VA_ARGS__) +#endif + +#define LAPACK_zpotrf2_base LAPACK_GLOBAL(zpotrf2,ZPOTRF2) +void LAPACK_zpotrf2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpotrf2(...) LAPACK_zpotrf2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpotrf2(...) LAPACK_zpotrf2_base(__VA_ARGS__) +#endif + +#define LAPACK_cpotri_base LAPACK_GLOBAL(cpotri,CPOTRI) +void LAPACK_cpotri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpotri(...) LAPACK_cpotri_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpotri(...) LAPACK_cpotri_base(__VA_ARGS__) +#endif + +#define LAPACK_dpotri_base LAPACK_GLOBAL(dpotri,DPOTRI) +void LAPACK_dpotri_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpotri(...) LAPACK_dpotri_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpotri(...) LAPACK_dpotri_base(__VA_ARGS__) +#endif + +#define LAPACK_spotri_base LAPACK_GLOBAL(spotri,SPOTRI) +void LAPACK_spotri_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spotri(...) LAPACK_spotri_base(__VA_ARGS__, 1) +#else + #define LAPACK_spotri(...) LAPACK_spotri_base(__VA_ARGS__) +#endif + +#define LAPACK_zpotri_base LAPACK_GLOBAL(zpotri,ZPOTRI) +void LAPACK_zpotri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpotri(...) LAPACK_zpotri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpotri(...) LAPACK_zpotri_base(__VA_ARGS__) +#endif + +#define LAPACK_cpotrs_base LAPACK_GLOBAL(cpotrs,CPOTRS) +void LAPACK_cpotrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpotrs(...) LAPACK_cpotrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpotrs(...) LAPACK_cpotrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpotrs_base LAPACK_GLOBAL(dpotrs,DPOTRS) +void LAPACK_dpotrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpotrs(...) LAPACK_dpotrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpotrs(...) LAPACK_dpotrs_base(__VA_ARGS__) +#endif + +#define LAPACK_spotrs_base LAPACK_GLOBAL(spotrs,SPOTRS) +void LAPACK_spotrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spotrs(...) LAPACK_spotrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_spotrs(...) LAPACK_spotrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpotrs_base LAPACK_GLOBAL(zpotrs,ZPOTRS) +void LAPACK_zpotrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpotrs(...) LAPACK_zpotrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpotrs(...) LAPACK_zpotrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cppcon_base LAPACK_GLOBAL(cppcon,CPPCON) +void LAPACK_cppcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + float const* anorm, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cppcon(...) LAPACK_cppcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cppcon(...) LAPACK_cppcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dppcon_base LAPACK_GLOBAL(dppcon,DPPCON) +void LAPACK_dppcon_base( + char const* uplo, + lapack_int const* n, + double const* AP, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dppcon(...) LAPACK_dppcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dppcon(...) LAPACK_dppcon_base(__VA_ARGS__) +#endif + +#define LAPACK_sppcon_base LAPACK_GLOBAL(sppcon,SPPCON) +void LAPACK_sppcon_base( + char const* uplo, + lapack_int const* n, + float const* AP, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sppcon(...) LAPACK_sppcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_sppcon(...) LAPACK_sppcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zppcon_base LAPACK_GLOBAL(zppcon,ZPPCON) +void LAPACK_zppcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + double const* anorm, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zppcon(...) LAPACK_zppcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zppcon(...) LAPACK_zppcon_base(__VA_ARGS__) +#endif + +#define LAPACK_cppequ_base LAPACK_GLOBAL(cppequ,CPPEQU) +void LAPACK_cppequ_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + float* S, + float* scond, + float* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cppequ(...) LAPACK_cppequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_cppequ(...) LAPACK_cppequ_base(__VA_ARGS__) +#endif + +#define LAPACK_dppequ_base LAPACK_GLOBAL(dppequ,DPPEQU) +void LAPACK_dppequ_base( + char const* uplo, + lapack_int const* n, + double const* AP, + double* S, + double* scond, + double* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dppequ(...) LAPACK_dppequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_dppequ(...) LAPACK_dppequ_base(__VA_ARGS__) +#endif + +#define LAPACK_sppequ_base LAPACK_GLOBAL(sppequ,SPPEQU) +void LAPACK_sppequ_base( + char const* uplo, + lapack_int const* n, + float const* AP, + float* S, + float* scond, + float* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sppequ(...) LAPACK_sppequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_sppequ(...) LAPACK_sppequ_base(__VA_ARGS__) +#endif + +#define LAPACK_zppequ_base LAPACK_GLOBAL(zppequ,ZPPEQU) +void LAPACK_zppequ_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + double* S, + double* scond, + double* amax, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zppequ(...) LAPACK_zppequ_base(__VA_ARGS__, 1) +#else + #define LAPACK_zppequ(...) LAPACK_zppequ_base(__VA_ARGS__) +#endif + +#define LAPACK_cpprfs_base LAPACK_GLOBAL(cpprfs,CPPRFS) +void LAPACK_cpprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float const* AFP, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpprfs(...) LAPACK_cpprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpprfs(...) LAPACK_cpprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpprfs_base LAPACK_GLOBAL(dpprfs,DPPRFS) +void LAPACK_dpprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double const* AFP, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpprfs(...) LAPACK_dpprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpprfs(...) LAPACK_dpprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_spprfs_base LAPACK_GLOBAL(spprfs,SPPRFS) +void LAPACK_spprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float const* AFP, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spprfs(...) LAPACK_spprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_spprfs(...) LAPACK_spprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpprfs_base LAPACK_GLOBAL(zpprfs,ZPPRFS) +void LAPACK_zpprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double const* AFP, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpprfs(...) LAPACK_zpprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpprfs(...) LAPACK_zpprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cppsv_base LAPACK_GLOBAL(cppsv,CPPSV) +void LAPACK_cppsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* AP, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cppsv(...) LAPACK_cppsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_cppsv(...) LAPACK_cppsv_base(__VA_ARGS__) +#endif + +#define LAPACK_dppsv_base LAPACK_GLOBAL(dppsv,DPPSV) +void LAPACK_dppsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* AP, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dppsv(...) LAPACK_dppsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dppsv(...) LAPACK_dppsv_base(__VA_ARGS__) +#endif + +#define LAPACK_sppsv_base LAPACK_GLOBAL(sppsv,SPPSV) +void LAPACK_sppsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* AP, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sppsv(...) LAPACK_sppsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_sppsv(...) LAPACK_sppsv_base(__VA_ARGS__) +#endif + +#define LAPACK_zppsv_base LAPACK_GLOBAL(zppsv,ZPPSV) +void LAPACK_zppsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* AP, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zppsv(...) LAPACK_zppsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zppsv(...) LAPACK_zppsv_base(__VA_ARGS__) +#endif + +#define LAPACK_cppsvx_base LAPACK_GLOBAL(cppsvx,CPPSVX) +void LAPACK_cppsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* AP, + lapack_complex_float* AFP, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cppsvx(...) LAPACK_cppsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cppsvx(...) LAPACK_cppsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dppsvx_base LAPACK_GLOBAL(dppsvx,DPPSVX) +void LAPACK_dppsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* AP, + double* AFP, char* equed, + double* S, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dppsvx(...) LAPACK_dppsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dppsvx(...) LAPACK_dppsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sppsvx_base LAPACK_GLOBAL(sppsvx,SPPSVX) +void LAPACK_sppsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* AP, + float* AFP, char* equed, + float* S, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sppsvx(...) LAPACK_sppsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sppsvx(...) LAPACK_sppsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zppsvx_base LAPACK_GLOBAL(zppsvx,ZPPSVX) +void LAPACK_zppsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* AP, + lapack_complex_double* AFP, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zppsvx(...) LAPACK_zppsvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zppsvx(...) LAPACK_zppsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cpptrf_base LAPACK_GLOBAL(cpptrf,CPPTRF) +void LAPACK_cpptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpptrf(...) LAPACK_cpptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpptrf(...) LAPACK_cpptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpptrf_base LAPACK_GLOBAL(dpptrf,DPPTRF) +void LAPACK_dpptrf_base( + char const* uplo, + lapack_int const* n, + double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpptrf(...) LAPACK_dpptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpptrf(...) LAPACK_dpptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_spptrf_base LAPACK_GLOBAL(spptrf,SPPTRF) +void LAPACK_spptrf_base( + char const* uplo, + lapack_int const* n, + float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spptrf(...) LAPACK_spptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_spptrf(...) LAPACK_spptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpptrf_base LAPACK_GLOBAL(zpptrf,ZPPTRF) +void LAPACK_zpptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpptrf(...) LAPACK_zpptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpptrf(...) LAPACK_zpptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_cpptri_base LAPACK_GLOBAL(cpptri,CPPTRI) +void LAPACK_cpptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpptri(...) LAPACK_cpptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpptri(...) LAPACK_cpptri_base(__VA_ARGS__) +#endif + +#define LAPACK_dpptri_base LAPACK_GLOBAL(dpptri,DPPTRI) +void LAPACK_dpptri_base( + char const* uplo, + lapack_int const* n, + double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpptri(...) LAPACK_dpptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpptri(...) LAPACK_dpptri_base(__VA_ARGS__) +#endif + +#define LAPACK_spptri_base LAPACK_GLOBAL(spptri,SPPTRI) +void LAPACK_spptri_base( + char const* uplo, + lapack_int const* n, + float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spptri(...) LAPACK_spptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_spptri(...) LAPACK_spptri_base(__VA_ARGS__) +#endif + +#define LAPACK_zpptri_base LAPACK_GLOBAL(zpptri,ZPPTRI) +void LAPACK_zpptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpptri(...) LAPACK_zpptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpptri(...) LAPACK_zpptri_base(__VA_ARGS__) +#endif + +#define LAPACK_cpptrs_base LAPACK_GLOBAL(cpptrs,CPPTRS) +void LAPACK_cpptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpptrs(...) LAPACK_cpptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpptrs(...) LAPACK_cpptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpptrs_base LAPACK_GLOBAL(dpptrs,DPPTRS) +void LAPACK_dpptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpptrs(...) LAPACK_dpptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpptrs(...) LAPACK_dpptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_spptrs_base LAPACK_GLOBAL(spptrs,SPPTRS) +void LAPACK_spptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spptrs(...) LAPACK_spptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_spptrs(...) LAPACK_spptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zpptrs_base LAPACK_GLOBAL(zpptrs,ZPPTRS) +void LAPACK_zpptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpptrs(...) LAPACK_zpptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpptrs(...) LAPACK_zpptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_cpstrf_base LAPACK_GLOBAL(cpstrf,CPSTRF) +void LAPACK_cpstrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, + float const* tol, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpstrf(...) LAPACK_cpstrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpstrf(...) LAPACK_cpstrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dpstrf_base LAPACK_GLOBAL(dpstrf,DPSTRF) +void LAPACK_dpstrf_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, + double const* tol, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpstrf(...) LAPACK_dpstrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpstrf(...) LAPACK_dpstrf_base(__VA_ARGS__) +#endif + +#define LAPACK_spstrf_base LAPACK_GLOBAL(spstrf,SPSTRF) +void LAPACK_spstrf_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, + float const* tol, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spstrf(...) LAPACK_spstrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_spstrf(...) LAPACK_spstrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zpstrf_base LAPACK_GLOBAL(zpstrf,ZPSTRF) +void LAPACK_zpstrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, + double const* tol, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpstrf(...) LAPACK_zpstrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpstrf(...) LAPACK_zpstrf_base(__VA_ARGS__) +#endif + +#define LAPACK_cptcon LAPACK_GLOBAL(cptcon,CPTCON) +void LAPACK_cptcon( + lapack_int const* n, + float const* D, + lapack_complex_float const* E, + float const* anorm, + float* rcond, + float* rwork, + lapack_int* info ); + +#define LAPACK_dptcon LAPACK_GLOBAL(dptcon,DPTCON) +void LAPACK_dptcon( + lapack_int const* n, + double const* D, + double const* E, + double const* anorm, + double* rcond, + double* work, + lapack_int* info ); + +#define LAPACK_sptcon LAPACK_GLOBAL(sptcon,SPTCON) +void LAPACK_sptcon( + lapack_int const* n, + float const* D, + float const* E, + float const* anorm, + float* rcond, + float* work, + lapack_int* info ); + +#define LAPACK_zptcon LAPACK_GLOBAL(zptcon,ZPTCON) +void LAPACK_zptcon( + lapack_int const* n, + double const* D, + lapack_complex_double const* E, + double const* anorm, + double* rcond, + double* rwork, + lapack_int* info ); + +#define LAPACK_cpteqr_base LAPACK_GLOBAL(cpteqr,CPTEQR) +void LAPACK_cpteqr_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + lapack_complex_float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpteqr(...) LAPACK_cpteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpteqr(...) LAPACK_cpteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dpteqr_base LAPACK_GLOBAL(dpteqr,DPTEQR) +void LAPACK_dpteqr_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dpteqr(...) LAPACK_dpteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dpteqr(...) LAPACK_dpteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_spteqr_base LAPACK_GLOBAL(spteqr,SPTEQR) +void LAPACK_spteqr_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_spteqr(...) LAPACK_spteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_spteqr(...) LAPACK_spteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zpteqr_base LAPACK_GLOBAL(zpteqr,ZPTEQR) +void LAPACK_zpteqr_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + lapack_complex_double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpteqr(...) LAPACK_zpteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpteqr(...) LAPACK_zpteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_cptrfs_base LAPACK_GLOBAL(cptrfs,CPTRFS) +void LAPACK_cptrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* D, + lapack_complex_float const* E, + float const* DF, + lapack_complex_float const* EF, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cptrfs(...) LAPACK_cptrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cptrfs(...) LAPACK_cptrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dptrfs LAPACK_GLOBAL(dptrfs,DPTRFS) +void LAPACK_dptrfs( + lapack_int const* n, lapack_int const* nrhs, + double const* D, + double const* E, + double const* DF, + double const* EF, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* info ); + +#define LAPACK_sptrfs LAPACK_GLOBAL(sptrfs,SPTRFS) +void LAPACK_sptrfs( + lapack_int const* n, lapack_int const* nrhs, + float const* D, + float const* E, + float const* DF, + float const* EF, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* info ); + +#define LAPACK_zptrfs_base LAPACK_GLOBAL(zptrfs,ZPTRFS) +void LAPACK_zptrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* D, + lapack_complex_double const* E, + double const* DF, + lapack_complex_double const* EF, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zptrfs(...) LAPACK_zptrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zptrfs(...) LAPACK_zptrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cptsv LAPACK_GLOBAL(cptsv,CPTSV) +void LAPACK_cptsv( + lapack_int const* n, lapack_int const* nrhs, + float* D, + lapack_complex_float* E, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_dptsv LAPACK_GLOBAL(dptsv,DPTSV) +void LAPACK_dptsv( + lapack_int const* n, lapack_int const* nrhs, + double* D, + double* E, + double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_sptsv LAPACK_GLOBAL(sptsv,SPTSV) +void LAPACK_sptsv( + lapack_int const* n, lapack_int const* nrhs, + float* D, + float* E, + float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_zptsv LAPACK_GLOBAL(zptsv,ZPTSV) +void LAPACK_zptsv( + lapack_int const* n, lapack_int const* nrhs, + double* D, + lapack_complex_double* E, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_cptsvx_base LAPACK_GLOBAL(cptsvx,CPTSVX) +void LAPACK_cptsvx_base( + char const* fact, + lapack_int const* n, lapack_int const* nrhs, + float const* D, + lapack_complex_float const* E, + float* DF, + lapack_complex_float* EF, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cptsvx(...) LAPACK_cptsvx_base(__VA_ARGS__, 1) +#else + #define LAPACK_cptsvx(...) LAPACK_cptsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dptsvx_base LAPACK_GLOBAL(dptsvx,DPTSVX) +void LAPACK_dptsvx_base( + char const* fact, + lapack_int const* n, lapack_int const* nrhs, + double const* D, + double const* E, + double* DF, + double* EF, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dptsvx(...) LAPACK_dptsvx_base(__VA_ARGS__, 1) +#else + #define LAPACK_dptsvx(...) LAPACK_dptsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sptsvx_base LAPACK_GLOBAL(sptsvx,SPTSVX) +void LAPACK_sptsvx_base( + char const* fact, + lapack_int const* n, lapack_int const* nrhs, + float const* D, + float const* E, + float* DF, + float* EF, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sptsvx(...) LAPACK_sptsvx_base(__VA_ARGS__, 1) +#else + #define LAPACK_sptsvx(...) LAPACK_sptsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zptsvx_base LAPACK_GLOBAL(zptsvx,ZPTSVX) +void LAPACK_zptsvx_base( + char const* fact, + lapack_int const* n, lapack_int const* nrhs, + double const* D, + lapack_complex_double const* E, + double* DF, + lapack_complex_double* EF, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zptsvx(...) LAPACK_zptsvx_base(__VA_ARGS__, 1) +#else + #define LAPACK_zptsvx(...) LAPACK_zptsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_cpttrf LAPACK_GLOBAL(cpttrf,CPTTRF) +void LAPACK_cpttrf( + lapack_int const* n, + float* D, + lapack_complex_float* E, + lapack_int* info ); + +#define LAPACK_dpttrf LAPACK_GLOBAL(dpttrf,DPTTRF) +void LAPACK_dpttrf( + lapack_int const* n, + double* D, + double* E, + lapack_int* info ); + +#define LAPACK_spttrf LAPACK_GLOBAL(spttrf,SPTTRF) +void LAPACK_spttrf( + lapack_int const* n, + float* D, + float* E, + lapack_int* info ); + +#define LAPACK_zpttrf LAPACK_GLOBAL(zpttrf,ZPTTRF) +void LAPACK_zpttrf( + lapack_int const* n, + double* D, + lapack_complex_double* E, + lapack_int* info ); + +#define LAPACK_cpttrs_base LAPACK_GLOBAL(cpttrs,CPTTRS) +void LAPACK_cpttrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* D, + lapack_complex_float const* E, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cpttrs(...) LAPACK_cpttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_cpttrs(...) LAPACK_cpttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dpttrs LAPACK_GLOBAL(dpttrs,DPTTRS) +void LAPACK_dpttrs( + lapack_int const* n, lapack_int const* nrhs, + double const* D, + double const* E, + double* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_spttrs LAPACK_GLOBAL(spttrs,SPTTRS) +void LAPACK_spttrs( + lapack_int const* n, lapack_int const* nrhs, + float const* D, + float const* E, + float* B, lapack_int const* ldb, + lapack_int* info ); + +#define LAPACK_zpttrs_base LAPACK_GLOBAL(zpttrs,ZPTTRS) +void LAPACK_zpttrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* D, + lapack_complex_double const* E, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zpttrs(...) LAPACK_zpttrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zpttrs(...) LAPACK_zpttrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbev_base LAPACK_GLOBAL(dsbev,DSBEV) +void LAPACK_dsbev_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbev(...) LAPACK_dsbev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbev(...) LAPACK_dsbev_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbev_base LAPACK_GLOBAL(ssbev,SSBEV) +void LAPACK_ssbev_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbev(...) LAPACK_ssbev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbev(...) LAPACK_ssbev_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbev_2stage_base LAPACK_GLOBAL(dsbev_2stage,DSBEV_2STAGE) +void LAPACK_dsbev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbev_2stage(...) LAPACK_dsbev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbev_2stage(...) LAPACK_dsbev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbev_2stage_base LAPACK_GLOBAL(ssbev_2stage,SSBEV_2STAGE) +void LAPACK_ssbev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbev_2stage(...) LAPACK_ssbev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbev_2stage(...) LAPACK_ssbev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbevd_base LAPACK_GLOBAL(dsbevd,DSBEVD) +void LAPACK_dsbevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbevd(...) LAPACK_dsbevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbevd(...) LAPACK_dsbevd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbevd_base LAPACK_GLOBAL(ssbevd,SSBEVD) +void LAPACK_ssbevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbevd(...) LAPACK_ssbevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbevd(...) LAPACK_ssbevd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbevd_2stage_base LAPACK_GLOBAL(dsbevd_2stage,DSBEVD_2STAGE) +void LAPACK_dsbevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbevd_2stage(...) LAPACK_dsbevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbevd_2stage(...) LAPACK_dsbevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbevd_2stage_base LAPACK_GLOBAL(ssbevd_2stage,SSBEVD_2STAGE) +void LAPACK_ssbevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbevd_2stage(...) LAPACK_ssbevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbevd_2stage(...) LAPACK_ssbevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbevx_base LAPACK_GLOBAL(dsbevx,DSBEVX) +void LAPACK_dsbevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbevx(...) LAPACK_dsbevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsbevx(...) LAPACK_dsbevx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbevx_base LAPACK_GLOBAL(ssbevx,SSBEVX) +void LAPACK_ssbevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbevx(...) LAPACK_ssbevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssbevx(...) LAPACK_ssbevx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbevx_2stage_base LAPACK_GLOBAL(dsbevx_2stage,DSBEVX_2STAGE) +void LAPACK_dsbevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbevx_2stage(...) LAPACK_dsbevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsbevx_2stage(...) LAPACK_dsbevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbevx_2stage_base LAPACK_GLOBAL(ssbevx_2stage,SSBEVX_2STAGE) +void LAPACK_ssbevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbevx_2stage(...) LAPACK_ssbevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssbevx_2stage(...) LAPACK_ssbevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbgst_base LAPACK_GLOBAL(dsbgst,DSBGST) +void LAPACK_dsbgst_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + double* AB, lapack_int const* ldab, + double const* BB, lapack_int const* ldbb, + double* X, lapack_int const* ldx, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbgst(...) LAPACK_dsbgst_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbgst(...) LAPACK_dsbgst_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbgst_base LAPACK_GLOBAL(ssbgst,SSBGST) +void LAPACK_ssbgst_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + float* AB, lapack_int const* ldab, + float const* BB, lapack_int const* ldbb, + float* X, lapack_int const* ldx, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbgst(...) LAPACK_ssbgst_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbgst(...) LAPACK_ssbgst_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbgv_base LAPACK_GLOBAL(dsbgv,DSBGV) +void LAPACK_dsbgv_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + double* AB, lapack_int const* ldab, + double* BB, lapack_int const* ldbb, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbgv(...) LAPACK_dsbgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbgv(...) LAPACK_dsbgv_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbgv_base LAPACK_GLOBAL(ssbgv,SSBGV) +void LAPACK_ssbgv_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + float* AB, lapack_int const* ldab, + float* BB, lapack_int const* ldbb, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbgv(...) LAPACK_ssbgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbgv(...) LAPACK_ssbgv_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbgvd_base LAPACK_GLOBAL(dsbgvd,DSBGVD) +void LAPACK_dsbgvd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + double* AB, lapack_int const* ldab, + double* BB, lapack_int const* ldbb, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbgvd(...) LAPACK_dsbgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbgvd(...) LAPACK_dsbgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbgvd_base LAPACK_GLOBAL(ssbgvd,SSBGVD) +void LAPACK_ssbgvd_base( + char const* jobz, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + float* AB, lapack_int const* ldab, + float* BB, lapack_int const* ldbb, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbgvd(...) LAPACK_ssbgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbgvd(...) LAPACK_ssbgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbgvx_base LAPACK_GLOBAL(dsbgvx,DSBGVX) +void LAPACK_dsbgvx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + double* AB, lapack_int const* ldab, + double* BB, lapack_int const* ldbb, + double* Q, lapack_int const* ldq, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbgvx(...) LAPACK_dsbgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsbgvx(...) LAPACK_dsbgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbgvx_base LAPACK_GLOBAL(ssbgvx,SSBGVX) +void LAPACK_ssbgvx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, lapack_int const* ka, lapack_int const* kb, + float* AB, lapack_int const* ldab, + float* BB, lapack_int const* ldbb, + float* Q, lapack_int const* ldq, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbgvx(...) LAPACK_ssbgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssbgvx(...) LAPACK_ssbgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsbtrd_base LAPACK_GLOBAL(dsbtrd,DSBTRD) +void LAPACK_dsbtrd_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* kd, + double* AB, lapack_int const* ldab, + double* D, + double* E, + double* Q, lapack_int const* ldq, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsbtrd(...) LAPACK_dsbtrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsbtrd(...) LAPACK_dsbtrd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssbtrd_base LAPACK_GLOBAL(ssbtrd,SSBTRD) +void LAPACK_ssbtrd_base( + char const* vect, char const* uplo, + lapack_int const* n, lapack_int const* kd, + float* AB, lapack_int const* ldab, + float* D, + float* E, + float* Q, lapack_int const* ldq, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssbtrd(...) LAPACK_ssbtrd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssbtrd(...) LAPACK_ssbtrd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsfrk_base LAPACK_GLOBAL(dsfrk,DSFRK) +void LAPACK_dsfrk_base( + char const* transr, char const* uplo, char const* trans, + lapack_int const* n, lapack_int const* k, + double const* alpha, + double const* A, lapack_int const* lda, + double const* beta, + double* C +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsfrk(...) LAPACK_dsfrk_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsfrk(...) LAPACK_dsfrk_base(__VA_ARGS__) +#endif + +#define LAPACK_ssfrk_base LAPACK_GLOBAL(ssfrk,SSFRK) +void LAPACK_ssfrk_base( + char const* transr, char const* uplo, char const* trans, + lapack_int const* n, lapack_int const* k, + float const* alpha, + float const* A, lapack_int const* lda, + float const* beta, + float* C +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssfrk(...) LAPACK_ssfrk_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssfrk(...) LAPACK_ssfrk_base(__VA_ARGS__) +#endif + +#define LAPACK_cspcon_base LAPACK_GLOBAL(cspcon,CSPCON) +void LAPACK_cspcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cspcon(...) LAPACK_cspcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_cspcon(...) LAPACK_cspcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dspcon_base LAPACK_GLOBAL(dspcon,DSPCON) +void LAPACK_dspcon_base( + char const* uplo, + lapack_int const* n, + double const* AP, lapack_int const* ipiv, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspcon(...) LAPACK_dspcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dspcon(...) LAPACK_dspcon_base(__VA_ARGS__) +#endif + +#define LAPACK_sspcon_base LAPACK_GLOBAL(sspcon,SSPCON) +void LAPACK_sspcon_base( + char const* uplo, + lapack_int const* n, + float const* AP, lapack_int const* ipiv, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspcon(...) LAPACK_sspcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_sspcon(...) LAPACK_sspcon_base(__VA_ARGS__) +#endif + +#define LAPACK_zspcon_base LAPACK_GLOBAL(zspcon,ZSPCON) +void LAPACK_zspcon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zspcon(...) LAPACK_zspcon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zspcon(...) LAPACK_zspcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dspev_base LAPACK_GLOBAL(dspev,DSPEV) +void LAPACK_dspev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* AP, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspev(...) LAPACK_dspev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dspev(...) LAPACK_dspev_base(__VA_ARGS__) +#endif + +#define LAPACK_sspev_base LAPACK_GLOBAL(sspev,SSPEV) +void LAPACK_sspev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* AP, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspev(...) LAPACK_sspev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sspev(...) LAPACK_sspev_base(__VA_ARGS__) +#endif + +#define LAPACK_dspevd_base LAPACK_GLOBAL(dspevd,DSPEVD) +void LAPACK_dspevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* AP, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspevd(...) LAPACK_dspevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dspevd(...) LAPACK_dspevd_base(__VA_ARGS__) +#endif + +#define LAPACK_sspevd_base LAPACK_GLOBAL(sspevd,SSPEVD) +void LAPACK_sspevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* AP, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspevd(...) LAPACK_sspevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sspevd(...) LAPACK_sspevd_base(__VA_ARGS__) +#endif + +#define LAPACK_dspevx_base LAPACK_GLOBAL(dspevx,DSPEVX) +void LAPACK_dspevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* AP, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspevx(...) LAPACK_dspevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dspevx(...) LAPACK_dspevx_base(__VA_ARGS__) +#endif + +#define LAPACK_sspevx_base LAPACK_GLOBAL(sspevx,SSPEVX) +void LAPACK_sspevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* AP, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspevx(...) LAPACK_sspevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sspevx(...) LAPACK_sspevx_base(__VA_ARGS__) +#endif + +#define LAPACK_dspgst_base LAPACK_GLOBAL(dspgst,DSPGST) +void LAPACK_dspgst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + double* AP, + double const* BP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspgst(...) LAPACK_dspgst_base(__VA_ARGS__, 1) +#else + #define LAPACK_dspgst(...) LAPACK_dspgst_base(__VA_ARGS__) +#endif + +#define LAPACK_sspgst_base LAPACK_GLOBAL(sspgst,SSPGST) +void LAPACK_sspgst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + float* AP, + float const* BP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspgst(...) LAPACK_sspgst_base(__VA_ARGS__, 1) +#else + #define LAPACK_sspgst(...) LAPACK_sspgst_base(__VA_ARGS__) +#endif + +#define LAPACK_dspgv_base LAPACK_GLOBAL(dspgv,DSPGV) +void LAPACK_dspgv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + double* AP, + double* BP, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspgv(...) LAPACK_dspgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dspgv(...) LAPACK_dspgv_base(__VA_ARGS__) +#endif + +#define LAPACK_sspgv_base LAPACK_GLOBAL(sspgv,SSPGV) +void LAPACK_sspgv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + float* AP, + float* BP, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspgv(...) LAPACK_sspgv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sspgv(...) LAPACK_sspgv_base(__VA_ARGS__) +#endif + +#define LAPACK_dspgvd_base LAPACK_GLOBAL(dspgvd,DSPGVD) +void LAPACK_dspgvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + double* AP, + double* BP, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspgvd(...) LAPACK_dspgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dspgvd(...) LAPACK_dspgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_sspgvd_base LAPACK_GLOBAL(sspgvd,SSPGVD) +void LAPACK_sspgvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + float* AP, + float* BP, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspgvd(...) LAPACK_sspgvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sspgvd(...) LAPACK_sspgvd_base(__VA_ARGS__) +#endif + +#define LAPACK_dspgvx_base LAPACK_GLOBAL(dspgvx,DSPGVX) +void LAPACK_dspgvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* AP, + double* BP, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspgvx(...) LAPACK_dspgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dspgvx(...) LAPACK_dspgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sspgvx_base LAPACK_GLOBAL(sspgvx,SSPGVX) +void LAPACK_sspgvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* AP, + float* BP, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspgvx(...) LAPACK_sspgvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_sspgvx(...) LAPACK_sspgvx_base(__VA_ARGS__) +#endif + +#define LAPACK_csprfs_base LAPACK_GLOBAL(csprfs,CSPRFS) +void LAPACK_csprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float const* AFP, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csprfs(...) LAPACK_csprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_csprfs(...) LAPACK_csprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dsprfs_base LAPACK_GLOBAL(dsprfs,DSPRFS) +void LAPACK_dsprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double const* AFP, lapack_int const* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsprfs(...) LAPACK_dsprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsprfs(...) LAPACK_dsprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ssprfs_base LAPACK_GLOBAL(ssprfs,SSPRFS) +void LAPACK_ssprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float const* AFP, lapack_int const* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssprfs(...) LAPACK_ssprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssprfs(...) LAPACK_ssprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zsprfs_base LAPACK_GLOBAL(zsprfs,ZSPRFS) +void LAPACK_zsprfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double const* AFP, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsprfs(...) LAPACK_zsprfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsprfs(...) LAPACK_zsprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_cspsv_base LAPACK_GLOBAL(cspsv,CSPSV) +void LAPACK_cspsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* AP, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cspsv(...) LAPACK_cspsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_cspsv(...) LAPACK_cspsv_base(__VA_ARGS__) +#endif + +#define LAPACK_dspsv_base LAPACK_GLOBAL(dspsv,DSPSV) +void LAPACK_dspsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* AP, lapack_int* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspsv(...) LAPACK_dspsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dspsv(...) LAPACK_dspsv_base(__VA_ARGS__) +#endif + +#define LAPACK_sspsv_base LAPACK_GLOBAL(sspsv,SSPSV) +void LAPACK_sspsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* AP, lapack_int* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspsv(...) LAPACK_sspsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_sspsv(...) LAPACK_sspsv_base(__VA_ARGS__) +#endif + +#define LAPACK_zspsv_base LAPACK_GLOBAL(zspsv,ZSPSV) +void LAPACK_zspsv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* AP, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zspsv(...) LAPACK_zspsv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zspsv(...) LAPACK_zspsv_base(__VA_ARGS__) +#endif + +#define LAPACK_cspsvx_base LAPACK_GLOBAL(cspsvx,CSPSVX) +void LAPACK_cspsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float* AFP, lapack_int* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cspsvx(...) LAPACK_cspsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cspsvx(...) LAPACK_cspsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dspsvx_base LAPACK_GLOBAL(dspsvx,DSPSVX) +void LAPACK_dspsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double* AFP, lapack_int* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dspsvx(...) LAPACK_dspsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dspsvx(...) LAPACK_dspsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_sspsvx_base LAPACK_GLOBAL(sspsvx,SSPSVX) +void LAPACK_sspsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float* AFP, lapack_int* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sspsvx(...) LAPACK_sspsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sspsvx(...) LAPACK_sspsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zspsvx_base LAPACK_GLOBAL(zspsvx,ZSPSVX) +void LAPACK_zspsvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double* AFP, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zspsvx(...) LAPACK_zspsvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zspsvx(...) LAPACK_zspsvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsptrd_base LAPACK_GLOBAL(dsptrd,DSPTRD) +void LAPACK_dsptrd_base( + char const* uplo, + lapack_int const* n, + double* AP, + double* D, + double* E, + double* tau, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsptrd(...) LAPACK_dsptrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsptrd(...) LAPACK_dsptrd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssptrd_base LAPACK_GLOBAL(ssptrd,SSPTRD) +void LAPACK_ssptrd_base( + char const* uplo, + lapack_int const* n, + float* AP, + float* D, + float* E, + float* tau, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssptrd(...) LAPACK_ssptrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssptrd(...) LAPACK_ssptrd_base(__VA_ARGS__) +#endif + +#define LAPACK_csptrf_base LAPACK_GLOBAL(csptrf,CSPTRF) +void LAPACK_csptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csptrf(...) LAPACK_csptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_csptrf(...) LAPACK_csptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dsptrf_base LAPACK_GLOBAL(dsptrf,DSPTRF) +void LAPACK_dsptrf_base( + char const* uplo, + lapack_int const* n, + double* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsptrf(...) LAPACK_dsptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsptrf(...) LAPACK_dsptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_ssptrf_base LAPACK_GLOBAL(ssptrf,SSPTRF) +void LAPACK_ssptrf_base( + char const* uplo, + lapack_int const* n, + float* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssptrf(...) LAPACK_ssptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssptrf(...) LAPACK_ssptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zsptrf_base LAPACK_GLOBAL(zsptrf,ZSPTRF) +void LAPACK_zsptrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, lapack_int* ipiv, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsptrf(...) LAPACK_zsptrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsptrf(...) LAPACK_zsptrf_base(__VA_ARGS__) +#endif + +#define LAPACK_csptri_base LAPACK_GLOBAL(csptri,CSPTRI) +void LAPACK_csptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* AP, lapack_int const* ipiv, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csptri(...) LAPACK_csptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_csptri(...) LAPACK_csptri_base(__VA_ARGS__) +#endif + +#define LAPACK_dsptri_base LAPACK_GLOBAL(dsptri,DSPTRI) +void LAPACK_dsptri_base( + char const* uplo, + lapack_int const* n, + double* AP, lapack_int const* ipiv, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsptri(...) LAPACK_dsptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsptri(...) LAPACK_dsptri_base(__VA_ARGS__) +#endif + +#define LAPACK_ssptri_base LAPACK_GLOBAL(ssptri,SSPTRI) +void LAPACK_ssptri_base( + char const* uplo, + lapack_int const* n, + float* AP, lapack_int const* ipiv, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssptri(...) LAPACK_ssptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssptri(...) LAPACK_ssptri_base(__VA_ARGS__) +#endif + +#define LAPACK_zsptri_base LAPACK_GLOBAL(zsptri,ZSPTRI) +void LAPACK_zsptri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* AP, lapack_int const* ipiv, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsptri(...) LAPACK_zsptri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsptri(...) LAPACK_zsptri_base(__VA_ARGS__) +#endif + +#define LAPACK_csptrs_base LAPACK_GLOBAL(csptrs,CSPTRS) +void LAPACK_csptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csptrs(...) LAPACK_csptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_csptrs(...) LAPACK_csptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dsptrs_base LAPACK_GLOBAL(dsptrs,DSPTRS) +void LAPACK_dsptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsptrs(...) LAPACK_dsptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsptrs(...) LAPACK_dsptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ssptrs_base LAPACK_GLOBAL(ssptrs,SSPTRS) +void LAPACK_ssptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssptrs(...) LAPACK_ssptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssptrs(...) LAPACK_ssptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zsptrs_base LAPACK_GLOBAL(zsptrs,ZSPTRS) +void LAPACK_zsptrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsptrs(...) LAPACK_zsptrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsptrs(...) LAPACK_zsptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dstebz_base LAPACK_GLOBAL(dstebz,DSTEBZ) +void LAPACK_dstebz_base( + char const* range, char const* order, + lapack_int const* n, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, + double const* D, + double const* E, lapack_int* m, lapack_int* nsplit, + double* W, lapack_int* IBLOCK, lapack_int* ISPLIT, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstebz(...) LAPACK_dstebz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dstebz(...) LAPACK_dstebz_base(__VA_ARGS__) +#endif + +#define LAPACK_sstebz_base LAPACK_GLOBAL(sstebz,SSTEBZ) +void LAPACK_sstebz_base( + char const* range, char const* order, + lapack_int const* n, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, + float const* D, + float const* E, lapack_int* m, lapack_int* nsplit, + float* W, lapack_int* IBLOCK, lapack_int* ISPLIT, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstebz(...) LAPACK_sstebz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sstebz(...) LAPACK_sstebz_base(__VA_ARGS__) +#endif + +#define LAPACK_cstedc_base LAPACK_GLOBAL(cstedc,CSTEDC) +void LAPACK_cstedc_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + lapack_complex_float* Z, lapack_int const* ldz, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cstedc(...) LAPACK_cstedc_base(__VA_ARGS__, 1) +#else + #define LAPACK_cstedc(...) LAPACK_cstedc_base(__VA_ARGS__) +#endif + +#define LAPACK_dstedc_base LAPACK_GLOBAL(dstedc,DSTEDC) +void LAPACK_dstedc_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstedc(...) LAPACK_dstedc_base(__VA_ARGS__, 1) +#else + #define LAPACK_dstedc(...) LAPACK_dstedc_base(__VA_ARGS__) +#endif + +#define LAPACK_sstedc_base LAPACK_GLOBAL(sstedc,SSTEDC) +void LAPACK_sstedc_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstedc(...) LAPACK_sstedc_base(__VA_ARGS__, 1) +#else + #define LAPACK_sstedc(...) LAPACK_sstedc_base(__VA_ARGS__) +#endif + +#define LAPACK_zstedc_base LAPACK_GLOBAL(zstedc,ZSTEDC) +void LAPACK_zstedc_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + lapack_complex_double* Z, lapack_int const* ldz, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zstedc(...) LAPACK_zstedc_base(__VA_ARGS__, 1) +#else + #define LAPACK_zstedc(...) LAPACK_zstedc_base(__VA_ARGS__) +#endif + +#define LAPACK_cstegr_base LAPACK_GLOBAL(cstegr,CSTEGR) +void LAPACK_cstegr_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cstegr(...) LAPACK_cstegr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cstegr(...) LAPACK_cstegr_base(__VA_ARGS__) +#endif + +#define LAPACK_dstegr_base LAPACK_GLOBAL(dstegr,DSTEGR) +void LAPACK_dstegr_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstegr(...) LAPACK_dstegr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dstegr(...) LAPACK_dstegr_base(__VA_ARGS__) +#endif + +#define LAPACK_sstegr_base LAPACK_GLOBAL(sstegr,SSTEGR) +void LAPACK_sstegr_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstegr(...) LAPACK_sstegr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sstegr(...) LAPACK_sstegr_base(__VA_ARGS__) +#endif + +#define LAPACK_zstegr_base LAPACK_GLOBAL(zstegr,ZSTEGR) +void LAPACK_zstegr_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zstegr(...) LAPACK_zstegr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zstegr(...) LAPACK_zstegr_base(__VA_ARGS__) +#endif + +#define LAPACK_cstein LAPACK_GLOBAL(cstein,CSTEIN) +void LAPACK_cstein( + lapack_int const* n, + float const* D, + float const* E, lapack_int const* m, + float const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, + lapack_complex_float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info ); + +#define LAPACK_dstein LAPACK_GLOBAL(dstein,DSTEIN) +void LAPACK_dstein( + lapack_int const* n, + double const* D, + double const* E, lapack_int const* m, + double const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info ); + +#define LAPACK_sstein LAPACK_GLOBAL(sstein,SSTEIN) +void LAPACK_sstein( + lapack_int const* n, + float const* D, + float const* E, lapack_int const* m, + float const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info ); + +#define LAPACK_zstein LAPACK_GLOBAL(zstein,ZSTEIN) +void LAPACK_zstein( + lapack_int const* n, + double const* D, + double const* E, lapack_int const* m, + double const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, + lapack_complex_double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info ); + +#define LAPACK_cstemr_base LAPACK_GLOBAL(cstemr,CSTEMR) +void LAPACK_cstemr_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, + float* W, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cstemr(...) LAPACK_cstemr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cstemr(...) LAPACK_cstemr_base(__VA_ARGS__) +#endif + +#define LAPACK_dstemr_base LAPACK_GLOBAL(dstemr,DSTEMR) +void LAPACK_dstemr_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstemr(...) LAPACK_dstemr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dstemr(...) LAPACK_dstemr_base(__VA_ARGS__) +#endif + +#define LAPACK_sstemr_base LAPACK_GLOBAL(sstemr,SSTEMR) +void LAPACK_sstemr_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstemr(...) LAPACK_sstemr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sstemr(...) LAPACK_sstemr_base(__VA_ARGS__) +#endif + +#define LAPACK_zstemr_base LAPACK_GLOBAL(zstemr,ZSTEMR) +void LAPACK_zstemr_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, + double* W, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zstemr(...) LAPACK_zstemr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zstemr(...) LAPACK_zstemr_base(__VA_ARGS__) +#endif + +#define LAPACK_csteqr_base LAPACK_GLOBAL(csteqr,CSTEQR) +void LAPACK_csteqr_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + lapack_complex_float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csteqr(...) LAPACK_csteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_csteqr(...) LAPACK_csteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dsteqr_base LAPACK_GLOBAL(dsteqr,DSTEQR) +void LAPACK_dsteqr_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsteqr(...) LAPACK_dsteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsteqr(...) LAPACK_dsteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_ssteqr_base LAPACK_GLOBAL(ssteqr,SSTEQR) +void LAPACK_ssteqr_base( + char const* compz, + lapack_int const* n, + float* D, + float* E, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssteqr(...) LAPACK_ssteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssteqr(...) LAPACK_ssteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zsteqr_base LAPACK_GLOBAL(zsteqr,ZSTEQR) +void LAPACK_zsteqr_base( + char const* compz, + lapack_int const* n, + double* D, + double* E, + lapack_complex_double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsteqr(...) LAPACK_zsteqr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsteqr(...) LAPACK_zsteqr_base(__VA_ARGS__) +#endif + +#define LAPACK_dsterf LAPACK_GLOBAL(dsterf,DSTERF) +void LAPACK_dsterf( + lapack_int const* n, + double* D, + double* E, + lapack_int* info ); + +#define LAPACK_ssterf LAPACK_GLOBAL(ssterf,SSTERF) +void LAPACK_ssterf( + lapack_int const* n, + float* D, + float* E, + lapack_int* info ); + +#define LAPACK_dstev_base LAPACK_GLOBAL(dstev,DSTEV) +void LAPACK_dstev_base( + char const* jobz, + lapack_int const* n, + double* D, + double* E, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstev(...) LAPACK_dstev_base(__VA_ARGS__, 1) +#else + #define LAPACK_dstev(...) LAPACK_dstev_base(__VA_ARGS__) +#endif + +#define LAPACK_sstev_base LAPACK_GLOBAL(sstev,SSTEV) +void LAPACK_sstev_base( + char const* jobz, + lapack_int const* n, + float* D, + float* E, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstev(...) LAPACK_sstev_base(__VA_ARGS__, 1) +#else + #define LAPACK_sstev(...) LAPACK_sstev_base(__VA_ARGS__) +#endif + +#define LAPACK_dstevd_base LAPACK_GLOBAL(dstevd,DSTEVD) +void LAPACK_dstevd_base( + char const* jobz, + lapack_int const* n, + double* D, + double* E, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstevd(...) LAPACK_dstevd_base(__VA_ARGS__, 1) +#else + #define LAPACK_dstevd(...) LAPACK_dstevd_base(__VA_ARGS__) +#endif + +#define LAPACK_sstevd_base LAPACK_GLOBAL(sstevd,SSTEVD) +void LAPACK_sstevd_base( + char const* jobz, + lapack_int const* n, + float* D, + float* E, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstevd(...) LAPACK_sstevd_base(__VA_ARGS__, 1) +#else + #define LAPACK_sstevd(...) LAPACK_sstevd_base(__VA_ARGS__) +#endif + +#define LAPACK_dstevr_base LAPACK_GLOBAL(dstevr,DSTEVR) +void LAPACK_dstevr_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstevr(...) LAPACK_dstevr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dstevr(...) LAPACK_dstevr_base(__VA_ARGS__) +#endif + +#define LAPACK_sstevr_base LAPACK_GLOBAL(sstevr,SSTEVR) +void LAPACK_sstevr_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstevr(...) LAPACK_sstevr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sstevr(...) LAPACK_sstevr_base(__VA_ARGS__) +#endif + +#define LAPACK_dstevx_base LAPACK_GLOBAL(dstevx,DSTEVX) +void LAPACK_dstevx_base( + char const* jobz, char const* range, + lapack_int const* n, + double* D, + double* E, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dstevx(...) LAPACK_dstevx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dstevx(...) LAPACK_dstevx_base(__VA_ARGS__) +#endif + +#define LAPACK_sstevx_base LAPACK_GLOBAL(sstevx,SSTEVX) +void LAPACK_sstevx_base( + char const* jobz, char const* range, + lapack_int const* n, + float* D, + float* E, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_sstevx(...) LAPACK_sstevx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_sstevx(...) LAPACK_sstevx_base(__VA_ARGS__) +#endif + +#define LAPACK_csycon_base LAPACK_GLOBAL(csycon,CSYCON) +void LAPACK_csycon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csycon(...) LAPACK_csycon_base(__VA_ARGS__, 1) +#else + #define LAPACK_csycon(...) LAPACK_csycon_base(__VA_ARGS__) +#endif + +#define LAPACK_dsycon_base LAPACK_GLOBAL(dsycon,DSYCON) +void LAPACK_dsycon_base( + char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, lapack_int const* ipiv, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsycon(...) LAPACK_dsycon_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsycon(...) LAPACK_dsycon_base(__VA_ARGS__) +#endif + +#define LAPACK_ssycon_base LAPACK_GLOBAL(ssycon,SSYCON) +void LAPACK_ssycon_base( + char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, lapack_int const* ipiv, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssycon(...) LAPACK_ssycon_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssycon(...) LAPACK_ssycon_base(__VA_ARGS__) +#endif + +#define LAPACK_zsycon_base LAPACK_GLOBAL(zsycon,ZSYCON) +void LAPACK_zsycon_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsycon(...) LAPACK_zsycon_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsycon(...) LAPACK_zsycon_base(__VA_ARGS__) +#endif + +#define LAPACK_csycon_3_base LAPACK_GLOBAL(csycon_3,CSYCON_3) +void LAPACK_csycon_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + float const* anorm, + float* rcond, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csycon_3(...) LAPACK_csycon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_csycon_3(...) LAPACK_csycon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_dsycon_3_base LAPACK_GLOBAL(dsycon_3,DSYCON_3) +void LAPACK_dsycon_3_base( + char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double const* E, lapack_int const* ipiv, + double const* anorm, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsycon_3(...) LAPACK_dsycon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsycon_3(...) LAPACK_dsycon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_ssycon_3_base LAPACK_GLOBAL(ssycon_3,SSYCON_3) +void LAPACK_ssycon_3_base( + char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float const* E, lapack_int const* ipiv, + float const* anorm, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssycon_3(...) LAPACK_ssycon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssycon_3(...) LAPACK_ssycon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zsycon_3_base LAPACK_GLOBAL(zsycon_3,ZSYCON_3) +void LAPACK_zsycon_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + double const* anorm, + double* rcond, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsycon_3(...) LAPACK_zsycon_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsycon_3(...) LAPACK_zsycon_3_base(__VA_ARGS__) +#endif + +#define LAPACK_csyconv_base LAPACK_GLOBAL(csyconv,CSYCONV) +void LAPACK_csyconv_base( + char const* uplo, char const* way, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* E, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyconv(...) LAPACK_csyconv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_csyconv(...) LAPACK_csyconv_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyconv_base LAPACK_GLOBAL(dsyconv,DSYCONV) +void LAPACK_dsyconv_base( + char const* uplo, char const* way, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* ipiv, + double* E, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyconv(...) LAPACK_dsyconv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyconv(...) LAPACK_dsyconv_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyconv_base LAPACK_GLOBAL(ssyconv,SSYCONV) +void LAPACK_ssyconv_base( + char const* uplo, char const* way, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* ipiv, + float* E, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyconv(...) LAPACK_ssyconv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyconv(...) LAPACK_ssyconv_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyconv_base LAPACK_GLOBAL(zsyconv,ZSYCONV) +void LAPACK_zsyconv_base( + char const* uplo, char const* way, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* E, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyconv(...) LAPACK_zsyconv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zsyconv(...) LAPACK_zsyconv_base(__VA_ARGS__) +#endif + +#define LAPACK_csyequb_base LAPACK_GLOBAL(csyequb,CSYEQUB) +void LAPACK_csyequb_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyequb(...) LAPACK_csyequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_csyequb(...) LAPACK_csyequb_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyequb_base LAPACK_GLOBAL(dsyequb,DSYEQUB) +void LAPACK_dsyequb_base( + char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyequb(...) LAPACK_dsyequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsyequb(...) LAPACK_dsyequb_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyequb_base LAPACK_GLOBAL(ssyequb,SSYEQUB) +void LAPACK_ssyequb_base( + char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* S, + float* scond, + float* amax, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyequb(...) LAPACK_ssyequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssyequb(...) LAPACK_ssyequb_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyequb_base LAPACK_GLOBAL(zsyequb,ZSYEQUB) +void LAPACK_zsyequb_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* S, + double* scond, + double* amax, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyequb(...) LAPACK_zsyequb_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsyequb(...) LAPACK_zsyequb_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyev_base LAPACK_GLOBAL(dsyev,DSYEV) +void LAPACK_dsyev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* W, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyev(...) LAPACK_dsyev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyev(...) LAPACK_dsyev_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyev_base LAPACK_GLOBAL(ssyev,SSYEV) +void LAPACK_ssyev_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* W, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyev(...) LAPACK_ssyev_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyev(...) LAPACK_ssyev_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyev_2stage_base LAPACK_GLOBAL(dsyev_2stage,DSYEV_2STAGE) +void LAPACK_dsyev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* W, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyev_2stage(...) LAPACK_dsyev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyev_2stage(...) LAPACK_dsyev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyev_2stage_base LAPACK_GLOBAL(ssyev_2stage,SSYEV_2STAGE) +void LAPACK_ssyev_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* W, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyev_2stage(...) LAPACK_ssyev_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyev_2stage(...) LAPACK_ssyev_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevd_base LAPACK_GLOBAL(dsyevd,DSYEVD) +void LAPACK_dsyevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* W, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevd(...) LAPACK_dsyevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyevd(...) LAPACK_dsyevd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevd_base LAPACK_GLOBAL(ssyevd,SSYEVD) +void LAPACK_ssyevd_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* W, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevd(...) LAPACK_ssyevd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyevd(...) LAPACK_ssyevd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevd_2stage_base LAPACK_GLOBAL(dsyevd_2stage,DSYEVD_2STAGE) +void LAPACK_dsyevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* W, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevd_2stage(...) LAPACK_dsyevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyevd_2stage(...) LAPACK_dsyevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevd_2stage_base LAPACK_GLOBAL(ssyevd_2stage,SSYEVD_2STAGE) +void LAPACK_ssyevd_2stage_base( + char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* W, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevd_2stage(...) LAPACK_ssyevd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyevd_2stage(...) LAPACK_ssyevd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevr_base LAPACK_GLOBAL(dsyevr,DSYEVR) +void LAPACK_dsyevr_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevr(...) LAPACK_dsyevr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsyevr(...) LAPACK_dsyevr_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevr_base LAPACK_GLOBAL(ssyevr,SSYEVR) +void LAPACK_ssyevr_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevr(...) LAPACK_ssyevr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssyevr(...) LAPACK_ssyevr_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevr_2stage_base LAPACK_GLOBAL(dsyevr_2stage,DSYEVR_2STAGE) +void LAPACK_dsyevr_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevr_2stage(...) LAPACK_dsyevr_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsyevr_2stage(...) LAPACK_dsyevr_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevr_2stage_base LAPACK_GLOBAL(ssyevr_2stage,SSYEVR_2STAGE) +void LAPACK_ssyevr_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevr_2stage(...) LAPACK_ssyevr_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssyevr_2stage(...) LAPACK_ssyevr_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevx_base LAPACK_GLOBAL(dsyevx,DSYEVX) +void LAPACK_dsyevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevx(...) LAPACK_dsyevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsyevx(...) LAPACK_dsyevx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevx_base LAPACK_GLOBAL(ssyevx,SSYEVX) +void LAPACK_ssyevx_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevx(...) LAPACK_ssyevx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssyevx(...) LAPACK_ssyevx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyevx_2stage_base LAPACK_GLOBAL(dsyevx_2stage,DSYEVX_2STAGE) +void LAPACK_dsyevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyevx_2stage(...) LAPACK_dsyevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsyevx_2stage(...) LAPACK_dsyevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyevx_2stage_base LAPACK_GLOBAL(ssyevx_2stage,SSYEVX_2STAGE) +void LAPACK_ssyevx_2stage_base( + char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyevx_2stage(...) LAPACK_ssyevx_2stage_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssyevx_2stage(...) LAPACK_ssyevx_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsygst_base LAPACK_GLOBAL(dsygst,DSYGST) +void LAPACK_dsygst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsygst(...) LAPACK_dsygst_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsygst(...) LAPACK_dsygst_base(__VA_ARGS__) +#endif + +#define LAPACK_ssygst_base LAPACK_GLOBAL(ssygst,SSYGST) +void LAPACK_ssygst_base( + lapack_int const* itype, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssygst(...) LAPACK_ssygst_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssygst(...) LAPACK_ssygst_base(__VA_ARGS__) +#endif + +#define LAPACK_dsygv_base LAPACK_GLOBAL(dsygv,DSYGV) +void LAPACK_dsygv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* W, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsygv(...) LAPACK_dsygv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsygv(...) LAPACK_dsygv_base(__VA_ARGS__) +#endif + +#define LAPACK_ssygv_base LAPACK_GLOBAL(ssygv,SSYGV) +void LAPACK_ssygv_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* W, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssygv(...) LAPACK_ssygv_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssygv(...) LAPACK_ssygv_base(__VA_ARGS__) +#endif + +#define LAPACK_dsygv_2stage_base LAPACK_GLOBAL(dsygv_2stage,DSYGV_2STAGE) +void LAPACK_dsygv_2stage_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* W, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsygv_2stage(...) LAPACK_dsygv_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsygv_2stage(...) LAPACK_dsygv_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssygv_2stage_base LAPACK_GLOBAL(ssygv_2stage,SSYGV_2STAGE) +void LAPACK_ssygv_2stage_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* W, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssygv_2stage(...) LAPACK_ssygv_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssygv_2stage(...) LAPACK_ssygv_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsygvd_base LAPACK_GLOBAL(dsygvd,DSYGVD) +void LAPACK_dsygvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* W, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsygvd(...) LAPACK_dsygvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsygvd(...) LAPACK_dsygvd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssygvd_base LAPACK_GLOBAL(ssygvd,SSYGVD) +void LAPACK_ssygvd_base( + lapack_int const* itype, char const* jobz, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* W, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssygvd(...) LAPACK_ssygvd_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssygvd(...) LAPACK_ssygvd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsygvx_base LAPACK_GLOBAL(dsygvx,DSYGVX) +void LAPACK_dsygvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double const* vl, + double const* vu, lapack_int const* il, lapack_int const* iu, + double const* abstol, lapack_int* m, + double* W, + double* Z, lapack_int const* ldz, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsygvx(...) LAPACK_dsygvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsygvx(...) LAPACK_dsygvx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssygvx_base LAPACK_GLOBAL(ssygvx,SSYGVX) +void LAPACK_ssygvx_base( + lapack_int const* itype, char const* jobz, char const* range, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float const* vl, + float const* vu, lapack_int const* il, lapack_int const* iu, + float const* abstol, lapack_int* m, + float* W, + float* Z, lapack_int const* ldz, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int* IFAIL, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssygvx(...) LAPACK_ssygvx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssygvx(...) LAPACK_ssygvx_base(__VA_ARGS__) +#endif + +#define LAPACK_csyr_base LAPACK_GLOBAL(csyr,CSYR) +void LAPACK_csyr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* alpha, + lapack_complex_float const* X, lapack_int const* incx, + lapack_complex_float* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyr(...) LAPACK_csyr_base(__VA_ARGS__, 1) +#else + #define LAPACK_csyr(...) LAPACK_csyr_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyr_base LAPACK_GLOBAL(zsyr,ZSYR) +void LAPACK_zsyr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* alpha, + lapack_complex_double const* X, lapack_int const* incx, + lapack_complex_double* A, lapack_int const* lda +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyr(...) LAPACK_zsyr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsyr(...) LAPACK_zsyr_base(__VA_ARGS__) +#endif + +#define LAPACK_csyrfs_base LAPACK_GLOBAL(csyrfs,CSYRFS) +void LAPACK_csyrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyrfs(...) LAPACK_csyrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_csyrfs(...) LAPACK_csyrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyrfs_base LAPACK_GLOBAL(dsyrfs,DSYRFS) +void LAPACK_dsyrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyrfs(...) LAPACK_dsyrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsyrfs(...) LAPACK_dsyrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyrfs_base LAPACK_GLOBAL(ssyrfs,SSYRFS) +void LAPACK_ssyrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyrfs(...) LAPACK_ssyrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssyrfs(...) LAPACK_ssyrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyrfs_base LAPACK_GLOBAL(zsyrfs,ZSYRFS) +void LAPACK_zsyrfs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyrfs(...) LAPACK_zsyrfs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsyrfs(...) LAPACK_zsyrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_csyrfsx_base LAPACK_GLOBAL(csyrfsx,CSYRFSX) +void LAPACK_csyrfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const float* S, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyrfsx(...) LAPACK_csyrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_csyrfsx(...) LAPACK_csyrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyrfsx_base LAPACK_GLOBAL(dsyrfsx,DSYRFSX) +void LAPACK_dsyrfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const double* S, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyrfsx(...) LAPACK_dsyrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsyrfsx(...) LAPACK_dsyrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyrfsx_base LAPACK_GLOBAL(ssyrfsx,SSYRFSX) +void LAPACK_ssyrfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const float* S, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyrfsx(...) LAPACK_ssyrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssyrfsx(...) LAPACK_ssyrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyrfsx_base LAPACK_GLOBAL(zsyrfsx,ZSYRFSX) +void LAPACK_zsyrfsx_base( + char const* uplo, char const* equed, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, + const double* S, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyrfsx(...) LAPACK_zsyrfsx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zsyrfsx(...) LAPACK_zsyrfsx_base(__VA_ARGS__) +#endif + +#define LAPACK_csysv_base LAPACK_GLOBAL(csysv,CSYSV) +void LAPACK_csysv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysv(...) LAPACK_csysv_base(__VA_ARGS__, 1) +#else + #define LAPACK_csysv(...) LAPACK_csysv_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysv_base LAPACK_GLOBAL(dsysv,DSYSV) +void LAPACK_dsysv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysv(...) LAPACK_dsysv_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsysv(...) LAPACK_dsysv_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysv_base LAPACK_GLOBAL(ssysv,SSYSV) +void LAPACK_ssysv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysv(...) LAPACK_ssysv_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssysv(...) LAPACK_ssysv_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysv_base LAPACK_GLOBAL(zsysv,ZSYSV) +void LAPACK_zsysv_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysv(...) LAPACK_zsysv_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsysv(...) LAPACK_zsysv_base(__VA_ARGS__) +#endif + +#define LAPACK_csysv_aa_base LAPACK_GLOBAL(csysv_aa,CSYSV_AA) +void LAPACK_csysv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysv_aa(...) LAPACK_csysv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_csysv_aa(...) LAPACK_csysv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysv_aa_base LAPACK_GLOBAL(dsysv_aa,DSYSV_AA) +void LAPACK_dsysv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysv_aa(...) LAPACK_dsysv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsysv_aa(...) LAPACK_dsysv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysv_aa_base LAPACK_GLOBAL(ssysv_aa,SSYSV_AA) +void LAPACK_ssysv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysv_aa(...) LAPACK_ssysv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssysv_aa(...) LAPACK_ssysv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysv_aa_base LAPACK_GLOBAL(zsysv_aa,ZSYSV_AA) +void LAPACK_zsysv_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysv_aa(...) LAPACK_zsysv_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsysv_aa(...) LAPACK_zsysv_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_csysv_aa_2stage_base LAPACK_GLOBAL(csysv_aa_2stage,CSYSV_AA_2STAGE) +void LAPACK_csysv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysv_aa_2stage(...) LAPACK_csysv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_csysv_aa_2stage(...) LAPACK_csysv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysv_aa_2stage_base LAPACK_GLOBAL(dsysv_aa_2stage,DSYSV_AA_2STAGE) +void LAPACK_dsysv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysv_aa_2stage(...) LAPACK_dsysv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsysv_aa_2stage(...) LAPACK_dsysv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysv_aa_2stage_base LAPACK_GLOBAL(ssysv_aa_2stage,SSYSV_AA_2STAGE) +void LAPACK_ssysv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysv_aa_2stage(...) LAPACK_ssysv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssysv_aa_2stage(...) LAPACK_ssysv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysv_aa_2stage_base LAPACK_GLOBAL(zsysv_aa_2stage,ZSYSV_AA_2STAGE) +void LAPACK_zsysv_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysv_aa_2stage(...) LAPACK_zsysv_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsysv_aa_2stage(...) LAPACK_zsysv_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_csysv_rk_base LAPACK_GLOBAL(csysv_rk,CSYSV_RK) +void LAPACK_csysv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* E, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysv_rk(...) LAPACK_csysv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_csysv_rk(...) LAPACK_csysv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysv_rk_base LAPACK_GLOBAL(dsysv_rk,DSYSV_RK) +void LAPACK_dsysv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* E, lapack_int* ipiv, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysv_rk(...) LAPACK_dsysv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsysv_rk(...) LAPACK_dsysv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysv_rk_base LAPACK_GLOBAL(ssysv_rk,SSYSV_RK) +void LAPACK_ssysv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* E, lapack_int* ipiv, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysv_rk(...) LAPACK_ssysv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssysv_rk(...) LAPACK_ssysv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysv_rk_base LAPACK_GLOBAL(zsysv_rk,ZSYSV_RK) +void LAPACK_zsysv_rk_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* E, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysv_rk(...) LAPACK_zsysv_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsysv_rk(...) LAPACK_zsysv_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_csysv_rook_base LAPACK_GLOBAL(csysv_rook,CSYSV_ROOK) +void LAPACK_csysv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysv_rook(...) LAPACK_csysv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_csysv_rook(...) LAPACK_csysv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysv_rook_base LAPACK_GLOBAL(dsysv_rook,DSYSV_ROOK) +void LAPACK_dsysv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysv_rook(...) LAPACK_dsysv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsysv_rook(...) LAPACK_dsysv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysv_rook_base LAPACK_GLOBAL(ssysv_rook,SSYSV_ROOK) +void LAPACK_ssysv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysv_rook(...) LAPACK_ssysv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssysv_rook(...) LAPACK_ssysv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysv_rook_base LAPACK_GLOBAL(zsysv_rook,ZSYSV_ROOK) +void LAPACK_zsysv_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysv_rook(...) LAPACK_zsysv_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsysv_rook(...) LAPACK_zsysv_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_csysvx_base LAPACK_GLOBAL(csysvx,CSYSVX) +void LAPACK_csysvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysvx(...) LAPACK_csysvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_csysvx(...) LAPACK_csysvx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysvx_base LAPACK_GLOBAL(dsysvx,DSYSVX) +void LAPACK_dsysvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, lapack_int* ipiv, + double const* B, lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysvx(...) LAPACK_dsysvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsysvx(...) LAPACK_dsysvx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysvx_base LAPACK_GLOBAL(ssysvx,SSYSVX) +void LAPACK_ssysvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, lapack_int* ipiv, + float const* B, lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* ferr, + float* berr, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysvx(...) LAPACK_ssysvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssysvx(...) LAPACK_ssysvx_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysvx_base LAPACK_GLOBAL(zsysvx,ZSYSVX) +void LAPACK_zsysvx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* ferr, + double* berr, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysvx(...) LAPACK_zsysvx_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zsysvx(...) LAPACK_zsysvx_base(__VA_ARGS__) +#endif + +#define LAPACK_csysvxx_base LAPACK_GLOBAL(csysvxx,CSYSVXX) +void LAPACK_csysvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* S, + lapack_complex_float* B, + lapack_int const* ldb, + lapack_complex_float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csysvxx(...) LAPACK_csysvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_csysvxx(...) LAPACK_csysvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_dsysvxx_base LAPACK_GLOBAL(dsysvxx,DSYSVXX) +void LAPACK_dsysvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double* A, lapack_int const* lda, + double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* S, + double* B, + lapack_int const* ldb, + double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsysvxx(...) LAPACK_dsysvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dsysvxx(...) LAPACK_dsysvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_ssysvxx_base LAPACK_GLOBAL(ssysvxx,SSYSVXX) +void LAPACK_ssysvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float* A, lapack_int const* lda, + float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + float* S, + float* B, + lapack_int const* ldb, + float* X, lapack_int const* ldx, + float* rcond, + float* rpvgrw, + float* berr, lapack_int const* n_err_bnds, + float* err_bnds_norm, + float* err_bnds_comp, lapack_int const* nparams, + float* params, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssysvxx(...) LAPACK_ssysvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ssysvxx(...) LAPACK_ssysvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_zsysvxx_base LAPACK_GLOBAL(zsysvxx,ZSYSVXX) +void LAPACK_zsysvxx_base( + char const* fact, char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, + double* S, + lapack_complex_double* B, + lapack_int const* ldb, + lapack_complex_double* X, lapack_int const* ldx, + double* rcond, + double* rpvgrw, + double* berr, lapack_int const* n_err_bnds, + double* err_bnds_norm, + double* err_bnds_comp, lapack_int const* nparams, + double* params, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsysvxx(...) LAPACK_zsysvxx_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zsysvxx(...) LAPACK_zsysvxx_base(__VA_ARGS__) +#endif + +#define LAPACK_csyswapr_base LAPACK_GLOBAL(csyswapr,CSYSWAPR) +void LAPACK_csyswapr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csyswapr(...) LAPACK_csyswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_csyswapr(...) LAPACK_csyswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_dsyswapr_base LAPACK_GLOBAL(dsyswapr,DSYSWAPR) +void LAPACK_dsyswapr_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsyswapr(...) LAPACK_dsyswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsyswapr(...) LAPACK_dsyswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_ssyswapr_base LAPACK_GLOBAL(ssyswapr,SSYSWAPR) +void LAPACK_ssyswapr_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssyswapr(...) LAPACK_ssyswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssyswapr(...) LAPACK_ssyswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_zsyswapr_base LAPACK_GLOBAL(zsyswapr,ZSYSWAPR) +void LAPACK_zsyswapr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsyswapr(...) LAPACK_zsyswapr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsyswapr(...) LAPACK_zsyswapr_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrd_base LAPACK_GLOBAL(dsytrd,DSYTRD) +void LAPACK_dsytrd_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* D, + double* E, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrd(...) LAPACK_dsytrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrd(...) LAPACK_dsytrd_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrd_base LAPACK_GLOBAL(ssytrd,SSYTRD) +void LAPACK_ssytrd_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* D, + float* E, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrd(...) LAPACK_ssytrd_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrd(...) LAPACK_ssytrd_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrd_2stage_base LAPACK_GLOBAL(dsytrd_2stage,DSYTRD_2STAGE) +void LAPACK_dsytrd_2stage_base( + char const* vect, char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* D, + double* E, + double* tau, + double* HOUS2, lapack_int const* lhous2, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrd_2stage(...) LAPACK_dsytrd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dsytrd_2stage(...) LAPACK_dsytrd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrd_2stage_base LAPACK_GLOBAL(ssytrd_2stage,SSYTRD_2STAGE) +void LAPACK_ssytrd_2stage_base( + char const* vect, char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* D, + float* E, + float* tau, + float* HOUS2, lapack_int const* lhous2, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrd_2stage(...) LAPACK_ssytrd_2stage_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ssytrd_2stage(...) LAPACK_ssytrd_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrf_base LAPACK_GLOBAL(csytrf,CSYTRF) +void LAPACK_csytrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrf(...) LAPACK_csytrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrf(...) LAPACK_csytrf_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrf_base LAPACK_GLOBAL(dsytrf,DSYTRF) +void LAPACK_dsytrf_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrf(...) LAPACK_dsytrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrf(...) LAPACK_dsytrf_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrf_base LAPACK_GLOBAL(ssytrf,SSYTRF) +void LAPACK_ssytrf_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrf(...) LAPACK_ssytrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrf(...) LAPACK_ssytrf_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrf_base LAPACK_GLOBAL(zsytrf,ZSYTRF) +void LAPACK_zsytrf_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrf(...) LAPACK_zsytrf_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrf(...) LAPACK_zsytrf_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrf_aa_base LAPACK_GLOBAL(csytrf_aa,CSYTRF_AA) +void LAPACK_csytrf_aa_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrf_aa(...) LAPACK_csytrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrf_aa(...) LAPACK_csytrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrf_aa_base LAPACK_GLOBAL(dsytrf_aa,DSYTRF_AA) +void LAPACK_dsytrf_aa_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrf_aa(...) LAPACK_dsytrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrf_aa(...) LAPACK_dsytrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrf_aa_base LAPACK_GLOBAL(ssytrf_aa,SSYTRF_AA) +void LAPACK_ssytrf_aa_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrf_aa(...) LAPACK_ssytrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrf_aa(...) LAPACK_ssytrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrf_aa_base LAPACK_GLOBAL(zsytrf_aa,ZSYTRF_AA) +void LAPACK_zsytrf_aa_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrf_aa(...) LAPACK_zsytrf_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrf_aa(...) LAPACK_zsytrf_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrf_aa_2stage_base LAPACK_GLOBAL(csytrf_aa_2stage,CSYTRF_AA_2STAGE) +void LAPACK_csytrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrf_aa_2stage(...) LAPACK_csytrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrf_aa_2stage(...) LAPACK_csytrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrf_aa_2stage_base LAPACK_GLOBAL(dsytrf_aa_2stage,DSYTRF_AA_2STAGE) +void LAPACK_dsytrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrf_aa_2stage(...) LAPACK_dsytrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrf_aa_2stage(...) LAPACK_dsytrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrf_aa_2stage_base LAPACK_GLOBAL(ssytrf_aa_2stage,SSYTRF_AA_2STAGE) +void LAPACK_ssytrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrf_aa_2stage(...) LAPACK_ssytrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrf_aa_2stage(...) LAPACK_ssytrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrf_aa_2stage_base LAPACK_GLOBAL(zsytrf_aa_2stage,ZSYTRF_AA_2STAGE) +void LAPACK_zsytrf_aa_2stage_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrf_aa_2stage(...) LAPACK_zsytrf_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrf_aa_2stage(...) LAPACK_zsytrf_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrf_rk_base LAPACK_GLOBAL(csytrf_rk,CSYTRF_RK) +void LAPACK_csytrf_rk_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* E, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrf_rk(...) LAPACK_csytrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrf_rk(...) LAPACK_csytrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrf_rk_base LAPACK_GLOBAL(dsytrf_rk,DSYTRF_RK) +void LAPACK_dsytrf_rk_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double* E, lapack_int* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrf_rk(...) LAPACK_dsytrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrf_rk(...) LAPACK_dsytrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrf_rk_base LAPACK_GLOBAL(ssytrf_rk,SSYTRF_RK) +void LAPACK_ssytrf_rk_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float* E, lapack_int* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrf_rk(...) LAPACK_ssytrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrf_rk(...) LAPACK_ssytrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrf_rk_base LAPACK_GLOBAL(zsytrf_rk,ZSYTRF_RK) +void LAPACK_zsytrf_rk_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* E, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrf_rk(...) LAPACK_zsytrf_rk_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrf_rk(...) LAPACK_zsytrf_rk_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrf_rook_base LAPACK_GLOBAL(csytrf_rook,CSYTRF_ROOK) +void LAPACK_csytrf_rook_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrf_rook(...) LAPACK_csytrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrf_rook(...) LAPACK_csytrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrf_rook_base LAPACK_GLOBAL(dsytrf_rook,DSYTRF_ROOK) +void LAPACK_dsytrf_rook_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrf_rook(...) LAPACK_dsytrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrf_rook(...) LAPACK_dsytrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrf_rook_base LAPACK_GLOBAL(ssytrf_rook,SSYTRF_ROOK) +void LAPACK_ssytrf_rook_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrf_rook(...) LAPACK_ssytrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrf_rook(...) LAPACK_ssytrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrf_rook_base LAPACK_GLOBAL(zsytrf_rook,ZSYTRF_ROOK) +void LAPACK_zsytrf_rook_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrf_rook(...) LAPACK_zsytrf_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrf_rook(...) LAPACK_zsytrf_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_csytri_base LAPACK_GLOBAL(csytri,CSYTRI) +void LAPACK_csytri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytri(...) LAPACK_csytri_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytri(...) LAPACK_csytri_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytri_base LAPACK_GLOBAL(dsytri,DSYTRI) +void LAPACK_dsytri_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* ipiv, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytri(...) LAPACK_dsytri_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytri(...) LAPACK_dsytri_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytri_base LAPACK_GLOBAL(ssytri,SSYTRI) +void LAPACK_ssytri_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* ipiv, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytri(...) LAPACK_ssytri_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytri(...) LAPACK_ssytri_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytri_base LAPACK_GLOBAL(zsytri,ZSYTRI) +void LAPACK_zsytri_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytri(...) LAPACK_zsytri_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytri(...) LAPACK_zsytri_base(__VA_ARGS__) +#endif + +#define LAPACK_csytri2_base LAPACK_GLOBAL(csytri2,CSYTRI2) +void LAPACK_csytri2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytri2(...) LAPACK_csytri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytri2(...) LAPACK_csytri2_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytri2_base LAPACK_GLOBAL(dsytri2,DSYTRI2) +void LAPACK_dsytri2_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytri2(...) LAPACK_dsytri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytri2(...) LAPACK_dsytri2_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytri2_base LAPACK_GLOBAL(ssytri2,SSYTRI2) +void LAPACK_ssytri2_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytri2(...) LAPACK_ssytri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytri2(...) LAPACK_ssytri2_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytri2_base LAPACK_GLOBAL(zsytri2,ZSYTRI2) +void LAPACK_zsytri2_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytri2(...) LAPACK_zsytri2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytri2(...) LAPACK_zsytri2_base(__VA_ARGS__) +#endif + +#define LAPACK_csytri2x_base LAPACK_GLOBAL(csytri2x,CSYTRI2X) +void LAPACK_csytri2x_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytri2x(...) LAPACK_csytri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytri2x(...) LAPACK_csytri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytri2x_base LAPACK_GLOBAL(dsytri2x,DSYTRI2X) +void LAPACK_dsytri2x_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, lapack_int const* ipiv, + double* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytri2x(...) LAPACK_dsytri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytri2x(...) LAPACK_dsytri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytri2x_base LAPACK_GLOBAL(ssytri2x,SSYTRI2X) +void LAPACK_ssytri2x_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, lapack_int const* ipiv, + float* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytri2x(...) LAPACK_ssytri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytri2x(...) LAPACK_ssytri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytri2x_base LAPACK_GLOBAL(zsytri2x,ZSYTRI2X) +void LAPACK_zsytri2x_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* nb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytri2x(...) LAPACK_zsytri2x_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytri2x(...) LAPACK_zsytri2x_base(__VA_ARGS__) +#endif + +#define LAPACK_csytri_3_base LAPACK_GLOBAL(csytri_3,CSYTRI_3) +void LAPACK_csytri_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytri_3(...) LAPACK_csytri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytri_3(...) LAPACK_csytri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytri_3_base LAPACK_GLOBAL(dsytri_3,DSYTRI_3) +void LAPACK_dsytri_3_base( + char const* uplo, + lapack_int const* n, + double* A, lapack_int const* lda, + double const* E, lapack_int const* ipiv, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytri_3(...) LAPACK_dsytri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytri_3(...) LAPACK_dsytri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytri_3_base LAPACK_GLOBAL(ssytri_3,SSYTRI_3) +void LAPACK_ssytri_3_base( + char const* uplo, + lapack_int const* n, + float* A, lapack_int const* lda, + float const* E, lapack_int const* ipiv, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytri_3(...) LAPACK_ssytri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytri_3(...) LAPACK_ssytri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytri_3_base LAPACK_GLOBAL(zsytri_3,ZSYTRI_3) +void LAPACK_zsytri_3_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytri_3(...) LAPACK_zsytri_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytri_3(...) LAPACK_zsytri_3_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs_base LAPACK_GLOBAL(csytrs,CSYTRS) +void LAPACK_csytrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs(...) LAPACK_csytrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs(...) LAPACK_csytrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs_base LAPACK_GLOBAL(dsytrs,DSYTRS) +void LAPACK_dsytrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs(...) LAPACK_dsytrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs(...) LAPACK_dsytrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs_base LAPACK_GLOBAL(ssytrs,SSYTRS) +void LAPACK_ssytrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs(...) LAPACK_ssytrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs(...) LAPACK_ssytrs_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs_base LAPACK_GLOBAL(zsytrs,ZSYTRS) +void LAPACK_zsytrs_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs(...) LAPACK_zsytrs_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs(...) LAPACK_zsytrs_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs2_base LAPACK_GLOBAL(csytrs2,CSYTRS2) +void LAPACK_csytrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + const lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs2(...) LAPACK_csytrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs2(...) LAPACK_csytrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs2_base LAPACK_GLOBAL(dsytrs2,DSYTRS2) +void LAPACK_dsytrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + const double* A, lapack_int const* lda, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs2(...) LAPACK_dsytrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs2(...) LAPACK_dsytrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs2_base LAPACK_GLOBAL(ssytrs2,SSYTRS2) +void LAPACK_ssytrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + const float* A, lapack_int const* lda, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs2(...) LAPACK_ssytrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs2(...) LAPACK_ssytrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs2_base LAPACK_GLOBAL(zsytrs2,ZSYTRS2) +void LAPACK_zsytrs2_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + const lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs2(...) LAPACK_zsytrs2_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs2(...) LAPACK_zsytrs2_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs_3_base LAPACK_GLOBAL(csytrs_3,CSYTRS_3) +void LAPACK_csytrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* E, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs_3(...) LAPACK_csytrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs_3(...) LAPACK_csytrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs_3_base LAPACK_GLOBAL(dsytrs_3,DSYTRS_3) +void LAPACK_dsytrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* E, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs_3(...) LAPACK_dsytrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs_3(...) LAPACK_dsytrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs_3_base LAPACK_GLOBAL(ssytrs_3,SSYTRS_3) +void LAPACK_ssytrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* E, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs_3(...) LAPACK_ssytrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs_3(...) LAPACK_ssytrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs_3_base LAPACK_GLOBAL(zsytrs_3,ZSYTRS_3) +void LAPACK_zsytrs_3_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* E, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs_3(...) LAPACK_zsytrs_3_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs_3(...) LAPACK_zsytrs_3_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs_aa_base LAPACK_GLOBAL(csytrs_aa,CSYTRS_AA) +void LAPACK_csytrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs_aa(...) LAPACK_csytrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs_aa(...) LAPACK_csytrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs_aa_base LAPACK_GLOBAL(dsytrs_aa,DSYTRS_AA) +void LAPACK_dsytrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs_aa(...) LAPACK_dsytrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs_aa(...) LAPACK_dsytrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs_aa_base LAPACK_GLOBAL(ssytrs_aa,SSYTRS_AA) +void LAPACK_ssytrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs_aa(...) LAPACK_ssytrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs_aa(...) LAPACK_ssytrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs_aa_base LAPACK_GLOBAL(zsytrs_aa,ZSYTRS_AA) +void LAPACK_zsytrs_aa_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs_aa(...) LAPACK_zsytrs_aa_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs_aa(...) LAPACK_zsytrs_aa_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs_aa_2stage_base LAPACK_GLOBAL(csytrs_aa_2stage,CSYTRS_AA_2STAGE) +void LAPACK_csytrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs_aa_2stage(...) LAPACK_csytrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs_aa_2stage(...) LAPACK_csytrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs_aa_2stage_base LAPACK_GLOBAL(dsytrs_aa_2stage,DSYTRS_AA_2STAGE) +void LAPACK_dsytrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs_aa_2stage(...) LAPACK_dsytrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs_aa_2stage(...) LAPACK_dsytrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs_aa_2stage_base LAPACK_GLOBAL(ssytrs_aa_2stage,SSYTRS_AA_2STAGE) +void LAPACK_ssytrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs_aa_2stage(...) LAPACK_ssytrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs_aa_2stage(...) LAPACK_ssytrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs_aa_2stage_base LAPACK_GLOBAL(zsytrs_aa_2stage,ZSYTRS_AA_2STAGE) +void LAPACK_zsytrs_aa_2stage_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs_aa_2stage(...) LAPACK_zsytrs_aa_2stage_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs_aa_2stage(...) LAPACK_zsytrs_aa_2stage_base(__VA_ARGS__) +#endif + +#define LAPACK_csytrs_rook_base LAPACK_GLOBAL(csytrs_rook,CSYTRS_ROOK) +void LAPACK_csytrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_csytrs_rook(...) LAPACK_csytrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_csytrs_rook(...) LAPACK_csytrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_dsytrs_rook_base LAPACK_GLOBAL(dsytrs_rook,DSYTRS_ROOK) +void LAPACK_dsytrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, lapack_int const* ipiv, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dsytrs_rook(...) LAPACK_dsytrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_dsytrs_rook(...) LAPACK_dsytrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_ssytrs_rook_base LAPACK_GLOBAL(ssytrs_rook,SSYTRS_ROOK) +void LAPACK_ssytrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, lapack_int const* ipiv, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ssytrs_rook(...) LAPACK_ssytrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_ssytrs_rook(...) LAPACK_ssytrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_zsytrs_rook_base LAPACK_GLOBAL(zsytrs_rook,ZSYTRS_ROOK) +void LAPACK_zsytrs_rook_base( + char const* uplo, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zsytrs_rook(...) LAPACK_zsytrs_rook_base(__VA_ARGS__, 1) +#else + #define LAPACK_zsytrs_rook(...) LAPACK_zsytrs_rook_base(__VA_ARGS__) +#endif + +#define LAPACK_ctbcon_base LAPACK_GLOBAL(ctbcon,CTBCON) +void LAPACK_ctbcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* kd, + lapack_complex_float const* AB, lapack_int const* ldab, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctbcon(...) LAPACK_ctbcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctbcon(...) LAPACK_ctbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dtbcon_base LAPACK_GLOBAL(dtbcon,DTBCON) +void LAPACK_dtbcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* kd, + double const* AB, lapack_int const* ldab, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtbcon(...) LAPACK_dtbcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtbcon(...) LAPACK_dtbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_stbcon_base LAPACK_GLOBAL(stbcon,STBCON) +void LAPACK_stbcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* kd, + float const* AB, lapack_int const* ldab, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stbcon(...) LAPACK_stbcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stbcon(...) LAPACK_stbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ztbcon_base LAPACK_GLOBAL(ztbcon,ZTBCON) +void LAPACK_ztbcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, lapack_int const* kd, + lapack_complex_double const* AB, lapack_int const* ldab, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztbcon(...) LAPACK_ztbcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztbcon(...) LAPACK_ztbcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ctbrfs_base LAPACK_GLOBAL(ctbrfs,CTBRFS) +void LAPACK_ctbrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctbrfs(...) LAPACK_ctbrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctbrfs(...) LAPACK_ctbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtbrfs_base LAPACK_GLOBAL(dtbrfs,DTBRFS) +void LAPACK_dtbrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double const* B, lapack_int const* ldb, + double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtbrfs(...) LAPACK_dtbrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtbrfs(...) LAPACK_dtbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_stbrfs_base LAPACK_GLOBAL(stbrfs,STBRFS) +void LAPACK_stbrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float const* B, lapack_int const* ldb, + float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stbrfs(...) LAPACK_stbrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stbrfs(...) LAPACK_stbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztbrfs_base LAPACK_GLOBAL(ztbrfs,ZTBRFS) +void LAPACK_ztbrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztbrfs(...) LAPACK_ztbrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztbrfs(...) LAPACK_ztbrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctbtrs_base LAPACK_GLOBAL(ctbtrs,CTBTRS) +void LAPACK_ctbtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_float const* AB, lapack_int const* ldab, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctbtrs(...) LAPACK_ctbtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctbtrs(...) LAPACK_ctbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtbtrs_base LAPACK_GLOBAL(dtbtrs,DTBTRS) +void LAPACK_dtbtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + double const* AB, lapack_int const* ldab, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtbtrs(...) LAPACK_dtbtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtbtrs(...) LAPACK_dtbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_stbtrs_base LAPACK_GLOBAL(stbtrs,STBTRS) +void LAPACK_stbtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + float const* AB, lapack_int const* ldab, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stbtrs(...) LAPACK_stbtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stbtrs(...) LAPACK_stbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztbtrs_base LAPACK_GLOBAL(ztbtrs,ZTBTRS) +void LAPACK_ztbtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, + lapack_complex_double const* AB, lapack_int const* ldab, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztbtrs(...) LAPACK_ztbtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztbtrs(...) LAPACK_ztbtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctfsm_base LAPACK_GLOBAL(ctfsm,CTFSM) +void LAPACK_ctfsm_base( + char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* alpha, + lapack_complex_float const* A, + lapack_complex_float* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctfsm(...) LAPACK_ctfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_ctfsm(...) LAPACK_ctfsm_base(__VA_ARGS__) +#endif + +#define LAPACK_dtfsm_base LAPACK_GLOBAL(dtfsm,DTFSM) +void LAPACK_dtfsm_base( + char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, + lapack_int const* m, lapack_int const* n, + double const* alpha, + double const* A, + double* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtfsm(...) LAPACK_dtfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_dtfsm(...) LAPACK_dtfsm_base(__VA_ARGS__) +#endif + +#define LAPACK_stfsm_base LAPACK_GLOBAL(stfsm,STFSM) +void LAPACK_stfsm_base( + char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, + lapack_int const* m, lapack_int const* n, + float const* alpha, + float const* A, + float* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stfsm(...) LAPACK_stfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_stfsm(...) LAPACK_stfsm_base(__VA_ARGS__) +#endif + +#define LAPACK_ztfsm_base LAPACK_GLOBAL(ztfsm,ZTFSM) +void LAPACK_ztfsm_base( + char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* alpha, + lapack_complex_double const* A, + lapack_complex_double* B, lapack_int const* ldb +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztfsm(...) LAPACK_ztfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) +#else + #define LAPACK_ztfsm(...) LAPACK_ztfsm_base(__VA_ARGS__) +#endif + +#define LAPACK_ctftri_base LAPACK_GLOBAL(ctftri,CTFTRI) +void LAPACK_ctftri_base( + char const* transr, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctftri(...) LAPACK_ctftri_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctftri(...) LAPACK_ctftri_base(__VA_ARGS__) +#endif + +#define LAPACK_dtftri_base LAPACK_GLOBAL(dtftri,DTFTRI) +void LAPACK_dtftri_base( + char const* transr, char const* uplo, char const* diag, + lapack_int const* n, + double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtftri(...) LAPACK_dtftri_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtftri(...) LAPACK_dtftri_base(__VA_ARGS__) +#endif + +#define LAPACK_stftri_base LAPACK_GLOBAL(stftri,STFTRI) +void LAPACK_stftri_base( + char const* transr, char const* uplo, char const* diag, + lapack_int const* n, + float* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stftri(...) LAPACK_stftri_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stftri(...) LAPACK_stftri_base(__VA_ARGS__) +#endif + +#define LAPACK_ztftri_base LAPACK_GLOBAL(ztftri,ZTFTRI) +void LAPACK_ztftri_base( + char const* transr, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double* A, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztftri(...) LAPACK_ztftri_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztftri(...) LAPACK_ztftri_base(__VA_ARGS__) +#endif + +#define LAPACK_ctfttp_base LAPACK_GLOBAL(ctfttp,CTFTTP) +void LAPACK_ctfttp_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float const* ARF, + lapack_complex_float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctfttp(...) LAPACK_ctfttp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctfttp(...) LAPACK_ctfttp_base(__VA_ARGS__) +#endif + +#define LAPACK_dtfttp_base LAPACK_GLOBAL(dtfttp,DTFTTP) +void LAPACK_dtfttp_base( + char const* transr, char const* uplo, + lapack_int const* n, + double const* ARF, + double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtfttp(...) LAPACK_dtfttp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtfttp(...) LAPACK_dtfttp_base(__VA_ARGS__) +#endif + +#define LAPACK_stfttp_base LAPACK_GLOBAL(stfttp,STFTTP) +void LAPACK_stfttp_base( + char const* transr, char const* uplo, + lapack_int const* n, + float const* ARF, + float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stfttp(...) LAPACK_stfttp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stfttp(...) LAPACK_stfttp_base(__VA_ARGS__) +#endif + +#define LAPACK_ztfttp_base LAPACK_GLOBAL(ztfttp,ZTFTTP) +void LAPACK_ztfttp_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double const* ARF, + lapack_complex_double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztfttp(...) LAPACK_ztfttp_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztfttp(...) LAPACK_ztfttp_base(__VA_ARGS__) +#endif + +#define LAPACK_ctfttr_base LAPACK_GLOBAL(ctfttr,CTFTTR) +void LAPACK_ctfttr_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float const* ARF, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctfttr(...) LAPACK_ctfttr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctfttr(...) LAPACK_ctfttr_base(__VA_ARGS__) +#endif + +#define LAPACK_dtfttr_base LAPACK_GLOBAL(dtfttr,DTFTTR) +void LAPACK_dtfttr_base( + char const* transr, char const* uplo, + lapack_int const* n, + double const* ARF, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtfttr(...) LAPACK_dtfttr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtfttr(...) LAPACK_dtfttr_base(__VA_ARGS__) +#endif + +#define LAPACK_stfttr_base LAPACK_GLOBAL(stfttr,STFTTR) +void LAPACK_stfttr_base( + char const* transr, char const* uplo, + lapack_int const* n, + float const* ARF, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stfttr(...) LAPACK_stfttr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stfttr(...) LAPACK_stfttr_base(__VA_ARGS__) +#endif + +#define LAPACK_ztfttr_base LAPACK_GLOBAL(ztfttr,ZTFTTR) +void LAPACK_ztfttr_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double const* ARF, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztfttr(...) LAPACK_ztfttr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztfttr(...) LAPACK_ztfttr_base(__VA_ARGS__) +#endif + +#define LAPACK_ctgevc_base LAPACK_GLOBAL(ctgevc,CTGEVC) +void LAPACK_ctgevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float const* S, lapack_int const* lds, + lapack_complex_float const* P, lapack_int const* ldp, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctgevc(...) LAPACK_ctgevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctgevc(...) LAPACK_ctgevc_base(__VA_ARGS__) +#endif + +#define LAPACK_dtgevc_base LAPACK_GLOBAL(dtgevc,DTGEVC) +void LAPACK_dtgevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + double const* S, lapack_int const* lds, + double const* P, lapack_int const* ldp, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtgevc(...) LAPACK_dtgevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtgevc(...) LAPACK_dtgevc_base(__VA_ARGS__) +#endif + +#define LAPACK_stgevc_base LAPACK_GLOBAL(stgevc,STGEVC) +void LAPACK_stgevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + float const* S, lapack_int const* lds, + float const* P, lapack_int const* ldp, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stgevc(...) LAPACK_stgevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stgevc(...) LAPACK_stgevc_base(__VA_ARGS__) +#endif + +#define LAPACK_ztgevc_base LAPACK_GLOBAL(ztgevc,ZTGEVC) +void LAPACK_ztgevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double const* S, lapack_int const* lds, + lapack_complex_double const* P, lapack_int const* ldp, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztgevc(...) LAPACK_ztgevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztgevc(...) LAPACK_ztgevc_base(__VA_ARGS__) +#endif + +#define LAPACK_ctgexc LAPACK_GLOBAL(ctgexc,CTGEXC) +void LAPACK_ctgexc( + lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int const* ifst, lapack_int* ilst, + lapack_int* info ); + +#define LAPACK_dtgexc LAPACK_GLOBAL(dtgexc,DTGEXC) +void LAPACK_dtgexc( + lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* Q, lapack_int const* ldq, + double* Z, lapack_int const* ldz, lapack_int* ifst, lapack_int* ilst, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_stgexc LAPACK_GLOBAL(stgexc,STGEXC) +void LAPACK_stgexc( + lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* Q, lapack_int const* ldq, + float* Z, lapack_int const* ldz, lapack_int* ifst, lapack_int* ilst, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_ztgexc LAPACK_GLOBAL(ztgexc,ZTGEXC) +void LAPACK_ztgexc( + lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int const* ifst, lapack_int* ilst, + lapack_int* info ); + +#define LAPACK_ctgsen LAPACK_GLOBAL(ctgsen,CTGSEN) +void LAPACK_ctgsen( + lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* Z, lapack_int const* ldz, lapack_int* m, + float* pl, + float* pr, + float* DIF, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info ); + +#define LAPACK_dtgsen LAPACK_GLOBAL(dtgsen,DTGSEN) +void LAPACK_dtgsen( + lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* alphar, + double* alphai, + double* beta, + double* Q, lapack_int const* ldq, + double* Z, lapack_int const* ldz, lapack_int* m, + double* pl, + double* pr, + double* DIF, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info ); + +#define LAPACK_stgsen LAPACK_GLOBAL(stgsen,STGSEN) +void LAPACK_stgsen( + lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* alphar, + float* alphai, + float* beta, + float* Q, lapack_int const* ldq, + float* Z, lapack_int const* ldz, lapack_int* m, + float* pl, + float* pr, + float* DIF, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info ); + +#define LAPACK_ztgsen LAPACK_GLOBAL(ztgsen,ZTGSEN) +void LAPACK_ztgsen( + lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* Z, lapack_int const* ldz, lapack_int* m, + double* pl, + double* pr, + double* DIF, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info ); + +#define LAPACK_ctgsja_base LAPACK_GLOBAL(ctgsja,CTGSJA) +void LAPACK_ctgsja_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + float const* tola, + float const* tolb, + float* alpha, + float* beta, + lapack_complex_float* U, lapack_int const* ldu, + lapack_complex_float* V, lapack_int const* ldv, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* work, lapack_int* ncycle, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctgsja(...) LAPACK_ctgsja_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctgsja(...) LAPACK_ctgsja_base(__VA_ARGS__) +#endif + +#define LAPACK_dtgsja_base LAPACK_GLOBAL(dtgsja,DTGSJA) +void LAPACK_dtgsja_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double const* tola, + double const* tolb, + double* alpha, + double* beta, + double* U, lapack_int const* ldu, + double* V, lapack_int const* ldv, + double* Q, lapack_int const* ldq, + double* work, lapack_int* ncycle, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtgsja(...) LAPACK_dtgsja_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtgsja(...) LAPACK_dtgsja_base(__VA_ARGS__) +#endif + +#define LAPACK_stgsja_base LAPACK_GLOBAL(stgsja,STGSJA) +void LAPACK_stgsja_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float const* tola, + float const* tolb, + float* alpha, + float* beta, + float* U, lapack_int const* ldu, + float* V, lapack_int const* ldv, + float* Q, lapack_int const* ldq, + float* work, lapack_int* ncycle, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stgsja(...) LAPACK_stgsja_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stgsja(...) LAPACK_stgsja_base(__VA_ARGS__) +#endif + +#define LAPACK_ztgsja_base LAPACK_GLOBAL(ztgsja,ZTGSJA) +void LAPACK_ztgsja_base( + char const* jobu, char const* jobv, char const* jobq, + lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + double const* tola, + double const* tolb, + double* alpha, + double* beta, + lapack_complex_double* U, lapack_int const* ldu, + lapack_complex_double* V, lapack_int const* ldv, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* work, lapack_int* ncycle, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztgsja(...) LAPACK_ztgsja_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztgsja(...) LAPACK_ztgsja_base(__VA_ARGS__) +#endif + +#define LAPACK_ctgsna_base LAPACK_GLOBAL(ctgsna,CTGSNA) +void LAPACK_ctgsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float const* VL, lapack_int const* ldvl, + lapack_complex_float const* VR, lapack_int const* ldvr, + float* S, + float* DIF, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctgsna(...) LAPACK_ctgsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctgsna(...) LAPACK_ctgsna_base(__VA_ARGS__) +#endif + +#define LAPACK_dtgsna_base LAPACK_GLOBAL(dtgsna,DTGSNA) +void LAPACK_dtgsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double const* VL, lapack_int const* ldvl, + double const* VR, lapack_int const* ldvr, + double* S, + double* DIF, lapack_int const* mm, lapack_int* m, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtgsna(...) LAPACK_dtgsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtgsna(...) LAPACK_dtgsna_base(__VA_ARGS__) +#endif + +#define LAPACK_stgsna_base LAPACK_GLOBAL(stgsna,STGSNA) +void LAPACK_stgsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + float const* VL, lapack_int const* ldvl, + float const* VR, lapack_int const* ldvr, + float* S, + float* DIF, lapack_int const* mm, lapack_int* m, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stgsna(...) LAPACK_stgsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stgsna(...) LAPACK_stgsna_base(__VA_ARGS__) +#endif + +#define LAPACK_ztgsna_base LAPACK_GLOBAL(ztgsna,ZTGSNA) +void LAPACK_ztgsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double const* VL, lapack_int const* ldvl, + lapack_complex_double const* VR, lapack_int const* ldvr, + double* S, + double* DIF, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztgsna(...) LAPACK_ztgsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztgsna(...) LAPACK_ztgsna_base(__VA_ARGS__) +#endif + +#define LAPACK_ctgsyl_base LAPACK_GLOBAL(ctgsyl,CTGSYL) +void LAPACK_ctgsyl_base( + char const* trans, + lapack_int const* ijob, lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float const* D, lapack_int const* ldd, + lapack_complex_float const* E, lapack_int const* lde, + lapack_complex_float* F, lapack_int const* ldf, + float* dif, + float* scale, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctgsyl(...) LAPACK_ctgsyl_base(__VA_ARGS__, 1) +#else + #define LAPACK_ctgsyl(...) LAPACK_ctgsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_dtgsyl_base LAPACK_GLOBAL(dtgsyl,DTGSYL) +void LAPACK_dtgsyl_base( + char const* trans, + lapack_int const* ijob, lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double* C, lapack_int const* ldc, + double const* D, lapack_int const* ldd, + double const* E, lapack_int const* lde, + double* F, lapack_int const* ldf, + double* dif, + double* scale, + double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtgsyl(...) LAPACK_dtgsyl_base(__VA_ARGS__, 1) +#else + #define LAPACK_dtgsyl(...) LAPACK_dtgsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_stgsyl_base LAPACK_GLOBAL(stgsyl,STGSYL) +void LAPACK_stgsyl_base( + char const* trans, + lapack_int const* ijob, lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + float* C, lapack_int const* ldc, + float const* D, lapack_int const* ldd, + float const* E, lapack_int const* lde, + float* F, lapack_int const* ldf, + float* dif, + float* scale, + float* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stgsyl(...) LAPACK_stgsyl_base(__VA_ARGS__, 1) +#else + #define LAPACK_stgsyl(...) LAPACK_stgsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_ztgsyl_base LAPACK_GLOBAL(ztgsyl,ZTGSYL) +void LAPACK_ztgsyl_base( + char const* trans, + lapack_int const* ijob, lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double const* D, lapack_int const* ldd, + lapack_complex_double const* E, lapack_int const* lde, + lapack_complex_double* F, lapack_int const* ldf, + double* dif, + double* scale, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztgsyl(...) LAPACK_ztgsyl_base(__VA_ARGS__, 1) +#else + #define LAPACK_ztgsyl(...) LAPACK_ztgsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_ctpcon_base LAPACK_GLOBAL(ctpcon,CTPCON) +void LAPACK_ctpcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float const* AP, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctpcon(...) LAPACK_ctpcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctpcon(...) LAPACK_ctpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dtpcon_base LAPACK_GLOBAL(dtpcon,DTPCON) +void LAPACK_dtpcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + double const* AP, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtpcon(...) LAPACK_dtpcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtpcon(...) LAPACK_dtpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_stpcon_base LAPACK_GLOBAL(stpcon,STPCON) +void LAPACK_stpcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + float const* AP, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stpcon(...) LAPACK_stpcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stpcon(...) LAPACK_stpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ztpcon_base LAPACK_GLOBAL(ztpcon,ZTPCON) +void LAPACK_ztpcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double const* AP, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztpcon(...) LAPACK_ztpcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztpcon(...) LAPACK_ztpcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ctplqt LAPACK_GLOBAL(ctplqt,CTPLQT) +void LAPACK_ctplqt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dtplqt LAPACK_GLOBAL(dtplqt,DTPLQT) +void LAPACK_dtplqt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* T, lapack_int const* ldt, + double* work, + lapack_int* info ); + +#define LAPACK_stplqt LAPACK_GLOBAL(stplqt,STPLQT) +void LAPACK_stplqt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* T, lapack_int const* ldt, + float* work, + lapack_int* info ); + +#define LAPACK_ztplqt LAPACK_GLOBAL(ztplqt,ZTPLQT) +void LAPACK_ztplqt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_ctplqt2 LAPACK_GLOBAL(ctplqt2,CTPLQT2) +void LAPACK_ctplqt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_dtplqt2 LAPACK_GLOBAL(dtplqt2,DTPLQT2) +void LAPACK_dtplqt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_stplqt2 LAPACK_GLOBAL(stplqt2,STPLQT2) +void LAPACK_stplqt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_ztplqt2 LAPACK_GLOBAL(ztplqt2,ZTPLQT2) +void LAPACK_ztplqt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_ctpmlqt_base LAPACK_GLOBAL(ctpmlqt,CTPMLQT) +void LAPACK_ctpmlqt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctpmlqt(...) LAPACK_ctpmlqt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctpmlqt(...) LAPACK_ctpmlqt_base(__VA_ARGS__) +#endif + +#define LAPACK_dtpmlqt_base LAPACK_GLOBAL(dtpmlqt,DTPMLQT) +void LAPACK_dtpmlqt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, + double const* V, lapack_int const* ldv, + double const* T, lapack_int const* ldt, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtpmlqt(...) LAPACK_dtpmlqt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtpmlqt(...) LAPACK_dtpmlqt_base(__VA_ARGS__) +#endif + +#define LAPACK_stpmlqt_base LAPACK_GLOBAL(stpmlqt,STPMLQT) +void LAPACK_stpmlqt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, + float const* V, lapack_int const* ldv, + float const* T, lapack_int const* ldt, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stpmlqt(...) LAPACK_stpmlqt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stpmlqt(...) LAPACK_stpmlqt_base(__VA_ARGS__) +#endif + +#define LAPACK_ztpmlqt_base LAPACK_GLOBAL(ztpmlqt,ZTPMLQT) +void LAPACK_ztpmlqt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztpmlqt(...) LAPACK_ztpmlqt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztpmlqt(...) LAPACK_ztpmlqt_base(__VA_ARGS__) +#endif + +#define LAPACK_ctpmqrt_base LAPACK_GLOBAL(ctpmqrt,CTPMQRT) +void LAPACK_ctpmqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctpmqrt(...) LAPACK_ctpmqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctpmqrt(...) LAPACK_ctpmqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_dtpmqrt_base LAPACK_GLOBAL(dtpmqrt,DTPMQRT) +void LAPACK_dtpmqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, + double const* V, lapack_int const* ldv, + double const* T, lapack_int const* ldt, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtpmqrt(...) LAPACK_dtpmqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtpmqrt(...) LAPACK_dtpmqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_stpmqrt_base LAPACK_GLOBAL(stpmqrt,STPMQRT) +void LAPACK_stpmqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, + float const* V, lapack_int const* ldv, + float const* T, lapack_int const* ldt, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stpmqrt(...) LAPACK_stpmqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stpmqrt(...) LAPACK_stpmqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_ztpmqrt_base LAPACK_GLOBAL(ztpmqrt,ZTPMQRT) +void LAPACK_ztpmqrt_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztpmqrt(...) LAPACK_ztpmqrt_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztpmqrt(...) LAPACK_ztpmqrt_base(__VA_ARGS__) +#endif + +#define LAPACK_ctpqrt LAPACK_GLOBAL(ctpqrt,CTPQRT) +void LAPACK_ctpqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* work, + lapack_int* info ); + +#define LAPACK_dtpqrt LAPACK_GLOBAL(dtpqrt,DTPQRT) +void LAPACK_dtpqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* T, lapack_int const* ldt, + double* work, + lapack_int* info ); + +#define LAPACK_stpqrt LAPACK_GLOBAL(stpqrt,STPQRT) +void LAPACK_stpqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* T, lapack_int const* ldt, + float* work, + lapack_int* info ); + +#define LAPACK_ztpqrt LAPACK_GLOBAL(ztpqrt,ZTPQRT) +void LAPACK_ztpqrt( + lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* work, + lapack_int* info ); + +#define LAPACK_ctpqrt2 LAPACK_GLOBAL(ctpqrt2,CTPQRT2) +void LAPACK_ctpqrt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_dtpqrt2 LAPACK_GLOBAL(dtpqrt2,DTPQRT2) +void LAPACK_dtpqrt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_stpqrt2 LAPACK_GLOBAL(stpqrt2,STPQRT2) +void LAPACK_stpqrt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_ztpqrt2 LAPACK_GLOBAL(ztpqrt2,ZTPQRT2) +void LAPACK_ztpqrt2( + lapack_int const* m, lapack_int const* n, lapack_int const* l, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* T, lapack_int const* ldt, + lapack_int* info ); + +#define LAPACK_ctprfb_base LAPACK_GLOBAL(ctprfb,CTPRFB) +void LAPACK_ctprfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_float const* V, lapack_int const* ldv, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_complex_float* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctprfb(...) LAPACK_ctprfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_ctprfb(...) LAPACK_ctprfb_base(__VA_ARGS__) +#endif + +#define LAPACK_dtprfb_base LAPACK_GLOBAL(dtprfb,DTPRFB) +void LAPACK_dtprfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + double const* V, lapack_int const* ldv, + double const* T, lapack_int const* ldt, + double* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + double* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtprfb(...) LAPACK_dtprfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_dtprfb(...) LAPACK_dtprfb_base(__VA_ARGS__) +#endif + +#define LAPACK_stprfb_base LAPACK_GLOBAL(stprfb,STPRFB) +void LAPACK_stprfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + float const* V, lapack_int const* ldv, + float const* T, lapack_int const* ldt, + float* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + float* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stprfb(...) LAPACK_stprfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_stprfb(...) LAPACK_stprfb_base(__VA_ARGS__) +#endif + +#define LAPACK_ztprfb_base LAPACK_GLOBAL(ztprfb,ZTPRFB) +void LAPACK_ztprfb_base( + char const* side, char const* trans, char const* direct, char const* storev, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_double const* V, lapack_int const* ldv, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_complex_double* work, lapack_int const* ldwork +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztprfb(...) LAPACK_ztprfb_base(__VA_ARGS__, 1, 1, 1, 1) +#else + #define LAPACK_ztprfb(...) LAPACK_ztprfb_base(__VA_ARGS__) +#endif + +#define LAPACK_ctprfs_base LAPACK_GLOBAL(ctprfs,CTPRFS) +void LAPACK_ctprfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctprfs(...) LAPACK_ctprfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctprfs(...) LAPACK_ctprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtprfs_base LAPACK_GLOBAL(dtprfs,DTPRFS) +void LAPACK_dtprfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double const* B, lapack_int const* ldb, + double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtprfs(...) LAPACK_dtprfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtprfs(...) LAPACK_dtprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_stprfs_base LAPACK_GLOBAL(stprfs,STPRFS) +void LAPACK_stprfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float const* B, lapack_int const* ldb, + float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stprfs(...) LAPACK_stprfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stprfs(...) LAPACK_stprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztprfs_base LAPACK_GLOBAL(ztprfs,ZTPRFS) +void LAPACK_ztprfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztprfs(...) LAPACK_ztprfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztprfs(...) LAPACK_ztprfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctptri_base LAPACK_GLOBAL(ctptri,CTPTRI) +void LAPACK_ctptri_base( + char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctptri(...) LAPACK_ctptri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctptri(...) LAPACK_ctptri_base(__VA_ARGS__) +#endif + +#define LAPACK_dtptri_base LAPACK_GLOBAL(dtptri,DTPTRI) +void LAPACK_dtptri_base( + char const* uplo, char const* diag, + lapack_int const* n, + double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtptri(...) LAPACK_dtptri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtptri(...) LAPACK_dtptri_base(__VA_ARGS__) +#endif + +#define LAPACK_stptri_base LAPACK_GLOBAL(stptri,STPTRI) +void LAPACK_stptri_base( + char const* uplo, char const* diag, + lapack_int const* n, + float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stptri(...) LAPACK_stptri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stptri(...) LAPACK_stptri_base(__VA_ARGS__) +#endif + +#define LAPACK_ztptri_base LAPACK_GLOBAL(ztptri,ZTPTRI) +void LAPACK_ztptri_base( + char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztptri(...) LAPACK_ztptri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztptri(...) LAPACK_ztptri_base(__VA_ARGS__) +#endif + +#define LAPACK_ctptrs_base LAPACK_GLOBAL(ctptrs,CTPTRS) +void LAPACK_ctptrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* AP, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctptrs(...) LAPACK_ctptrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctptrs(...) LAPACK_ctptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtptrs_base LAPACK_GLOBAL(dtptrs,DTPTRS) +void LAPACK_dtptrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + double const* AP, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtptrs(...) LAPACK_dtptrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtptrs(...) LAPACK_dtptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_stptrs_base LAPACK_GLOBAL(stptrs,STPTRS) +void LAPACK_stptrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + float const* AP, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stptrs(...) LAPACK_stptrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_stptrs(...) LAPACK_stptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztptrs_base LAPACK_GLOBAL(ztptrs,ZTPTRS) +void LAPACK_ztptrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* AP, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztptrs(...) LAPACK_ztptrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztptrs(...) LAPACK_ztptrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctpttf_base LAPACK_GLOBAL(ctpttf,CTPTTF) +void LAPACK_ctpttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + lapack_complex_float* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctpttf(...) LAPACK_ctpttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctpttf(...) LAPACK_ctpttf_base(__VA_ARGS__) +#endif + +#define LAPACK_dtpttf_base LAPACK_GLOBAL(dtpttf,DTPTTF) +void LAPACK_dtpttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + double const* AP, + double* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtpttf(...) LAPACK_dtpttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtpttf(...) LAPACK_dtpttf_base(__VA_ARGS__) +#endif + +#define LAPACK_stpttf_base LAPACK_GLOBAL(stpttf,STPTTF) +void LAPACK_stpttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + float const* AP, + float* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stpttf(...) LAPACK_stpttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_stpttf(...) LAPACK_stpttf_base(__VA_ARGS__) +#endif + +#define LAPACK_ztpttf_base LAPACK_GLOBAL(ztpttf,ZTPTTF) +void LAPACK_ztpttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + lapack_complex_double* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztpttf(...) LAPACK_ztpttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztpttf(...) LAPACK_ztpttf_base(__VA_ARGS__) +#endif + +#define LAPACK_ctpttr_base LAPACK_GLOBAL(ctpttr,CTPTTR) +void LAPACK_ctpttr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctpttr(...) LAPACK_ctpttr_base(__VA_ARGS__, 1) +#else + #define LAPACK_ctpttr(...) LAPACK_ctpttr_base(__VA_ARGS__) +#endif + +#define LAPACK_dtpttr_base LAPACK_GLOBAL(dtpttr,DTPTTR) +void LAPACK_dtpttr_base( + char const* uplo, + lapack_int const* n, + double const* AP, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtpttr(...) LAPACK_dtpttr_base(__VA_ARGS__, 1) +#else + #define LAPACK_dtpttr(...) LAPACK_dtpttr_base(__VA_ARGS__) +#endif + +#define LAPACK_stpttr_base LAPACK_GLOBAL(stpttr,STPTTR) +void LAPACK_stpttr_base( + char const* uplo, + lapack_int const* n, + float const* AP, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_stpttr(...) LAPACK_stpttr_base(__VA_ARGS__, 1) +#else + #define LAPACK_stpttr(...) LAPACK_stpttr_base(__VA_ARGS__) +#endif + +#define LAPACK_ztpttr_base LAPACK_GLOBAL(ztpttr,ZTPTTR) +void LAPACK_ztpttr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztpttr(...) LAPACK_ztpttr_base(__VA_ARGS__, 1) +#else + #define LAPACK_ztpttr(...) LAPACK_ztpttr_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrcon_base LAPACK_GLOBAL(ctrcon,CTRCON) +void LAPACK_ctrcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + float* rcond, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrcon(...) LAPACK_ctrcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctrcon(...) LAPACK_ctrcon_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrcon_base LAPACK_GLOBAL(dtrcon,DTRCON) +void LAPACK_dtrcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* rcond, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrcon(...) LAPACK_dtrcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtrcon(...) LAPACK_dtrcon_base(__VA_ARGS__) +#endif + +#define LAPACK_strcon_base LAPACK_GLOBAL(strcon,STRCON) +void LAPACK_strcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* rcond, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strcon(...) LAPACK_strcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_strcon(...) LAPACK_strcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrcon_base LAPACK_GLOBAL(ztrcon,ZTRCON) +void LAPACK_ztrcon_base( + char const* norm, char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + double* rcond, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrcon(...) LAPACK_ztrcon_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztrcon(...) LAPACK_ztrcon_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrevc_base LAPACK_GLOBAL(ctrevc,CTREVC) +void LAPACK_ctrevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrevc(...) LAPACK_ctrevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrevc(...) LAPACK_ctrevc_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrevc_base LAPACK_GLOBAL(dtrevc,DTREVC) +void LAPACK_dtrevc_base( + char const* side, char const* howmny, + lapack_logical* select, + lapack_int const* n, + double const* T, lapack_int const* ldt, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrevc(...) LAPACK_dtrevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrevc(...) LAPACK_dtrevc_base(__VA_ARGS__) +#endif + +#define LAPACK_strevc_base LAPACK_GLOBAL(strevc,STREVC) +void LAPACK_strevc_base( + char const* side, char const* howmny, + lapack_logical* select, + lapack_int const* n, + float const* T, lapack_int const* ldt, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strevc(...) LAPACK_strevc_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strevc(...) LAPACK_strevc_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrevc_base LAPACK_GLOBAL(ztrevc,ZTREVC) +void LAPACK_ztrevc_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__, (size_t)1, 1) +#else + #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrevc3_base LAPACK_GLOBAL(ctrevc3,CTREVC3) +void LAPACK_ctrevc3_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* VL, lapack_int const* ldvl, + lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrevc3(...) LAPACK_ctrevc3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrevc3(...) LAPACK_ctrevc3_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrevc3_base LAPACK_GLOBAL(dtrevc3,DTREVC3) +void LAPACK_dtrevc3_base( + char const* side, char const* howmny, + lapack_logical* select, + lapack_int const* n, + double const* T, lapack_int const* ldt, + double* VL, lapack_int const* ldvl, + double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrevc3(...) LAPACK_dtrevc3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrevc3(...) LAPACK_dtrevc3_base(__VA_ARGS__) +#endif + +#define LAPACK_strevc3_base LAPACK_GLOBAL(strevc3,STREVC3) +void LAPACK_strevc3_base( + char const* side, char const* howmny, + lapack_logical* select, + lapack_int const* n, + float const* T, lapack_int const* ldt, + float* VL, lapack_int const* ldvl, + float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strevc3(...) LAPACK_strevc3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strevc3(...) LAPACK_strevc3_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrevc3_base LAPACK_GLOBAL(ztrevc3,ZTREVC3) +void LAPACK_ztrevc3_base( + char const* side, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* VL, lapack_int const* ldvl, + lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrevc3(...) LAPACK_ztrevc3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrevc3(...) LAPACK_ztrevc3_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrexc_base LAPACK_GLOBAL(ctrexc,CTREXC) +void LAPACK_ctrexc_base( + char const* compq, + lapack_int const* n, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* Q, lapack_int const* ldq, lapack_int const* ifst, lapack_int const* ilst, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrexc(...) LAPACK_ctrexc_base(__VA_ARGS__, 1) +#else + #define LAPACK_ctrexc(...) LAPACK_ctrexc_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrexc_base LAPACK_GLOBAL(dtrexc,DTREXC) +void LAPACK_dtrexc_base( + char const* compq, + lapack_int const* n, + double* T, lapack_int const* ldt, + double* Q, lapack_int const* ldq, lapack_int* ifst, lapack_int* ilst, + double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrexc(...) LAPACK_dtrexc_base(__VA_ARGS__, 1) +#else + #define LAPACK_dtrexc(...) LAPACK_dtrexc_base(__VA_ARGS__) +#endif + +#define LAPACK_strexc_base LAPACK_GLOBAL(strexc,STREXC) +void LAPACK_strexc_base( + char const* compq, + lapack_int const* n, + float* T, lapack_int const* ldt, + float* Q, lapack_int const* ldq, lapack_int* ifst, lapack_int* ilst, + float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strexc(...) LAPACK_strexc_base(__VA_ARGS__, 1) +#else + #define LAPACK_strexc(...) LAPACK_strexc_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrexc_base LAPACK_GLOBAL(ztrexc,ZTREXC) +void LAPACK_ztrexc_base( + char const* compq, + lapack_int const* n, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* Q, lapack_int const* ldq, lapack_int const* ifst, lapack_int const* ilst, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrexc(...) LAPACK_ztrexc_base(__VA_ARGS__, 1) +#else + #define LAPACK_ztrexc(...) LAPACK_ztrexc_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrrfs_base LAPACK_GLOBAL(ctrrfs,CTRRFS) +void LAPACK_ctrrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + lapack_complex_float* work, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrrfs(...) LAPACK_ctrrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctrrfs(...) LAPACK_ctrrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrrfs_base LAPACK_GLOBAL(dtrrfs,DTRRFS) +void LAPACK_dtrrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + double* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrrfs(...) LAPACK_dtrrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtrrfs(...) LAPACK_dtrrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_strrfs_base LAPACK_GLOBAL(strrfs,STRRFS) +void LAPACK_strrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + float const* X, lapack_int const* ldx, + float* ferr, + float* berr, + float* work, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strrfs(...) LAPACK_strrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_strrfs(...) LAPACK_strrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrrfs_base LAPACK_GLOBAL(ztrrfs,ZTRRFS) +void LAPACK_ztrrfs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double const* X, lapack_int const* ldx, + double* ferr, + double* berr, + lapack_complex_double* work, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrrfs(...) LAPACK_ztrrfs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztrrfs(...) LAPACK_ztrrfs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrsen_base LAPACK_GLOBAL(ctrsen,CTRSEN) +void LAPACK_ctrsen_base( + char const* job, char const* compq, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float* T, lapack_int const* ldt, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* W, lapack_int* m, + float* s, + float* sep, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrsen(...) LAPACK_ctrsen_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrsen(...) LAPACK_ctrsen_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrsen_base LAPACK_GLOBAL(dtrsen,DTRSEN) +void LAPACK_dtrsen_base( + char const* job, char const* compq, + lapack_logical const* select, + lapack_int const* n, + double* T, lapack_int const* ldt, + double* Q, lapack_int const* ldq, + double* WR, + double* WI, lapack_int* m, + double* s, + double* sep, + double* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrsen(...) LAPACK_dtrsen_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrsen(...) LAPACK_dtrsen_base(__VA_ARGS__) +#endif + +#define LAPACK_strsen_base LAPACK_GLOBAL(strsen,STRSEN) +void LAPACK_strsen_base( + char const* job, char const* compq, + lapack_logical const* select, + lapack_int const* n, + float* T, lapack_int const* ldt, + float* Q, lapack_int const* ldq, + float* WR, + float* WI, lapack_int* m, + float* s, + float* sep, + float* work, lapack_int const* lwork, + lapack_int* iwork, lapack_int const* liwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strsen(...) LAPACK_strsen_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strsen(...) LAPACK_strsen_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrsen_base LAPACK_GLOBAL(ztrsen,ZTRSEN) +void LAPACK_ztrsen_base( + char const* job, char const* compq, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double* T, lapack_int const* ldt, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* W, lapack_int* m, + double* s, + double* sep, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrsen(...) LAPACK_ztrsen_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrsen(...) LAPACK_ztrsen_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrsna_base LAPACK_GLOBAL(ctrsna,CTRSNA) +void LAPACK_ctrsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float const* VL, lapack_int const* ldvl, + lapack_complex_float const* VR, lapack_int const* ldvr, + float* S, + float* SEP, lapack_int const* mm, lapack_int* m, + lapack_complex_float* work, lapack_int const* ldwork, + float* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrsna(...) LAPACK_ctrsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrsna(...) LAPACK_ctrsna_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrsna_base LAPACK_GLOBAL(dtrsna,DTRSNA) +void LAPACK_dtrsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + double const* T, lapack_int const* ldt, + double const* VL, lapack_int const* ldvl, + double const* VR, lapack_int const* ldvr, + double* S, + double* SEP, lapack_int const* mm, lapack_int* m, + double* work, lapack_int const* ldwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrsna(...) LAPACK_dtrsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrsna(...) LAPACK_dtrsna_base(__VA_ARGS__) +#endif + +#define LAPACK_strsna_base LAPACK_GLOBAL(strsna,STRSNA) +void LAPACK_strsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + float const* T, lapack_int const* ldt, + float const* VL, lapack_int const* ldvl, + float const* VR, lapack_int const* ldvr, + float* S, + float* SEP, lapack_int const* mm, lapack_int* m, + float* work, lapack_int const* ldwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strsna(...) LAPACK_strsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strsna(...) LAPACK_strsna_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrsna_base LAPACK_GLOBAL(ztrsna,ZTRSNA) +void LAPACK_ztrsna_base( + char const* job, char const* howmny, + lapack_logical const* select, + lapack_int const* n, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double const* VL, lapack_int const* ldvl, + lapack_complex_double const* VR, lapack_int const* ldvr, + double* S, + double* SEP, lapack_int const* mm, lapack_int* m, + lapack_complex_double* work, lapack_int const* ldwork, + double* rwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrsna(...) LAPACK_ztrsna_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrsna(...) LAPACK_ztrsna_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrsyl_base LAPACK_GLOBAL(ctrsyl,CTRSYL) +void LAPACK_ctrsyl_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* C, lapack_int const* ldc, + float* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrsyl(...) LAPACK_ctrsyl_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrsyl(...) LAPACK_ctrsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrsyl_base LAPACK_GLOBAL(dtrsyl,DTRSYL) +void LAPACK_dtrsyl_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double* C, lapack_int const* ldc, + double* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrsyl(...) LAPACK_dtrsyl_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrsyl(...) LAPACK_dtrsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_strsyl_base LAPACK_GLOBAL(strsyl,STRSYL) +void LAPACK_strsyl_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + float* C, lapack_int const* ldc, + float* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strsyl(...) LAPACK_strsyl_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strsyl(...) LAPACK_strsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrsyl_base LAPACK_GLOBAL(ztrsyl,ZTRSYL) +void LAPACK_ztrsyl_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* C, lapack_int const* ldc, + double* scale, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrsyl(...) LAPACK_ztrsyl_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrsyl(...) LAPACK_ztrsyl_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrsyl3_base LAPACK_GLOBAL(ctrsyl3,CTRSYL3) +void LAPACK_ctrsyl3_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* B, lapack_int const* ldb, + lapack_complex_float* C, lapack_int const* ldc, float* scale, + float* swork, lapack_int const *ldswork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrsyl3(...) LAPACK_ctrsyl3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrsyl3(...) LAPACK_ctrsyl3_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrsyl3_base LAPACK_GLOBAL(dtrsyl3,DTRSYL3) +void LAPACK_dtrsyl3_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + double const* A, lapack_int const* lda, + double const* B, lapack_int const* ldb, + double* C, lapack_int const* ldc, double* scale, + lapack_int* iwork, lapack_int const* liwork, + double* swork, lapack_int const *ldswork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrsyl3(...) LAPACK_dtrsyl3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrsyl3(...) LAPACK_dtrsyl3_base(__VA_ARGS__) +#endif + +#define LAPACK_strsyl3_base LAPACK_GLOBAL(strsyl3,STRSYL3) +void LAPACK_strsyl3_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + float const* A, lapack_int const* lda, + float const* B, lapack_int const* ldb, + float* C, lapack_int const* ldc, float* scale, + lapack_int* iwork, lapack_int const* liwork, + float* swork, lapack_int const *ldswork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strsyl3(...) LAPACK_strsyl3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strsyl3(...) LAPACK_strsyl3_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrsyl3_base LAPACK_GLOBAL(ztrsyl3,ZTRSYL3) +void LAPACK_ztrsyl3_base( + char const* trana, char const* tranb, + lapack_int const* isgn, lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* B, lapack_int const* ldb, + lapack_complex_double* C, lapack_int const* ldc, double* scale, + double* swork, lapack_int const *ldswork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrsyl3(...) LAPACK_ztrsyl3_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrsyl3(...) LAPACK_ztrsyl3_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrtri_base LAPACK_GLOBAL(ctrtri,CTRTRI) +lapack_int LAPACK_ctrtri_base( + char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrtri(...) LAPACK_ctrtri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrtri(...) LAPACK_ctrtri_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrtri_base LAPACK_GLOBAL(dtrtri,DTRTRI) +lapack_int LAPACK_dtrtri_base( + char const* uplo, char const* diag, + lapack_int const* n, + double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrtri(...) LAPACK_dtrtri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrtri(...) LAPACK_dtrtri_base(__VA_ARGS__) +#endif + +#define LAPACK_strtri_base LAPACK_GLOBAL(strtri,STRTRI) +lapack_int LAPACK_strtri_base( + char const* uplo, char const* diag, + lapack_int const* n, + float* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strtri(...) LAPACK_strtri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strtri(...) LAPACK_strtri_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrtri_base LAPACK_GLOBAL(ztrtri,ZTRTRI) +lapack_int LAPACK_ztrtri_base( + char const* uplo, char const* diag, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrtri(...) LAPACK_ztrtri_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrtri(...) LAPACK_ztrtri_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrtrs_base LAPACK_GLOBAL(ctrtrs,CTRTRS) +void LAPACK_ctrtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrtrs(...) LAPACK_ctrtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ctrtrs(...) LAPACK_ctrtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrtrs_base LAPACK_GLOBAL(dtrtrs,DTRTRS) +void LAPACK_dtrtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + double const* A, lapack_int const* lda, + double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrtrs(...) LAPACK_dtrtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_dtrtrs(...) LAPACK_dtrtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_strtrs_base LAPACK_GLOBAL(strtrs,STRTRS) +void LAPACK_strtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + float const* A, lapack_int const* lda, + float* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strtrs(...) LAPACK_strtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_strtrs(...) LAPACK_strtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrtrs_base LAPACK_GLOBAL(ztrtrs,ZTRTRS) +void LAPACK_ztrtrs_base( + char const* uplo, char const* trans, char const* diag, + lapack_int const* n, lapack_int const* nrhs, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* B, lapack_int const* ldb, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrtrs(...) LAPACK_ztrtrs_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_ztrtrs(...) LAPACK_ztrtrs_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrttf_base LAPACK_GLOBAL(ctrttf,CTRTTF) +void LAPACK_ctrttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrttf(...) LAPACK_ctrttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ctrttf(...) LAPACK_ctrttf_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrttf_base LAPACK_GLOBAL(dtrttf,DTRTTF) +void LAPACK_dtrttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrttf(...) LAPACK_dtrttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_dtrttf(...) LAPACK_dtrttf_base(__VA_ARGS__) +#endif + +#define LAPACK_strttf_base LAPACK_GLOBAL(strttf,STRTTF) +void LAPACK_strttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strttf(...) LAPACK_strttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_strttf(...) LAPACK_strttf_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrttf_base LAPACK_GLOBAL(ztrttf,ZTRTTF) +void LAPACK_ztrttf_base( + char const* transr, char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* ARF, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrttf(...) LAPACK_ztrttf_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_ztrttf(...) LAPACK_ztrttf_base(__VA_ARGS__) +#endif + +#define LAPACK_ctrttp_base LAPACK_GLOBAL(ctrttp,CTRTTP) +void LAPACK_ctrttp_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ctrttp(...) LAPACK_ctrttp_base(__VA_ARGS__, 1) +#else + #define LAPACK_ctrttp(...) LAPACK_ctrttp_base(__VA_ARGS__) +#endif + +#define LAPACK_dtrttp_base LAPACK_GLOBAL(dtrttp,DTRTTP) +void LAPACK_dtrttp_base( + char const* uplo, + lapack_int const* n, + double const* A, lapack_int const* lda, + double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_dtrttp(...) LAPACK_dtrttp_base(__VA_ARGS__, 1) +#else + #define LAPACK_dtrttp(...) LAPACK_dtrttp_base(__VA_ARGS__) +#endif + +#define LAPACK_strttp_base LAPACK_GLOBAL(strttp,STRTTP) +void LAPACK_strttp_base( + char const* uplo, + lapack_int const* n, + float const* A, lapack_int const* lda, + float* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_strttp(...) LAPACK_strttp_base(__VA_ARGS__, 1) +#else + #define LAPACK_strttp(...) LAPACK_strttp_base(__VA_ARGS__) +#endif + +#define LAPACK_ztrttp_base LAPACK_GLOBAL(ztrttp,ZTRTTP) +void LAPACK_ztrttp_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double* AP, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_ztrttp(...) LAPACK_ztrttp_base(__VA_ARGS__, 1) +#else + #define LAPACK_ztrttp(...) LAPACK_ztrttp_base(__VA_ARGS__) +#endif + +#define LAPACK_ctzrzf LAPACK_GLOBAL(ctzrzf,CTZRZF) +void LAPACK_ctzrzf( + lapack_int const* m, lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_dtzrzf LAPACK_GLOBAL(dtzrzf,DTZRZF) +void LAPACK_dtzrzf( + lapack_int const* m, lapack_int const* n, + double* A, lapack_int const* lda, + double* tau, + double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_stzrzf LAPACK_GLOBAL(stzrzf,STZRZF) +void LAPACK_stzrzf( + lapack_int const* m, lapack_int const* n, + float* A, lapack_int const* lda, + float* tau, + float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_ztzrzf LAPACK_GLOBAL(ztzrzf,ZTZRZF) +void LAPACK_ztzrzf( + lapack_int const* m, lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cunbdb_base LAPACK_GLOBAL(cunbdb,CUNBDB) +void LAPACK_cunbdb_base( + char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_float* X11, lapack_int const* ldx11, + lapack_complex_float* X12, lapack_int const* ldx12, + lapack_complex_float* X21, lapack_int const* ldx21, + lapack_complex_float* X22, lapack_int const* ldx22, + float* theta, + float* phi, + lapack_complex_float* TAUP1, + lapack_complex_float* TAUP2, + lapack_complex_float* TAUQ1, + lapack_complex_float* TAUQ2, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunbdb(...) LAPACK_cunbdb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunbdb(...) LAPACK_cunbdb_base(__VA_ARGS__) +#endif + +#define LAPACK_zunbdb_base LAPACK_GLOBAL(zunbdb,ZUNBDB) +void LAPACK_zunbdb_base( + char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_double* X11, lapack_int const* ldx11, + lapack_complex_double* X12, lapack_int const* ldx12, + lapack_complex_double* X21, lapack_int const* ldx21, + lapack_complex_double* X22, lapack_int const* ldx22, + double* theta, + double* phi, + lapack_complex_double* TAUP1, + lapack_complex_double* TAUP2, + lapack_complex_double* TAUQ1, + lapack_complex_double* TAUQ2, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunbdb(...) LAPACK_zunbdb_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunbdb(...) LAPACK_zunbdb_base(__VA_ARGS__) +#endif + +#define LAPACK_cuncsd_base LAPACK_GLOBAL(cuncsd,CUNCSD) +void LAPACK_cuncsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_float* X11, lapack_int const* ldx11, + lapack_complex_float* X12, lapack_int const* ldx12, + lapack_complex_float* X21, lapack_int const* ldx21, + lapack_complex_float* X22, lapack_int const* ldx22, + float* theta, + lapack_complex_float* U1, lapack_int const* ldu1, + lapack_complex_float* U2, lapack_int const* ldu2, + lapack_complex_float* V1T, lapack_int const* ldv1t, + lapack_complex_float* V2T, lapack_int const* ldv2t, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cuncsd(...) LAPACK_cuncsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_cuncsd(...) LAPACK_cuncsd_base(__VA_ARGS__) +#endif + +#define LAPACK_zuncsd_base LAPACK_GLOBAL(zuncsd,ZUNCSD) +void LAPACK_zuncsd_base( + char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_double* X11, lapack_int const* ldx11, + lapack_complex_double* X12, lapack_int const* ldx12, + lapack_complex_double* X21, lapack_int const* ldx21, + lapack_complex_double* X22, lapack_int const* ldx22, + double* theta, + lapack_complex_double* U1, lapack_int const* ldu1, + lapack_complex_double* U2, lapack_int const* ldu2, + lapack_complex_double* V1T, lapack_int const* ldv1t, + lapack_complex_double* V2T, lapack_int const* ldv2t, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zuncsd(...) LAPACK_zuncsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) +#else + #define LAPACK_zuncsd(...) LAPACK_zuncsd_base(__VA_ARGS__) +#endif + +#define LAPACK_cuncsd2by1_base LAPACK_GLOBAL(cuncsd2by1,CUNCSD2BY1) +void LAPACK_cuncsd2by1_base( + char const* jobu1, char const* jobu2, char const* jobv1t, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_float* X11, lapack_int const* ldx11, + lapack_complex_float* X21, lapack_int const* ldx21, + float* theta, + lapack_complex_float* U1, lapack_int const* ldu1, + lapack_complex_float* U2, lapack_int const* ldu2, + lapack_complex_float* V1T, lapack_int const* ldv1t, + lapack_complex_float* work, lapack_int const* lwork, + float* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cuncsd2by1(...) LAPACK_cuncsd2by1_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cuncsd2by1(...) LAPACK_cuncsd2by1_base(__VA_ARGS__) +#endif + +#define LAPACK_zuncsd2by1_base LAPACK_GLOBAL(zuncsd2by1,ZUNCSD2BY1) +void LAPACK_zuncsd2by1_base( + char const* jobu1, char const* jobu2, char const* jobv1t, + lapack_int const* m, lapack_int const* p, lapack_int const* q, + lapack_complex_double* X11, lapack_int const* ldx11, + lapack_complex_double* X21, lapack_int const* ldx21, + double* theta, + lapack_complex_double* U1, lapack_int const* ldu1, + lapack_complex_double* U2, lapack_int const* ldu2, + lapack_complex_double* V1T, lapack_int const* ldv1t, + lapack_complex_double* work, lapack_int const* lwork, + double* rwork, lapack_int const* lrwork, + lapack_int* iwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zuncsd2by1(...) LAPACK_zuncsd2by1_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zuncsd2by1(...) LAPACK_zuncsd2by1_base(__VA_ARGS__) +#endif + +#define LAPACK_cungbr_base LAPACK_GLOBAL(cungbr,CUNGBR) +void LAPACK_cungbr_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cungbr(...) LAPACK_cungbr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cungbr(...) LAPACK_cungbr_base(__VA_ARGS__) +#endif + +#define LAPACK_zungbr_base LAPACK_GLOBAL(zungbr,ZUNGBR) +void LAPACK_zungbr_base( + char const* vect, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zungbr(...) LAPACK_zungbr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zungbr(...) LAPACK_zungbr_base(__VA_ARGS__) +#endif + +#define LAPACK_cunghr LAPACK_GLOBAL(cunghr,CUNGHR) +void LAPACK_cunghr( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zunghr LAPACK_GLOBAL(zunghr,ZUNGHR) +void LAPACK_zunghr( + lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cunglq LAPACK_GLOBAL(cunglq,CUNGLQ) +void LAPACK_cunglq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zunglq LAPACK_GLOBAL(zunglq,ZUNGLQ) +void LAPACK_zunglq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cungql LAPACK_GLOBAL(cungql,CUNGQL) +void LAPACK_cungql( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zungql LAPACK_GLOBAL(zungql,ZUNGQL) +void LAPACK_zungql( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cungqr LAPACK_GLOBAL(cungqr,CUNGQR) +void LAPACK_cungqr( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zungqr LAPACK_GLOBAL(zungqr,ZUNGQR) +void LAPACK_zungqr( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cungrq LAPACK_GLOBAL(cungrq,CUNGRQ) +void LAPACK_cungrq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zungrq LAPACK_GLOBAL(zungrq,ZUNGRQ) +void LAPACK_zungrq( + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cungtr_base LAPACK_GLOBAL(cungtr,CUNGTR) +void LAPACK_cungtr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cungtr(...) LAPACK_cungtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cungtr(...) LAPACK_cungtr_base(__VA_ARGS__) +#endif + +#define LAPACK_zungtr_base LAPACK_GLOBAL(zungtr,ZUNGTR) +void LAPACK_zungtr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zungtr(...) LAPACK_zungtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zungtr(...) LAPACK_zungtr_base(__VA_ARGS__) +#endif + +#define LAPACK_cungtsqr_row LAPACK_GLOBAL(cungtsqr_row,CUNGTSQR_ROW) +void LAPACK_cungtsqr_row( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb, lapack_int const* nb, + lapack_complex_float* A, lapack_int const* lda, + lapack_complex_float const* T, lapack_int const* ldt, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_zungtsqr_row LAPACK_GLOBAL(zungtsqr_row,ZUNGTSQR_ROW) +void LAPACK_zungtsqr_row( + lapack_int const* m, lapack_int const* n, + lapack_int const* mb, lapack_int const* nb, + lapack_complex_double* A, lapack_int const* lda, + lapack_complex_double const* T, lapack_int const* ldt, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info ); + +#define LAPACK_cunhr_col LAPACK_GLOBAL(cunhr_col,CUNHR_COL) +void LAPACK_cunhr_col( + lapack_int const* m, lapack_int const* n, + lapack_int const* nb, lapack_complex_float* A, + lapack_int const* lda, lapack_complex_float* T, + lapack_int const* ldt, lapack_complex_float* D, + lapack_int* info ); + +#define LAPACK_zunhr_col LAPACK_GLOBAL(zunhr_col,ZUNHR_COL) +void LAPACK_zunhr_col( + lapack_int const* m, lapack_int const* n, + lapack_int const* nb, lapack_complex_double* A, + lapack_int const* lda, lapack_complex_double* T, + lapack_int const* ldt, lapack_complex_double* D, + lapack_int* info ); + +#define LAPACK_cunmbr_base LAPACK_GLOBAL(cunmbr,CUNMBR) +void LAPACK_cunmbr_base( + char const* vect, char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmbr(...) LAPACK_cunmbr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cunmbr(...) LAPACK_cunmbr_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmbr_base LAPACK_GLOBAL(zunmbr,ZUNMBR) +void LAPACK_zunmbr_base( + char const* vect, char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmbr(...) LAPACK_zunmbr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zunmbr(...) LAPACK_zunmbr_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmhr_base LAPACK_GLOBAL(cunmhr,CUNMHR) +void LAPACK_cunmhr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmhr(...) LAPACK_cunmhr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmhr(...) LAPACK_cunmhr_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmhr_base LAPACK_GLOBAL(zunmhr,ZUNMHR) +void LAPACK_zunmhr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmhr(...) LAPACK_zunmhr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmhr(...) LAPACK_zunmhr_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmlq_base LAPACK_GLOBAL(cunmlq,CUNMLQ) +void LAPACK_cunmlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmlq(...) LAPACK_cunmlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmlq(...) LAPACK_cunmlq_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmlq_base LAPACK_GLOBAL(zunmlq,ZUNMLQ) +void LAPACK_zunmlq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmlq(...) LAPACK_zunmlq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmlq(...) LAPACK_zunmlq_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmql_base LAPACK_GLOBAL(cunmql,CUNMQL) +void LAPACK_cunmql_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmql(...) LAPACK_cunmql_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmql(...) LAPACK_cunmql_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmql_base LAPACK_GLOBAL(zunmql,ZUNMQL) +void LAPACK_zunmql_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmql(...) LAPACK_zunmql_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmql(...) LAPACK_zunmql_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmqr_base LAPACK_GLOBAL(cunmqr,CUNMQR) +void LAPACK_cunmqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmqr(...) LAPACK_cunmqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmqr(...) LAPACK_cunmqr_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmqr_base LAPACK_GLOBAL(zunmqr,ZUNMQR) +void LAPACK_zunmqr_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmqr(...) LAPACK_zunmqr_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmqr(...) LAPACK_zunmqr_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmrq_base LAPACK_GLOBAL(cunmrq,CUNMRQ) +void LAPACK_cunmrq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmrq(...) LAPACK_cunmrq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmrq(...) LAPACK_cunmrq_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmrq_base LAPACK_GLOBAL(zunmrq,ZUNMRQ) +void LAPACK_zunmrq_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmrq(...) LAPACK_zunmrq_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmrq(...) LAPACK_zunmrq_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmrz_base LAPACK_GLOBAL(cunmrz,CUNMRZ) +void LAPACK_cunmrz_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmrz(...) LAPACK_cunmrz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_cunmrz(...) LAPACK_cunmrz_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmrz_base LAPACK_GLOBAL(zunmrz,ZUNMRZ) +void LAPACK_zunmrz_base( + char const* side, char const* trans, + lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmrz(...) LAPACK_zunmrz_base(__VA_ARGS__, 1, 1) +#else + #define LAPACK_zunmrz(...) LAPACK_zunmrz_base(__VA_ARGS__) +#endif + +#define LAPACK_cunmtr_base LAPACK_GLOBAL(cunmtr,CUNMTR) +void LAPACK_cunmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* A, lapack_int const* lda, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cunmtr(...) LAPACK_cunmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cunmtr(...) LAPACK_cunmtr_base(__VA_ARGS__) +#endif + +#define LAPACK_zunmtr_base LAPACK_GLOBAL(zunmtr,ZUNMTR) +void LAPACK_zunmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* A, lapack_int const* lda, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, lapack_int const* lwork, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zunmtr(...) LAPACK_zunmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zunmtr(...) LAPACK_zunmtr_base(__VA_ARGS__) +#endif + +#define LAPACK_cupgtr_base LAPACK_GLOBAL(cupgtr,CUPGTR) +void LAPACK_cupgtr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_float const* AP, + lapack_complex_float const* tau, + lapack_complex_float* Q, lapack_int const* ldq, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cupgtr(...) LAPACK_cupgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_cupgtr(...) LAPACK_cupgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_zupgtr_base LAPACK_GLOBAL(zupgtr,ZUPGTR) +void LAPACK_zupgtr_base( + char const* uplo, + lapack_int const* n, + lapack_complex_double const* AP, + lapack_complex_double const* tau, + lapack_complex_double* Q, lapack_int const* ldq, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zupgtr(...) LAPACK_zupgtr_base(__VA_ARGS__, 1) +#else + #define LAPACK_zupgtr(...) LAPACK_zupgtr_base(__VA_ARGS__) +#endif + +#define LAPACK_cupmtr_base LAPACK_GLOBAL(cupmtr,CUPMTR) +void LAPACK_cupmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + lapack_complex_float const* AP, + lapack_complex_float const* tau, + lapack_complex_float* C, lapack_int const* ldc, + lapack_complex_float* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_cupmtr(...) LAPACK_cupmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_cupmtr(...) LAPACK_cupmtr_base(__VA_ARGS__) +#endif + +#define LAPACK_zupmtr_base LAPACK_GLOBAL(zupmtr,ZUPMTR) +void LAPACK_zupmtr_base( + char const* side, char const* uplo, char const* trans, + lapack_int const* m, lapack_int const* n, + lapack_complex_double const* AP, + lapack_complex_double const* tau, + lapack_complex_double* C, lapack_int const* ldc, + lapack_complex_double* work, + lapack_int* info +#ifdef LAPACK_FORTRAN_STRLEN_END + , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN +#endif +); +#ifdef LAPACK_FORTRAN_STRLEN_END + #define LAPACK_zupmtr(...) LAPACK_zupmtr_base(__VA_ARGS__, 1, 1, 1) +#else + #define LAPACK_zupmtr(...) LAPACK_zupmtr_base(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* LAPACK_H */ diff --git a/install/include/lapacke.h b/install/include/lapacke.h new file mode 100644 index 0000000000..377e2a6bbc --- /dev/null +++ b/install/include/lapacke.h @@ -0,0 +1,12888 @@ +/***************************************************************************** + Copyright (c) 2014, Intel Corp. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Intel Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. +****************************************************************************** +* Contents: Native C interface to LAPACK +* Author: Intel Corporation +*****************************************************************************/ + +#ifndef _LAPACKE_H_ +#define _LAPACKE_H_ + +#include "lapack.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifndef LAPACKE_malloc +#define LAPACKE_malloc( size ) malloc( size ) +#endif +#ifndef LAPACKE_free +#define LAPACKE_free( p ) free( p ) +#endif + +#define LAPACK_C2INT( x ) (lapack_int)(*((float*)&x )) +#define LAPACK_Z2INT( x ) (lapack_int)(*((double*)&x )) + +#define LAPACK_ROW_MAJOR 101 +#define LAPACK_COL_MAJOR 102 + +#define LAPACK_WORK_MEMORY_ERROR -1010 +#define LAPACK_TRANSPOSE_MEMORY_ERROR -1011 + +lapack_complex_float lapack_make_complex_float( float re, float im ); +lapack_complex_double lapack_make_complex_double( double re, double im ); + +/* C-LAPACK function prototypes */ + +lapack_int LAPACKE_sbdsdc( int matrix_layout, char uplo, char compq, + lapack_int n, float* d, float* e, float* u, + lapack_int ldu, float* vt, lapack_int ldvt, float* q, + lapack_int* iq ); +lapack_int LAPACKE_dbdsdc( int matrix_layout, char uplo, char compq, + lapack_int n, double* d, double* e, double* u, + lapack_int ldu, double* vt, lapack_int ldvt, + double* q, lapack_int* iq ); + +lapack_int LAPACKE_sbdsqr( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + float* d, float* e, float* vt, lapack_int ldvt, + float* u, lapack_int ldu, float* c, lapack_int ldc ); +lapack_int LAPACKE_dbdsqr( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + double* d, double* e, double* vt, lapack_int ldvt, + double* u, lapack_int ldu, double* c, + lapack_int ldc ); +lapack_int LAPACKE_cbdsqr( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + float* d, float* e, lapack_complex_float* vt, + lapack_int ldvt, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* c, + lapack_int ldc ); +lapack_int LAPACKE_zbdsqr( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + double* d, double* e, lapack_complex_double* vt, + lapack_int ldvt, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* c, + lapack_int ldc ); +lapack_int LAPACKE_sbdsvdx( int matrix_layout, char uplo, char jobz, char range, + lapack_int n, float* d, float* e, + float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, float* z, lapack_int ldz, + lapack_int* superb ); +lapack_int LAPACKE_dbdsvdx( int matrix_layout, char uplo, char jobz, char range, + lapack_int n, double* d, double* e, + double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, double* z, lapack_int ldz, + lapack_int* superb ); +lapack_int LAPACKE_sdisna( char job, lapack_int m, lapack_int n, const float* d, + float* sep ); +lapack_int LAPACKE_ddisna( char job, lapack_int m, lapack_int n, + const double* d, double* sep ); + +lapack_int LAPACKE_sgbbrd( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, float* ab, lapack_int ldab, float* d, + float* e, float* q, lapack_int ldq, float* pt, + lapack_int ldpt, float* c, lapack_int ldc ); +lapack_int LAPACKE_dgbbrd( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, double* ab, lapack_int ldab, + double* d, double* e, double* q, lapack_int ldq, + double* pt, lapack_int ldpt, double* c, + lapack_int ldc ); +lapack_int LAPACKE_cgbbrd( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, lapack_complex_float* ab, + lapack_int ldab, float* d, float* e, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* pt, lapack_int ldpt, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zgbbrd( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, lapack_complex_double* ab, + lapack_int ldab, double* d, double* e, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* pt, lapack_int ldpt, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_sgbcon( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, const lapack_int* ipiv, float anorm, + float* rcond ); +lapack_int LAPACKE_dgbcon( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, const lapack_int* ipiv, + double anorm, double* rcond ); +lapack_int LAPACKE_cgbcon( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zgbcon( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, lapack_int ldab, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_sgbequ( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, float* r, float* c, float* rowcnd, + float* colcnd, float* amax ); +lapack_int LAPACKE_dgbequ( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); +lapack_int LAPACKE_cgbequ( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + float* r, float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_zgbequ( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, lapack_int ldab, + double* r, double* c, double* rowcnd, double* colcnd, + double* amax ); + +lapack_int LAPACKE_sgbequb( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, float* r, float* c, float* rowcnd, + float* colcnd, float* amax ); +lapack_int LAPACKE_dgbequb( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); +lapack_int LAPACKE_cgbequb( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + float* r, float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_zgbequb( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, lapack_int ldab, + double* r, double* c, double* rowcnd, + double* colcnd, double* amax ); + +lapack_int LAPACKE_sgbrfs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const float* ab, lapack_int ldab, const float* afb, + lapack_int ldafb, const lapack_int* ipiv, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_dgbrfs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const double* ab, lapack_int ldab, const double* afb, + lapack_int ldafb, const lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr ); +lapack_int LAPACKE_cgbrfs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* afb, lapack_int ldafb, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zgbrfs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + const lapack_complex_double* afb, lapack_int ldafb, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sgbrfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const float* ab, lapack_int ldab, + const float* afb, lapack_int ldafb, + const lapack_int* ipiv, const float* r, + const float* c, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dgbrfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const double* ab, lapack_int ldab, + const double* afb, lapack_int ldafb, + const lapack_int* ipiv, const double* r, + const double* c, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); +lapack_int LAPACKE_cgbrfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const lapack_complex_float* ab, + lapack_int ldab, const lapack_complex_float* afb, + lapack_int ldafb, const lapack_int* ipiv, + const float* r, const float* c, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_zgbrfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const lapack_complex_double* ab, + lapack_int ldab, const lapack_complex_double* afb, + lapack_int ldafb, const lapack_int* ipiv, + const double* r, const double* c, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); + +lapack_int LAPACKE_sgbsv( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, float* ab, + lapack_int ldab, lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgbsv( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, double* ab, + lapack_int ldab, lapack_int* ipiv, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cgbsv( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgbsv( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sgbsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, float* ab, lapack_int ldab, + float* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, float* r, float* c, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* rpivot ); +lapack_int LAPACKE_dgbsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, double* ab, lapack_int ldab, + double* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, double* r, double* c, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* rpivot ); +lapack_int LAPACKE_cgbsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + float* r, float* c, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, float* rpivot ); +lapack_int LAPACKE_zgbsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + double* r, double* c, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, double* rpivot ); + +lapack_int LAPACKE_sgbsvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, float* ab, lapack_int ldab, + float* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, float* r, float* c, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dgbsvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, double* ab, lapack_int ldab, + double* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, double* r, double* c, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); +lapack_int LAPACKE_cgbsvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + float* r, float* c, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_zgbsvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + double* r, double* c, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* rpvgrw, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); + +lapack_int LAPACKE_sgbtrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, float* ab, + lapack_int ldab, lapack_int* ipiv ); +lapack_int LAPACKE_dgbtrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, double* ab, + lapack_int ldab, lapack_int* ipiv ); +lapack_int LAPACKE_cgbtrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + lapack_complex_float* ab, lapack_int ldab, + lapack_int* ipiv ); +lapack_int LAPACKE_zgbtrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + lapack_complex_double* ab, lapack_int ldab, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgbtrs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const float* ab, lapack_int ldab, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dgbtrs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const double* ab, lapack_int ldab, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_cgbtrs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgbtrs( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + const lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sgebak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const float* scale, + lapack_int m, float* v, lapack_int ldv ); +lapack_int LAPACKE_dgebak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const double* scale, + lapack_int m, double* v, lapack_int ldv ); +lapack_int LAPACKE_cgebak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const float* scale, + lapack_int m, lapack_complex_float* v, + lapack_int ldv ); +lapack_int LAPACKE_zgebak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const double* scale, + lapack_int m, lapack_complex_double* v, + lapack_int ldv ); + +lapack_int LAPACKE_sgebal( int matrix_layout, char job, lapack_int n, float* a, + lapack_int lda, lapack_int* ilo, lapack_int* ihi, + float* scale ); +lapack_int LAPACKE_dgebal( int matrix_layout, char job, lapack_int n, double* a, + lapack_int lda, lapack_int* ilo, lapack_int* ihi, + double* scale ); +lapack_int LAPACKE_cgebal( int matrix_layout, char job, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ilo, lapack_int* ihi, float* scale ); +lapack_int LAPACKE_zgebal( int matrix_layout, char job, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ilo, lapack_int* ihi, double* scale ); + +lapack_int LAPACKE_sgebrd( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* d, float* e, + float* tauq, float* taup ); +lapack_int LAPACKE_dgebrd( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* d, double* e, + double* tauq, double* taup ); +lapack_int LAPACKE_cgebrd( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* d, + float* e, lapack_complex_float* tauq, + lapack_complex_float* taup ); +lapack_int LAPACKE_zgebrd( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, double* d, + double* e, lapack_complex_double* tauq, + lapack_complex_double* taup ); + +lapack_int LAPACKE_sgecon( int matrix_layout, char norm, lapack_int n, + const float* a, lapack_int lda, float anorm, + float* rcond ); +lapack_int LAPACKE_dgecon( int matrix_layout, char norm, lapack_int n, + const double* a, lapack_int lda, double anorm, + double* rcond ); +lapack_int LAPACKE_cgecon( int matrix_layout, char norm, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float anorm, float* rcond ); +lapack_int LAPACKE_zgecon( int matrix_layout, char norm, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double anorm, double* rcond ); + +lapack_int LAPACKE_sgeequ( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, float* r, float* c, + float* rowcnd, float* colcnd, float* amax ); +lapack_int LAPACKE_dgeequ( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, double* r, + double* c, double* rowcnd, double* colcnd, + double* amax ); +lapack_int LAPACKE_cgeequ( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* r, float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_zgeequ( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* r, double* c, double* rowcnd, double* colcnd, + double* amax ); + +lapack_int LAPACKE_sgeequb( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, float* r, float* c, + float* rowcnd, float* colcnd, float* amax ); +lapack_int LAPACKE_dgeequb( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, double* r, + double* c, double* rowcnd, double* colcnd, + double* amax ); +lapack_int LAPACKE_cgeequb( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* r, float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_zgeequb( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* r, double* c, double* rowcnd, + double* colcnd, double* amax ); + +lapack_int LAPACKE_sgees( int matrix_layout, char jobvs, char sort, + LAPACK_S_SELECT2 select, lapack_int n, float* a, + lapack_int lda, lapack_int* sdim, float* wr, + float* wi, float* vs, lapack_int ldvs ); +lapack_int LAPACKE_dgees( int matrix_layout, char jobvs, char sort, + LAPACK_D_SELECT2 select, lapack_int n, double* a, + lapack_int lda, lapack_int* sdim, double* wr, + double* wi, double* vs, lapack_int ldvs ); +lapack_int LAPACKE_cgees( int matrix_layout, char jobvs, char sort, + LAPACK_C_SELECT1 select, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* sdim, lapack_complex_float* w, + lapack_complex_float* vs, lapack_int ldvs ); +lapack_int LAPACKE_zgees( int matrix_layout, char jobvs, char sort, + LAPACK_Z_SELECT1 select, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* sdim, lapack_complex_double* w, + lapack_complex_double* vs, lapack_int ldvs ); + +lapack_int LAPACKE_sgeesx( int matrix_layout, char jobvs, char sort, + LAPACK_S_SELECT2 select, char sense, lapack_int n, + float* a, lapack_int lda, lapack_int* sdim, + float* wr, float* wi, float* vs, lapack_int ldvs, + float* rconde, float* rcondv ); +lapack_int LAPACKE_dgeesx( int matrix_layout, char jobvs, char sort, + LAPACK_D_SELECT2 select, char sense, lapack_int n, + double* a, lapack_int lda, lapack_int* sdim, + double* wr, double* wi, double* vs, lapack_int ldvs, + double* rconde, double* rcondv ); +lapack_int LAPACKE_cgeesx( int matrix_layout, char jobvs, char sort, + LAPACK_C_SELECT1 select, char sense, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* sdim, lapack_complex_float* w, + lapack_complex_float* vs, lapack_int ldvs, + float* rconde, float* rcondv ); +lapack_int LAPACKE_zgeesx( int matrix_layout, char jobvs, char sort, + LAPACK_Z_SELECT1 select, char sense, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* sdim, lapack_complex_double* w, + lapack_complex_double* vs, lapack_int ldvs, + double* rconde, double* rcondv ); + +lapack_int LAPACKE_sgeev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, float* a, lapack_int lda, float* wr, + float* wi, float* vl, lapack_int ldvl, float* vr, + lapack_int ldvr ); +lapack_int LAPACKE_dgeev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, double* a, lapack_int lda, double* wr, + double* wi, double* vl, lapack_int ldvl, double* vr, + lapack_int ldvr ); +lapack_int LAPACKE_cgeev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_float* a, lapack_int lda, + lapack_complex_float* w, lapack_complex_float* vl, + lapack_int ldvl, lapack_complex_float* vr, + lapack_int ldvr ); +lapack_int LAPACKE_zgeev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* w, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr ); + +lapack_int LAPACKE_sgeevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, float* a, + lapack_int lda, float* wr, float* wi, float* vl, + lapack_int ldvl, float* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, float* scale, + float* abnrm, float* rconde, float* rcondv ); +lapack_int LAPACKE_dgeevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, double* a, + lapack_int lda, double* wr, double* wi, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, double* scale, + double* abnrm, double* rconde, double* rcondv ); +lapack_int LAPACKE_cgeevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* w, lapack_complex_float* vl, + lapack_int ldvl, lapack_complex_float* vr, + lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, + float* scale, float* abnrm, float* rconde, + float* rcondv ); +lapack_int LAPACKE_zgeevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* w, lapack_complex_double* vl, + lapack_int ldvl, lapack_complex_double* vr, + lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, + double* scale, double* abnrm, double* rconde, + double* rcondv ); + +lapack_int LAPACKE_sgehrd( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, float* a, lapack_int lda, + float* tau ); +lapack_int LAPACKE_dgehrd( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, double* a, lapack_int lda, + double* tau ); +lapack_int LAPACKE_cgehrd( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tau ); +lapack_int LAPACKE_zgehrd( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tau ); + +lapack_int LAPACKE_sgejsv( int matrix_layout, char joba, char jobu, char jobv, + char jobr, char jobt, char jobp, lapack_int m, + lapack_int n, float* a, lapack_int lda, float* sva, + float* u, lapack_int ldu, float* v, lapack_int ldv, + float* stat, lapack_int* istat ); +lapack_int LAPACKE_dgejsv( int matrix_layout, char joba, char jobu, char jobv, + char jobr, char jobt, char jobp, lapack_int m, + lapack_int n, double* a, lapack_int lda, double* sva, + double* u, lapack_int ldu, double* v, lapack_int ldv, + double* stat, lapack_int* istat ); +lapack_int LAPACKE_cgejsv( int matrix_layout, char joba, char jobu, char jobv, + char jobr, char jobt, char jobp, lapack_int m, + lapack_int n, lapack_complex_float* a, lapack_int lda, float* sva, + lapack_complex_float* u, lapack_int ldu, lapack_complex_float* v, lapack_int ldv, + float* stat, lapack_int* istat ); +lapack_int LAPACKE_zgejsv( int matrix_layout, char joba, char jobu, char jobv, + char jobr, char jobt, char jobp, lapack_int m, + lapack_int n, lapack_complex_double* a, lapack_int lda, double* sva, + lapack_complex_double* u, lapack_int ldu, lapack_complex_double* v, lapack_int ldv, + double* stat, lapack_int* istat ); + +lapack_int LAPACKE_sgelq2( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgelq2( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgelq2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgelq2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgelqf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgelqf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgelqf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgelqf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgels( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* b, lapack_int ldb ); +lapack_int LAPACKE_dgels( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* b, lapack_int ldb ); +lapack_int LAPACKE_cgels( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zgels( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sgelsd( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_dgelsd( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* s, double rcond, + lapack_int* rank ); +lapack_int LAPACKE_cgelsd( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_zgelsd( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* s, double rcond, + lapack_int* rank ); + +lapack_int LAPACKE_sgelss( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_dgelss( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* s, double rcond, + lapack_int* rank ); +lapack_int LAPACKE_cgelss( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_zgelss( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* s, double rcond, + lapack_int* rank ); + +lapack_int LAPACKE_sgelsy( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, float* b, + lapack_int ldb, lapack_int* jpvt, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_dgelsy( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, lapack_int* jpvt, + double rcond, lapack_int* rank ); +lapack_int LAPACKE_cgelsy( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_int* jpvt, float rcond, + lapack_int* rank ); +lapack_int LAPACKE_zgelsy( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_int* jpvt, double rcond, + lapack_int* rank ); + +lapack_int LAPACKE_sgeqlf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgeqlf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgeqlf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqlf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgeqp3( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* jpvt, + float* tau ); +lapack_int LAPACKE_dgeqp3( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* jpvt, + double* tau ); +lapack_int LAPACKE_cgeqp3( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqp3( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_double* tau ); + +lapack_int LAPACKE_sgeqpf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* jpvt, + float* tau ); +lapack_int LAPACKE_dgeqpf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* jpvt, + double* tau ); +lapack_int LAPACKE_cgeqpf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqpf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_double* tau ); + +lapack_int LAPACKE_sgeqr2( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgeqr2( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgeqr2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqr2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgeqrf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgeqrf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgeqrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgeqrfp( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgeqrfp( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgeqrfp( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgeqrfp( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgerfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dgerfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr ); +lapack_int LAPACKE_cgerfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zgerfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sgerfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* r, + const float* c, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dgerfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* r, + const double* c, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); +lapack_int LAPACKE_cgerfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* r, + const float* c, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_zgerfsx( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* r, + const double* c, const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); + +lapack_int LAPACKE_sgerqf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dgerqf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_cgerqf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_zgerqf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_sgesdd( int matrix_layout, char jobz, lapack_int m, + lapack_int n, float* a, lapack_int lda, float* s, + float* u, lapack_int ldu, float* vt, + lapack_int ldvt ); +lapack_int LAPACKE_dgesdd( int matrix_layout, char jobz, lapack_int m, + lapack_int n, double* a, lapack_int lda, double* s, + double* u, lapack_int ldu, double* vt, + lapack_int ldvt ); +lapack_int LAPACKE_cgesdd( int matrix_layout, char jobz, lapack_int m, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* s, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* vt, + lapack_int ldvt ); +lapack_int LAPACKE_zgesdd( int matrix_layout, char jobz, lapack_int m, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* s, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* vt, + lapack_int ldvt ); + +lapack_int LAPACKE_sgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + float* a, lapack_int lda, lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + double* a, lapack_int lda, lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); +lapack_int LAPACKE_dsgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + double* a, lapack_int lda, lapack_int* ipiv, + double* b, lapack_int ldb, double* x, lapack_int ldx, + lapack_int* iter ); +lapack_int LAPACKE_zcgesv( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, lapack_int* iter ); + +lapack_int LAPACKE_sgesvd( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, float* a, lapack_int lda, + float* s, float* u, lapack_int ldu, float* vt, + lapack_int ldvt, float* superb ); +lapack_int LAPACKE_dgesvd( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* s, double* u, lapack_int ldu, + double* vt, lapack_int ldvt, double* superb ); +lapack_int LAPACKE_cgesvd( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float* s, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* vt, + lapack_int ldvt, float* superb ); +lapack_int LAPACKE_zgesvd( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double* s, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* vt, + lapack_int ldvt, double* superb ); + +lapack_int LAPACKE_sgesvdx( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, float* u, lapack_int ldu, + float* vt, lapack_int ldvt, + lapack_int* superb ); +lapack_int LAPACKE_dgesvdx( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, double* u, lapack_int ldu, + double* vt, lapack_int ldvt, + lapack_int* superb ); +lapack_int LAPACKE_cgesvdx( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* vt, lapack_int ldvt, + lapack_int* superb ); +lapack_int LAPACKE_zgesvdx( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* vt, lapack_int ldvt, + lapack_int* superb ); + +lapack_int LAPACKE_sgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, float* a, lapack_int lda, + float* s, float* u, lapack_int ldu, float* v, + lapack_int ldv, lapack_int* numrank ); +lapack_int LAPACKE_dgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* s, double* u, lapack_int ldu, + double* v, lapack_int ldv, lapack_int* numrank); +lapack_int LAPACKE_cgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float* s, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, + lapack_int ldv, lapack_int* numrank ); +lapack_int LAPACKE_zgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double* s, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, + lapack_int ldv, lapack_int* numrank ); + +lapack_int LAPACKE_sgesvj( int matrix_layout, char joba, char jobu, char jobv, + lapack_int m, lapack_int n, float* a, lapack_int lda, + float* sva, lapack_int mv, float* v, lapack_int ldv, + float* stat ); +lapack_int LAPACKE_dgesvj( int matrix_layout, char joba, char jobu, char jobv, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* sva, lapack_int mv, + double* v, lapack_int ldv, double* stat ); +lapack_int LAPACKE_cgesvj( int matrix_layout, char joba, char jobu, char jobv, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float* sva, lapack_int mv, + lapack_complex_float* v, lapack_int ldv, float* stat ); +lapack_int LAPACKE_zgesvj( int matrix_layout, char joba, char jobu, char jobv, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double* sva, lapack_int mv, + lapack_complex_double* v, lapack_int ldv, double* stat ); + +lapack_int LAPACKE_sgesvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, float* c, + float* b, lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* rpivot ); +lapack_int LAPACKE_dgesvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, double* c, + double* b, lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* rpivot ); +lapack_int LAPACKE_cgesvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, float* c, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* rpivot ); +lapack_int LAPACKE_zgesvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, double* c, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* rpivot ); + +lapack_int LAPACKE_sgesvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, float* c, + float* b, lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dgesvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, double* c, + double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* rpvgrw, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); +lapack_int LAPACKE_cgesvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, float* c, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_zgesvxx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, double* c, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); + +lapack_int LAPACKE_sgetf2( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetf2( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetf2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetf2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetrf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetrf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetrf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetrf2( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetrf2( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetrf2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetrf2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetri( int matrix_layout, lapack_int n, float* a, + lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_dgetri( int matrix_layout, lapack_int n, double* a, + lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_cgetri( int matrix_layout, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_zgetri( int matrix_layout, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv ); + +lapack_int LAPACKE_sgetrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dgetrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_cgetrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zgetrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sggbak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const float* lscale, + const float* rscale, lapack_int m, float* v, + lapack_int ldv ); +lapack_int LAPACKE_dggbak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const double* lscale, + const double* rscale, lapack_int m, double* v, + lapack_int ldv ); +lapack_int LAPACKE_cggbak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const float* lscale, + const float* rscale, lapack_int m, + lapack_complex_float* v, lapack_int ldv ); +lapack_int LAPACKE_zggbak( int matrix_layout, char job, char side, lapack_int n, + lapack_int ilo, lapack_int ihi, const double* lscale, + const double* rscale, lapack_int m, + lapack_complex_double* v, lapack_int ldv ); + +lapack_int LAPACKE_sggbal( int matrix_layout, char job, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, float* lscale, + float* rscale ); +lapack_int LAPACKE_dggbal( int matrix_layout, char job, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, double* lscale, + double* rscale ); +lapack_int LAPACKE_cggbal( int matrix_layout, char job, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, float* lscale, + float* rscale ); +lapack_int LAPACKE_zggbal( int matrix_layout, char job, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, double* lscale, + double* rscale ); + +lapack_int LAPACKE_sgges( int matrix_layout, char jobvsl, char jobvsr, char sort, + LAPACK_S_SELECT3 selctg, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + lapack_int* sdim, float* alphar, float* alphai, + float* beta, float* vsl, lapack_int ldvsl, float* vsr, + lapack_int ldvsr ); +lapack_int LAPACKE_dgges( int matrix_layout, char jobvsl, char jobvsr, char sort, + LAPACK_D_SELECT3 selctg, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + lapack_int* sdim, double* alphar, double* alphai, + double* beta, double* vsl, lapack_int ldvsl, + double* vsr, lapack_int ldvsr ); +lapack_int LAPACKE_cgges( int matrix_layout, char jobvsl, char jobvsr, char sort, + LAPACK_C_SELECT2 selctg, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_float* alpha, + lapack_complex_float* beta, lapack_complex_float* vsl, + lapack_int ldvsl, lapack_complex_float* vsr, + lapack_int ldvsr ); +lapack_int LAPACKE_zgges( int matrix_layout, char jobvsl, char jobvsr, char sort, + LAPACK_Z_SELECT2 selctg, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr ); + +lapack_int LAPACKE_sgges3( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_S_SELECT3 selctg, lapack_int n, + float* a, lapack_int lda, float* b, lapack_int ldb, + lapack_int* sdim, float* alphar, float* alphai, + float* beta, float* vsl, lapack_int ldvsl, + float* vsr, lapack_int ldvsr ); +lapack_int LAPACKE_dgges3( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_D_SELECT3 selctg, lapack_int n, + double* a, lapack_int lda, double* b, lapack_int ldb, + lapack_int* sdim, double* alphar, double* alphai, + double* beta, double* vsl, lapack_int ldvsl, + double* vsr, lapack_int ldvsr ); +lapack_int LAPACKE_cgges3( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_C_SELECT2 selctg, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vsl, lapack_int ldvsl, + lapack_complex_float* vsr, lapack_int ldvsr ); +lapack_int LAPACKE_zgges3( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_Z_SELECT2 selctg, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr ); + +lapack_int LAPACKE_sggesx( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_S_SELECT3 selctg, char sense, + lapack_int n, float* a, lapack_int lda, float* b, + lapack_int ldb, lapack_int* sdim, float* alphar, + float* alphai, float* beta, float* vsl, + lapack_int ldvsl, float* vsr, lapack_int ldvsr, + float* rconde, float* rcondv ); +lapack_int LAPACKE_dggesx( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_D_SELECT3 selctg, char sense, + lapack_int n, double* a, lapack_int lda, double* b, + lapack_int ldb, lapack_int* sdim, double* alphar, + double* alphai, double* beta, double* vsl, + lapack_int ldvsl, double* vsr, lapack_int ldvsr, + double* rconde, double* rcondv ); +lapack_int LAPACKE_cggesx( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_C_SELECT2 selctg, char sense, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_int* sdim, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vsl, lapack_int ldvsl, + lapack_complex_float* vsr, lapack_int ldvsr, + float* rconde, float* rcondv ); +lapack_int LAPACKE_zggesx( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_Z_SELECT2 selctg, char sense, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_int* sdim, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr, + double* rconde, double* rcondv ); + +lapack_int LAPACKE_sggev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, float* a, lapack_int lda, float* b, + lapack_int ldb, float* alphar, float* alphai, + float* beta, float* vl, lapack_int ldvl, float* vr, + lapack_int ldvr ); +lapack_int LAPACKE_dggev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, double* a, lapack_int lda, double* b, + lapack_int ldb, double* alphar, double* alphai, + double* beta, double* vl, lapack_int ldvl, double* vr, + lapack_int ldvr ); +lapack_int LAPACKE_cggev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, lapack_complex_float* vl, + lapack_int ldvl, lapack_complex_float* vr, + lapack_int ldvr ); +lapack_int LAPACKE_zggev( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr ); + +lapack_int LAPACKE_sggev3( int matrix_layout, char jobvl, char jobvr, + lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, + float* alphar, float* alphai, float* beta, + float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr ); +lapack_int LAPACKE_dggev3( int matrix_layout, char jobvl, char jobvr, + lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, + double* alphar, double* alphai, double* beta, + double* vl, lapack_int ldvl, + double* vr, lapack_int ldvr ); +lapack_int LAPACKE_cggev3( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr ); +lapack_int LAPACKE_zggev3( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr ); + +lapack_int LAPACKE_sggevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* alphar, float* alphai, float* beta, float* vl, + lapack_int ldvl, float* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, float* lscale, + float* rscale, float* abnrm, float* bbnrm, + float* rconde, float* rcondv ); +lapack_int LAPACKE_dggevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* alphar, double* alphai, double* beta, + double* vl, lapack_int ldvl, double* vr, + lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, + double* lscale, double* rscale, double* abnrm, + double* bbnrm, double* rconde, double* rcondv ); +lapack_int LAPACKE_cggevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, lapack_complex_float* vl, + lapack_int ldvl, lapack_complex_float* vr, + lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, + float* lscale, float* rscale, float* abnrm, + float* bbnrm, float* rconde, float* rcondv ); +lapack_int LAPACKE_zggevx( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, double* lscale, + double* rscale, double* abnrm, double* bbnrm, + double* rconde, double* rcondv ); + +lapack_int LAPACKE_sggglm( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, float* a, lapack_int lda, float* b, + lapack_int ldb, float* d, float* x, float* y ); +lapack_int LAPACKE_dggglm( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, double* a, lapack_int lda, double* b, + lapack_int ldb, double* d, double* x, double* y ); +lapack_int LAPACKE_cggglm( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* d, + lapack_complex_float* x, lapack_complex_float* y ); +lapack_int LAPACKE_zggglm( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* d, + lapack_complex_double* x, lapack_complex_double* y ); + +lapack_int LAPACKE_sgghrd( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* a, lapack_int lda, float* b, lapack_int ldb, + float* q, lapack_int ldq, float* z, lapack_int ldz ); +lapack_int LAPACKE_dgghrd( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* a, lapack_int lda, double* b, lapack_int ldb, + double* q, lapack_int ldq, double* z, + lapack_int ldz ); +lapack_int LAPACKE_cgghrd( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zgghrd( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_sgghd3( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* a, lapack_int lda, float* b, lapack_int ldb, + float* q, lapack_int ldq, float* z, lapack_int ldz ); +lapack_int LAPACKE_dgghd3( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* a, lapack_int lda, double* b, lapack_int ldb, + double* q, lapack_int ldq, double* z, + lapack_int ldz ); +lapack_int LAPACKE_cgghd3( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zgghd3( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_sgglse( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, float* a, lapack_int lda, float* b, + lapack_int ldb, float* c, float* d, float* x ); +lapack_int LAPACKE_dgglse( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, double* a, lapack_int lda, double* b, + lapack_int ldb, double* c, double* d, double* x ); +lapack_int LAPACKE_cgglse( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_complex_float* d, lapack_complex_float* x ); +lapack_int LAPACKE_zgglse( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_complex_double* d, lapack_complex_double* x ); + +lapack_int LAPACKE_sggqrf( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, float* a, lapack_int lda, float* taua, + float* b, lapack_int ldb, float* taub ); +lapack_int LAPACKE_dggqrf( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, double* a, lapack_int lda, + double* taua, double* b, lapack_int ldb, + double* taub ); +lapack_int LAPACKE_cggqrf( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* taua, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* taub ); +lapack_int LAPACKE_zggqrf( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* taua, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* taub ); + +lapack_int LAPACKE_sggrqf( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, float* a, lapack_int lda, float* taua, + float* b, lapack_int ldb, float* taub ); +lapack_int LAPACKE_dggrqf( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, double* a, lapack_int lda, + double* taua, double* b, lapack_int ldb, + double* taub ); +lapack_int LAPACKE_cggrqf( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* taua, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* taub ); +lapack_int LAPACKE_zggrqf( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* taua, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* taub ); + +lapack_int LAPACKE_sggsvd( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* alpha, float* beta, float* u, lapack_int ldu, + float* v, lapack_int ldv, float* q, lapack_int ldq, + lapack_int* iwork ); +lapack_int LAPACKE_dggsvd( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* alpha, double* beta, double* u, + lapack_int ldu, double* v, lapack_int ldv, double* q, + lapack_int ldq, lapack_int* iwork ); +lapack_int LAPACKE_cggsvd( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float* alpha, float* beta, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, + lapack_int ldv, lapack_complex_float* q, + lapack_int ldq, lapack_int* iwork ); +lapack_int LAPACKE_zggsvd( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_int* iwork ); + +lapack_int LAPACKE_sggsvd3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* alpha, float* beta, float* u, lapack_int ldu, + float* v, lapack_int ldv, float* q, lapack_int ldq, + lapack_int* iwork ); +lapack_int LAPACKE_dggsvd3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* alpha, double* beta, double* u, + lapack_int ldu, double* v, lapack_int ldv, double* q, + lapack_int ldq, lapack_int* iwork ); +lapack_int LAPACKE_cggsvd3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float* alpha, float* beta, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, + lapack_int ldv, lapack_complex_float* q, + lapack_int ldq, lapack_int* iwork ); +lapack_int LAPACKE_zggsvd3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int n, lapack_int p, + lapack_int* k, lapack_int* l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_int* iwork ); + +lapack_int LAPACKE_sggsvp( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, float* u, + lapack_int ldu, float* v, lapack_int ldv, float* q, + lapack_int ldq ); +lapack_int LAPACKE_dggsvp( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double tola, double tolb, lapack_int* k, + lapack_int* l, double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq ); +lapack_int LAPACKE_cggsvp( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq ); +lapack_int LAPACKE_zggsvp( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double tola, double tolb, lapack_int* k, + lapack_int* l, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, + lapack_int ldv, lapack_complex_double* q, + lapack_int ldq ); + +lapack_int LAPACKE_sggsvp3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, float* u, + lapack_int ldu, float* v, lapack_int ldv, float* q, + lapack_int ldq ); +lapack_int LAPACKE_dggsvp3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double tola, double tolb, lapack_int* k, + lapack_int* l, double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq ); +lapack_int LAPACKE_cggsvp3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq ); +lapack_int LAPACKE_zggsvp3( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double tola, double tolb, lapack_int* k, + lapack_int* l, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, + lapack_int ldv, lapack_complex_double* q, + lapack_int ldq ); + +lapack_int LAPACKE_sgtcon( char norm, lapack_int n, const float* dl, + const float* d, const float* du, const float* du2, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_dgtcon( char norm, lapack_int n, const double* dl, + const double* d, const double* du, const double* du2, + const lapack_int* ipiv, double anorm, + double* rcond ); +lapack_int LAPACKE_cgtcon( char norm, lapack_int n, + const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* du2, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zgtcon( char norm, lapack_int n, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* du2, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_sgtrfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* dl, const float* d, + const float* du, const float* dlf, const float* df, + const float* duf, const float* du2, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dgtrfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* dl, const double* d, + const double* du, const double* dlf, + const double* df, const double* duf, + const double* du2, const lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr ); +lapack_int LAPACKE_cgtrfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* dlf, + const lapack_complex_float* df, + const lapack_complex_float* duf, + const lapack_complex_float* du2, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zgtrfs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* dlf, + const lapack_complex_double* df, + const lapack_complex_double* duf, + const lapack_complex_double* du2, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, + float* dl, float* d, float* du, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, + double* dl, double* d, double* du, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_float* dl, lapack_complex_float* d, + lapack_complex_float* du, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* dl, lapack_complex_double* d, + lapack_complex_double* du, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sgtsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, const float* dl, + const float* d, const float* du, float* dlf, + float* df, float* duf, float* du2, lapack_int* ipiv, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dgtsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, const double* dl, + const double* d, const double* du, double* dlf, + double* df, double* duf, double* du2, + lapack_int* ipiv, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* ferr, double* berr ); +lapack_int LAPACKE_cgtsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + lapack_complex_float* dlf, lapack_complex_float* df, + lapack_complex_float* duf, lapack_complex_float* du2, + lapack_int* ipiv, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_zgtsvx( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + lapack_complex_double* dlf, + lapack_complex_double* df, + lapack_complex_double* duf, + lapack_complex_double* du2, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_sgttrf( lapack_int n, float* dl, float* d, float* du, + float* du2, lapack_int* ipiv ); +lapack_int LAPACKE_dgttrf( lapack_int n, double* dl, double* d, double* du, + double* du2, lapack_int* ipiv ); +lapack_int LAPACKE_cgttrf( lapack_int n, lapack_complex_float* dl, + lapack_complex_float* d, lapack_complex_float* du, + lapack_complex_float* du2, lapack_int* ipiv ); +lapack_int LAPACKE_zgttrf( lapack_int n, lapack_complex_double* dl, + lapack_complex_double* d, lapack_complex_double* du, + lapack_complex_double* du2, lapack_int* ipiv ); + +lapack_int LAPACKE_sgttrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* dl, const float* d, + const float* du, const float* du2, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dgttrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* dl, const double* d, + const double* du, const double* du2, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_cgttrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* du2, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgttrs( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* du2, + const lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_chbev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab, float* w, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhbev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab, double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_chbevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab, float* w, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhbevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab, double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_chbevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_zhbevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* q, lapack_int ldq, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chbgst( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* bb, lapack_int ldbb, + lapack_complex_float* x, lapack_int ldx ); +lapack_int LAPACKE_zhbgst( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + const lapack_complex_double* bb, lapack_int ldbb, + lapack_complex_double* x, lapack_int ldx ); + +lapack_int LAPACKE_chbgv( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* bb, lapack_int ldbb, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhbgv( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* bb, lapack_int ldbb, double* w, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* bb, lapack_int ldbb, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* bb, lapack_int ldbb, + double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_chbgvx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* bb, lapack_int ldbb, + lapack_complex_float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_zhbgvx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* bb, lapack_int ldbb, + lapack_complex_double* q, lapack_int ldq, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chbtrd( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab, float* d, float* e, + lapack_complex_float* q, lapack_int ldq ); +lapack_int LAPACKE_zhbtrd( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab, double* d, double* e, + lapack_complex_double* q, lapack_int ldq ); + +lapack_int LAPACKE_checon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zhecon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_cheequb( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zheequb( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_cheev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_zheev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_cheevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_zheevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* w ); + +lapack_int LAPACKE_cheevr( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_zheevr( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, lapack_int ldz, + lapack_int* isuppz ); + +lapack_int LAPACKE_cheevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_zheevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chegst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhegst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_chegv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* w ); +lapack_int LAPACKE_zhegv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* w ); + +lapack_int LAPACKE_chegvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* w ); +lapack_int LAPACKE_zhegvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* w ); + +lapack_int LAPACKE_chegvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_zhegvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_cherfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zherfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_cherfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* s, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_zherfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* s, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); + +lapack_int LAPACKE_chesv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhesv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chesvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* af, + lapack_int ldaf, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zhesvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* af, + lapack_int ldaf, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_chesvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_zhesvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); + +lapack_int LAPACKE_chetrd( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* d, + float* e, lapack_complex_float* tau ); +lapack_int LAPACKE_zhetrd( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, double* d, + double* e, lapack_complex_double* tau ); + +lapack_int LAPACKE_chetrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zhetrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_chetri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_zhetri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv ); + +lapack_int LAPACKE_chetrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chfrk( int matrix_layout, char transr, char uplo, char trans, + lapack_int n, lapack_int k, float alpha, + const lapack_complex_float* a, lapack_int lda, + float beta, lapack_complex_float* c ); +lapack_int LAPACKE_zhfrk( int matrix_layout, char transr, char uplo, char trans, + lapack_int n, lapack_int k, double alpha, + const lapack_complex_double* a, lapack_int lda, + double beta, lapack_complex_double* c ); + +lapack_int LAPACKE_shgeqz( int matrix_layout, char job, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* h, lapack_int ldh, float* t, lapack_int ldt, + float* alphar, float* alphai, float* beta, float* q, + lapack_int ldq, float* z, lapack_int ldz ); +lapack_int LAPACKE_dhgeqz( int matrix_layout, char job, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* h, lapack_int ldh, double* t, lapack_int ldt, + double* alphar, double* alphai, double* beta, + double* q, lapack_int ldq, double* z, + lapack_int ldz ); +lapack_int LAPACKE_chgeqz( int matrix_layout, char job, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* h, lapack_int ldh, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* alpha, + lapack_complex_float* beta, lapack_complex_float* q, + lapack_int ldq, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhgeqz( int matrix_layout, char job, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* h, lapack_int ldh, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chpcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zhpcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_chpev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* ap, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhpev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* ap, double* w, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chpevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* ap, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhpevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* ap, double* w, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chpevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_float* ap, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_zhpevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_double* ap, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chpgst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_float* ap, + const lapack_complex_float* bp ); +lapack_int LAPACKE_zhpgst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_double* ap, + const lapack_complex_double* bp ); + +lapack_int LAPACKE_chpgv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* ap, + lapack_complex_float* bp, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhpgv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_double* ap, + lapack_complex_double* bp, double* w, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chpgvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* ap, + lapack_complex_float* bp, float* w, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zhpgvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_double* ap, + lapack_complex_double* bp, double* w, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_chpgvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_float* ap, lapack_complex_float* bp, + float vl, float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_zhpgvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_double* ap, lapack_complex_double* bp, + double vl, double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zhprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_chpsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhpsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_chpsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + lapack_complex_float* afp, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zhpsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + lapack_complex_double* afp, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_chptrd( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, float* d, float* e, + lapack_complex_float* tau ); +lapack_int LAPACKE_zhptrd( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, double* d, double* e, + lapack_complex_double* tau ); + +lapack_int LAPACKE_chptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, lapack_int* ipiv ); +lapack_int LAPACKE_zhptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, lapack_int* ipiv ); + +lapack_int LAPACKE_chptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, const lapack_int* ipiv ); +lapack_int LAPACKE_zhptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, const lapack_int* ipiv ); + +lapack_int LAPACKE_chptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + const lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_shsein( int matrix_layout, char job, char eigsrc, char initv, + lapack_logical* select, lapack_int n, const float* h, + lapack_int ldh, float* wr, const float* wi, + float* vl, lapack_int ldvl, float* vr, + lapack_int ldvr, lapack_int mm, lapack_int* m, + lapack_int* ifaill, lapack_int* ifailr ); +lapack_int LAPACKE_dhsein( int matrix_layout, char job, char eigsrc, char initv, + lapack_logical* select, lapack_int n, + const double* h, lapack_int ldh, double* wr, + const double* wi, double* vl, lapack_int ldvl, + double* vr, lapack_int ldvr, lapack_int mm, + lapack_int* m, lapack_int* ifaill, + lapack_int* ifailr ); +lapack_int LAPACKE_chsein( int matrix_layout, char job, char eigsrc, char initv, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* h, lapack_int ldh, + lapack_complex_float* w, lapack_complex_float* vl, + lapack_int ldvl, lapack_complex_float* vr, + lapack_int ldvr, lapack_int mm, lapack_int* m, + lapack_int* ifaill, lapack_int* ifailr ); +lapack_int LAPACKE_zhsein( int matrix_layout, char job, char eigsrc, char initv, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* h, lapack_int ldh, + lapack_complex_double* w, lapack_complex_double* vl, + lapack_int ldvl, lapack_complex_double* vr, + lapack_int ldvr, lapack_int mm, lapack_int* m, + lapack_int* ifaill, lapack_int* ifailr ); + +lapack_int LAPACKE_shseqr( int matrix_layout, char job, char compz, lapack_int n, + lapack_int ilo, lapack_int ihi, float* h, + lapack_int ldh, float* wr, float* wi, float* z, + lapack_int ldz ); +lapack_int LAPACKE_dhseqr( int matrix_layout, char job, char compz, lapack_int n, + lapack_int ilo, lapack_int ihi, double* h, + lapack_int ldh, double* wr, double* wi, double* z, + lapack_int ldz ); +lapack_int LAPACKE_chseqr( int matrix_layout, char job, char compz, lapack_int n, + lapack_int ilo, lapack_int ihi, + lapack_complex_float* h, lapack_int ldh, + lapack_complex_float* w, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhseqr( int matrix_layout, char job, char compz, lapack_int n, + lapack_int ilo, lapack_int ihi, + lapack_complex_double* h, lapack_int ldh, + lapack_complex_double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_clacgv( lapack_int n, lapack_complex_float* x, + lapack_int incx ); +lapack_int LAPACKE_zlacgv( lapack_int n, lapack_complex_double* x, + lapack_int incx ); + +lapack_int LAPACKE_slacn2( lapack_int n, float* v, float* x, lapack_int* isgn, + float* est, lapack_int* kase, lapack_int* isave ); +lapack_int LAPACKE_dlacn2( lapack_int n, double* v, double* x, lapack_int* isgn, + double* est, lapack_int* kase, lapack_int* isave ); +lapack_int LAPACKE_clacn2( lapack_int n, lapack_complex_float* v, + lapack_complex_float* x, + float* est, lapack_int* kase, lapack_int* isave ); +lapack_int LAPACKE_zlacn2( lapack_int n, lapack_complex_double* v, + lapack_complex_double* x, + double* est, lapack_int* kase, lapack_int* isave ); + +lapack_int LAPACKE_slacpy( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const float* a, lapack_int lda, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dlacpy( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const double* a, lapack_int lda, double* b, + lapack_int ldb ); +lapack_int LAPACKE_clacpy( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zlacpy( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_clacp2( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zlacp2( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_zlag2c( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_float* sa, lapack_int ldsa ); + +lapack_int LAPACKE_slag2d( int matrix_layout, lapack_int m, lapack_int n, + const float* sa, lapack_int ldsa, double* a, + lapack_int lda ); + +lapack_int LAPACKE_dlag2s( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, float* sa, + lapack_int ldsa ); + +lapack_int LAPACKE_clag2z( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* sa, lapack_int ldsa, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_slagge( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* d, + float* a, lapack_int lda, lapack_int* iseed ); +lapack_int LAPACKE_dlagge( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* d, + double* a, lapack_int lda, lapack_int* iseed ); +lapack_int LAPACKE_clagge( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* d, + lapack_complex_float* a, lapack_int lda, + lapack_int* iseed ); +lapack_int LAPACKE_zlagge( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* d, + lapack_complex_double* a, lapack_int lda, + lapack_int* iseed ); + +float LAPACKE_slamch( char cmach ); +double LAPACKE_dlamch( char cmach ); + +float LAPACKE_slangb( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab ); +double LAPACKE_dlangb( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab ); +float LAPACKE_clangb( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab ); +double LAPACKE_zlangb( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, lapack_int ldab ); + +float LAPACKE_slange( int matrix_layout, char norm, lapack_int m, + lapack_int n, const float* a, lapack_int lda ); +double LAPACKE_dlange( int matrix_layout, char norm, lapack_int m, + lapack_int n, const double* a, lapack_int lda ); +float LAPACKE_clange( int matrix_layout, char norm, lapack_int m, + lapack_int n, const lapack_complex_float* a, + lapack_int lda ); +double LAPACKE_zlange( int matrix_layout, char norm, lapack_int m, + lapack_int n, const lapack_complex_double* a, + lapack_int lda ); + +float LAPACKE_clanhe( int matrix_layout, char norm, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda ); +double LAPACKE_zlanhe( int matrix_layout, char norm, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_clacrm( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, + lapack_int lda, const float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_int ldc ); +lapack_int LAPACKE_zlacrm( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, + lapack_int lda, const double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_int ldc ); + +lapack_int LAPACKE_clarcm( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, + const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_int ldc ); +lapack_int LAPACKE_zlarcm( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, + const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_int ldc ); + +float LAPACKE_slansy( int matrix_layout, char norm, char uplo, lapack_int n, + const float* a, lapack_int lda ); +double LAPACKE_dlansy( int matrix_layout, char norm, char uplo, lapack_int n, + const double* a, lapack_int lda ); +float LAPACKE_clansy( int matrix_layout, char norm, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda ); +double LAPACKE_zlansy( int matrix_layout, char norm, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda ); + +float LAPACKE_slantr( int matrix_layout, char norm, char uplo, char diag, + lapack_int m, lapack_int n, const float* a, + lapack_int lda ); +double LAPACKE_dlantr( int matrix_layout, char norm, char uplo, char diag, + lapack_int m, lapack_int n, const double* a, + lapack_int lda ); +float LAPACKE_clantr( int matrix_layout, char norm, char uplo, char diag, + lapack_int m, lapack_int n, const lapack_complex_float* a, + lapack_int lda ); +double LAPACKE_zlantr( int matrix_layout, char norm, char uplo, char diag, + lapack_int m, lapack_int n, const lapack_complex_double* a, + lapack_int lda ); + + +lapack_int LAPACKE_slarfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, const float* v, lapack_int ldv, + const float* t, lapack_int ldt, float* c, + lapack_int ldc ); +lapack_int LAPACKE_dlarfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, const double* v, lapack_int ldv, + const double* t, lapack_int ldt, double* c, + lapack_int ldc ); +lapack_int LAPACKE_clarfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, const lapack_complex_float* v, + lapack_int ldv, const lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* c, + lapack_int ldc ); +lapack_int LAPACKE_zlarfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, const lapack_complex_double* v, + lapack_int ldv, const lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* c, + lapack_int ldc ); + +lapack_int LAPACKE_slarfg( lapack_int n, float* alpha, float* x, + lapack_int incx, float* tau ); +lapack_int LAPACKE_dlarfg( lapack_int n, double* alpha, double* x, + lapack_int incx, double* tau ); +lapack_int LAPACKE_clarfg( lapack_int n, lapack_complex_float* alpha, + lapack_complex_float* x, lapack_int incx, + lapack_complex_float* tau ); +lapack_int LAPACKE_zlarfg( lapack_int n, lapack_complex_double* alpha, + lapack_complex_double* x, lapack_int incx, + lapack_complex_double* tau ); + +lapack_int LAPACKE_slarft( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, const float* v, + lapack_int ldv, const float* tau, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dlarft( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, const double* v, + lapack_int ldv, const double* tau, double* t, + lapack_int ldt ); +lapack_int LAPACKE_clarft( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* tau, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zlarft( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* tau, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_slarfx( int matrix_layout, char side, lapack_int m, + lapack_int n, const float* v, float tau, float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_dlarfx( int matrix_layout, char side, lapack_int m, + lapack_int n, const double* v, double tau, double* c, + lapack_int ldc, double* work ); +lapack_int LAPACKE_clarfx( int matrix_layout, char side, lapack_int m, + lapack_int n, const lapack_complex_float* v, + lapack_complex_float tau, lapack_complex_float* c, + lapack_int ldc, lapack_complex_float* work ); +lapack_int LAPACKE_zlarfx( int matrix_layout, char side, lapack_int m, + lapack_int n, const lapack_complex_double* v, + lapack_complex_double tau, lapack_complex_double* c, + lapack_int ldc, lapack_complex_double* work ); + +lapack_int LAPACKE_slarnv( lapack_int idist, lapack_int* iseed, lapack_int n, + float* x ); +lapack_int LAPACKE_dlarnv( lapack_int idist, lapack_int* iseed, lapack_int n, + double* x ); +lapack_int LAPACKE_clarnv( lapack_int idist, lapack_int* iseed, lapack_int n, + lapack_complex_float* x ); +lapack_int LAPACKE_zlarnv( lapack_int idist, lapack_int* iseed, lapack_int n, + lapack_complex_double* x ); + +lapack_int LAPACKE_slascl( int matrix_layout, char type, lapack_int kl, + lapack_int ku, float cfrom, float cto, + lapack_int m, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlascl( int matrix_layout, char type, lapack_int kl, + lapack_int ku, double cfrom, double cto, + lapack_int m, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_clascl( int matrix_layout, char type, lapack_int kl, + lapack_int ku, float cfrom, float cto, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda ); +lapack_int LAPACKE_zlascl( int matrix_layout, char type, lapack_int kl, + lapack_int ku, double cfrom, double cto, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda ); + +lapack_int LAPACKE_slaset( int matrix_layout, char uplo, lapack_int m, + lapack_int n, float alpha, float beta, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlaset( int matrix_layout, char uplo, lapack_int m, + lapack_int n, double alpha, double beta, double* a, + lapack_int lda ); +lapack_int LAPACKE_claset( int matrix_layout, char uplo, lapack_int m, + lapack_int n, lapack_complex_float alpha, + lapack_complex_float beta, lapack_complex_float* a, + lapack_int lda ); +lapack_int LAPACKE_zlaset( int matrix_layout, char uplo, lapack_int m, + lapack_int n, lapack_complex_double alpha, + lapack_complex_double beta, lapack_complex_double* a, + lapack_int lda ); + +lapack_int LAPACKE_slasrt( char id, lapack_int n, float* d ); +lapack_int LAPACKE_dlasrt( char id, lapack_int n, double* d ); + +lapack_int LAPACKE_slassq( lapack_int n, float* x, lapack_int incx, float* scale, float* sumsq ); +lapack_int LAPACKE_dlassq( lapack_int n, double* x, lapack_int incx, double* scale, double* sumsq ); +lapack_int LAPACKE_classq( lapack_int n, lapack_complex_float* x, lapack_int incx, float* scale, float* sumsq ); +lapack_int LAPACKE_zlassq( lapack_int n, lapack_complex_double* x, lapack_int incx, double* scale, double* sumsq ); + +lapack_int LAPACKE_slaswp( int matrix_layout, lapack_int n, float* a, + lapack_int lda, lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); +lapack_int LAPACKE_dlaswp( int matrix_layout, lapack_int n, double* a, + lapack_int lda, lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); +lapack_int LAPACKE_claswp( int matrix_layout, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int k1, lapack_int k2, const lapack_int* ipiv, + lapack_int incx ); +lapack_int LAPACKE_zlaswp( int matrix_layout, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int k1, lapack_int k2, const lapack_int* ipiv, + lapack_int incx ); + +lapack_int LAPACKE_slatms( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, float* d, + lapack_int mode, float cond, float dmax, + lapack_int kl, lapack_int ku, char pack, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlatms( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, double* d, + lapack_int mode, double cond, double dmax, + lapack_int kl, lapack_int ku, char pack, double* a, + lapack_int lda ); +lapack_int LAPACKE_clatms( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, float* d, + lapack_int mode, float cond, float dmax, + lapack_int kl, lapack_int ku, char pack, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zlatms( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, double* d, + lapack_int mode, double cond, double dmax, + lapack_int kl, lapack_int ku, char pack, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_slauum( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlauum( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_clauum( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zlauum( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_sopgtr( int matrix_layout, char uplo, lapack_int n, + const float* ap, const float* tau, float* q, + lapack_int ldq ); +lapack_int LAPACKE_dopgtr( int matrix_layout, char uplo, lapack_int n, + const double* ap, const double* tau, double* q, + lapack_int ldq ); + +lapack_int LAPACKE_sopmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, const float* ap, + const float* tau, float* c, lapack_int ldc ); +lapack_int LAPACKE_dopmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, const double* ap, + const double* tau, double* c, lapack_int ldc ); + +lapack_int LAPACKE_sorgbr( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorgbr( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, double* a, + lapack_int lda, const double* tau ); + +lapack_int LAPACKE_sorghr( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorghr( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, double* a, lapack_int lda, + const double* tau ); + +lapack_int LAPACKE_sorglq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorglq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau ); + +lapack_int LAPACKE_sorgql( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorgql( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau ); + +lapack_int LAPACKE_sorgqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorgqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau ); + +lapack_int LAPACKE_sorgrq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau ); +lapack_int LAPACKE_dorgrq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau ); + +lapack_int LAPACKE_sorgtr( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, const float* tau ); +lapack_int LAPACKE_dorgtr( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, const double* tau ); + +lapack_int LAPACKE_sorgtsqr_row( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + float* a, lapack_int lda, + const float* t, lapack_int ldt ); +lapack_int LAPACKE_dorgtsqr_row( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + double* a, lapack_int lda, + const double* t, lapack_int ldt ); + +lapack_int LAPACKE_sormbr( int matrix_layout, char vect, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, const float* tau, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dormbr( int matrix_layout, char vect, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, const double* tau, + double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormhr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc ); +lapack_int LAPACKE_dormhr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, const float* tau, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dormlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, const double* tau, + double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormql( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, const float* tau, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dormql( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, const double* tau, + double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, const float* tau, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dormqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, const double* tau, + double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormrq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, const float* tau, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dormrq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, const double* tau, + double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormrz( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc ); +lapack_int LAPACKE_dormrz( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc ); + +lapack_int LAPACKE_sormtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, const float* a, + lapack_int lda, const float* tau, float* c, + lapack_int ldc ); +lapack_int LAPACKE_dormtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, const double* a, + lapack_int lda, const double* tau, double* c, + lapack_int ldc ); + +lapack_int LAPACKE_spbcon( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const float* ab, lapack_int ldab, + float anorm, float* rcond ); +lapack_int LAPACKE_dpbcon( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const double* ab, lapack_int ldab, + double anorm, double* rcond ); +lapack_int LAPACKE_cpbcon( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_float* ab, + lapack_int ldab, float anorm, float* rcond ); +lapack_int LAPACKE_zpbcon( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_double* ab, + lapack_int ldab, double anorm, double* rcond ); + +lapack_int LAPACKE_spbequ( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const float* ab, lapack_int ldab, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_dpbequ( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const double* ab, lapack_int ldab, + double* s, double* scond, double* amax ); +lapack_int LAPACKE_cpbequ( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_float* ab, + lapack_int ldab, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_zpbequ( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_double* ab, + lapack_int ldab, double* s, double* scond, + double* amax ); + +lapack_int LAPACKE_spbrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const float* ab, + lapack_int ldab, const float* afb, lapack_int ldafb, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_dpbrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const double* ab, + lapack_int ldab, const double* afb, lapack_int ldafb, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr ); +lapack_int LAPACKE_cpbrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* afb, lapack_int ldafb, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zpbrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + const lapack_complex_double* afb, lapack_int ldafb, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_spbstf( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, float* bb, lapack_int ldbb ); +lapack_int LAPACKE_dpbstf( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, double* bb, lapack_int ldbb ); +lapack_int LAPACKE_cpbstf( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, lapack_complex_float* bb, + lapack_int ldbb ); +lapack_int LAPACKE_zpbstf( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, lapack_complex_double* bb, + lapack_int ldbb ); + +lapack_int LAPACKE_spbsv( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, float* ab, + lapack_int ldab, float* b, lapack_int ldb ); +lapack_int LAPACKE_dpbsv( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, double* ab, + lapack_int ldab, double* b, lapack_int ldb ); +lapack_int LAPACKE_cpbsv( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpbsv( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spbsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, float* ab, + lapack_int ldab, float* afb, lapack_int ldafb, + char* equed, float* s, float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, double* ab, + lapack_int ldab, double* afb, lapack_int ldafb, + char* equed, double* s, double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* ferr, double* berr ); +lapack_int LAPACKE_cpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* afb, lapack_int ldafb, + char* equed, float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_zpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* afb, lapack_int ldafb, + char* equed, double* s, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr ); + +lapack_int LAPACKE_spbtrf( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab ); +lapack_int LAPACKE_dpbtrf( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab ); +lapack_int LAPACKE_cpbtrf( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab ); +lapack_int LAPACKE_zpbtrf( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab ); + +lapack_int LAPACKE_spbtrs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const float* ab, + lapack_int ldab, float* b, lapack_int ldb ); +lapack_int LAPACKE_dpbtrs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const double* ab, + lapack_int ldab, double* b, lapack_int ldb ); +lapack_int LAPACKE_cpbtrs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpbtrs( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spftrf( int matrix_layout, char transr, char uplo, + lapack_int n, float* a ); +lapack_int LAPACKE_dpftrf( int matrix_layout, char transr, char uplo, + lapack_int n, double* a ); +lapack_int LAPACKE_cpftrf( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_float* a ); +lapack_int LAPACKE_zpftrf( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_double* a ); + +lapack_int LAPACKE_spftri( int matrix_layout, char transr, char uplo, + lapack_int n, float* a ); +lapack_int LAPACKE_dpftri( int matrix_layout, char transr, char uplo, + lapack_int n, double* a ); +lapack_int LAPACKE_cpftri( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_float* a ); +lapack_int LAPACKE_zpftri( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_double* a ); + +lapack_int LAPACKE_spftrs( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, const float* a, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dpftrs( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, const double* a, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cpftrs( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpftrs( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spocon( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float anorm, + float* rcond ); +lapack_int LAPACKE_dpocon( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double anorm, + double* rcond ); +lapack_int LAPACKE_cpocon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float anorm, float* rcond ); +lapack_int LAPACKE_zpocon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double anorm, double* rcond ); + +lapack_int LAPACKE_spoequ( int matrix_layout, lapack_int n, const float* a, + lapack_int lda, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dpoequ( int matrix_layout, lapack_int n, const double* a, + lapack_int lda, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cpoequ( int matrix_layout, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zpoequ( int matrix_layout, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_spoequb( int matrix_layout, lapack_int n, const float* a, + lapack_int lda, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dpoequb( int matrix_layout, lapack_int n, const double* a, + lapack_int lda, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cpoequb( int matrix_layout, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zpoequb( int matrix_layout, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_sporfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dporfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const double* af, lapack_int ldaf, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr ); +lapack_int LAPACKE_cporfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_zporfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* ferr, double* berr ); + +lapack_int LAPACKE_sporfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, lapack_int ldaf, + const float* s, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dporfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, lapack_int ldaf, + const double* s, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); +lapack_int LAPACKE_cporfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, lapack_int ldaf, + const float* s, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_zporfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, lapack_int ldaf, + const double* s, const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); + +lapack_int LAPACKE_sposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); +lapack_int LAPACKE_dsposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* x, lapack_int ldx, + lapack_int* iter ); +lapack_int LAPACKE_zcposv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, lapack_int* iter ); + +lapack_int LAPACKE_sposvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, float* af, + lapack_int ldaf, char* equed, float* s, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_dposvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* af, lapack_int ldaf, char* equed, double* s, + double* b, lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); +lapack_int LAPACKE_cposvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* af, + lapack_int ldaf, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zposvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* af, + lapack_int ldaf, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_sposvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + char* equed, float* s, float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, + float* rpvgrw, float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_dposvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + char* equed, double* s, double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* rpvgrw, double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); +lapack_int LAPACKE_cposvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + char* equed, float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_zposvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + char* equed, double* s, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* rpvgrw, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); + +lapack_int LAPACKE_spotrf2( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dpotrf2( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_cpotrf2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotrf2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotrf( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dpotrf( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_cpotrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotri( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dpotri( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_cpotri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dpotrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cpotrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zpotrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sppcon( int matrix_layout, char uplo, lapack_int n, + const float* ap, float anorm, float* rcond ); +lapack_int LAPACKE_dppcon( int matrix_layout, char uplo, lapack_int n, + const double* ap, double anorm, double* rcond ); +lapack_int LAPACKE_cppcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, float anorm, + float* rcond ); +lapack_int LAPACKE_zppcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, double anorm, + double* rcond ); + +lapack_int LAPACKE_sppequ( int matrix_layout, char uplo, lapack_int n, + const float* ap, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dppequ( int matrix_layout, char uplo, lapack_int n, + const double* ap, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cppequ( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, float* s, + float* scond, float* amax ); +lapack_int LAPACKE_zppequ( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, double* s, + double* scond, double* amax ); + +lapack_int LAPACKE_spprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, const float* afp, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_dpprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, const double* afp, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr ); +lapack_int LAPACKE_cpprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zpprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sppsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* ap, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dppsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* ap, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cppsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zppsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sppsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, float* ap, float* afp, char* equed, + float* s, float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dppsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, double* ap, double* afp, + char* equed, double* s, double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* ferr, double* berr ); +lapack_int LAPACKE_cppsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_complex_float* afp, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zppsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_complex_double* afp, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_spptrf( int matrix_layout, char uplo, lapack_int n, + float* ap ); +lapack_int LAPACKE_dpptrf( int matrix_layout, char uplo, lapack_int n, + double* ap ); +lapack_int LAPACKE_cpptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap ); +lapack_int LAPACKE_zpptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap ); + +lapack_int LAPACKE_spptri( int matrix_layout, char uplo, lapack_int n, + float* ap ); +lapack_int LAPACKE_dpptri( int matrix_layout, char uplo, lapack_int n, + double* ap ); +lapack_int LAPACKE_cpptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap ); +lapack_int LAPACKE_zpptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap ); + +lapack_int LAPACKE_spptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dpptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cpptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spstrf( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, lapack_int* piv, lapack_int* rank, + float tol ); +lapack_int LAPACKE_dpstrf( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, lapack_int* piv, lapack_int* rank, + double tol ); +lapack_int LAPACKE_cpstrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* piv, lapack_int* rank, float tol ); +lapack_int LAPACKE_zpstrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* piv, lapack_int* rank, double tol ); + +lapack_int LAPACKE_sptcon( lapack_int n, const float* d, const float* e, + float anorm, float* rcond ); +lapack_int LAPACKE_dptcon( lapack_int n, const double* d, const double* e, + double anorm, double* rcond ); +lapack_int LAPACKE_cptcon( lapack_int n, const float* d, + const lapack_complex_float* e, float anorm, + float* rcond ); +lapack_int LAPACKE_zptcon( lapack_int n, const double* d, + const lapack_complex_double* e, double anorm, + double* rcond ); + +lapack_int LAPACKE_spteqr( int matrix_layout, char compz, lapack_int n, float* d, + float* e, float* z, lapack_int ldz ); +lapack_int LAPACKE_dpteqr( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz ); +lapack_int LAPACKE_cpteqr( int matrix_layout, char compz, lapack_int n, float* d, + float* e, lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zpteqr( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_sptrfs( int matrix_layout, lapack_int n, lapack_int nrhs, + const float* d, const float* e, const float* df, + const float* ef, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_dptrfs( int matrix_layout, lapack_int n, lapack_int nrhs, + const double* d, const double* e, const double* df, + const double* ef, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* ferr, + double* berr ); +lapack_int LAPACKE_cptrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, const float* df, + const lapack_complex_float* ef, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zptrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, const double* df, + const lapack_complex_double* ef, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sptsv( int matrix_layout, lapack_int n, lapack_int nrhs, + float* d, float* e, float* b, lapack_int ldb ); +lapack_int LAPACKE_dptsv( int matrix_layout, lapack_int n, lapack_int nrhs, + double* d, double* e, double* b, lapack_int ldb ); +lapack_int LAPACKE_cptsv( int matrix_layout, lapack_int n, lapack_int nrhs, + float* d, lapack_complex_float* e, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zptsv( int matrix_layout, lapack_int n, lapack_int nrhs, + double* d, lapack_complex_double* e, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sptsvx( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const float* d, const float* e, + float* df, float* ef, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dptsvx( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const double* d, const double* e, + double* df, double* ef, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); +lapack_int LAPACKE_cptsvx( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, float* df, + lapack_complex_float* ef, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zptsvx( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, double* df, + lapack_complex_double* ef, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_spttrf( lapack_int n, float* d, float* e ); +lapack_int LAPACKE_dpttrf( lapack_int n, double* d, double* e ); +lapack_int LAPACKE_cpttrf( lapack_int n, float* d, lapack_complex_float* e ); +lapack_int LAPACKE_zpttrf( lapack_int n, double* d, lapack_complex_double* e ); + +lapack_int LAPACKE_spttrs( int matrix_layout, lapack_int n, lapack_int nrhs, + const float* d, const float* e, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dpttrs( int matrix_layout, lapack_int n, lapack_int nrhs, + const double* d, const double* e, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cpttrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpttrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssbev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab, float* w, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbev( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab, double* w, + double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab, float* w, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbevd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsbevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* q, lapack_int ldq, + double vl, double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssbgst( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, float* ab, + lapack_int ldab, const float* bb, lapack_int ldbb, + float* x, lapack_int ldx ); +lapack_int LAPACKE_dsbgst( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, double* ab, + lapack_int ldab, const double* bb, lapack_int ldbb, + double* x, lapack_int ldx ); + +lapack_int LAPACKE_ssbgv( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, float* ab, + lapack_int ldab, float* bb, lapack_int ldbb, float* w, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbgv( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, double* ab, + lapack_int ldab, double* bb, lapack_int ldbb, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, float* ab, + lapack_int ldab, float* bb, lapack_int ldbb, + float* w, float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int ka, lapack_int kb, double* ab, + lapack_int ldab, double* bb, lapack_int ldbb, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbgvx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + float* ab, lapack_int ldab, float* bb, + lapack_int ldbb, float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsbgvx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + double* ab, lapack_int ldab, double* bb, + lapack_int ldbb, double* q, lapack_int ldq, + double vl, double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssbtrd( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab, float* d, + float* e, float* q, lapack_int ldq ); +lapack_int LAPACKE_dsbtrd( int matrix_layout, char vect, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab, + double* d, double* e, double* q, lapack_int ldq ); + +lapack_int LAPACKE_ssfrk( int matrix_layout, char transr, char uplo, char trans, + lapack_int n, lapack_int k, float alpha, + const float* a, lapack_int lda, float beta, + float* c ); +lapack_int LAPACKE_dsfrk( int matrix_layout, char transr, char uplo, char trans, + lapack_int n, lapack_int k, double alpha, + const double* a, lapack_int lda, double beta, + double* c ); + +lapack_int LAPACKE_sspcon( int matrix_layout, char uplo, lapack_int n, + const float* ap, const lapack_int* ipiv, float anorm, + float* rcond ); +lapack_int LAPACKE_dspcon( int matrix_layout, char uplo, lapack_int n, + const double* ap, const lapack_int* ipiv, + double anorm, double* rcond ); +lapack_int LAPACKE_cspcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zspcon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_sspev( int matrix_layout, char jobz, char uplo, lapack_int n, + float* ap, float* w, float* z, lapack_int ldz ); +lapack_int LAPACKE_dspev( int matrix_layout, char jobz, char uplo, lapack_int n, + double* ap, double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sspevd( int matrix_layout, char jobz, char uplo, lapack_int n, + float* ap, float* w, float* z, lapack_int ldz ); +lapack_int LAPACKE_dspevd( int matrix_layout, char jobz, char uplo, lapack_int n, + double* ap, double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sspevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, float* ap, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dspevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, double* ap, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_sspgst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, float* ap, const float* bp ); +lapack_int LAPACKE_dspgst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, double* ap, const double* bp ); + +lapack_int LAPACKE_sspgv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* ap, float* bp, + float* w, float* z, lapack_int ldz ); +lapack_int LAPACKE_dspgv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* ap, double* bp, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sspgvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* ap, float* bp, + float* w, float* z, lapack_int ldz ); +lapack_int LAPACKE_dspgvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* ap, double* bp, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sspgvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, float* ap, + float* bp, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, float* w, + float* z, lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_dspgvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, double* ap, + double* bp, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_ssprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, const float* afp, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dsprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, const double* afp, + const lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr ); +lapack_int LAPACKE_csprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zsprfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_sspsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* ap, lapack_int* ipiv, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dspsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* ap, lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cspsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zspsv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sspsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, float* afp, + lapack_int* ipiv, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dspsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, double* afp, + lapack_int* ipiv, const double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* ferr, double* berr ); +lapack_int LAPACKE_cspsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + lapack_complex_float* afp, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zspsvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + lapack_complex_double* afp, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_ssptrd( int matrix_layout, char uplo, lapack_int n, float* ap, + float* d, float* e, float* tau ); +lapack_int LAPACKE_dsptrd( int matrix_layout, char uplo, lapack_int n, + double* ap, double* d, double* e, double* tau ); + +lapack_int LAPACKE_ssptrf( int matrix_layout, char uplo, lapack_int n, float* ap, + lapack_int* ipiv ); +lapack_int LAPACKE_dsptrf( int matrix_layout, char uplo, lapack_int n, + double* ap, lapack_int* ipiv ); +lapack_int LAPACKE_csptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, lapack_int* ipiv ); +lapack_int LAPACKE_zsptrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, lapack_int* ipiv ); + +lapack_int LAPACKE_ssptri( int matrix_layout, char uplo, lapack_int n, float* ap, + const lapack_int* ipiv ); +lapack_int LAPACKE_dsptri( int matrix_layout, char uplo, lapack_int n, + double* ap, const lapack_int* ipiv ); +lapack_int LAPACKE_csptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, const lapack_int* ipiv ); +lapack_int LAPACKE_zsptri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, const lapack_int* ipiv ); + +lapack_int LAPACKE_ssptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_csptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zsptrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* ap, + const lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sstebz( char range, char order, lapack_int n, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + const float* d, const float* e, lapack_int* m, + lapack_int* nsplit, float* w, lapack_int* iblock, + lapack_int* isplit ); +lapack_int LAPACKE_dstebz( char range, char order, lapack_int n, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, const double* d, const double* e, + lapack_int* m, lapack_int* nsplit, double* w, + lapack_int* iblock, lapack_int* isplit ); + +lapack_int LAPACKE_sstedc( int matrix_layout, char compz, lapack_int n, float* d, + float* e, float* z, lapack_int ldz ); +lapack_int LAPACKE_dstedc( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz ); +lapack_int LAPACKE_cstedc( int matrix_layout, char compz, lapack_int n, float* d, + float* e, lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zstedc( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_sstegr( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_dstegr( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz ); +lapack_int LAPACKE_cstegr( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* isuppz ); +lapack_int LAPACKE_zstegr( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* isuppz ); + +lapack_int LAPACKE_sstein( int matrix_layout, lapack_int n, const float* d, + const float* e, lapack_int m, const float* w, + const lapack_int* iblock, const lapack_int* isplit, + float* z, lapack_int ldz, lapack_int* ifailv ); +lapack_int LAPACKE_dstein( int matrix_layout, lapack_int n, const double* d, + const double* e, lapack_int m, const double* w, + const lapack_int* iblock, const lapack_int* isplit, + double* z, lapack_int ldz, lapack_int* ifailv ); +lapack_int LAPACKE_cstein( int matrix_layout, lapack_int n, const float* d, + const float* e, lapack_int m, const float* w, + const lapack_int* iblock, const lapack_int* isplit, + lapack_complex_float* z, lapack_int ldz, + lapack_int* ifailv ); +lapack_int LAPACKE_zstein( int matrix_layout, lapack_int n, const double* d, + const double* e, lapack_int m, const double* w, + const lapack_int* iblock, const lapack_int* isplit, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifailv ); + +lapack_int LAPACKE_sstemr( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* m, + float* w, float* z, lapack_int ldz, lapack_int nzc, + lapack_int* isuppz, lapack_logical* tryrac ); +lapack_int LAPACKE_dstemr( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + lapack_int* m, double* w, double* z, lapack_int ldz, + lapack_int nzc, lapack_int* isuppz, + lapack_logical* tryrac ); +lapack_int LAPACKE_cstemr( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* m, + float* w, lapack_complex_float* z, lapack_int ldz, + lapack_int nzc, lapack_int* isuppz, + lapack_logical* tryrac ); +lapack_int LAPACKE_zstemr( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + lapack_int* m, double* w, lapack_complex_double* z, + lapack_int ldz, lapack_int nzc, lapack_int* isuppz, + lapack_logical* tryrac ); + +lapack_int LAPACKE_ssteqr( int matrix_layout, char compz, lapack_int n, float* d, + float* e, float* z, lapack_int ldz ); +lapack_int LAPACKE_dsteqr( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz ); +lapack_int LAPACKE_csteqr( int matrix_layout, char compz, lapack_int n, float* d, + float* e, lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zsteqr( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_ssterf( lapack_int n, float* d, float* e ); +lapack_int LAPACKE_dsterf( lapack_int n, double* d, double* e ); + +lapack_int LAPACKE_sstev( int matrix_layout, char jobz, lapack_int n, float* d, + float* e, float* z, lapack_int ldz ); +lapack_int LAPACKE_dstev( int matrix_layout, char jobz, lapack_int n, double* d, + double* e, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sstevd( int matrix_layout, char jobz, lapack_int n, float* d, + float* e, float* z, lapack_int ldz ); +lapack_int LAPACKE_dstevd( int matrix_layout, char jobz, lapack_int n, double* d, + double* e, double* z, lapack_int ldz ); + +lapack_int LAPACKE_sstevr( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_dstevr( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz ); + +lapack_int LAPACKE_sstevx( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dstevx( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssycon( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_dsycon( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond ); +lapack_int LAPACKE_csycon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zsycon( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond ); + +lapack_int LAPACKE_ssyequb( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float* s, + float* scond, float* amax ); +lapack_int LAPACKE_dsyequb( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double* s, + double* scond, double* amax ); +lapack_int LAPACKE_csyequb( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zsyequb( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_ssyev( int matrix_layout, char jobz, char uplo, lapack_int n, + float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_dsyev( int matrix_layout, char jobz, char uplo, lapack_int n, + double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_ssyevd( int matrix_layout, char jobz, char uplo, lapack_int n, + float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_dsyevd( int matrix_layout, char jobz, char uplo, lapack_int n, + double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_ssyevr( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, float* a, lapack_int lda, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_dsyevr( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, double* a, lapack_int lda, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz ); + +lapack_int LAPACKE_ssyevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, float* a, lapack_int lda, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsyevx( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, double* a, lapack_int lda, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssygst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, float* a, lapack_int lda, + const float* b, lapack_int ldb ); +lapack_int LAPACKE_dsygst( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, double* a, lapack_int lda, + const double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssygv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, float* w ); +lapack_int LAPACKE_dsygv( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double* w ); + +lapack_int LAPACKE_ssygvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, float* w ); +lapack_int LAPACKE_dsygvd( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double* w ); + +lapack_int LAPACKE_ssygvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsygvx( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssyrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dsyrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr ); +lapack_int LAPACKE_csyrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_zsyrfs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_ssyrfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* s, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dsyrfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* s, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); +lapack_int LAPACKE_csyrfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* s, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params ); +lapack_int LAPACKE_zsyrfsx( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, lapack_int ldaf, + const lapack_int* ipiv, const double* s, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params ); + +lapack_int LAPACKE_ssysv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsysv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_csysv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsysv( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssysvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + float* af, lapack_int ldaf, lapack_int* ipiv, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr ); +lapack_int LAPACKE_dsysvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + double* af, lapack_int ldaf, lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr ); +lapack_int LAPACKE_csysvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* af, + lapack_int ldaf, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr ); +lapack_int LAPACKE_zsysvx( int matrix_layout, char fact, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* af, + lapack_int ldaf, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr ); + +lapack_int LAPACKE_ssysvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_dsysvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); +lapack_int LAPACKE_csysvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params ); +lapack_int LAPACKE_zsysvxx( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params ); + +lapack_int LAPACKE_ssytrd( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, float* d, float* e, float* tau ); +lapack_int LAPACKE_dsytrd( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, double* d, double* e, double* tau ); + +lapack_int LAPACKE_ssytrf( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dsytrf( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_csytrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zsytrf( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_ssytri( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_dsytri( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_csytri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_zsytri( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv ); + +lapack_int LAPACKE_ssytrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stbcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, lapack_int kd, const float* ab, + lapack_int ldab, float* rcond ); +lapack_int LAPACKE_dtbcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, lapack_int kd, const double* ab, + lapack_int ldab, double* rcond ); +lapack_int LAPACKE_ctbcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_float* ab, lapack_int ldab, + float* rcond ); +lapack_int LAPACKE_ztbcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_double* ab, lapack_int ldab, + double* rcond ); + +lapack_int LAPACKE_stbrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const float* ab, lapack_int ldab, const float* b, + lapack_int ldb, const float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_dtbrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const double* ab, lapack_int ldab, const double* b, + lapack_int ldb, const double* x, lapack_int ldx, + double* ferr, double* berr ); +lapack_int LAPACKE_ctbrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_ztbrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_stbtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const float* ab, lapack_int ldab, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dtbtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const double* ab, lapack_int ldab, double* b, + lapack_int ldb ); +lapack_int LAPACKE_ctbtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztbtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stfsm( int matrix_layout, char transr, char side, char uplo, + char trans, char diag, lapack_int m, lapack_int n, + float alpha, const float* a, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dtfsm( int matrix_layout, char transr, char side, char uplo, + char trans, char diag, lapack_int m, lapack_int n, + double alpha, const double* a, double* b, + lapack_int ldb ); +lapack_int LAPACKE_ctfsm( int matrix_layout, char transr, char side, char uplo, + char trans, char diag, lapack_int m, lapack_int n, + lapack_complex_float alpha, + const lapack_complex_float* a, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztfsm( int matrix_layout, char transr, char side, char uplo, + char trans, char diag, lapack_int m, lapack_int n, + lapack_complex_double alpha, + const lapack_complex_double* a, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stftri( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, float* a ); +lapack_int LAPACKE_dtftri( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, double* a ); +lapack_int LAPACKE_ctftri( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, lapack_complex_float* a ); +lapack_int LAPACKE_ztftri( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, lapack_complex_double* a ); + +lapack_int LAPACKE_stfttp( int matrix_layout, char transr, char uplo, + lapack_int n, const float* arf, float* ap ); +lapack_int LAPACKE_dtfttp( int matrix_layout, char transr, char uplo, + lapack_int n, const double* arf, double* ap ); +lapack_int LAPACKE_ctfttp( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* arf, + lapack_complex_float* ap ); +lapack_int LAPACKE_ztfttp( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* arf, + lapack_complex_double* ap ); + +lapack_int LAPACKE_stfttr( int matrix_layout, char transr, char uplo, + lapack_int n, const float* arf, float* a, + lapack_int lda ); +lapack_int LAPACKE_dtfttr( int matrix_layout, char transr, char uplo, + lapack_int n, const double* arf, double* a, + lapack_int lda ); +lapack_int LAPACKE_ctfttr( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* arf, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_ztfttr( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* arf, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_stgevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const float* s, lapack_int lds, const float* p, + lapack_int ldp, float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, lapack_int mm, + lapack_int* m ); +lapack_int LAPACKE_dtgevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const double* s, lapack_int lds, const double* p, + lapack_int ldp, double* vl, lapack_int ldvl, + double* vr, lapack_int ldvr, lapack_int mm, + lapack_int* m ); +lapack_int LAPACKE_ctgevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* s, lapack_int lds, + const lapack_complex_float* p, lapack_int ldp, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ztgevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* s, lapack_int lds, + const lapack_complex_double* p, lapack_int ldp, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m ); + +lapack_int LAPACKE_stgexc( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, float* q, + lapack_int ldq, float* z, lapack_int ldz, + lapack_int* ifst, lapack_int* ilst ); +lapack_int LAPACKE_dtgexc( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, double* q, + lapack_int ldq, double* z, lapack_int ldz, + lapack_int* ifst, lapack_int* ilst ); +lapack_int LAPACKE_ctgexc( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz, + lapack_int ifst, lapack_int ilst ); +lapack_int LAPACKE_ztgexc( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_int ifst, lapack_int ilst ); + +lapack_int LAPACKE_stgsen( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* alphar, float* alphai, float* beta, float* q, + lapack_int ldq, float* z, lapack_int ldz, + lapack_int* m, float* pl, float* pr, float* dif ); +lapack_int LAPACKE_dtgsen( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + double* a, lapack_int lda, double* b, lapack_int ldb, + double* alphar, double* alphai, double* beta, + double* q, lapack_int ldq, double* z, lapack_int ldz, + lapack_int* m, double* pl, double* pr, double* dif ); +lapack_int LAPACKE_ctgsen( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, lapack_complex_float* q, + lapack_int ldq, lapack_complex_float* z, + lapack_int ldz, lapack_int* m, float* pl, float* pr, + float* dif ); +lapack_int LAPACKE_ztgsen( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_int* m, double* pl, double* pr, double* dif ); + +lapack_int LAPACKE_stgsja( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_int k, lapack_int l, float* a, lapack_int lda, + float* b, lapack_int ldb, float tola, float tolb, + float* alpha, float* beta, float* u, lapack_int ldu, + float* v, lapack_int ldv, float* q, lapack_int ldq, + lapack_int* ncycle ); +lapack_int LAPACKE_dtgsja( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_int k, lapack_int l, double* a, + lapack_int lda, double* b, lapack_int ldb, + double tola, double tolb, double* alpha, + double* beta, double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq, + lapack_int* ncycle ); +lapack_int LAPACKE_ctgsja( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_int k, lapack_int l, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float tola, float tolb, float* alpha, + float* beta, lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq, + lapack_int* ncycle ); +lapack_int LAPACKE_ztgsja( int matrix_layout, char jobu, char jobv, char jobq, + lapack_int m, lapack_int p, lapack_int n, + lapack_int k, lapack_int l, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double tola, double tolb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_int* ncycle ); + +lapack_int LAPACKE_stgsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, const float* vl, lapack_int ldvl, + const float* vr, lapack_int ldvr, float* s, + float* dif, lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_dtgsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const double* a, lapack_int lda, const double* b, + lapack_int ldb, const double* vl, lapack_int ldvl, + const double* vr, lapack_int ldvr, double* s, + double* dif, lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ctgsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* vl, lapack_int ldvl, + const lapack_complex_float* vr, lapack_int ldvr, + float* s, float* dif, lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ztgsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* vl, lapack_int ldvl, + const lapack_complex_double* vr, lapack_int ldvr, + double* s, double* dif, lapack_int mm, + lapack_int* m ); + +lapack_int LAPACKE_stgsyl( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, const float* a, + lapack_int lda, const float* b, lapack_int ldb, + float* c, lapack_int ldc, const float* d, + lapack_int ldd, const float* e, lapack_int lde, + float* f, lapack_int ldf, float* scale, float* dif ); +lapack_int LAPACKE_dtgsyl( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, const double* a, + lapack_int lda, const double* b, lapack_int ldb, + double* c, lapack_int ldc, const double* d, + lapack_int ldd, const double* e, lapack_int lde, + double* f, lapack_int ldf, double* scale, + double* dif ); +lapack_int LAPACKE_ctgsyl( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* c, lapack_int ldc, + const lapack_complex_float* d, lapack_int ldd, + const lapack_complex_float* e, lapack_int lde, + lapack_complex_float* f, lapack_int ldf, + float* scale, float* dif ); +lapack_int LAPACKE_ztgsyl( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + const lapack_complex_double* d, lapack_int ldd, + const lapack_complex_double* e, lapack_int lde, + lapack_complex_double* f, lapack_int ldf, + double* scale, double* dif ); + +lapack_int LAPACKE_stpcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const float* ap, float* rcond ); +lapack_int LAPACKE_dtpcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const double* ap, double* rcond ); +lapack_int LAPACKE_ctpcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const lapack_complex_float* ap, + float* rcond ); +lapack_int LAPACKE_ztpcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const lapack_complex_double* ap, + double* rcond ); + +lapack_int LAPACKE_stprfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const float* ap, + const float* b, lapack_int ldb, const float* x, + lapack_int ldx, float* ferr, float* berr ); +lapack_int LAPACKE_dtprfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const double* ap, + const double* b, lapack_int ldb, const double* x, + lapack_int ldx, double* ferr, double* berr ); +lapack_int LAPACKE_ctprfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_ztprfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_stptri( int matrix_layout, char uplo, char diag, lapack_int n, + float* ap ); +lapack_int LAPACKE_dtptri( int matrix_layout, char uplo, char diag, lapack_int n, + double* ap ); +lapack_int LAPACKE_ctptri( int matrix_layout, char uplo, char diag, lapack_int n, + lapack_complex_float* ap ); +lapack_int LAPACKE_ztptri( int matrix_layout, char uplo, char diag, lapack_int n, + lapack_complex_double* ap ); + +lapack_int LAPACKE_stptrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const float* ap, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dtptrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const double* ap, + double* b, lapack_int ldb ); +lapack_int LAPACKE_ctptrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztptrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stpttf( int matrix_layout, char transr, char uplo, + lapack_int n, const float* ap, float* arf ); +lapack_int LAPACKE_dtpttf( int matrix_layout, char transr, char uplo, + lapack_int n, const double* ap, double* arf ); +lapack_int LAPACKE_ctpttf( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* ap, + lapack_complex_float* arf ); +lapack_int LAPACKE_ztpttf( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* ap, + lapack_complex_double* arf ); + +lapack_int LAPACKE_stpttr( int matrix_layout, char uplo, lapack_int n, + const float* ap, float* a, lapack_int lda ); +lapack_int LAPACKE_dtpttr( int matrix_layout, char uplo, lapack_int n, + const double* ap, double* a, lapack_int lda ); +lapack_int LAPACKE_ctpttr( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_ztpttr( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_strcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const float* a, lapack_int lda, + float* rcond ); +lapack_int LAPACKE_dtrcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const double* a, lapack_int lda, + double* rcond ); +lapack_int LAPACKE_ctrcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, float* rcond ); +lapack_int LAPACKE_ztrcon( int matrix_layout, char norm, char uplo, char diag, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, double* rcond ); + +lapack_int LAPACKE_strevc( int matrix_layout, char side, char howmny, + lapack_logical* select, lapack_int n, const float* t, + lapack_int ldt, float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, lapack_int mm, + lapack_int* m ); +lapack_int LAPACKE_dtrevc( int matrix_layout, char side, char howmny, + lapack_logical* select, lapack_int n, + const double* t, lapack_int ldt, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ctrevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ztrevc( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m ); + +lapack_int LAPACKE_strexc( int matrix_layout, char compq, lapack_int n, float* t, + lapack_int ldt, float* q, lapack_int ldq, + lapack_int* ifst, lapack_int* ilst ); +lapack_int LAPACKE_dtrexc( int matrix_layout, char compq, lapack_int n, + double* t, lapack_int ldt, double* q, lapack_int ldq, + lapack_int* ifst, lapack_int* ilst ); +lapack_int LAPACKE_ctrexc( int matrix_layout, char compq, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* q, lapack_int ldq, + lapack_int ifst, lapack_int ilst ); +lapack_int LAPACKE_ztrexc( int matrix_layout, char compq, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* q, lapack_int ldq, + lapack_int ifst, lapack_int ilst ); + +lapack_int LAPACKE_strrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* b, lapack_int ldb, + const float* x, lapack_int ldx, float* ferr, + float* berr ); +lapack_int LAPACKE_dtrrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* b, lapack_int ldb, + const double* x, lapack_int ldx, double* ferr, + double* berr ); +lapack_int LAPACKE_ctrrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr ); +lapack_int LAPACKE_ztrrfs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr ); + +lapack_int LAPACKE_strsen( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, float* t, + lapack_int ldt, float* q, lapack_int ldq, float* wr, + float* wi, lapack_int* m, float* s, float* sep ); +lapack_int LAPACKE_dtrsen( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + double* t, lapack_int ldt, double* q, lapack_int ldq, + double* wr, double* wi, lapack_int* m, double* s, + double* sep ); +lapack_int LAPACKE_ctrsen( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* w, lapack_int* m, float* s, + float* sep ); +lapack_int LAPACKE_ztrsen( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* w, lapack_int* m, double* s, + double* sep ); + +lapack_int LAPACKE_strsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const float* t, lapack_int ldt, const float* vl, + lapack_int ldvl, const float* vr, lapack_int ldvr, + float* s, float* sep, lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_dtrsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const double* t, lapack_int ldt, const double* vl, + lapack_int ldvl, const double* vr, lapack_int ldvr, + double* s, double* sep, lapack_int mm, + lapack_int* m ); +lapack_int LAPACKE_ctrsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* t, lapack_int ldt, + const lapack_complex_float* vl, lapack_int ldvl, + const lapack_complex_float* vr, lapack_int ldvr, + float* s, float* sep, lapack_int mm, lapack_int* m ); +lapack_int LAPACKE_ztrsna( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* t, lapack_int ldt, + const lapack_complex_double* vl, lapack_int ldvl, + const lapack_complex_double* vr, lapack_int ldvr, + double* s, double* sep, lapack_int mm, + lapack_int* m ); + +lapack_int LAPACKE_strsyl( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, float* c, lapack_int ldc, + float* scale ); +lapack_int LAPACKE_dtrsyl( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const double* a, lapack_int lda, const double* b, + lapack_int ldb, double* c, lapack_int ldc, + double* scale ); +lapack_int LAPACKE_ctrsyl( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* c, lapack_int ldc, + float* scale ); +lapack_int LAPACKE_ztrsyl( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + double* scale ); + +lapack_int LAPACKE_strsyl3( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, float* c, lapack_int ldc, + float* scale ); +lapack_int LAPACKE_dtrsyl3( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const double* a, lapack_int lda, const double* b, + lapack_int ldb, double* c, lapack_int ldc, + double* scale ); +lapack_int LAPACKE_ztrsyl3( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + double* scale ); + +lapack_int LAPACKE_strtri( int matrix_layout, char uplo, char diag, lapack_int n, + float* a, lapack_int lda ); +lapack_int LAPACKE_dtrtri( int matrix_layout, char uplo, char diag, lapack_int n, + double* a, lapack_int lda ); +lapack_int LAPACKE_ctrtri( int matrix_layout, char uplo, char diag, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_ztrtri( int matrix_layout, char uplo, char diag, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_strtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, float* b, lapack_int ldb ); +lapack_int LAPACKE_dtrtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, double* b, lapack_int ldb ); +lapack_int LAPACKE_ctrtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztrtrs( int matrix_layout, char uplo, char trans, char diag, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_strttf( int matrix_layout, char transr, char uplo, + lapack_int n, const float* a, lapack_int lda, + float* arf ); +lapack_int LAPACKE_dtrttf( int matrix_layout, char transr, char uplo, + lapack_int n, const double* a, lapack_int lda, + double* arf ); +lapack_int LAPACKE_ctrttf( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* arf ); +lapack_int LAPACKE_ztrttf( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* arf ); + +lapack_int LAPACKE_strttp( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float* ap ); +lapack_int LAPACKE_dtrttp( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double* ap ); +lapack_int LAPACKE_ctrttp( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* ap ); +lapack_int LAPACKE_ztrttp( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* ap ); + +lapack_int LAPACKE_stzrzf( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau ); +lapack_int LAPACKE_dtzrzf( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau ); +lapack_int LAPACKE_ctzrzf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau ); +lapack_int LAPACKE_ztzrzf( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau ); + +lapack_int LAPACKE_cungbr( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zungbr( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cunghr( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zunghr( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cunglq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zunglq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cungql( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zungql( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cungqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zungqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cungrq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau ); +lapack_int LAPACKE_zungrq( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau ); + +lapack_int LAPACKE_cungtr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau ); +lapack_int LAPACKE_zungtr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau ); + +lapack_int LAPACKE_cungtsqr_row( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zungtsqr_row( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_cunmbr( int matrix_layout, char vect, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmbr( int matrix_layout, char vect, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmhr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmhr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmql( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmql( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmrq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmrq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmrz( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmrz( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cunmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zunmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_cupgtr( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_complex_float* tau, + lapack_complex_float* q, lapack_int ldq ); +lapack_int LAPACKE_zupgtr( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_complex_double* tau, + lapack_complex_double* q, lapack_int ldq ); + +lapack_int LAPACKE_cupmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, + const lapack_complex_float* ap, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zupmtr( int matrix_layout, char side, char uplo, char trans, + lapack_int m, lapack_int n, + const lapack_complex_double* ap, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_sbdsdc_work( int matrix_layout, char uplo, char compq, + lapack_int n, float* d, float* e, float* u, + lapack_int ldu, float* vt, lapack_int ldvt, + float* q, lapack_int* iq, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dbdsdc_work( int matrix_layout, char uplo, char compq, + lapack_int n, double* d, double* e, double* u, + lapack_int ldu, double* vt, lapack_int ldvt, + double* q, lapack_int* iq, double* work, + lapack_int* iwork ); + +lapack_int LAPACKE_sbdsvdx_work( int matrix_layout, char uplo, char jobz, char range, + lapack_int n, float* d, float* e, + float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, float* z, lapack_int ldz, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dbdsvdx_work( int matrix_layout, char uplo, char jobz, char range, + lapack_int n, double* d, double* e, + double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, double* z, lapack_int ldz, + double* work, lapack_int* iwork ); + +lapack_int LAPACKE_sbdsqr_work( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + float* d, float* e, float* vt, lapack_int ldvt, + float* u, lapack_int ldu, float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_dbdsqr_work( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + double* d, double* e, double* vt, + lapack_int ldvt, double* u, lapack_int ldu, + double* c, lapack_int ldc, double* work ); +lapack_int LAPACKE_cbdsqr_work( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + float* d, float* e, lapack_complex_float* vt, + lapack_int ldvt, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_zbdsqr_work( int matrix_layout, char uplo, lapack_int n, + lapack_int ncvt, lapack_int nru, lapack_int ncc, + double* d, double* e, lapack_complex_double* vt, + lapack_int ldvt, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* c, + lapack_int ldc, double* work ); + +lapack_int LAPACKE_sdisna_work( char job, lapack_int m, lapack_int n, + const float* d, float* sep ); +lapack_int LAPACKE_ddisna_work( char job, lapack_int m, lapack_int n, + const double* d, double* sep ); + +lapack_int LAPACKE_sgbbrd_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, float* ab, lapack_int ldab, + float* d, float* e, float* q, lapack_int ldq, + float* pt, lapack_int ldpt, float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_dgbbrd_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, double* ab, lapack_int ldab, + double* d, double* e, double* q, lapack_int ldq, + double* pt, lapack_int ldpt, double* c, + lapack_int ldc, double* work ); +lapack_int LAPACKE_cgbbrd_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, lapack_complex_float* ab, + lapack_int ldab, float* d, float* e, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* pt, lapack_int ldpt, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgbbrd_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int ncc, lapack_int kl, + lapack_int ku, lapack_complex_double* ab, + lapack_int ldab, double* d, double* e, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* pt, lapack_int ldpt, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgbcon_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, const lapack_int* ipiv, + float anorm, float* rcond, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgbcon_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, const lapack_int* ipiv, + double anorm, double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgbcon_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgbcon_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, + lapack_int ldab, const lapack_int* ipiv, + double anorm, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgbequ_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, float* r, float* c, + float* rowcnd, float* colcnd, float* amax ); +lapack_int LAPACKE_dgbequ_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); +lapack_int LAPACKE_cgbequ_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + float* r, float* c, float* rowcnd, + float* colcnd, float* amax ); +lapack_int LAPACKE_zgbequ_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); + +lapack_int LAPACKE_sgbequb_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, float* r, float* c, + float* rowcnd, float* colcnd, float* amax ); +lapack_int LAPACKE_dgbequb_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); +lapack_int LAPACKE_cgbequb_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, + lapack_int ldab, float* r, float* c, + float* rowcnd, float* colcnd, float* amax ); +lapack_int LAPACKE_zgbequb_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, + lapack_int ldab, double* r, double* c, + double* rowcnd, double* colcnd, double* amax ); + +lapack_int LAPACKE_sgbrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const float* ab, lapack_int ldab, + const float* afb, lapack_int ldafb, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgbrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const double* ab, lapack_int ldab, + const double* afb, lapack_int ldafb, + const lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgbrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* afb, + lapack_int ldafb, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgbrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, + const lapack_complex_double* afb, + lapack_int ldafb, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgbrfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const float* ab, + lapack_int ldab, const float* afb, + lapack_int ldafb, const lapack_int* ipiv, + const float* r, const float* c, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgbrfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, const double* ab, + lapack_int ldab, const double* afb, + lapack_int ldafb, const lapack_int* ipiv, + const double* r, const double* c, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgbrfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, + const lapack_complex_float* ab, + lapack_int ldab, + const lapack_complex_float* afb, + lapack_int ldafb, const lapack_int* ipiv, + const float* r, const float* c, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgbrfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, + const lapack_complex_double* afb, + lapack_int ldafb, const lapack_int* ipiv, + const double* r, const double* c, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, float* ab, + lapack_int ldab, lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, double* ab, + lapack_int ldab, lapack_int* ipiv, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, + lapack_int ku, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sgbsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, float* ab, lapack_int ldab, + float* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, float* r, float* c, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dgbsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, double* ab, lapack_int ldab, + double* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, double* r, double* c, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cgbsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + float* r, float* c, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgbsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* afb, + lapack_int ldafb, lapack_int* ipiv, char* equed, + double* r, double* c, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sgbsvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, float* ab, lapack_int ldab, + float* afb, lapack_int ldafb, lapack_int* ipiv, + char* equed, float* r, float* c, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgbsvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, double* ab, lapack_int ldab, + double* afb, lapack_int ldafb, + lapack_int* ipiv, char* equed, double* r, + double* c, double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgbsvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* afb, + lapack_int ldafb, lapack_int* ipiv, + char* equed, float* r, float* c, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgbsvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int kl, lapack_int ku, + lapack_int nrhs, lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* afb, + lapack_int ldafb, lapack_int* ipiv, + char* equed, double* r, double* c, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, float* ab, + lapack_int ldab, lapack_int* ipiv ); +lapack_int LAPACKE_dgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, double* ab, + lapack_int ldab, lapack_int* ipiv ); +lapack_int LAPACKE_cgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + lapack_complex_float* ab, lapack_int ldab, + lapack_int* ipiv ); +lapack_int LAPACKE_zgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + lapack_complex_double* ab, lapack_int ldab, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgbtrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const float* ab, lapack_int ldab, + const lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgbtrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const double* ab, lapack_int ldab, + const lapack_int* ipiv, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cgbtrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgbtrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int kl, lapack_int ku, lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sgebak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const float* scale, lapack_int m, float* v, + lapack_int ldv ); +lapack_int LAPACKE_dgebak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const double* scale, lapack_int m, double* v, + lapack_int ldv ); +lapack_int LAPACKE_cgebak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const float* scale, lapack_int m, + lapack_complex_float* v, lapack_int ldv ); +lapack_int LAPACKE_zgebak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const double* scale, lapack_int m, + lapack_complex_double* v, lapack_int ldv ); + +lapack_int LAPACKE_sgebal_work( int matrix_layout, char job, lapack_int n, + float* a, lapack_int lda, lapack_int* ilo, + lapack_int* ihi, float* scale ); +lapack_int LAPACKE_dgebal_work( int matrix_layout, char job, lapack_int n, + double* a, lapack_int lda, lapack_int* ilo, + lapack_int* ihi, double* scale ); +lapack_int LAPACKE_cgebal_work( int matrix_layout, char job, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ilo, lapack_int* ihi, + float* scale ); +lapack_int LAPACKE_zgebal_work( int matrix_layout, char job, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ilo, lapack_int* ihi, + double* scale ); + +lapack_int LAPACKE_sgebrd_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* d, float* e, + float* tauq, float* taup, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dgebrd_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* d, double* e, + double* tauq, double* taup, double* work, + lapack_int lwork ); +lapack_int LAPACKE_cgebrd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float* d, float* e, lapack_complex_float* tauq, + lapack_complex_float* taup, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgebrd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* d, double* e, + lapack_complex_double* tauq, + lapack_complex_double* taup, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgecon_work( int matrix_layout, char norm, lapack_int n, + const float* a, lapack_int lda, float anorm, + float* rcond, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dgecon_work( int matrix_layout, char norm, lapack_int n, + const double* a, lapack_int lda, double anorm, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgecon_work( int matrix_layout, char norm, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float anorm, float* rcond, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgecon_work( int matrix_layout, char norm, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double anorm, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgeequ_work( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, float* r, + float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_dgeequ_work( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, double* r, + double* c, double* rowcnd, double* colcnd, + double* amax ); +lapack_int LAPACKE_cgeequ_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* r, float* c, float* rowcnd, + float* colcnd, float* amax ); +lapack_int LAPACKE_zgeequ_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* r, double* c, double* rowcnd, + double* colcnd, double* amax ); + +lapack_int LAPACKE_sgeequb_work( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, float* r, + float* c, float* rowcnd, float* colcnd, + float* amax ); +lapack_int LAPACKE_dgeequb_work( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, double* r, + double* c, double* rowcnd, double* colcnd, + double* amax ); +lapack_int LAPACKE_cgeequb_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* r, float* c, float* rowcnd, + float* colcnd, float* amax ); +lapack_int LAPACKE_zgeequb_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* r, double* c, double* rowcnd, + double* colcnd, double* amax ); + +lapack_int LAPACKE_sgees_work( int matrix_layout, char jobvs, char sort, + LAPACK_S_SELECT2 select, lapack_int n, float* a, + lapack_int lda, lapack_int* sdim, float* wr, + float* wi, float* vs, lapack_int ldvs, + float* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_dgees_work( int matrix_layout, char jobvs, char sort, + LAPACK_D_SELECT2 select, lapack_int n, double* a, + lapack_int lda, lapack_int* sdim, double* wr, + double* wi, double* vs, lapack_int ldvs, + double* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_cgees_work( int matrix_layout, char jobvs, char sort, + LAPACK_C_SELECT1 select, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* sdim, lapack_complex_float* w, + lapack_complex_float* vs, lapack_int ldvs, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_logical* bwork ); +lapack_int LAPACKE_zgees_work( int matrix_layout, char jobvs, char sort, + LAPACK_Z_SELECT1 select, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* sdim, lapack_complex_double* w, + lapack_complex_double* vs, lapack_int ldvs, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_logical* bwork ); + +lapack_int LAPACKE_sgeesx_work( int matrix_layout, char jobvs, char sort, + LAPACK_S_SELECT2 select, char sense, + lapack_int n, float* a, lapack_int lda, + lapack_int* sdim, float* wr, float* wi, + float* vs, lapack_int ldvs, float* rconde, + float* rcondv, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork, + lapack_logical* bwork ); +lapack_int LAPACKE_dgeesx_work( int matrix_layout, char jobvs, char sort, + LAPACK_D_SELECT2 select, char sense, + lapack_int n, double* a, lapack_int lda, + lapack_int* sdim, double* wr, double* wi, + double* vs, lapack_int ldvs, double* rconde, + double* rcondv, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork, + lapack_logical* bwork ); +lapack_int LAPACKE_cgeesx_work( int matrix_layout, char jobvs, char sort, + LAPACK_C_SELECT1 select, char sense, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_int* sdim, + lapack_complex_float* w, + lapack_complex_float* vs, lapack_int ldvs, + float* rconde, float* rcondv, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_logical* bwork ); +lapack_int LAPACKE_zgeesx_work( int matrix_layout, char jobvs, char sort, + LAPACK_Z_SELECT1 select, char sense, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_int* sdim, + lapack_complex_double* w, + lapack_complex_double* vs, lapack_int ldvs, + double* rconde, double* rcondv, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_logical* bwork ); + +lapack_int LAPACKE_sgeev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, float* a, lapack_int lda, + float* wr, float* wi, float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dgeev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, double* a, lapack_int lda, + double* wr, double* wi, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* w, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zgeev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* w, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_sgeevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, float* a, + lapack_int lda, float* wr, float* wi, float* vl, + lapack_int ldvl, float* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, float* scale, + float* abnrm, float* rconde, float* rcondv, + float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dgeevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, double* a, + lapack_int lda, double* wr, double* wi, + double* vl, lapack_int ldvl, double* vr, + lapack_int ldvr, lapack_int* ilo, + lapack_int* ihi, double* scale, double* abnrm, + double* rconde, double* rcondv, double* work, + lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_cgeevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* w, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, float* scale, + float* abnrm, float* rconde, float* rcondv, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zgeevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* w, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, double* scale, + double* abnrm, double* rconde, double* rcondv, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_sgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, float* a, lapack_int lda, + float* tau, float* work, lapack_int lwork ); +lapack_int LAPACKE_dgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, double* a, lapack_int lda, + double* tau, double* work, lapack_int lwork ); +lapack_int LAPACKE_cgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgejsv_work( int matrix_layout, char joba, char jobu, + char jobv, char jobr, char jobt, char jobp, + lapack_int m, lapack_int n, float* a, + lapack_int lda, float* sva, float* u, + lapack_int ldu, float* v, lapack_int ldv, + float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dgejsv_work( int matrix_layout, char joba, char jobu, + char jobv, char jobr, char jobt, char jobp, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* sva, double* u, + lapack_int ldu, double* v, lapack_int ldv, + double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_cgejsv_work( int matrix_layout, char joba, char jobu, + char jobv, char jobr, char jobt, char jobp, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float* sva, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* cwork, lapack_int lwork, + float* work, lapack_int lrwork, + lapack_int* iwork ); +lapack_int LAPACKE_zgejsv_work( int matrix_layout, char joba, char jobu, + char jobv, char jobr, char jobt, char jobp, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double* sva, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* cwork, lapack_int lwork, + double* work, lapack_int lrwork, + lapack_int* iwork ); + +lapack_int LAPACKE_sgelq2_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work ); +lapack_int LAPACKE_dgelq2_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work ); +lapack_int LAPACKE_cgelq2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work ); +lapack_int LAPACKE_zgelq2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work ); + +lapack_int LAPACKE_sgelqf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgelqf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgelqf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgelqf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgels_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgels_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgels_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgels_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgelsd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* b, lapack_int ldb, float* s, float rcond, + lapack_int* rank, float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dgelsd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* s, + double rcond, lapack_int* rank, double* work, + lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_cgelsd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int* iwork ); +lapack_int LAPACKE_zgelsd_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* s, double rcond, + lapack_int* rank, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int* iwork ); + +lapack_int LAPACKE_sgelss_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* b, lapack_int ldb, float* s, float rcond, + lapack_int* rank, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dgelss_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* s, + double rcond, lapack_int* rank, double* work, + lapack_int lwork ); +lapack_int LAPACKE_cgelss_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* s, float rcond, + lapack_int* rank, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zgelss_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* s, double rcond, + lapack_int* rank, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +lapack_int LAPACKE_sgelsy_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* b, lapack_int ldb, lapack_int* jpvt, + float rcond, lapack_int* rank, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dgelsy_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, lapack_int* jpvt, + double rcond, lapack_int* rank, double* work, + lapack_int lwork ); +lapack_int LAPACKE_cgelsy_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_int* jpvt, float rcond, + lapack_int* rank, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zgelsy_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_int* jpvt, double rcond, + lapack_int* rank, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +lapack_int LAPACKE_sgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* jpvt, + float* tau, float* work, lapack_int lwork ); +lapack_int LAPACKE_dgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* jpvt, + double* tau, double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_sgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* jpvt, + float* tau, float* work ); +lapack_int LAPACKE_dgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* jpvt, + double* tau, double* work ); +lapack_int LAPACKE_cgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_float* tau, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* jpvt, lapack_complex_double* tau, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work ); +lapack_int LAPACKE_dgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work ); +lapack_int LAPACKE_cgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work ); +lapack_int LAPACKE_zgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work ); + +lapack_int LAPACKE_sgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sgerfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgerfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cgerfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgerfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgerfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, + lapack_int ldaf, const lapack_int* ipiv, + const float* r, const float* c, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgerfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* r, const double* c, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgerfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const float* r, const float* c, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgerfsx_work( int matrix_layout, char trans, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* r, const double* c, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sgerqf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgerqf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgerqf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgerqf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgesdd_work( int matrix_layout, char jobz, lapack_int m, + lapack_int n, float* a, lapack_int lda, + float* s, float* u, lapack_int ldu, float* vt, + lapack_int ldvt, float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dgesdd_work( int matrix_layout, char jobz, lapack_int m, + lapack_int n, double* a, lapack_int lda, + double* s, double* u, lapack_int ldu, + double* vt, lapack_int ldvt, double* work, + lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_cgesdd_work( int matrix_layout, char jobz, lapack_int m, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* s, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* vt, lapack_int ldvt, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int* iwork ); +lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* s, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* vt, lapack_int ldvt, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int* iwork ); + +lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobf, lapack_int whtsvd, + lapack_int m, lapack_int n, float* x, + lapack_int ldx, float* y, lapack_int ldy, + lapack_int nrnk, float* tol, lapack_int k, + float* reig, float* imeig, + float* z, lapack_int ldz, float* res, + float* b, lapack_int ldb, float* w, + lapack_int ldw, float* s, lapack_int lds, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobf, lapack_int whtsvd, + lapack_int m, lapack_int n, double* x, + lapack_int ldx, double* y, lapack_int ldy, + lapack_int nrnk, double* tol, lapack_int k, + double* reig, double *imeig, + double* z, lapack_int ldz, double* res, + double* b, lapack_int ldb, double* w, + lapack_int ldw, double* s, lapack_int lds, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobf, lapack_int whtsvd, + lapack_int m, lapack_int n, + lapack_complex_float* x, lapack_int ldx, + lapack_complex_float* y, lapack_int ldy, + lapack_int nrnk, float* tol, lapack_int k, + lapack_complex_float* eigs, + lapack_complex_float* z, lapack_int ldz, + float* res, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* w, lapack_int ldw, + lapack_complex_float* s, lapack_int lds, + lapack_complex_float* zwork, lapack_int lzwork, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobf, lapack_int whtsvd, + lapack_int m, lapack_int n, + lapack_complex_double* x, lapack_int ldx, + lapack_complex_double* y, lapack_int ldy, + lapack_int nrnk, double* tol, lapack_int k, + lapack_complex_double* eigs, + lapack_complex_double* z, lapack_int ldz, + double* res, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* w, lapack_int ldw, + lapack_complex_double* s, lapack_int lds, + lapack_complex_double* zwork, lapack_int lzwork, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobq, char jobt, char jobf, + lapack_int whtsvd, lapack_int m, lapack_int n, + float* f, lapack_int ldf, float* x, + lapack_int ldx, float* y, lapack_int ldy, + lapack_int nrnk, float* tol, lapack_int k, + float* reig, float *imeig, float* z, + lapack_int ldz, float* res, float* b, + lapack_int ldb, float* v, lapack_int ldv, + float* s, lapack_int lds, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobq, char jobt, char jobf, + lapack_int whtsvd, lapack_int m, lapack_int n, + double* f, lapack_int ldf, double* x, + lapack_int ldx, double* y, lapack_int ldy, + lapack_int nrnk, double* tol, lapack_int k, + double* reig, double* imeig, double* z, + lapack_int ldz, double* res, double* b, + lapack_int ldb, double* v, lapack_int ldv, + double* s, lapack_int lds, double* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobq, char jobt, char jobf, + lapack_int whtsvd, lapack_int m, lapack_int n, + lapack_complex_float* f, lapack_int ldf, + lapack_complex_float* x, lapack_int ldx, + lapack_complex_float* y, lapack_int ldy, + lapack_int nrnk, float* tol, lapack_int k, + lapack_complex_float* eigs, + lapack_complex_float* z, lapack_int ldz, + float* res, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* s, lapack_int lds, + lapack_complex_float* zwork, lapack_int lzwork, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork); + +lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, + char jobr, char jobq, char jobt, char jobf, + lapack_int whtsvd, lapack_int m, lapack_int n, + lapack_complex_double* f, lapack_int ldf, + lapack_complex_double* x, lapack_int ldx, + lapack_complex_double* y, lapack_int ldy, + lapack_int nrnk, double* tol, lapack_int k, + lapack_complex_double* eigs, + lapack_complex_double* z, lapack_int ldz, + double* res, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* s, lapack_int lds, + lapack_complex_double* zwork, lapack_int lzwork, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork); + +lapack_int LAPACKE_sgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + float* a, lapack_int lda, lapack_int* ipiv, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + double* a, lapack_int lda, lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); +lapack_int LAPACKE_dsgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + double* a, lapack_int lda, lapack_int* ipiv, + double* b, lapack_int ldb, double* x, + lapack_int ldx, double* work, float* swork, + lapack_int* iter ); +lapack_int LAPACKE_zcgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, lapack_complex_double* work, + lapack_complex_float* swork, double* rwork, + lapack_int* iter ); + +lapack_int LAPACKE_sgesvd_work( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, float* a, + lapack_int lda, float* s, float* u, + lapack_int ldu, float* vt, lapack_int ldvt, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgesvd_work( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* s, double* u, + lapack_int ldu, double* vt, lapack_int ldvt, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgesvd_work( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float* s, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* vt, + lapack_int ldvt, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zgesvd_work( int matrix_layout, char jobu, char jobvt, + lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* s, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* vt, + lapack_int ldvt, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +lapack_int LAPACKE_sgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, float* u, lapack_int ldu, + float* vt, lapack_int ldvt, + float* work, lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_dgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, double* u, lapack_int ldu, + double* vt, lapack_int ldvt, + double* work, lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_cgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, lapack_int* ns, + float* s, lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* vt, lapack_int ldvt, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int* iwork ); +lapack_int LAPACKE_zgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, lapack_int* ns, + double* s, lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* vt, lapack_int ldvt, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int* iwork ); + +lapack_int LAPACKE_sgesvdq_work( int matrix_layout, char joba, char jobp, + char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, float* a, + lapack_int lda, float* s, float* u, + lapack_int ldu, float* v, lapack_int ldv, + lapack_int* numrank, + lapack_int* iwork, lapack_int liwork, + float* work, lapack_int lwork, + float* rwork, lapack_int lrwork); +lapack_int LAPACKE_dgesvdq_work( int matrix_layout, char joba, char jobp, + char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, double* a, + lapack_int lda, double* s, double* u, + lapack_int ldu, double* v, lapack_int ldv, + lapack_int* numrank, + lapack_int* iwork, lapack_int liwork, + double* work, lapack_int lwork, + double* rwork, lapack_int lrwork); +lapack_int LAPACKE_cgesvdq_work( int matrix_layout, char joba, char jobp, + char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float* s, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, + lapack_int ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int liwork, + lapack_complex_float* cwork, lapack_int lcwork, + float* rwork, lapack_int lrwork); +lapack_int LAPACKE_zgesvdq_work( int matrix_layout, char joba, char jobp, + char jobr, char jobu, char jobv, + lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* s, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, + lapack_int ldv, lapack_int* numrank, + lapack_int* iwork, lapack_int liwork, + lapack_complex_double* cwork, lapack_int lcwork, + double* rwork, lapack_int lrwork); + +lapack_int LAPACKE_sgesvj_work( int matrix_layout, char joba, char jobu, + char jobv, lapack_int m, lapack_int n, float* a, + lapack_int lda, float* sva, lapack_int mv, + float* v, lapack_int ldv, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dgesvj_work( int matrix_layout, char joba, char jobu, + char jobv, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* sva, + lapack_int mv, double* v, lapack_int ldv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgesvj_work( int matrix_layout, char joba, char jobu, + char jobv, lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda, float* sva, lapack_int mv, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* cwork, lapack_int lwork, + float* rwork,lapack_int lrwork ); +lapack_int LAPACKE_zgesvj_work( int matrix_layout, char joba, char jobu, + char jobv, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, double* sva, + lapack_int mv, lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* cwork, lapack_int lwork, + double* rwork, lapack_int lrwork ); + +lapack_int LAPACKE_sgesvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, + float* c, float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dgesvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, + double* c, double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, double* work, lapack_int* iwork ); +lapack_int LAPACKE_cgesvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, + float* c, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zgesvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, + double* c, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sgesvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, + float* c, float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgesvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, + double* c, double* b, lapack_int ldb, + double* x, lapack_int ldx, double* rcond, + double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgesvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* r, + float* c, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgesvxx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* r, + double* c, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* rpvgrw, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgetf2_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetf2_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetf2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetf2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetrf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetrf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetrf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_cgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_sgetri_work( int matrix_layout, lapack_int n, float* a, + lapack_int lda, const lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgetri_work( int matrix_layout, lapack_int n, double* a, + lapack_int lda, const lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgetri_work( int matrix_layout, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgetri_work( int matrix_layout, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgetrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgetrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cgetrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zgetrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sggbak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const float* lscale, const float* rscale, + lapack_int m, float* v, lapack_int ldv ); +lapack_int LAPACKE_dggbak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const double* lscale, const double* rscale, + lapack_int m, double* v, lapack_int ldv ); +lapack_int LAPACKE_cggbak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const float* lscale, const float* rscale, + lapack_int m, lapack_complex_float* v, + lapack_int ldv ); +lapack_int LAPACKE_zggbak_work( int matrix_layout, char job, char side, + lapack_int n, lapack_int ilo, lapack_int ihi, + const double* lscale, const double* rscale, + lapack_int m, lapack_complex_double* v, + lapack_int ldv ); + +lapack_int LAPACKE_sggbal_work( int matrix_layout, char job, lapack_int n, + float* a, lapack_int lda, float* b, + lapack_int ldb, lapack_int* ilo, + lapack_int* ihi, float* lscale, float* rscale, + float* work ); +lapack_int LAPACKE_dggbal_work( int matrix_layout, char job, lapack_int n, + double* a, lapack_int lda, double* b, + lapack_int ldb, lapack_int* ilo, + lapack_int* ihi, double* lscale, double* rscale, + double* work ); +lapack_int LAPACKE_cggbal_work( int matrix_layout, char job, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, float* lscale, + float* rscale, float* work ); +lapack_int LAPACKE_zggbal_work( int matrix_layout, char job, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* ilo, lapack_int* ihi, + double* lscale, double* rscale, double* work ); + +lapack_int LAPACKE_sgges_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_S_SELECT3 selctg, lapack_int n, + float* a, lapack_int lda, float* b, + lapack_int ldb, lapack_int* sdim, float* alphar, + float* alphai, float* beta, float* vsl, + lapack_int ldvsl, float* vsr, lapack_int ldvsr, + float* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_dgges_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_D_SELECT3 selctg, lapack_int n, + double* a, lapack_int lda, double* b, + lapack_int ldb, lapack_int* sdim, double* alphar, + double* alphai, double* beta, double* vsl, + lapack_int ldvsl, double* vsr, lapack_int ldvsr, + double* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_cgges_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_C_SELECT2 selctg, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vsl, lapack_int ldvsl, + lapack_complex_float* vsr, lapack_int ldvsr, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_logical* bwork ); +lapack_int LAPACKE_zgges_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_Z_SELECT2 selctg, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_logical* bwork ); + +lapack_int LAPACKE_sgges3_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_S_SELECT3 selctg, + lapack_int n, + float* a, lapack_int lda, + float* b, lapack_int ldb, lapack_int* sdim, + float* alphar, float* alphai, float* beta, + float* vsl, lapack_int ldvsl, + float* vsr, lapack_int ldvsr, + float* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_dgges3_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_D_SELECT3 selctg, + lapack_int n, + double* a, lapack_int lda, + double* b, lapack_int ldb, lapack_int* sdim, + double* alphar, double* alphai, double* beta, + double* vsl, lapack_int ldvsl, + double* vsr, lapack_int ldvsr, + double* work, lapack_int lwork, + lapack_logical* bwork ); +lapack_int LAPACKE_cgges3_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_C_SELECT2 selctg, + lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vsl, lapack_int ldvsl, + lapack_complex_float* vsr, lapack_int ldvsr, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_logical* bwork ); +lapack_int LAPACKE_zgges3_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_Z_SELECT2 selctg, + lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_int* sdim, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_logical* bwork ); + +lapack_int LAPACKE_sggesx_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_S_SELECT3 selctg, char sense, + lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, lapack_int* sdim, + float* alphar, float* alphai, float* beta, + float* vsl, lapack_int ldvsl, float* vsr, + lapack_int ldvsr, float* rconde, float* rcondv, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork, + lapack_logical* bwork ); +lapack_int LAPACKE_dggesx_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_D_SELECT3 selctg, char sense, + lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, lapack_int* sdim, + double* alphar, double* alphai, double* beta, + double* vsl, lapack_int ldvsl, double* vsr, + lapack_int ldvsr, double* rconde, + double* rcondv, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork, + lapack_logical* bwork ); +lapack_int LAPACKE_cggesx_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_C_SELECT2 selctg, char sense, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_int* sdim, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vsl, lapack_int ldvsl, + lapack_complex_float* vsr, lapack_int ldvsr, + float* rconde, float* rcondv, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int* iwork, + lapack_int liwork, lapack_logical* bwork ); +lapack_int LAPACKE_zggesx_work( int matrix_layout, char jobvsl, char jobvsr, + char sort, LAPACK_Z_SELECT2 selctg, char sense, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_int* sdim, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vsl, lapack_int ldvsl, + lapack_complex_double* vsr, lapack_int ldvsr, + double* rconde, double* rcondv, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int* iwork, + lapack_int liwork, lapack_logical* bwork ); + +lapack_int LAPACKE_sggev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, float* a, lapack_int lda, float* b, + lapack_int ldb, float* alphar, float* alphai, + float* beta, float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dggev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double* alphar, + double* alphai, double* beta, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cggev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zggev_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_sggev3_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + float* a, lapack_int lda, + float* b, lapack_int ldb, + float* alphar, float* alphai, float* beta, + float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dggev3_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + double* a, lapack_int lda, + double* b, lapack_int ldb, + double* alphar, double* alphai, double* beta, + double* vl, lapack_int ldvl, + double* vr, lapack_int ldvr, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cggev3_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zggev3_work( int matrix_layout, char jobvl, char jobvr, + lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_sggevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* alphar, float* alphai, float* beta, + float* vl, lapack_int ldvl, float* vr, + lapack_int ldvr, lapack_int* ilo, + lapack_int* ihi, float* lscale, float* rscale, + float* abnrm, float* bbnrm, float* rconde, + float* rcondv, float* work, lapack_int lwork, + lapack_int* iwork, lapack_logical* bwork ); +lapack_int LAPACKE_dggevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* alphar, double* alphai, double* beta, + double* vl, lapack_int ldvl, double* vr, + lapack_int ldvr, lapack_int* ilo, + lapack_int* ihi, double* lscale, double* rscale, + double* abnrm, double* bbnrm, double* rconde, + double* rcondv, double* work, lapack_int lwork, + lapack_int* iwork, lapack_logical* bwork ); +lapack_int LAPACKE_cggevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, float* lscale, + float* rscale, float* abnrm, float* bbnrm, + float* rconde, float* rcondv, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int* iwork, + lapack_logical* bwork ); +lapack_int LAPACKE_zggevx_work( int matrix_layout, char balanc, char jobvl, + char jobvr, char sense, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int* ilo, lapack_int* ihi, + double* lscale, double* rscale, double* abnrm, + double* bbnrm, double* rconde, double* rcondv, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int* iwork, + lapack_logical* bwork ); + +lapack_int LAPACKE_sggglm_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, float* a, lapack_int lda, + float* b, lapack_int ldb, float* d, float* x, + float* y, float* work, lapack_int lwork ); +lapack_int LAPACKE_dggglm_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, double* a, lapack_int lda, + double* b, lapack_int ldb, double* d, double* x, + double* y, double* work, lapack_int lwork ); +lapack_int LAPACKE_cggglm_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* d, + lapack_complex_float* x, + lapack_complex_float* y, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zggglm_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* d, + lapack_complex_double* x, + lapack_complex_double* y, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgghrd_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* a, lapack_int lda, float* b, + lapack_int ldb, float* q, lapack_int ldq, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dgghrd_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* a, lapack_int lda, double* b, + lapack_int ldb, double* q, lapack_int ldq, + double* z, lapack_int ldz ); +lapack_int LAPACKE_cgghrd_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz ); +lapack_int LAPACKE_zgghrd_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz ); + +lapack_int LAPACKE_sgghd3_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* a, lapack_int lda, + float* b, lapack_int ldb, + float* q, lapack_int ldq, + float* z, lapack_int ldz, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgghd3_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* a, lapack_int lda, + double* b, lapack_int ldb, + double* q, lapack_int ldq, + double* z, lapack_int ldz, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgghd3_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgghd3_work( int matrix_layout, char compq, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sgglse_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, float* a, lapack_int lda, + float* b, lapack_int ldb, float* c, float* d, + float* x, float* work, lapack_int lwork ); +lapack_int LAPACKE_dgglse_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, double* a, lapack_int lda, + double* b, lapack_int ldb, double* c, double* d, + double* x, double* work, lapack_int lwork ); +lapack_int LAPACKE_cgglse_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_complex_float* d, + lapack_complex_float* x, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgglse_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_complex_double* d, + lapack_complex_double* x, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sggqrf_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, float* a, lapack_int lda, + float* taua, float* b, lapack_int ldb, + float* taub, float* work, lapack_int lwork ); +lapack_int LAPACKE_dggqrf_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, double* a, lapack_int lda, + double* taua, double* b, lapack_int ldb, + double* taub, double* work, lapack_int lwork ); +lapack_int LAPACKE_cggqrf_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* taua, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* taub, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zggqrf_work( int matrix_layout, lapack_int n, lapack_int m, + lapack_int p, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* taua, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* taub, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sggrqf_work( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, float* a, lapack_int lda, + float* taua, float* b, lapack_int ldb, + float* taub, float* work, lapack_int lwork ); +lapack_int LAPACKE_dggrqf_work( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, double* a, lapack_int lda, + double* taua, double* b, lapack_int ldb, + double* taub, double* work, lapack_int lwork ); +lapack_int LAPACKE_cggrqf_work( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* taua, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* taub, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zggrqf_work( int matrix_layout, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* taua, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* taub, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sggsvd_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + float* a, lapack_int lda, float* b, + lapack_int ldb, float* alpha, float* beta, + float* u, lapack_int ldu, float* v, + lapack_int ldv, float* q, lapack_int ldq, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dggsvd_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + double* a, lapack_int lda, double* b, + lapack_int ldb, double* alpha, double* beta, + double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cggsvd_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float* alpha, float* beta, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* work, float* rwork, + lapack_int* iwork ); +lapack_int LAPACKE_zggsvd_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* work, double* rwork, + lapack_int* iwork ); + +lapack_int LAPACKE_sggsvd3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + float* a, lapack_int lda, float* b, + lapack_int ldb, float* alpha, float* beta, + float* u, lapack_int ldu, float* v, + lapack_int ldv, float* q, lapack_int ldq, + float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dggsvd3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + double* a, lapack_int lda, double* b, + lapack_int ldb, double* alpha, double* beta, + double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq, + double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_cggsvd3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float* alpha, float* beta, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int* iwork ); +lapack_int LAPACKE_zggsvd3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int n, + lapack_int p, lapack_int* k, lapack_int* l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* alpha, double* beta, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int* iwork ); + +lapack_int LAPACKE_sggsvp_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, + float* u, lapack_int ldu, float* v, + lapack_int ldv, float* q, lapack_int ldq, + lapack_int* iwork, float* tau, float* work ); +lapack_int LAPACKE_dggsvp_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double tola, + double tolb, lapack_int* k, lapack_int* l, + double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq, + lapack_int* iwork, double* tau, double* work ); +lapack_int LAPACKE_cggsvp_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float tola, float tolb, + lapack_int* k, lapack_int* l, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq, + lapack_int* iwork, float* rwork, + lapack_complex_float* tau, + lapack_complex_float* work ); +lapack_int LAPACKE_zggsvp_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double tola, double tolb, + lapack_int* k, lapack_int* l, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_int* iwork, double* rwork, + lapack_complex_double* tau, + lapack_complex_double* work ); + +lapack_int LAPACKE_sggsvp3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, float tola, + float tolb, lapack_int* k, lapack_int* l, + float* u, lapack_int ldu, float* v, + lapack_int ldv, float* q, lapack_int ldq, + lapack_int* iwork, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dggsvp3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double tola, + double tolb, lapack_int* k, lapack_int* l, + double* u, lapack_int ldu, double* v, + lapack_int ldv, double* q, lapack_int ldq, + lapack_int* iwork, double* tau, double* work, + lapack_int lwork ); +lapack_int LAPACKE_cggsvp3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float tola, float tolb, + lapack_int* k, lapack_int* l, + lapack_complex_float* u, lapack_int ldu, + lapack_complex_float* v, lapack_int ldv, + lapack_complex_float* q, lapack_int ldq, + lapack_int* iwork, float* rwork, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zggsvp3_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double tola, double tolb, + lapack_int* k, lapack_int* l, + lapack_complex_double* u, lapack_int ldu, + lapack_complex_double* v, lapack_int ldv, + lapack_complex_double* q, lapack_int ldq, + lapack_int* iwork, double* rwork, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgtcon_work( char norm, lapack_int n, const float* dl, + const float* d, const float* du, + const float* du2, const lapack_int* ipiv, + float anorm, float* rcond, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgtcon_work( char norm, lapack_int n, const double* dl, + const double* d, const double* du, + const double* du2, const lapack_int* ipiv, + double anorm, double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgtcon_work( char norm, lapack_int n, + const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* du2, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zgtcon_work( char norm, lapack_int n, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* du2, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_sgtrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* dl, + const float* d, const float* du, + const float* dlf, const float* df, + const float* duf, const float* du2, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dgtrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* dl, + const double* d, const double* du, + const double* dlf, const double* df, + const double* duf, const double* du2, + const lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cgtrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* dlf, + const lapack_complex_float* df, + const lapack_complex_float* duf, + const lapack_complex_float* du2, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgtrfs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* dlf, + const lapack_complex_double* df, + const lapack_complex_double* duf, + const lapack_complex_double* du2, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + float* dl, float* d, float* du, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + double* dl, double* d, double* du, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_float* dl, + lapack_complex_float* d, + lapack_complex_float* du, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + lapack_complex_double* dl, + lapack_complex_double* d, + lapack_complex_double* du, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sgtsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, const float* dl, + const float* d, const float* du, float* dlf, + float* df, float* duf, float* du2, + lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dgtsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, const double* dl, + const double* d, const double* du, double* dlf, + double* df, double* duf, double* du2, + lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cgtsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + lapack_complex_float* dlf, + lapack_complex_float* df, + lapack_complex_float* duf, + lapack_complex_float* du2, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zgtsvx_work( int matrix_layout, char fact, char trans, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + lapack_complex_double* dlf, + lapack_complex_double* df, + lapack_complex_double* duf, + lapack_complex_double* du2, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sgttrf_work( lapack_int n, float* dl, float* d, float* du, + float* du2, lapack_int* ipiv ); +lapack_int LAPACKE_dgttrf_work( lapack_int n, double* dl, double* d, double* du, + double* du2, lapack_int* ipiv ); +lapack_int LAPACKE_cgttrf_work( lapack_int n, lapack_complex_float* dl, + lapack_complex_float* d, + lapack_complex_float* du, + lapack_complex_float* du2, lapack_int* ipiv ); +lapack_int LAPACKE_zgttrf_work( lapack_int n, lapack_complex_double* dl, + lapack_complex_double* d, + lapack_complex_double* du, + lapack_complex_double* du2, lapack_int* ipiv ); + +lapack_int LAPACKE_sgttrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const float* dl, + const float* d, const float* du, + const float* du2, const lapack_int* ipiv, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dgttrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const double* dl, + const double* d, const double* du, + const double* du2, const lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cgttrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, const lapack_complex_float* dl, + const lapack_complex_float* d, + const lapack_complex_float* du, + const lapack_complex_float* du2, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zgttrs_work( int matrix_layout, char trans, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* dl, + const lapack_complex_double* d, + const lapack_complex_double* du, + const lapack_complex_double* du2, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chbev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zhbev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chbevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zhbevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_chbevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* q, lapack_int ldq, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + float* rwork, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_zhbevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* q, lapack_int ldq, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + double* rwork, lapack_int* iwork, + lapack_int* ifail ); + +lapack_int LAPACKE_chbgst_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* bb, lapack_int ldbb, + lapack_complex_float* x, lapack_int ldx, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zhbgst_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + const lapack_complex_double* bb, + lapack_int ldbb, lapack_complex_double* x, + lapack_int ldx, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chbgv_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* bb, lapack_int ldbb, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zhbgv_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* bb, lapack_int ldbb, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chbgvd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* bb, lapack_int ldbb, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zhbgvd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* bb, lapack_int ldbb, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_chbgvx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int ka, + lapack_int kb, lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* bb, + lapack_int ldbb, lapack_complex_float* q, + lapack_int ldq, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zhbgvx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int ka, + lapack_int kb, lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* bb, + lapack_int ldbb, lapack_complex_double* q, + lapack_int ldq, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_chbtrd_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + float* d, float* e, lapack_complex_float* q, + lapack_int ldq, lapack_complex_float* work ); +lapack_int LAPACKE_zhbtrd_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + double* d, double* e, lapack_complex_double* q, + lapack_int ldq, lapack_complex_double* work ); + +lapack_int LAPACKE_checon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zhecon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_cheequb_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax, + lapack_complex_float* work ); +lapack_int LAPACKE_zheequb_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax, + lapack_complex_double* work ); + +lapack_int LAPACKE_cheev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zheev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* w, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_cheevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_zheevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* w, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_cheevr_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* isuppz, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_zheevr_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_int* isuppz, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_cheevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zheevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_chegst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhegst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_chegv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zhegv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* w, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +lapack_int LAPACKE_chegvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float* w, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zhegvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* w, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_chegvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zhegvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_cherfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zherfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_cherfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const float* s, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zherfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* s, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chesv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhesv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_chesvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zhesvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_chesvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zhesvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chetrd_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float* d, float* e, lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhetrd_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* d, double* e, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_chetrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zhetrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_chetri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work ); +lapack_int LAPACKE_zhetri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work ); + +lapack_int LAPACKE_chetrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chfrk_work( int matrix_layout, char transr, char uplo, + char trans, lapack_int n, lapack_int k, + float alpha, const lapack_complex_float* a, + lapack_int lda, float beta, + lapack_complex_float* c ); +lapack_int LAPACKE_zhfrk_work( int matrix_layout, char transr, char uplo, + char trans, lapack_int n, lapack_int k, + double alpha, const lapack_complex_double* a, + lapack_int lda, double beta, + lapack_complex_double* c ); + +lapack_int LAPACKE_shgeqz_work( int matrix_layout, char job, char compq, + char compz, lapack_int n, lapack_int ilo, + lapack_int ihi, float* h, lapack_int ldh, + float* t, lapack_int ldt, float* alphar, + float* alphai, float* beta, float* q, + lapack_int ldq, float* z, lapack_int ldz, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dhgeqz_work( int matrix_layout, char job, char compq, + char compz, lapack_int n, lapack_int ilo, + lapack_int ihi, double* h, lapack_int ldh, + double* t, lapack_int ldt, double* alphar, + double* alphai, double* beta, double* q, + lapack_int ldq, double* z, lapack_int ldz, + double* work, lapack_int lwork ); +lapack_int LAPACKE_chgeqz_work( int matrix_layout, char job, char compq, + char compz, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_float* h, + lapack_int ldh, lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zhgeqz_work( int matrix_layout, char job, char compq, + char compz, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_double* h, + lapack_int ldh, lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_chpcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zhpcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_chpev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* ap, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zhpev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* ap, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_chpevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* ap, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zhpevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* ap, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_chpevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_float* ap, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zhpevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_double* ap, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_chpgst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_float* ap, + const lapack_complex_float* bp ); +lapack_int LAPACKE_zhpgst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, lapack_complex_double* ap, + const lapack_complex_double* bp ); + +lapack_int LAPACKE_chpgv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_float* ap, + lapack_complex_float* bp, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zhpgv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_double* ap, + lapack_complex_double* bp, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_chpgvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_float* ap, + lapack_complex_float* bp, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_zhpgvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_double* ap, + lapack_complex_double* bp, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_chpgvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_float* ap, + lapack_complex_float* bp, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zhpgvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, + lapack_complex_double* ap, + lapack_complex_double* bp, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_chprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zhprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_chpsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhpsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_chpsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + lapack_complex_float* afp, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zhpsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + lapack_complex_double* afp, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_chptrd_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, float* d, float* e, + lapack_complex_float* tau ); +lapack_int LAPACKE_zhptrd_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, double* d, double* e, + lapack_complex_double* tau ); + +lapack_int LAPACKE_chptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, lapack_int* ipiv ); +lapack_int LAPACKE_zhptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, lapack_int* ipiv ); + +lapack_int LAPACKE_chptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, + const lapack_int* ipiv, + lapack_complex_float* work ); +lapack_int LAPACKE_zhptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, + const lapack_int* ipiv, + lapack_complex_double* work ); + +lapack_int LAPACKE_chptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zhptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_shsein_work( int matrix_layout, char job, char eigsrc, + char initv, lapack_logical* select, + lapack_int n, const float* h, lapack_int ldh, + float* wr, const float* wi, float* vl, + lapack_int ldvl, float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, float* work, + lapack_int* ifaill, lapack_int* ifailr ); +lapack_int LAPACKE_dhsein_work( int matrix_layout, char job, char eigsrc, + char initv, lapack_logical* select, + lapack_int n, const double* h, lapack_int ldh, + double* wr, const double* wi, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, double* work, + lapack_int* ifaill, lapack_int* ifailr ); +lapack_int LAPACKE_chsein_work( int matrix_layout, char job, char eigsrc, + char initv, const lapack_logical* select, + lapack_int n, const lapack_complex_float* h, + lapack_int ldh, lapack_complex_float* w, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_float* work, float* rwork, + lapack_int* ifaill, lapack_int* ifailr ); +lapack_int LAPACKE_zhsein_work( int matrix_layout, char job, char eigsrc, + char initv, const lapack_logical* select, + lapack_int n, const lapack_complex_double* h, + lapack_int ldh, lapack_complex_double* w, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_double* work, double* rwork, + lapack_int* ifaill, lapack_int* ifailr ); + +lapack_int LAPACKE_shseqr_work( int matrix_layout, char job, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + float* h, lapack_int ldh, float* wr, float* wi, + float* z, lapack_int ldz, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dhseqr_work( int matrix_layout, char job, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + double* h, lapack_int ldh, double* wr, + double* wi, double* z, lapack_int ldz, + double* work, lapack_int lwork ); +lapack_int LAPACKE_chseqr_work( int matrix_layout, char job, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_float* h, lapack_int ldh, + lapack_complex_float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhseqr_work( int matrix_layout, char job, char compz, + lapack_int n, lapack_int ilo, lapack_int ihi, + lapack_complex_double* h, lapack_int ldh, + lapack_complex_double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_clacgv_work( lapack_int n, lapack_complex_float* x, + lapack_int incx ); +lapack_int LAPACKE_zlacgv_work( lapack_int n, lapack_complex_double* x, + lapack_int incx ); + +lapack_int LAPACKE_slacn2_work( lapack_int n, float* v, float* x, + lapack_int* isgn, float* est, lapack_int* kase, + lapack_int* isave ); +lapack_int LAPACKE_dlacn2_work( lapack_int n, double* v, double* x, + lapack_int* isgn, double* est, lapack_int* kase, + lapack_int* isave ); +lapack_int LAPACKE_clacn2_work( lapack_int n, lapack_complex_float* v, + lapack_complex_float* x, + float* est, lapack_int* kase, + lapack_int* isave ); +lapack_int LAPACKE_zlacn2_work( lapack_int n, lapack_complex_double* v, + lapack_complex_double* x, + double* est, lapack_int* kase, + lapack_int* isave ); + +lapack_int LAPACKE_slacpy_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const float* a, lapack_int lda, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dlacpy_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const double* a, lapack_int lda, + double* b, lapack_int ldb ); +lapack_int LAPACKE_clacpy_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zlacpy_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_clacp2_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zlacp2_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, const double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_zlag2c_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_float* sa, lapack_int ldsa ); + +lapack_int LAPACKE_slag2d_work( int matrix_layout, lapack_int m, lapack_int n, + const float* sa, lapack_int ldsa, double* a, + lapack_int lda ); + +lapack_int LAPACKE_dlag2s_work( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, float* sa, + lapack_int ldsa ); + +lapack_int LAPACKE_clag2z_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* sa, lapack_int ldsa, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_slagge_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* d, + float* a, lapack_int lda, lapack_int* iseed, + float* work ); +lapack_int LAPACKE_dlagge_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* d, + double* a, lapack_int lda, lapack_int* iseed, + double* work ); +lapack_int LAPACKE_clagge_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const float* d, + lapack_complex_float* a, lapack_int lda, + lapack_int* iseed, lapack_complex_float* work ); +lapack_int LAPACKE_zlagge_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, const double* d, + lapack_complex_double* a, lapack_int lda, + lapack_int* iseed, + lapack_complex_double* work ); + +lapack_int LAPACKE_claghe_work( int matrix_layout, lapack_int n, lapack_int k, + const float* d, lapack_complex_float* a, + lapack_int lda, lapack_int* iseed, + lapack_complex_float* work ); +lapack_int LAPACKE_zlaghe_work( int matrix_layout, lapack_int n, lapack_int k, + const double* d, lapack_complex_double* a, + lapack_int lda, lapack_int* iseed, + lapack_complex_double* work ); + +lapack_int LAPACKE_slagsy_work( int matrix_layout, lapack_int n, lapack_int k, + const float* d, float* a, lapack_int lda, + lapack_int* iseed, float* work ); +lapack_int LAPACKE_dlagsy_work( int matrix_layout, lapack_int n, lapack_int k, + const double* d, double* a, lapack_int lda, + lapack_int* iseed, double* work ); +lapack_int LAPACKE_clagsy_work( int matrix_layout, lapack_int n, lapack_int k, + const float* d, lapack_complex_float* a, + lapack_int lda, lapack_int* iseed, + lapack_complex_float* work ); +lapack_int LAPACKE_zlagsy_work( int matrix_layout, lapack_int n, lapack_int k, + const double* d, lapack_complex_double* a, + lapack_int lda, lapack_int* iseed, + lapack_complex_double* work ); + +lapack_int LAPACKE_slapmr_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, float* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_dlapmr_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, double* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_clapmr_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, + lapack_complex_float* x, lapack_int ldx, + lapack_int* k ); +lapack_int LAPACKE_zlapmr_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, + lapack_complex_double* x, lapack_int ldx, + lapack_int* k ); + +lapack_int LAPACKE_slapmt_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, float* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_dlapmt_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, double* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_clapmt_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, + lapack_complex_float* x, lapack_int ldx, + lapack_int* k ); +lapack_int LAPACKE_zlapmt_work( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, + lapack_complex_double* x, lapack_int ldx, + lapack_int* k ); + +lapack_int LAPACKE_slartgp_work( float f, float g, float* cs, float* sn, + float* r ); +lapack_int LAPACKE_dlartgp_work( double f, double g, double* cs, double* sn, + double* r ); + +lapack_int LAPACKE_slartgs_work( float x, float y, float sigma, float* cs, + float* sn ); +lapack_int LAPACKE_dlartgs_work( double x, double y, double sigma, double* cs, + double* sn ); + +float LAPACKE_slapy2_work( float x, float y ); +double LAPACKE_dlapy2_work( double x, double y ); + +float LAPACKE_slapy3_work( float x, float y, float z ); +double LAPACKE_dlapy3_work( double x, double y, double z ); + +float LAPACKE_slamch_work( char cmach ); +double LAPACKE_dlamch_work( char cmach ); + +float LAPACKE_slangb_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const float* ab, + lapack_int ldab, float* work ); +double LAPACKE_dlangb_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, const double* ab, + lapack_int ldab, double* work ); +float LAPACKE_clangb_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float* ab, lapack_int ldab, + float* work ); +double LAPACKE_zlangb_work( int matrix_layout, char norm, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double* ab, lapack_int ldab, + double* work ); + +float LAPACKE_slange_work( int matrix_layout, char norm, lapack_int m, + lapack_int n, const float* a, lapack_int lda, + float* work ); +double LAPACKE_dlange_work( int matrix_layout, char norm, lapack_int m, + lapack_int n, const double* a, lapack_int lda, + double* work ); +float LAPACKE_clange_work( int matrix_layout, char norm, lapack_int m, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, float* work ); +double LAPACKE_zlange_work( int matrix_layout, char norm, lapack_int m, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, double* work ); + +float LAPACKE_clanhe_work( int matrix_layout, char norm, char uplo, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, float* work ); +double LAPACKE_zlanhe_work( int matrix_layout, char norm, char uplo, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, double* work ); + +lapack_int LAPACKE_clacrm_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* a, + lapack_int lda, const float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_zlacrm_work( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* a, + lapack_int lda, const double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_int ldc, double* work ); + +lapack_int LAPACKE_clarcm_work( int matrix_layout, lapack_int m, lapack_int n, + const float* a, lapack_int lda, + const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_zlarcm_work( int matrix_layout, lapack_int m, lapack_int n, + const double* a, lapack_int lda, + const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* c, + lapack_int ldc, double* work ); + +float LAPACKE_slansy_work( int matrix_layout, char norm, char uplo, + lapack_int n, const float* a, lapack_int lda, + float* work ); +double LAPACKE_dlansy_work( int matrix_layout, char norm, char uplo, + lapack_int n, const double* a, lapack_int lda, + double* work ); +float LAPACKE_clansy_work( int matrix_layout, char norm, char uplo, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, float* work ); +double LAPACKE_zlansy_work( int matrix_layout, char norm, char uplo, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, double* work ); + +float LAPACKE_slantr_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int m, lapack_int n, const float* a, + lapack_int lda, float* work ); +double LAPACKE_dlantr_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int m, lapack_int n, + const double* a, lapack_int lda, double* work ); +float LAPACKE_clantr_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* work ); +double LAPACKE_zlantr_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* work ); + +lapack_int LAPACKE_slarfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, const float* v, + lapack_int ldv, const float* t, lapack_int ldt, + float* c, lapack_int ldc, float* work, + lapack_int ldwork ); +lapack_int LAPACKE_dlarfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, const double* v, + lapack_int ldv, const double* t, lapack_int ldt, + double* c, lapack_int ldc, double* work, + lapack_int ldwork ); +lapack_int LAPACKE_clarfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int ldwork ); +lapack_int LAPACKE_zlarfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, + lapack_int ldwork ); + +lapack_int LAPACKE_slarfg_work( lapack_int n, float* alpha, float* x, + lapack_int incx, float* tau ); +lapack_int LAPACKE_dlarfg_work( lapack_int n, double* alpha, double* x, + lapack_int incx, double* tau ); +lapack_int LAPACKE_clarfg_work( lapack_int n, lapack_complex_float* alpha, + lapack_complex_float* x, lapack_int incx, + lapack_complex_float* tau ); +lapack_int LAPACKE_zlarfg_work( lapack_int n, lapack_complex_double* alpha, + lapack_complex_double* x, lapack_int incx, + lapack_complex_double* tau ); + +lapack_int LAPACKE_slarft_work( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, const float* v, + lapack_int ldv, const float* tau, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dlarft_work( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, const double* v, + lapack_int ldv, const double* tau, double* t, + lapack_int ldt ); +lapack_int LAPACKE_clarft_work( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* tau, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zlarft_work( int matrix_layout, char direct, char storev, + lapack_int n, lapack_int k, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* tau, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_slarfx_work( int matrix_layout, char side, lapack_int m, + lapack_int n, const float* v, float tau, + float* c, lapack_int ldc, float* work ); +lapack_int LAPACKE_dlarfx_work( int matrix_layout, char side, lapack_int m, + lapack_int n, const double* v, double tau, + double* c, lapack_int ldc, double* work ); +lapack_int LAPACKE_clarfx_work( int matrix_layout, char side, lapack_int m, + lapack_int n, const lapack_complex_float* v, + lapack_complex_float tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work ); +lapack_int LAPACKE_zlarfx_work( int matrix_layout, char side, lapack_int m, + lapack_int n, const lapack_complex_double* v, + lapack_complex_double tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work ); + +lapack_int LAPACKE_slarnv_work( lapack_int idist, lapack_int* iseed, + lapack_int n, float* x ); +lapack_int LAPACKE_dlarnv_work( lapack_int idist, lapack_int* iseed, + lapack_int n, double* x ); +lapack_int LAPACKE_clarnv_work( lapack_int idist, lapack_int* iseed, + lapack_int n, lapack_complex_float* x ); +lapack_int LAPACKE_zlarnv_work( lapack_int idist, lapack_int* iseed, + lapack_int n, lapack_complex_double* x ); + + +lapack_int LAPACKE_slascl_work( int matrix_layout, char type, lapack_int kl, + lapack_int ku, float cfrom, float cto, + lapack_int m, lapack_int n, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlascl_work( int matrix_layout, char type, lapack_int kl, + lapack_int ku, double cfrom, double cto, + lapack_int m, lapack_int n, double* a, + lapack_int lda ); +lapack_int LAPACKE_clascl_work( int matrix_layout, char type, lapack_int kl, + lapack_int ku, float cfrom, float cto, + lapack_int m, lapack_int n, lapack_complex_float* a, + lapack_int lda ); +lapack_int LAPACKE_zlascl_work( int matrix_layout, char type, lapack_int kl, + lapack_int ku, double cfrom, double cto, + lapack_int m, lapack_int n, lapack_complex_double* a, + lapack_int lda ); + +lapack_int LAPACKE_slaset_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, float alpha, float beta, float* a, + lapack_int lda ); +lapack_int LAPACKE_dlaset_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, double alpha, double beta, + double* a, lapack_int lda ); +lapack_int LAPACKE_claset_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, lapack_complex_float alpha, + lapack_complex_float beta, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zlaset_work( int matrix_layout, char uplo, lapack_int m, + lapack_int n, lapack_complex_double alpha, + lapack_complex_double beta, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_slasrt_work( char id, lapack_int n, float* d ); +lapack_int LAPACKE_dlasrt_work( char id, lapack_int n, double* d ); + +lapack_int LAPACKE_slassq_work( lapack_int n, float* x, lapack_int incx, float* scale, float* sumsq ); +lapack_int LAPACKE_dlassq_work( lapack_int n, double* x, lapack_int incx, double* scale, double* sumsq ); +lapack_int LAPACKE_classq_work( lapack_int n, lapack_complex_float* x, lapack_int incx, float* scale, float* sumsq ); +lapack_int LAPACKE_zlassq_work( lapack_int n, lapack_complex_double* x, lapack_int incx, double* scale, double* sumsq ); + +lapack_int LAPACKE_slaswp_work( int matrix_layout, lapack_int n, float* a, + lapack_int lda, lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); +lapack_int LAPACKE_dlaswp_work( int matrix_layout, lapack_int n, double* a, + lapack_int lda, lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); +lapack_int LAPACKE_claswp_work( int matrix_layout, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); +lapack_int LAPACKE_zlaswp_work( int matrix_layout, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int k1, lapack_int k2, + const lapack_int* ipiv, lapack_int incx ); + +lapack_int LAPACKE_slatms_work( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, + float* d, lapack_int mode, float cond, + float dmax, lapack_int kl, lapack_int ku, + char pack, float* a, lapack_int lda, + float* work ); +lapack_int LAPACKE_dlatms_work( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, + double* d, lapack_int mode, double cond, + double dmax, lapack_int kl, lapack_int ku, + char pack, double* a, lapack_int lda, + double* work ); +lapack_int LAPACKE_clatms_work( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, + float* d, lapack_int mode, float cond, + float dmax, lapack_int kl, lapack_int ku, + char pack, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* work ); +lapack_int LAPACKE_zlatms_work( int matrix_layout, lapack_int m, lapack_int n, + char dist, lapack_int* iseed, char sym, + double* d, lapack_int mode, double cond, + double dmax, lapack_int kl, lapack_int ku, + char pack, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* work ); + +lapack_int LAPACKE_slauum_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda ); +lapack_int LAPACKE_dlauum_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda ); +lapack_int LAPACKE_clauum_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zlauum_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_sopgtr_work( int matrix_layout, char uplo, lapack_int n, + const float* ap, const float* tau, float* q, + lapack_int ldq, float* work ); +lapack_int LAPACKE_dopgtr_work( int matrix_layout, char uplo, lapack_int n, + const double* ap, const double* tau, double* q, + lapack_int ldq, double* work ); + +lapack_int LAPACKE_sopmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const float* ap, const float* tau, float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_dopmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const double* ap, const double* tau, double* c, + lapack_int ldc, double* work ); + +lapack_int LAPACKE_sorgbr_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, float* a, + lapack_int lda, const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorgbr_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, double* a, + lapack_int lda, const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorghr_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, float* a, lapack_int lda, + const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorghr_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, double* a, lapack_int lda, + const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorglq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorglq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorgql_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorgql_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorgqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorgqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorgrq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, float* a, lapack_int lda, + const float* tau, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dorgrq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, double* a, lapack_int lda, + const double* tau, double* work, + lapack_int lwork ); + +lapack_int LAPACKE_sorgtr_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, const float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dorgtr_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, const double* tau, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sorgtsqr_row_work( int matrix_layout, + lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + float* a, lapack_int lda, + const float* t, lapack_int ldt, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dorgtsqr_row_work( int matrix_layout, + lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + double* a, lapack_int lda, + const double* t, lapack_int ldt, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, + char trans, lapack_int m, lapack_int n, + lapack_int k, const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, + char trans, lapack_int m, lapack_int n, + lapack_int k, const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormhr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormhr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormql_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormql_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormrq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormrq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormrz_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormrz_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_sormtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const float* a, lapack_int lda, + const float* tau, float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dormtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const double* a, lapack_int lda, + const double* tau, double* c, lapack_int ldc, + double* work, lapack_int lwork ); + +lapack_int LAPACKE_spbcon_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const float* ab, lapack_int ldab, + float anorm, float* rcond, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dpbcon_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const double* ab, + lapack_int ldab, double anorm, double* rcond, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cpbcon_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_float* ab, + lapack_int ldab, float anorm, float* rcond, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zpbcon_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_double* ab, + lapack_int ldab, double anorm, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_spbequ_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const float* ab, lapack_int ldab, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_dpbequ_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const double* ab, + lapack_int ldab, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cpbequ_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_float* ab, + lapack_int ldab, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_zpbequ_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, const lapack_complex_double* ab, + lapack_int ldab, double* s, double* scond, + double* amax ); + +lapack_int LAPACKE_spbrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const float* ab, + lapack_int ldab, const float* afb, + lapack_int ldafb, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dpbrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const double* ab, lapack_int ldab, + const double* afb, lapack_int ldafb, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cpbrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + const lapack_complex_float* afb, + lapack_int ldafb, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zpbrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, + const lapack_complex_double* afb, + lapack_int ldafb, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_spbstf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, float* bb, lapack_int ldbb ); +lapack_int LAPACKE_dpbstf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, double* bb, lapack_int ldbb ); +lapack_int LAPACKE_cpbstf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, lapack_complex_float* bb, + lapack_int ldbb ); +lapack_int LAPACKE_zpbstf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kb, lapack_complex_double* bb, + lapack_int ldbb ); + +lapack_int LAPACKE_spbsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, float* ab, + lapack_int ldab, float* b, lapack_int ldb ); +lapack_int LAPACKE_dpbsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, double* ab, + lapack_int ldab, double* b, lapack_int ldb ); +lapack_int LAPACKE_cpbsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpbsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spbsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int kd, lapack_int nrhs, + float* ab, lapack_int ldab, float* afb, + lapack_int ldafb, char* equed, float* s, + float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dpbsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int kd, lapack_int nrhs, + double* ab, lapack_int ldab, double* afb, + lapack_int ldafb, char* equed, double* s, + double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, double* work, lapack_int* iwork ); +lapack_int LAPACKE_cpbsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int kd, lapack_int nrhs, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* afb, lapack_int ldafb, + char* equed, float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zpbsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int kd, lapack_int nrhs, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* afb, lapack_int ldafb, + char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_spbtrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab ); +lapack_int LAPACKE_dpbtrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab ); +lapack_int LAPACKE_cpbtrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab ); +lapack_int LAPACKE_zpbtrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab ); + +lapack_int LAPACKE_spbtrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, const float* ab, + lapack_int ldab, float* b, lapack_int ldb ); +lapack_int LAPACKE_dpbtrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const double* ab, lapack_int ldab, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cpbtrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpbtrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_spftrf_work( int matrix_layout, char transr, char uplo, + lapack_int n, float* a ); +lapack_int LAPACKE_dpftrf_work( int matrix_layout, char transr, char uplo, + lapack_int n, double* a ); +lapack_int LAPACKE_cpftrf_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_float* a ); +lapack_int LAPACKE_zpftrf_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_double* a ); + +lapack_int LAPACKE_spftri_work( int matrix_layout, char transr, char uplo, + lapack_int n, float* a ); +lapack_int LAPACKE_dpftri_work( int matrix_layout, char transr, char uplo, + lapack_int n, double* a ); +lapack_int LAPACKE_cpftri_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_float* a ); +lapack_int LAPACKE_zpftri_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_complex_double* a ); + +lapack_int LAPACKE_spftrs_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, const float* a, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dpftrs_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, const double* a, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cpftrs_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpftrs_work( int matrix_layout, char transr, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spocon_work( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float anorm, + float* rcond, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dpocon_work( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double anorm, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cpocon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float anorm, float* rcond, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zpocon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double anorm, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_spoequ_work( int matrix_layout, lapack_int n, const float* a, + lapack_int lda, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dpoequ_work( int matrix_layout, lapack_int n, const double* a, + lapack_int lda, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cpoequ_work( int matrix_layout, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zpoequ_work( int matrix_layout, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_spoequb_work( int matrix_layout, lapack_int n, const float* a, + lapack_int lda, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dpoequb_work( int matrix_layout, lapack_int n, + const double* a, lapack_int lda, double* s, + double* scond, double* amax ); +lapack_int LAPACKE_cpoequb_work( int matrix_layout, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax ); +lapack_int LAPACKE_zpoequb_work( int matrix_layout, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax ); + +lapack_int LAPACKE_sporfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dporfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cporfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zporfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sporfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, + lapack_int ldaf, const float* s, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dporfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const double* s, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cporfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, + lapack_int ldaf, const float* s, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zporfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, + lapack_int ldaf, const double* s, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); +lapack_int LAPACKE_dsposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* b, lapack_int ldb, double* x, + lapack_int ldx, double* work, float* swork, + lapack_int* iter ); +lapack_int LAPACKE_zcposv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, lapack_complex_double* work, + lapack_complex_float* swork, double* rwork, + lapack_int* iter ); + +lapack_int LAPACKE_sposvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + char* equed, float* s, float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dposvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + char* equed, double* s, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cposvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + char* equed, float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zposvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sposvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + char* equed, float* s, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dposvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + char* equed, double* s, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cposvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + char* equed, float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zposvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_spotrf2_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda ); +lapack_int LAPACKE_dpotrf2_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda ); +lapack_int LAPACKE_cpotrf2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotrf2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotrf_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda ); +lapack_int LAPACKE_dpotrf_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda ); +lapack_int LAPACKE_cpotrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotri_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda ); +lapack_int LAPACKE_dpotri_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda ); +lapack_int LAPACKE_cpotri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zpotri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_spotrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dpotrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, double* b, lapack_int ldb ); +lapack_int LAPACKE_cpotrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zpotrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sppcon_work( int matrix_layout, char uplo, lapack_int n, + const float* ap, float anorm, float* rcond, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dppcon_work( int matrix_layout, char uplo, lapack_int n, + const double* ap, double anorm, double* rcond, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cppcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, float anorm, + float* rcond, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zppcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, double anorm, + double* rcond, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_sppequ_work( int matrix_layout, char uplo, lapack_int n, + const float* ap, float* s, float* scond, + float* amax ); +lapack_int LAPACKE_dppequ_work( int matrix_layout, char uplo, lapack_int n, + const double* ap, double* s, double* scond, + double* amax ); +lapack_int LAPACKE_cppequ_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, float* s, + float* scond, float* amax ); +lapack_int LAPACKE_zppequ_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, double* s, + double* scond, double* amax ); + +lapack_int LAPACKE_spprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, + const float* afp, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dpprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, + const double* afp, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cpprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zpprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sppsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* ap, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dppsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* ap, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cppsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zppsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sppsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* ap, + float* afp, char* equed, float* s, float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dppsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* ap, + double* afp, char* equed, double* s, double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cppsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* ap, + lapack_complex_float* afp, char* equed, + float* s, lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zppsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* ap, + lapack_complex_double* afp, char* equed, + double* s, lapack_complex_double* b, + lapack_int ldb, lapack_complex_double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_spptrf_work( int matrix_layout, char uplo, lapack_int n, + float* ap ); +lapack_int LAPACKE_dpptrf_work( int matrix_layout, char uplo, lapack_int n, + double* ap ); +lapack_int LAPACKE_cpptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap ); +lapack_int LAPACKE_zpptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap ); + +lapack_int LAPACKE_spptri_work( int matrix_layout, char uplo, lapack_int n, + float* ap ); +lapack_int LAPACKE_dpptri_work( int matrix_layout, char uplo, lapack_int n, + double* ap ); +lapack_int LAPACKE_cpptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap ); +lapack_int LAPACKE_zpptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap ); + +lapack_int LAPACKE_spptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dpptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cpptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_spstrf_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int* piv, + lapack_int* rank, float tol, float* work ); +lapack_int LAPACKE_dpstrf_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int* piv, + lapack_int* rank, double tol, double* work ); +lapack_int LAPACKE_cpstrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* piv, lapack_int* rank, float tol, + float* work ); +lapack_int LAPACKE_zpstrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* piv, lapack_int* rank, double tol, + double* work ); + +lapack_int LAPACKE_sptcon_work( lapack_int n, const float* d, const float* e, + float anorm, float* rcond, float* work ); +lapack_int LAPACKE_dptcon_work( lapack_int n, const double* d, const double* e, + double anorm, double* rcond, double* work ); +lapack_int LAPACKE_cptcon_work( lapack_int n, const float* d, + const lapack_complex_float* e, float anorm, + float* rcond, float* work ); +lapack_int LAPACKE_zptcon_work( lapack_int n, const double* d, + const lapack_complex_double* e, double anorm, + double* rcond, double* work ); + +lapack_int LAPACKE_spteqr_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, float* z, lapack_int ldz, + float* work ); +lapack_int LAPACKE_dpteqr_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz, + double* work ); +lapack_int LAPACKE_cpteqr_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, lapack_complex_float* z, + lapack_int ldz, float* work ); +lapack_int LAPACKE_zpteqr_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz, double* work ); + +lapack_int LAPACKE_sptrfs_work( int matrix_layout, lapack_int n, lapack_int nrhs, + const float* d, const float* e, const float* df, + const float* ef, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* ferr, + float* berr, float* work ); +lapack_int LAPACKE_dptrfs_work( int matrix_layout, lapack_int n, lapack_int nrhs, + const double* d, const double* e, + const double* df, const double* ef, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr, + double* work ); +lapack_int LAPACKE_cptrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, const float* df, + const lapack_complex_float* ef, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zptrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, + const double* df, + const lapack_complex_double* ef, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + float* d, float* e, float* b, lapack_int ldb ); +lapack_int LAPACKE_dptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + double* d, double* e, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + float* d, lapack_complex_float* e, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, + double* d, lapack_complex_double* e, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sptsvx_work( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const float* d, const float* e, + float* df, float* ef, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work ); +lapack_int LAPACKE_dptsvx_work( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const double* d, + const double* e, double* df, double* ef, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* ferr, + double* berr, double* work ); +lapack_int LAPACKE_cptsvx_work( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, float* df, + lapack_complex_float* ef, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zptsvx_work( int matrix_layout, char fact, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, double* df, + lapack_complex_double* ef, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_spttrf_work( lapack_int n, float* d, float* e ); +lapack_int LAPACKE_dpttrf_work( lapack_int n, double* d, double* e ); +lapack_int LAPACKE_cpttrf_work( lapack_int n, float* d, + lapack_complex_float* e ); +lapack_int LAPACKE_zpttrf_work( lapack_int n, double* d, + lapack_complex_double* e ); + +lapack_int LAPACKE_spttrs_work( int matrix_layout, lapack_int n, lapack_int nrhs, + const float* d, const float* e, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dpttrs_work( int matrix_layout, lapack_int n, lapack_int nrhs, + const double* d, const double* e, double* b, + lapack_int ldb ); +lapack_int LAPACKE_cpttrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* d, + const lapack_complex_float* e, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zpttrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* d, + const lapack_complex_double* e, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssbev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* w, float* z, + lapack_int ldz, float* work ); +lapack_int LAPACKE_dsbev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* w, double* z, + lapack_int ldz, double* work ); + +lapack_int LAPACKE_ssbevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsbevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssbevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + float* ab, lapack_int ldab, float* q, + lapack_int ldq, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_dsbevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + double* ab, lapack_int ldab, double* q, + lapack_int ldq, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, double* work, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_ssbgst_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + float* ab, lapack_int ldab, const float* bb, + lapack_int ldbb, float* x, lapack_int ldx, + float* work ); +lapack_int LAPACKE_dsbgst_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + double* ab, lapack_int ldab, const double* bb, + lapack_int ldbb, double* x, lapack_int ldx, + double* work ); + +lapack_int LAPACKE_ssbgv_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + float* ab, lapack_int ldab, float* bb, + lapack_int ldbb, float* w, float* z, + lapack_int ldz, float* work ); +lapack_int LAPACKE_dsbgv_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + double* ab, lapack_int ldab, double* bb, + lapack_int ldbb, double* w, double* z, + lapack_int ldz, double* work ); + +lapack_int LAPACKE_ssbgvd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + float* ab, lapack_int ldab, float* bb, + lapack_int ldbb, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsbgvd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int ka, lapack_int kb, + double* ab, lapack_int ldab, double* bb, + lapack_int ldbb, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssbgvx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int ka, + lapack_int kb, float* ab, lapack_int ldab, + float* bb, lapack_int ldbb, float* q, + lapack_int ldq, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_dsbgvx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int ka, + lapack_int kb, double* ab, lapack_int ldab, + double* bb, lapack_int ldbb, double* q, + lapack_int ldq, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, double* work, lapack_int* iwork, + lapack_int* ifail ); + +lapack_int LAPACKE_ssbtrd_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* d, float* e, float* q, + lapack_int ldq, float* work ); +lapack_int LAPACKE_dsbtrd_work( int matrix_layout, char vect, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* d, double* e, + double* q, lapack_int ldq, double* work ); + +lapack_int LAPACKE_ssfrk_work( int matrix_layout, char transr, char uplo, + char trans, lapack_int n, lapack_int k, + float alpha, const float* a, lapack_int lda, + float beta, float* c ); +lapack_int LAPACKE_dsfrk_work( int matrix_layout, char transr, char uplo, + char trans, lapack_int n, lapack_int k, + double alpha, const double* a, lapack_int lda, + double beta, double* c ); + +lapack_int LAPACKE_sspcon_work( int matrix_layout, char uplo, lapack_int n, + const float* ap, const lapack_int* ipiv, + float anorm, float* rcond, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dspcon_work( int matrix_layout, char uplo, lapack_int n, + const double* ap, const lapack_int* ipiv, + double anorm, double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_cspcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zspcon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_sspev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* ap, float* w, float* z, + lapack_int ldz, float* work ); +lapack_int LAPACKE_dspev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* ap, double* w, double* z, + lapack_int ldz, double* work ); + +lapack_int LAPACKE_sspevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* ap, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dspevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* ap, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_sspevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, float* ap, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_dspevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, double* ap, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + double* z, lapack_int ldz, double* work, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_sspgst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, float* ap, const float* bp ); +lapack_int LAPACKE_dspgst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, double* ap, const double* bp ); + +lapack_int LAPACKE_sspgv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* ap, float* bp, + float* w, float* z, lapack_int ldz, + float* work ); +lapack_int LAPACKE_dspgv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* ap, double* bp, + double* w, double* z, lapack_int ldz, + double* work ); + +lapack_int LAPACKE_sspgvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* ap, float* bp, + float* w, float* z, lapack_int ldz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dspgvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* ap, double* bp, + double* w, double* z, lapack_int ldz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_sspgvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, float* ap, + float* bp, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, float* z, lapack_int ldz, float* work, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_dspgvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, double* ap, + double* bp, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, double* z, lapack_int ldz, + double* work, lapack_int* iwork, + lapack_int* ifail ); + +lapack_int LAPACKE_ssprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, + const float* afp, const lapack_int* ipiv, + const float* b, lapack_int ldb, float* x, + lapack_int ldx, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dsprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, + const double* afp, const lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_csprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_complex_float* afp, + const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zsprfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_complex_double* afp, + const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_sspsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* ap, lapack_int* ipiv, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dspsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* ap, lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_cspsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* ap, + lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zspsv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* ap, + lapack_int* ipiv, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_sspsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, const float* ap, + float* afp, lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dspsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, const double* ap, + double* afp, lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_cspsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + lapack_complex_float* afp, lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zspsvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + lapack_complex_double* afp, lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_ssptrd_work( int matrix_layout, char uplo, lapack_int n, + float* ap, float* d, float* e, float* tau ); +lapack_int LAPACKE_dsptrd_work( int matrix_layout, char uplo, lapack_int n, + double* ap, double* d, double* e, double* tau ); + +lapack_int LAPACKE_ssptrf_work( int matrix_layout, char uplo, lapack_int n, + float* ap, lapack_int* ipiv ); +lapack_int LAPACKE_dsptrf_work( int matrix_layout, char uplo, lapack_int n, + double* ap, lapack_int* ipiv ); +lapack_int LAPACKE_csptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, lapack_int* ipiv ); +lapack_int LAPACKE_zsptrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, lapack_int* ipiv ); + +lapack_int LAPACKE_ssptri_work( int matrix_layout, char uplo, lapack_int n, + float* ap, const lapack_int* ipiv, + float* work ); +lapack_int LAPACKE_dsptri_work( int matrix_layout, char uplo, lapack_int n, + double* ap, const lapack_int* ipiv, + double* work ); +lapack_int LAPACKE_csptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* ap, + const lapack_int* ipiv, + lapack_complex_float* work ); +lapack_int LAPACKE_zsptri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* ap, + const lapack_int* ipiv, + lapack_complex_double* work ); + +lapack_int LAPACKE_ssptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* ap, + const lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dsptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* ap, + const lapack_int* ipiv, double* b, + lapack_int ldb ); +lapack_int LAPACKE_csptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* ap, + const lapack_int* ipiv, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_zsptrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sstebz_work( char range, char order, lapack_int n, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, const float* d, const float* e, + lapack_int* m, lapack_int* nsplit, float* w, + lapack_int* iblock, lapack_int* isplit, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dstebz_work( char range, char order, lapack_int n, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, const double* d, const double* e, + lapack_int* m, lapack_int* nsplit, double* w, + lapack_int* iblock, lapack_int* isplit, + double* work, lapack_int* iwork ); + +lapack_int LAPACKE_sstedc_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, float* z, lapack_int ldz, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dstedc_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_cstedc_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zstedc_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_sstegr_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, float* z, + lapack_int ldz, lapack_int* isuppz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dstegr_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + double* z, lapack_int ldz, lapack_int* isuppz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_cstegr_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* isuppz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zstegr_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* isuppz, double* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_sstein_work( int matrix_layout, lapack_int n, const float* d, + const float* e, lapack_int m, const float* w, + const lapack_int* iblock, + const lapack_int* isplit, float* z, + lapack_int ldz, float* work, lapack_int* iwork, + lapack_int* ifailv ); +lapack_int LAPACKE_dstein_work( int matrix_layout, lapack_int n, const double* d, + const double* e, lapack_int m, const double* w, + const lapack_int* iblock, + const lapack_int* isplit, double* z, + lapack_int ldz, double* work, lapack_int* iwork, + lapack_int* ifailv ); +lapack_int LAPACKE_cstein_work( int matrix_layout, lapack_int n, const float* d, + const float* e, lapack_int m, const float* w, + const lapack_int* iblock, + const lapack_int* isplit, + lapack_complex_float* z, lapack_int ldz, + float* work, lapack_int* iwork, + lapack_int* ifailv ); +lapack_int LAPACKE_zstein_work( int matrix_layout, lapack_int n, const double* d, + const double* e, lapack_int m, const double* w, + const lapack_int* iblock, + const lapack_int* isplit, + lapack_complex_double* z, lapack_int ldz, + double* work, lapack_int* iwork, + lapack_int* ifailv ); + +lapack_int LAPACKE_sstemr_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + lapack_int* m, float* w, float* z, + lapack_int ldz, lapack_int nzc, + lapack_int* isuppz, lapack_logical* tryrac, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dstemr_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int nzc, + lapack_int* isuppz, lapack_logical* tryrac, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_cstemr_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int nzc, lapack_int* isuppz, + lapack_logical* tryrac, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zstemr_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int nzc, lapack_int* isuppz, + lapack_logical* tryrac, double* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_ssteqr_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, float* z, lapack_int ldz, + float* work ); +lapack_int LAPACKE_dsteqr_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz, + double* work ); +lapack_int LAPACKE_csteqr_work( int matrix_layout, char compz, lapack_int n, + float* d, float* e, lapack_complex_float* z, + lapack_int ldz, float* work ); +lapack_int LAPACKE_zsteqr_work( int matrix_layout, char compz, lapack_int n, + double* d, double* e, lapack_complex_double* z, + lapack_int ldz, double* work ); + +lapack_int LAPACKE_ssterf_work( lapack_int n, float* d, float* e ); +lapack_int LAPACKE_dsterf_work( lapack_int n, double* d, double* e ); + +lapack_int LAPACKE_sstev_work( int matrix_layout, char jobz, lapack_int n, + float* d, float* e, float* z, lapack_int ldz, + float* work ); +lapack_int LAPACKE_dstev_work( int matrix_layout, char jobz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz, + double* work ); + +lapack_int LAPACKE_sstevd_work( int matrix_layout, char jobz, lapack_int n, + float* d, float* e, float* z, lapack_int ldz, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dstevd_work( int matrix_layout, char jobz, lapack_int n, + double* d, double* e, double* z, lapack_int ldz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_sstevr_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, float* z, + lapack_int ldz, lapack_int* isuppz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dstevr_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + double* z, lapack_int ldz, lapack_int* isuppz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_sstevx_work( int matrix_layout, char jobz, char range, + lapack_int n, float* d, float* e, float vl, + float vu, lapack_int il, lapack_int iu, + float abstol, lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_dstevx_work( int matrix_layout, char jobz, char range, + lapack_int n, double* d, double* e, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + double* z, lapack_int ldz, double* work, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_ssycon_work( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, + float* rcond, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dsycon_work( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_csycon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zsycon_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_ssyequb_work( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float* s, + float* scond, float* amax, float* work ); +lapack_int LAPACKE_dsyequb_work( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double* s, + double* scond, double* amax, double* work ); +lapack_int LAPACKE_csyequb_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* s, float* scond, float* amax, + lapack_complex_float* work ); +lapack_int LAPACKE_zsyequb_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* s, double* scond, double* amax, + lapack_complex_double* work ); + +lapack_int LAPACKE_ssyev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* a, lapack_int lda, float* w, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsyev_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* a, lapack_int lda, + double* w, double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssyevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* a, lapack_int lda, + float* w, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsyevd_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* a, lapack_int lda, + double* w, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssyevr_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, lapack_int* isuppz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dsyevr_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssyevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_dsyevx_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_ssygst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, float* a, lapack_int lda, + const float* b, lapack_int ldb ); +lapack_int LAPACKE_dsygst_work( int matrix_layout, lapack_int itype, char uplo, + lapack_int n, double* a, lapack_int lda, + const double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssygv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* w, float* work, lapack_int lwork ); +lapack_int LAPACKE_dsygv_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* w, double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssygvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* w, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsygvd_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* w, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssygvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, float* z, lapack_int ldz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_dsygvx_work( int matrix_layout, lapack_int itype, char jobz, + char range, char uplo, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, double* z, lapack_int ldz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_ssyrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* af, lapack_int ldaf, + const lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dsyrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* b, lapack_int ldb, double* x, + lapack_int ldx, double* ferr, double* berr, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_csyrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_zsyrfs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_ssyrfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, const float* af, + lapack_int ldaf, const lapack_int* ipiv, + const float* s, const float* b, lapack_int ldb, + float* x, lapack_int ldx, float* rcond, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dsyrfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, const double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* s, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_csyrfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* af, + lapack_int ldaf, const lapack_int* ipiv, + const float* s, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zsyrfsx_work( int matrix_layout, char uplo, char equed, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* af, + lapack_int ldaf, const lapack_int* ipiv, + const double* s, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_ssysv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsysv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csysv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsysv_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssysvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, const float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, const float* b, + lapack_int ldb, float* x, lapack_int ldx, + float* rcond, float* ferr, float* berr, + float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dsysvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, const double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, const double* b, + lapack_int ldb, double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_csysvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, const lapack_complex_float* b, + lapack_int ldb, lapack_complex_float* x, + lapack_int ldx, float* rcond, float* ferr, + float* berr, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zsysvx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* ferr, double* berr, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_ssysvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, + float* b, lapack_int ldb, float* x, + lapack_int ldx, float* rcond, float* rpvgrw, + float* berr, lapack_int n_err_bnds, + float* err_bnds_norm, float* err_bnds_comp, + lapack_int nparams, float* params, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dsysvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, + double* b, lapack_int ldb, double* x, + lapack_int ldx, double* rcond, double* rpvgrw, + double* berr, lapack_int n_err_bnds, + double* err_bnds_norm, double* err_bnds_comp, + lapack_int nparams, double* params, + double* work, lapack_int* iwork ); +lapack_int LAPACKE_csysvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, float* s, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* x, lapack_int ldx, + float* rcond, float* rpvgrw, float* berr, + lapack_int n_err_bnds, float* err_bnds_norm, + float* err_bnds_comp, lapack_int nparams, + float* params, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_zsysvxx_work( int matrix_layout, char fact, char uplo, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* af, lapack_int ldaf, + lapack_int* ipiv, char* equed, double* s, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* x, lapack_int ldx, + double* rcond, double* rpvgrw, double* berr, + lapack_int n_err_bnds, double* err_bnds_norm, + double* err_bnds_comp, lapack_int nparams, + double* params, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_ssytrd_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, float* d, float* e, + float* tau, float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrd_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, double* d, double* e, + double* tau, double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssytrf_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrf_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zsytrf_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_ssytri_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, + const lapack_int* ipiv, float* work ); +lapack_int LAPACKE_dsytri_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, + const lapack_int* ipiv, double* work ); +lapack_int LAPACKE_csytri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work ); +lapack_int LAPACKE_zsytri_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work ); + +lapack_int LAPACKE_ssytrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dsytrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stbcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, lapack_int kd, + const float* ab, lapack_int ldab, float* rcond, + float* work, lapack_int* iwork ); +lapack_int LAPACKE_dtbcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, lapack_int kd, + const double* ab, lapack_int ldab, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_ctbcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, lapack_int kd, + const lapack_complex_float* ab, lapack_int ldab, + float* rcond, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_ztbcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, lapack_int kd, + const lapack_complex_double* ab, + lapack_int ldab, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_stbrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const float* ab, + lapack_int ldab, const float* b, lapack_int ldb, + const float* x, lapack_int ldx, float* ferr, + float* berr, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dtbrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const double* ab, + lapack_int ldab, const double* b, + lapack_int ldb, const double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_ctbrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const lapack_complex_float* ab, + lapack_int ldab, const lapack_complex_float* b, + lapack_int ldb, const lapack_complex_float* x, + lapack_int ldx, float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztbrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, const lapack_complex_double* b, + lapack_int ldb, const lapack_complex_double* x, + lapack_int ldx, double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_stbtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const float* ab, + lapack_int ldab, float* b, lapack_int ldb ); +lapack_int LAPACKE_dtbtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const double* ab, + lapack_int ldab, double* b, lapack_int ldb ); +lapack_int LAPACKE_ctbtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, const lapack_complex_float* ab, + lapack_int ldab, lapack_complex_float* b, + lapack_int ldb ); +lapack_int LAPACKE_ztbtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int kd, + lapack_int nrhs, + const lapack_complex_double* ab, + lapack_int ldab, lapack_complex_double* b, + lapack_int ldb ); + +lapack_int LAPACKE_stfsm_work( int matrix_layout, char transr, char side, + char uplo, char trans, char diag, lapack_int m, + lapack_int n, float alpha, const float* a, + float* b, lapack_int ldb ); +lapack_int LAPACKE_dtfsm_work( int matrix_layout, char transr, char side, + char uplo, char trans, char diag, lapack_int m, + lapack_int n, double alpha, const double* a, + double* b, lapack_int ldb ); +lapack_int LAPACKE_ctfsm_work( int matrix_layout, char transr, char side, + char uplo, char trans, char diag, lapack_int m, + lapack_int n, lapack_complex_float alpha, + const lapack_complex_float* a, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztfsm_work( int matrix_layout, char transr, char side, + char uplo, char trans, char diag, lapack_int m, + lapack_int n, lapack_complex_double alpha, + const lapack_complex_double* a, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stftri_work( int matrix_layout, char transr, char uplo, + char diag, lapack_int n, float* a ); +lapack_int LAPACKE_dtftri_work( int matrix_layout, char transr, char uplo, + char diag, lapack_int n, double* a ); +lapack_int LAPACKE_ctftri_work( int matrix_layout, char transr, char uplo, + char diag, lapack_int n, + lapack_complex_float* a ); +lapack_int LAPACKE_ztftri_work( int matrix_layout, char transr, char uplo, + char diag, lapack_int n, + lapack_complex_double* a ); + +lapack_int LAPACKE_stfttp_work( int matrix_layout, char transr, char uplo, + lapack_int n, const float* arf, float* ap ); +lapack_int LAPACKE_dtfttp_work( int matrix_layout, char transr, char uplo, + lapack_int n, const double* arf, double* ap ); +lapack_int LAPACKE_ctfttp_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* arf, + lapack_complex_float* ap ); +lapack_int LAPACKE_ztfttp_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* arf, + lapack_complex_double* ap ); + +lapack_int LAPACKE_stfttr_work( int matrix_layout, char transr, char uplo, + lapack_int n, const float* arf, float* a, + lapack_int lda ); +lapack_int LAPACKE_dtfttr_work( int matrix_layout, char transr, char uplo, + lapack_int n, const double* arf, double* a, + lapack_int lda ); +lapack_int LAPACKE_ctfttr_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* arf, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_ztfttr_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* arf, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_stgevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const float* s, lapack_int lds, const float* p, + lapack_int ldp, float* vl, lapack_int ldvl, + float* vr, lapack_int ldvr, lapack_int mm, + lapack_int* m, float* work ); +lapack_int LAPACKE_dtgevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const double* s, lapack_int lds, + const double* p, lapack_int ldp, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, double* work ); +lapack_int LAPACKE_ctgevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* s, lapack_int lds, + const lapack_complex_float* p, lapack_int ldp, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztgevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* s, lapack_int lds, + const lapack_complex_double* p, lapack_int ldp, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_stgexc_work( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* q, lapack_int ldq, float* z, + lapack_int ldz, lapack_int* ifst, + lapack_int* ilst, float* work, + lapack_int lwork ); +lapack_int LAPACKE_dtgexc_work( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* q, lapack_int ldq, double* z, + lapack_int ldz, lapack_int* ifst, + lapack_int* ilst, double* work, + lapack_int lwork ); +lapack_int LAPACKE_ctgexc_work( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz, + lapack_int ifst, lapack_int ilst ); +lapack_int LAPACKE_ztgexc_work( int matrix_layout, lapack_logical wantq, + lapack_logical wantz, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_int ifst, lapack_int ilst ); + +lapack_int LAPACKE_stgsen_work( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + float* a, lapack_int lda, float* b, + lapack_int ldb, float* alphar, float* alphai, + float* beta, float* q, lapack_int ldq, float* z, + lapack_int ldz, lapack_int* m, float* pl, + float* pr, float* dif, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dtgsen_work( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + double* a, lapack_int lda, double* b, + lapack_int ldb, double* alphar, double* alphai, + double* beta, double* q, lapack_int ldq, + double* z, lapack_int ldz, lapack_int* m, + double* pl, double* pr, double* dif, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_ctgsen_work( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* alpha, + lapack_complex_float* beta, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* z, lapack_int ldz, + lapack_int* m, float* pl, float* pr, float* dif, + lapack_complex_float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_ztgsen_work( int matrix_layout, lapack_int ijob, + lapack_logical wantq, lapack_logical wantz, + const lapack_logical* select, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* alpha, + lapack_complex_double* beta, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* z, lapack_int ldz, + lapack_int* m, double* pl, double* pr, + double* dif, lapack_complex_double* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_stgsja_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_int k, lapack_int l, + float* a, lapack_int lda, float* b, + lapack_int ldb, float tola, float tolb, + float* alpha, float* beta, float* u, + lapack_int ldu, float* v, lapack_int ldv, + float* q, lapack_int ldq, float* work, + lapack_int* ncycle ); +lapack_int LAPACKE_dtgsja_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_int k, lapack_int l, + double* a, lapack_int lda, double* b, + lapack_int ldb, double tola, double tolb, + double* alpha, double* beta, double* u, + lapack_int ldu, double* v, lapack_int ldv, + double* q, lapack_int ldq, double* work, + lapack_int* ncycle ); +lapack_int LAPACKE_ctgsja_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_int k, lapack_int l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + float tola, float tolb, float* alpha, + float* beta, lapack_complex_float* u, + lapack_int ldu, lapack_complex_float* v, + lapack_int ldv, lapack_complex_float* q, + lapack_int ldq, lapack_complex_float* work, + lapack_int* ncycle ); +lapack_int LAPACKE_ztgsja_work( int matrix_layout, char jobu, char jobv, + char jobq, lapack_int m, lapack_int p, + lapack_int n, lapack_int k, lapack_int l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double tola, double tolb, double* alpha, + double* beta, lapack_complex_double* u, + lapack_int ldu, lapack_complex_double* v, + lapack_int ldv, lapack_complex_double* q, + lapack_int ldq, lapack_complex_double* work, + lapack_int* ncycle ); + +lapack_int LAPACKE_stgsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, const float* vl, + lapack_int ldvl, const float* vr, + lapack_int ldvr, float* s, float* dif, + lapack_int mm, lapack_int* m, float* work, + lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_dtgsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const double* a, lapack_int lda, + const double* b, lapack_int ldb, + const double* vl, lapack_int ldvl, + const double* vr, lapack_int ldvr, double* s, + double* dif, lapack_int mm, lapack_int* m, + double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_ctgsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* vl, lapack_int ldvl, + const lapack_complex_float* vr, lapack_int ldvr, + float* s, float* dif, lapack_int mm, + lapack_int* m, lapack_complex_float* work, + lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_ztgsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* vl, + lapack_int ldvl, + const lapack_complex_double* vr, + lapack_int ldvr, double* s, double* dif, + lapack_int mm, lapack_int* m, + lapack_complex_double* work, lapack_int lwork, + lapack_int* iwork ); + +lapack_int LAPACKE_stgsyl_work( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, const float* a, + lapack_int lda, const float* b, lapack_int ldb, + float* c, lapack_int ldc, const float* d, + lapack_int ldd, const float* e, lapack_int lde, + float* f, lapack_int ldf, float* scale, + float* dif, float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dtgsyl_work( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, const double* a, + lapack_int lda, const double* b, lapack_int ldb, + double* c, lapack_int ldc, const double* d, + lapack_int ldd, const double* e, lapack_int lde, + double* f, lapack_int ldf, double* scale, + double* dif, double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_ctgsyl_work( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* c, lapack_int ldc, + const lapack_complex_float* d, lapack_int ldd, + const lapack_complex_float* e, lapack_int lde, + lapack_complex_float* f, lapack_int ldf, + float* scale, float* dif, + lapack_complex_float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_ztgsyl_work( int matrix_layout, char trans, lapack_int ijob, + lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + const lapack_complex_double* d, lapack_int ldd, + const lapack_complex_double* e, lapack_int lde, + lapack_complex_double* f, lapack_int ldf, + double* scale, double* dif, + lapack_complex_double* work, lapack_int lwork, + lapack_int* iwork ); + +lapack_int LAPACKE_stpcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, const float* ap, + float* rcond, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dtpcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, const double* ap, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_ctpcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, + const lapack_complex_float* ap, float* rcond, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztpcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, + const lapack_complex_double* ap, double* rcond, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_stprfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const float* ap, const float* b, lapack_int ldb, + const float* x, lapack_int ldx, float* ferr, + float* berr, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dtprfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const double* ap, const double* b, + lapack_int ldb, const double* x, lapack_int ldx, + double* ferr, double* berr, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_ctprfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztprfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_stptri_work( int matrix_layout, char uplo, char diag, + lapack_int n, float* ap ); +lapack_int LAPACKE_dtptri_work( int matrix_layout, char uplo, char diag, + lapack_int n, double* ap ); +lapack_int LAPACKE_ctptri_work( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_complex_float* ap ); +lapack_int LAPACKE_ztptri_work( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_complex_double* ap ); + +lapack_int LAPACKE_stptrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const float* ap, float* b, lapack_int ldb ); +lapack_int LAPACKE_dtptrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const double* ap, double* b, lapack_int ldb ); +lapack_int LAPACKE_ctptrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_float* ap, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztptrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_double* ap, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stpttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const float* ap, float* arf ); +lapack_int LAPACKE_dtpttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const double* ap, double* arf ); +lapack_int LAPACKE_ctpttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* ap, + lapack_complex_float* arf ); +lapack_int LAPACKE_ztpttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* ap, + lapack_complex_double* arf ); + +lapack_int LAPACKE_stpttr_work( int matrix_layout, char uplo, lapack_int n, + const float* ap, float* a, lapack_int lda ); +lapack_int LAPACKE_dtpttr_work( int matrix_layout, char uplo, lapack_int n, + const double* ap, double* a, lapack_int lda ); +lapack_int LAPACKE_ctpttr_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_ztpttr_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_strcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, const float* a, + lapack_int lda, float* rcond, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dtrcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, const double* a, + lapack_int lda, double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_ctrcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + float* rcond, lapack_complex_float* work, + float* rwork ); +lapack_int LAPACKE_ztrcon_work( int matrix_layout, char norm, char uplo, + char diag, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + double* rcond, lapack_complex_double* work, + double* rwork ); + +lapack_int LAPACKE_strevc_work( int matrix_layout, char side, char howmny, + lapack_logical* select, lapack_int n, + const float* t, lapack_int ldt, float* vl, + lapack_int ldvl, float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, float* work ); +lapack_int LAPACKE_dtrevc_work( int matrix_layout, char side, char howmny, + lapack_logical* select, lapack_int n, + const double* t, lapack_int ldt, double* vl, + lapack_int ldvl, double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, double* work ); +lapack_int LAPACKE_ctrevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* vl, lapack_int ldvl, + lapack_complex_float* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztrevc_work( int matrix_layout, char side, char howmny, + const lapack_logical* select, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* vl, lapack_int ldvl, + lapack_complex_double* vr, lapack_int ldvr, + lapack_int mm, lapack_int* m, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_strexc_work( int matrix_layout, char compq, lapack_int n, + float* t, lapack_int ldt, float* q, + lapack_int ldq, lapack_int* ifst, + lapack_int* ilst, float* work ); +lapack_int LAPACKE_dtrexc_work( int matrix_layout, char compq, lapack_int n, + double* t, lapack_int ldt, double* q, + lapack_int ldq, lapack_int* ifst, + lapack_int* ilst, double* work ); +lapack_int LAPACKE_ctrexc_work( int matrix_layout, char compq, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* q, lapack_int ldq, + lapack_int ifst, lapack_int ilst ); +lapack_int LAPACKE_ztrexc_work( int matrix_layout, char compq, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* q, lapack_int ldq, + lapack_int ifst, lapack_int ilst ); + +lapack_int LAPACKE_strrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, const float* x, lapack_int ldx, + float* ferr, float* berr, float* work, + lapack_int* iwork ); +lapack_int LAPACKE_dtrrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const double* a, lapack_int lda, + const double* b, lapack_int ldb, + const double* x, lapack_int ldx, double* ferr, + double* berr, double* work, lapack_int* iwork ); +lapack_int LAPACKE_ctrrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + const lapack_complex_float* x, lapack_int ldx, + float* ferr, float* berr, + lapack_complex_float* work, float* rwork ); +lapack_int LAPACKE_ztrrfs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + const lapack_complex_double* x, lapack_int ldx, + double* ferr, double* berr, + lapack_complex_double* work, double* rwork ); + +lapack_int LAPACKE_strsen_work( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + float* t, lapack_int ldt, float* q, + lapack_int ldq, float* wr, float* wi, + lapack_int* m, float* s, float* sep, + float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dtrsen_work( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + double* t, lapack_int ldt, double* q, + lapack_int ldq, double* wr, double* wi, + lapack_int* m, double* s, double* sep, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_ctrsen_work( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* w, lapack_int* m, + float* s, float* sep, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_ztrsen_work( int matrix_layout, char job, char compq, + const lapack_logical* select, lapack_int n, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* w, lapack_int* m, + double* s, double* sep, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_strsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const float* t, lapack_int ldt, const float* vl, + lapack_int ldvl, const float* vr, + lapack_int ldvr, float* s, float* sep, + lapack_int mm, lapack_int* m, float* work, + lapack_int ldwork, lapack_int* iwork ); +lapack_int LAPACKE_dtrsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const double* t, lapack_int ldt, + const double* vl, lapack_int ldvl, + const double* vr, lapack_int ldvr, double* s, + double* sep, lapack_int mm, lapack_int* m, + double* work, lapack_int ldwork, + lapack_int* iwork ); +lapack_int LAPACKE_ctrsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_float* t, lapack_int ldt, + const lapack_complex_float* vl, lapack_int ldvl, + const lapack_complex_float* vr, lapack_int ldvr, + float* s, float* sep, lapack_int mm, + lapack_int* m, lapack_complex_float* work, + lapack_int ldwork, float* rwork ); +lapack_int LAPACKE_ztrsna_work( int matrix_layout, char job, char howmny, + const lapack_logical* select, lapack_int n, + const lapack_complex_double* t, lapack_int ldt, + const lapack_complex_double* vl, + lapack_int ldvl, + const lapack_complex_double* vr, + lapack_int ldvr, double* s, double* sep, + lapack_int mm, lapack_int* m, + lapack_complex_double* work, lapack_int ldwork, + double* rwork ); + +lapack_int LAPACKE_strsyl_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const float* a, lapack_int lda, const float* b, + lapack_int ldb, float* c, lapack_int ldc, + float* scale ); +lapack_int LAPACKE_dtrsyl_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const double* a, lapack_int lda, + const double* b, lapack_int ldb, double* c, + lapack_int ldc, double* scale ); +lapack_int LAPACKE_ctrsyl_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* c, lapack_int ldc, + float* scale ); +lapack_int LAPACKE_ztrsyl_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + double* scale ); + +lapack_int LAPACKE_strsyl3_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const float* a, lapack_int lda, + const float* b, lapack_int ldb, + float* c, lapack_int ldc, float* scale, + lapack_int* iwork, lapack_int liwork, + float* swork, lapack_int ldswork ); +lapack_int LAPACKE_dtrsyl3_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const double* a, lapack_int lda, + const double* b, lapack_int ldb, + double* c, lapack_int ldc, double* scale, + lapack_int* iwork, lapack_int liwork, + double* swork, lapack_int ldswork ); +lapack_int LAPACKE_ctrsyl3_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* c, lapack_int ldc, + float* scale, float* swork, + lapack_int ldswork ); +lapack_int LAPACKE_ztrsyl3_work( int matrix_layout, char trana, char tranb, + lapack_int isgn, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* c, lapack_int ldc, + double* scale, double* swork, + lapack_int ldswork ); + +lapack_int LAPACKE_strtri_work( int matrix_layout, char uplo, char diag, + lapack_int n, float* a, lapack_int lda ); +lapack_int LAPACKE_dtrtri_work( int matrix_layout, char uplo, char diag, + lapack_int n, double* a, lapack_int lda ); +lapack_int LAPACKE_ctrtri_work( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_complex_float* a, + lapack_int lda ); +lapack_int LAPACKE_ztrtri_work( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_complex_double* a, + lapack_int lda ); + +lapack_int LAPACKE_strtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const float* a, lapack_int lda, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dtrtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const double* a, lapack_int lda, double* b, + lapack_int ldb ); +lapack_int LAPACKE_ctrtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztrtrs_work( int matrix_layout, char uplo, char trans, + char diag, lapack_int n, lapack_int nrhs, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_strttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const float* a, lapack_int lda, + float* arf ); +lapack_int LAPACKE_dtrttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const double* a, lapack_int lda, + double* arf ); +lapack_int LAPACKE_ctrttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float* a, + lapack_int lda, lapack_complex_float* arf ); +lapack_int LAPACKE_ztrttf_work( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double* a, + lapack_int lda, lapack_complex_double* arf ); + +lapack_int LAPACKE_strttp_work( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, float* ap ); +lapack_int LAPACKE_dtrttp_work( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, double* ap ); +lapack_int LAPACKE_ctrttp_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + lapack_complex_float* ap ); +lapack_int LAPACKE_ztrttp_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + lapack_complex_double* ap ); + +lapack_int LAPACKE_stzrzf_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* tau, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dtzrzf_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* tau, + double* work, lapack_int lwork ); +lapack_int LAPACKE_ctzrzf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_ztzrzf_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungbr_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungbr_work( int matrix_layout, char vect, lapack_int m, + lapack_int n, lapack_int k, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunghr_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunghr_work( int matrix_layout, lapack_int n, lapack_int ilo, + lapack_int ihi, lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunglq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunglq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungql_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungql_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungrq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungrq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int k, lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungtr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungtr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cungtsqr_row_work( int matrix_layout, + lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zungtsqr_row_work( int matrix_layout, + lapack_int m, lapack_int n, + lapack_int mb, lapack_int nb, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmbr_work( int matrix_layout, char vect, char side, + char trans, lapack_int m, lapack_int n, + lapack_int k, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmbr_work( int matrix_layout, char vect, char side, + char trans, lapack_int m, lapack_int n, + lapack_int k, const lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmhr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmhr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int ilo, + lapack_int ihi, const lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmql_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmql_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmrq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmrq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmrz_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmrz_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, const lapack_complex_double* a, + lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cunmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zunmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_cupgtr_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* ap, + const lapack_complex_float* tau, + lapack_complex_float* q, lapack_int ldq, + lapack_complex_float* work ); +lapack_int LAPACKE_zupgtr_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* ap, + const lapack_complex_double* tau, + lapack_complex_double* q, lapack_int ldq, + lapack_complex_double* work ); + +lapack_int LAPACKE_cupmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const lapack_complex_float* ap, + const lapack_complex_float* tau, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work ); +lapack_int LAPACKE_zupmtr_work( int matrix_layout, char side, char uplo, + char trans, lapack_int m, lapack_int n, + const lapack_complex_double* ap, + const lapack_complex_double* tau, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work ); + +lapack_int LAPACKE_claghe( int matrix_layout, lapack_int n, lapack_int k, + const float* d, lapack_complex_float* a, + lapack_int lda, lapack_int* iseed ); +lapack_int LAPACKE_zlaghe( int matrix_layout, lapack_int n, lapack_int k, + const double* d, lapack_complex_double* a, + lapack_int lda, lapack_int* iseed ); + +lapack_int LAPACKE_slagsy( int matrix_layout, lapack_int n, lapack_int k, + const float* d, float* a, lapack_int lda, + lapack_int* iseed ); +lapack_int LAPACKE_dlagsy( int matrix_layout, lapack_int n, lapack_int k, + const double* d, double* a, lapack_int lda, + lapack_int* iseed ); +lapack_int LAPACKE_clagsy( int matrix_layout, lapack_int n, lapack_int k, + const float* d, lapack_complex_float* a, + lapack_int lda, lapack_int* iseed ); +lapack_int LAPACKE_zlagsy( int matrix_layout, lapack_int n, lapack_int k, + const double* d, lapack_complex_double* a, + lapack_int lda, lapack_int* iseed ); + +lapack_int LAPACKE_slapmr( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, float* x, lapack_int ldx, + lapack_int* k ); +lapack_int LAPACKE_dlapmr( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, double* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_clapmr( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, lapack_complex_float* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_zlapmr( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, lapack_complex_double* x, + lapack_int ldx, lapack_int* k ); + +lapack_int LAPACKE_slapmt( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, float* x, lapack_int ldx, + lapack_int* k ); +lapack_int LAPACKE_dlapmt( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, double* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_clapmt( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, lapack_complex_float* x, + lapack_int ldx, lapack_int* k ); +lapack_int LAPACKE_zlapmt( int matrix_layout, lapack_logical forwrd, + lapack_int m, lapack_int n, lapack_complex_double* x, + lapack_int ldx, lapack_int* k ); + +float LAPACKE_slapy2( float x, float y ); +double LAPACKE_dlapy2( double x, double y ); + +float LAPACKE_slapy3( float x, float y, float z ); +double LAPACKE_dlapy3( double x, double y, double z ); + +lapack_int LAPACKE_slartgp( float f, float g, float* cs, float* sn, float* r ); +lapack_int LAPACKE_dlartgp( double f, double g, double* cs, double* sn, + double* r ); + +lapack_int LAPACKE_slartgs( float x, float y, float sigma, float* cs, + float* sn ); +lapack_int LAPACKE_dlartgs( double x, double y, double sigma, double* cs, + double* sn ); + + +//LAPACK 3.3.0 +lapack_int LAPACKE_cbbcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, lapack_int m, + lapack_int p, lapack_int q, float* theta, float* phi, + lapack_complex_float* u1, lapack_int ldu1, + lapack_complex_float* u2, lapack_int ldu2, + lapack_complex_float* v1t, lapack_int ldv1t, + lapack_complex_float* v2t, lapack_int ldv2t, + float* b11d, float* b11e, float* b12d, float* b12e, + float* b21d, float* b21e, float* b22d, float* b22e ); +lapack_int LAPACKE_cbbcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + lapack_int m, lapack_int p, lapack_int q, + float* theta, float* phi, + lapack_complex_float* u1, lapack_int ldu1, + lapack_complex_float* u2, lapack_int ldu2, + lapack_complex_float* v1t, lapack_int ldv1t, + lapack_complex_float* v2t, lapack_int ldv2t, + float* b11d, float* b11e, float* b12d, + float* b12e, float* b21d, float* b21e, + float* b22d, float* b22e, float* rwork, + lapack_int lrwork ); +lapack_int LAPACKE_cheswapr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_cheswapr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_chetri2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_chetri2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_chetri2x( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, lapack_int nb ); +lapack_int LAPACKE_chetri2x_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work, lapack_int nb ); +lapack_int LAPACKE_chetrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chetrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work ); +lapack_int LAPACKE_csyconv( int matrix_layout, char uplo, char way, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, lapack_complex_float* e ); +lapack_int LAPACKE_csyconv_work( int matrix_layout, char uplo, char way, + lapack_int n, lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* e ); +lapack_int LAPACKE_csyswapr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_csyswapr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_csytri2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_csytri2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_csytri2x( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, lapack_int nb ); +lapack_int LAPACKE_csytri2x_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_float* work, lapack_int nb ); +lapack_int LAPACKE_csytrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work ); +lapack_int LAPACKE_cunbdb( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_float* x11, lapack_int ldx11, + lapack_complex_float* x12, lapack_int ldx12, + lapack_complex_float* x21, lapack_int ldx21, + lapack_complex_float* x22, lapack_int ldx22, + float* theta, float* phi, + lapack_complex_float* taup1, + lapack_complex_float* taup2, + lapack_complex_float* tauq1, + lapack_complex_float* tauq2 ); +lapack_int LAPACKE_cunbdb_work( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_float* x11, lapack_int ldx11, + lapack_complex_float* x12, lapack_int ldx12, + lapack_complex_float* x21, lapack_int ldx21, + lapack_complex_float* x22, lapack_int ldx22, + float* theta, float* phi, + lapack_complex_float* taup1, + lapack_complex_float* taup2, + lapack_complex_float* tauq1, + lapack_complex_float* tauq2, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_cuncsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_float* x11, lapack_int ldx11, + lapack_complex_float* x12, lapack_int ldx12, + lapack_complex_float* x21, lapack_int ldx21, + lapack_complex_float* x22, lapack_int ldx22, + float* theta, lapack_complex_float* u1, + lapack_int ldu1, lapack_complex_float* u2, + lapack_int ldu2, lapack_complex_float* v1t, + lapack_int ldv1t, lapack_complex_float* v2t, + lapack_int ldv2t ); +lapack_int LAPACKE_cuncsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + char signs, lapack_int m, lapack_int p, + lapack_int q, lapack_complex_float* x11, + lapack_int ldx11, lapack_complex_float* x12, + lapack_int ldx12, lapack_complex_float* x21, + lapack_int ldx21, lapack_complex_float* x22, + lapack_int ldx22, float* theta, + lapack_complex_float* u1, lapack_int ldu1, + lapack_complex_float* u2, lapack_int ldu2, + lapack_complex_float* v1t, lapack_int ldv1t, + lapack_complex_float* v2t, lapack_int ldv2t, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork ); +lapack_int LAPACKE_cuncsd2by1( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + lapack_complex_float* x11, lapack_int ldx11, + lapack_complex_float* x21, lapack_int ldx21, + float* theta, lapack_complex_float* u1, + lapack_int ldu1, lapack_complex_float* u2, + lapack_int ldu2, lapack_complex_float* v1t, lapack_int ldv1t ); +lapack_int LAPACKE_cuncsd2by1_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, + lapack_int q, lapack_complex_float* x11, lapack_int ldx11, + lapack_complex_float* x21, lapack_int ldx21, + float* theta, lapack_complex_float* u1, + lapack_int ldu1, lapack_complex_float* u2, + lapack_int ldu2, lapack_complex_float* v1t, + lapack_int ldv1t, lapack_complex_float* work, + lapack_int lwork, float* rwork, lapack_int lrwork, + lapack_int* iwork ); +lapack_int LAPACKE_dbbcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, lapack_int m, + lapack_int p, lapack_int q, double* theta, + double* phi, double* u1, lapack_int ldu1, double* u2, + lapack_int ldu2, double* v1t, lapack_int ldv1t, + double* v2t, lapack_int ldv2t, double* b11d, + double* b11e, double* b12d, double* b12e, + double* b21d, double* b21e, double* b22d, + double* b22e ); +lapack_int LAPACKE_dbbcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + lapack_int m, lapack_int p, lapack_int q, + double* theta, double* phi, double* u1, + lapack_int ldu1, double* u2, lapack_int ldu2, + double* v1t, lapack_int ldv1t, double* v2t, + lapack_int ldv2t, double* b11d, double* b11e, + double* b12d, double* b12e, double* b21d, + double* b21e, double* b22d, double* b22e, + double* work, lapack_int lwork ); +lapack_int LAPACKE_dorbdb( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + double* x11, lapack_int ldx11, double* x12, + lapack_int ldx12, double* x21, lapack_int ldx21, + double* x22, lapack_int ldx22, double* theta, + double* phi, double* taup1, double* taup2, + double* tauq1, double* tauq2 ); +lapack_int LAPACKE_dorbdb_work( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + double* x11, lapack_int ldx11, double* x12, + lapack_int ldx12, double* x21, lapack_int ldx21, + double* x22, lapack_int ldx22, double* theta, + double* phi, double* taup1, double* taup2, + double* tauq1, double* tauq2, double* work, + lapack_int lwork ); +lapack_int LAPACKE_dorcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + double* x11, lapack_int ldx11, double* x12, + lapack_int ldx12, double* x21, lapack_int ldx21, + double* x22, lapack_int ldx22, double* theta, + double* u1, lapack_int ldu1, double* u2, + lapack_int ldu2, double* v1t, lapack_int ldv1t, + double* v2t, lapack_int ldv2t ); +lapack_int LAPACKE_dorcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + char signs, lapack_int m, lapack_int p, + lapack_int q, double* x11, lapack_int ldx11, + double* x12, lapack_int ldx12, double* x21, + lapack_int ldx21, double* x22, lapack_int ldx22, + double* theta, double* u1, lapack_int ldu1, + double* u2, lapack_int ldu2, double* v1t, + lapack_int ldv1t, double* v2t, lapack_int ldv2t, + double* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_dorcsd2by1( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + double* x11, lapack_int ldx11, double* x21, lapack_int ldx21, + double* theta, double* u1, lapack_int ldu1, double* u2, + lapack_int ldu2, double* v1t, lapack_int ldv1t); +lapack_int LAPACKE_dorcsd2by1_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + double* x11, lapack_int ldx11, double* x21, lapack_int ldx21, + double* theta, double* u1, lapack_int ldu1, double* u2, + lapack_int ldu2, double* v1t, lapack_int ldv1t, + double* work, lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_dsyconv( int matrix_layout, char uplo, char way, lapack_int n, + double* a, lapack_int lda, const lapack_int* ipiv, double* e); +lapack_int LAPACKE_dsyconv_work( int matrix_layout, char uplo, char way, + lapack_int n, double* a, lapack_int lda, + const lapack_int* ipiv, double* e ); +lapack_int LAPACKE_dsyswapr( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int i1, + lapack_int i2 ); +lapack_int LAPACKE_dsyswapr_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int i1, + lapack_int i2 ); +lapack_int LAPACKE_dsytri2( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_dsytri2_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, + const lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_dsytri2x( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, const lapack_int* ipiv, + lapack_int nb ); +lapack_int LAPACKE_dsytri2x_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, + const lapack_int* ipiv, double* work, + lapack_int nb ); +lapack_int LAPACKE_dsytrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const lapack_int* ipiv, + double* b, lapack_int ldb, double* work ); +lapack_int LAPACKE_sbbcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, lapack_int m, + lapack_int p, lapack_int q, float* theta, float* phi, + float* u1, lapack_int ldu1, float* u2, + lapack_int ldu2, float* v1t, lapack_int ldv1t, + float* v2t, lapack_int ldv2t, float* b11d, + float* b11e, float* b12d, float* b12e, float* b21d, + float* b21e, float* b22d, float* b22e ); +lapack_int LAPACKE_sbbcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + lapack_int m, lapack_int p, lapack_int q, + float* theta, float* phi, float* u1, + lapack_int ldu1, float* u2, lapack_int ldu2, + float* v1t, lapack_int ldv1t, float* v2t, + lapack_int ldv2t, float* b11d, float* b11e, + float* b12d, float* b12e, float* b21d, + float* b21e, float* b22d, float* b22e, + float* work, lapack_int lwork ); +lapack_int LAPACKE_sorbdb( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, float* x11, + lapack_int ldx11, float* x12, lapack_int ldx12, + float* x21, lapack_int ldx21, float* x22, + lapack_int ldx22, float* theta, float* phi, + float* taup1, float* taup2, float* tauq1, + float* tauq2 ); +lapack_int LAPACKE_sorbdb_work( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + float* x11, lapack_int ldx11, float* x12, + lapack_int ldx12, float* x21, lapack_int ldx21, + float* x22, lapack_int ldx22, float* theta, + float* phi, float* taup1, float* taup2, + float* tauq1, float* tauq2, float* work, + lapack_int lwork ); +lapack_int LAPACKE_sorcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, float* x11, + lapack_int ldx11, float* x12, lapack_int ldx12, + float* x21, lapack_int ldx21, float* x22, + lapack_int ldx22, float* theta, float* u1, + lapack_int ldu1, float* u2, lapack_int ldu2, + float* v1t, lapack_int ldv1t, float* v2t, + lapack_int ldv2t ); +lapack_int LAPACKE_sorcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + char signs, lapack_int m, lapack_int p, + lapack_int q, float* x11, lapack_int ldx11, + float* x12, lapack_int ldx12, float* x21, + lapack_int ldx21, float* x22, lapack_int ldx22, + float* theta, float* u1, lapack_int ldu1, + float* u2, lapack_int ldu2, float* v1t, + lapack_int ldv1t, float* v2t, lapack_int ldv2t, + float* work, lapack_int lwork, + lapack_int* iwork ); +lapack_int LAPACKE_sorcsd2by1( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + float* x11, lapack_int ldx11, float* x21, lapack_int ldx21, + float* theta, float* u1, lapack_int ldu1, float* u2, + lapack_int ldu2, float* v1t, lapack_int ldv1t); +lapack_int LAPACKE_sorcsd2by1_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + float* x11, lapack_int ldx11, float* x21, lapack_int ldx21, + float* theta, float* u1, lapack_int ldu1, float* u2, + lapack_int ldu2, float* v1t, lapack_int ldv1t, + float* work, lapack_int lwork, lapack_int* iwork ); +lapack_int LAPACKE_ssyconv( int matrix_layout, char uplo, char way, lapack_int n, + float* a, lapack_int lda, const lapack_int* ipiv, float* e ); +lapack_int LAPACKE_ssyconv_work( int matrix_layout, char uplo, char way, + lapack_int n, float* a, lapack_int lda, + const lapack_int* ipiv, float* e ); +lapack_int LAPACKE_ssyswapr( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int i1, + lapack_int i2 ); +lapack_int LAPACKE_ssyswapr_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int i1, + lapack_int i2 ); +lapack_int LAPACKE_ssytri2( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, const lapack_int* ipiv ); +lapack_int LAPACKE_ssytri2_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, + const lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_ssytri2x( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, const lapack_int* ipiv, + lapack_int nb ); +lapack_int LAPACKE_ssytri2x_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, + const lapack_int* ipiv, float* work, + lapack_int nb ); +lapack_int LAPACKE_ssytrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssytrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, + lapack_int lda, const lapack_int* ipiv, + float* b, lapack_int ldb, float* work ); +lapack_int LAPACKE_zbbcsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, lapack_int m, + lapack_int p, lapack_int q, double* theta, + double* phi, lapack_complex_double* u1, + lapack_int ldu1, lapack_complex_double* u2, + lapack_int ldu2, lapack_complex_double* v1t, + lapack_int ldv1t, lapack_complex_double* v2t, + lapack_int ldv2t, double* b11d, double* b11e, + double* b12d, double* b12e, double* b21d, + double* b21e, double* b22d, double* b22e ); +lapack_int LAPACKE_zbbcsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + lapack_int m, lapack_int p, lapack_int q, + double* theta, double* phi, + lapack_complex_double* u1, lapack_int ldu1, + lapack_complex_double* u2, lapack_int ldu2, + lapack_complex_double* v1t, lapack_int ldv1t, + lapack_complex_double* v2t, lapack_int ldv2t, + double* b11d, double* b11e, double* b12d, + double* b12e, double* b21d, double* b21e, + double* b22d, double* b22e, double* rwork, + lapack_int lrwork ); +lapack_int LAPACKE_zheswapr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_zheswapr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_zhetri2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_zhetri2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_zhetri2x( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, lapack_int nb ); +lapack_int LAPACKE_zhetri2x_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work, lapack_int nb ); +lapack_int LAPACKE_zhetrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work ); +lapack_int LAPACKE_zsyconv( int matrix_layout, char uplo, char way, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, lapack_complex_double* e ); +lapack_int LAPACKE_zsyconv_work( int matrix_layout, char uplo, char way, + lapack_int n, lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* e ); +lapack_int LAPACKE_zsyswapr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_zsyswapr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int i1, lapack_int i2 ); +lapack_int LAPACKE_zsytri2( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv ); +lapack_int LAPACKE_zsytri2_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_zsytri2x( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, lapack_int nb ); +lapack_int LAPACKE_zsytri2x_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_int* ipiv, + lapack_complex_double* work, lapack_int nb ); +lapack_int LAPACKE_zsytrs2( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs2_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work ); +lapack_int LAPACKE_zunbdb( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_double* x11, lapack_int ldx11, + lapack_complex_double* x12, lapack_int ldx12, + lapack_complex_double* x21, lapack_int ldx21, + lapack_complex_double* x22, lapack_int ldx22, + double* theta, double* phi, + lapack_complex_double* taup1, + lapack_complex_double* taup2, + lapack_complex_double* tauq1, + lapack_complex_double* tauq2 ); +lapack_int LAPACKE_zunbdb_work( int matrix_layout, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_double* x11, lapack_int ldx11, + lapack_complex_double* x12, lapack_int ldx12, + lapack_complex_double* x21, lapack_int ldx21, + lapack_complex_double* x22, lapack_int ldx22, + double* theta, double* phi, + lapack_complex_double* taup1, + lapack_complex_double* taup2, + lapack_complex_double* tauq1, + lapack_complex_double* tauq2, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_zuncsd( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, char signs, + lapack_int m, lapack_int p, lapack_int q, + lapack_complex_double* x11, lapack_int ldx11, + lapack_complex_double* x12, lapack_int ldx12, + lapack_complex_double* x21, lapack_int ldx21, + lapack_complex_double* x22, lapack_int ldx22, + double* theta, lapack_complex_double* u1, + lapack_int ldu1, lapack_complex_double* u2, + lapack_int ldu2, lapack_complex_double* v1t, + lapack_int ldv1t, lapack_complex_double* v2t, + lapack_int ldv2t ); +lapack_int LAPACKE_zuncsd_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, char jobv2t, char trans, + char signs, lapack_int m, lapack_int p, + lapack_int q, lapack_complex_double* x11, + lapack_int ldx11, lapack_complex_double* x12, + lapack_int ldx12, lapack_complex_double* x21, + lapack_int ldx21, lapack_complex_double* x22, + lapack_int ldx22, double* theta, + lapack_complex_double* u1, lapack_int ldu1, + lapack_complex_double* u2, lapack_int ldu2, + lapack_complex_double* v1t, lapack_int ldv1t, + lapack_complex_double* v2t, lapack_int ldv2t, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork ); +lapack_int LAPACKE_zuncsd2by1( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, lapack_int q, + lapack_complex_double* x11, lapack_int ldx11, + lapack_complex_double* x21, lapack_int ldx21, + double* theta, lapack_complex_double* u1, + lapack_int ldu1, lapack_complex_double* u2, + lapack_int ldu2, lapack_complex_double* v1t, lapack_int ldv1t ); +lapack_int LAPACKE_zuncsd2by1_work( int matrix_layout, char jobu1, char jobu2, + char jobv1t, lapack_int m, lapack_int p, + lapack_int q, lapack_complex_double* x11, lapack_int ldx11, + lapack_complex_double* x21, lapack_int ldx21, + double* theta, lapack_complex_double* u1, + lapack_int ldu1, lapack_complex_double* u2, + lapack_int ldu2, lapack_complex_double* v1t, + lapack_int ldv1t, lapack_complex_double* work, + lapack_int lwork, double* rwork, lapack_int lrwork, + lapack_int* iwork ); + +//LAPACK 3.4.0 +lapack_int LAPACKE_sgemqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const float* v, lapack_int ldv, + const float* t, lapack_int ldt, float* c, + lapack_int ldc ); +lapack_int LAPACKE_dgemqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const double* v, lapack_int ldv, + const double* t, lapack_int ldt, double* c, + lapack_int ldc ); +lapack_int LAPACKE_cgemqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const lapack_complex_float* v, + lapack_int ldv, const lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* c, + lapack_int ldc ); +lapack_int LAPACKE_zgemqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const lapack_complex_double* v, + lapack_int ldv, const lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* c, + lapack_int ldc ); + +lapack_int LAPACKE_sgeqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, float* a, lapack_int lda, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dgeqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, double* a, lapack_int lda, double* t, + lapack_int ldt ); +lapack_int LAPACKE_cgeqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* t, + lapack_int ldt ); +lapack_int LAPACKE_zgeqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* t, + lapack_int ldt ); + +lapack_int LAPACKE_sgeqrt2( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dgeqrt2( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* t, + lapack_int ldt ); +lapack_int LAPACKE_cgeqrt2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zgeqrt2( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_sgeqrt3( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dgeqrt3( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* t, + lapack_int ldt ); +lapack_int LAPACKE_cgeqrt3( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zgeqrt3( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_stpmqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, const float* v, + lapack_int ldv, const float* t, lapack_int ldt, + float* a, lapack_int lda, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dtpmqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, const double* v, + lapack_int ldv, const double* t, lapack_int ldt, + double* a, lapack_int lda, double* b, + lapack_int ldb ); +lapack_int LAPACKE_ctpmqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztpmqrt( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_stpqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, float* a, + lapack_int lda, float* b, lapack_int ldb, float* t, + lapack_int ldt ); + +lapack_int LAPACKE_dtpqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, double* a, + lapack_int lda, double* b, lapack_int ldb, double* t, + lapack_int ldt ); +lapack_int LAPACKE_ctpqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_ztpqrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_stpqrt2( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + float* a, lapack_int lda, + float* b, lapack_int ldb, + float* t, lapack_int ldt ); +lapack_int LAPACKE_dtpqrt2( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + double* a, lapack_int lda, + double* b, lapack_int ldb, + double* t, lapack_int ldt ); +lapack_int LAPACKE_ctpqrt2( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_ztpqrt2( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_stprfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, lapack_int l, const float* v, + lapack_int ldv, const float* t, lapack_int ldt, + float* a, lapack_int lda, float* b, lapack_int ldb ); +lapack_int LAPACKE_dtprfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, lapack_int l, const double* v, + lapack_int ldv, const double* t, lapack_int ldt, + double* a, lapack_int lda, double* b, lapack_int ldb ); +lapack_int LAPACKE_ctprfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, lapack_int l, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_ztprfb( int matrix_layout, char side, char trans, char direct, + char storev, lapack_int m, lapack_int n, + lapack_int k, lapack_int l, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sgemqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const float* v, lapack_int ldv, + const float* t, lapack_int ldt, float* c, + lapack_int ldc, float* work ); +lapack_int LAPACKE_dgemqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const double* v, lapack_int ldv, + const double* t, lapack_int ldt, double* c, + lapack_int ldc, double* work ); +lapack_int LAPACKE_cgemqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const lapack_complex_float* v, + lapack_int ldv, const lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* c, + lapack_int ldc, lapack_complex_float* work ); +lapack_int LAPACKE_zgemqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int nb, const lapack_complex_double* v, + lapack_int ldv, const lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* c, + lapack_int ldc, lapack_complex_double* work ); + +lapack_int LAPACKE_sgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, float* a, lapack_int lda, + float* t, lapack_int ldt, float* work ); +lapack_int LAPACKE_dgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, double* a, lapack_int lda, + double* t, lapack_int ldt, double* work ); +lapack_int LAPACKE_cgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* work ); +lapack_int LAPACKE_zgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* work ); + +lapack_int LAPACKE_sgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* t, + lapack_int ldt ); +lapack_int LAPACKE_cgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_sgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, float* t, + lapack_int ldt ); +lapack_int LAPACKE_dgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, double* t, + lapack_int ldt ); +lapack_int LAPACKE_cgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_stpmqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, const float* v, + lapack_int ldv, const float* t, lapack_int ldt, + float* a, lapack_int lda, float* b, + lapack_int ldb, float* work ); +lapack_int LAPACKE_dtpmqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, const double* v, + lapack_int ldv, const double* t, + lapack_int ldt, double* a, lapack_int lda, + double* b, lapack_int ldb, double* work ); +lapack_int LAPACKE_ctpmqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work ); +lapack_int LAPACKE_ztpmqrt_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + lapack_int l, lapack_int nb, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work ); + +lapack_int LAPACKE_stpqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* t, lapack_int ldt, float* work ); +lapack_int LAPACKE_dtpqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* t, lapack_int ldt, double* work ); +lapack_int LAPACKE_ctpqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* work ); +lapack_int LAPACKE_ztpqrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int l, lapack_int nb, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* work ); + +lapack_int LAPACKE_stpqrt2_work( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + float* a, lapack_int lda, + float* b, lapack_int ldb, + float* t, lapack_int ldt ); +lapack_int LAPACKE_dtpqrt2_work( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + double* a, lapack_int lda, + double* b, lapack_int ldb, + double* t, lapack_int ldt ); +lapack_int LAPACKE_ctpqrt2_work( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_ztpqrt2_work( int matrix_layout, + lapack_int m, lapack_int n, lapack_int l, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_stprfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, lapack_int l, + const float* v, lapack_int ldv, const float* t, + lapack_int ldt, float* a, lapack_int lda, + float* b, lapack_int ldb, float* work, + lapack_int ldwork ); +lapack_int LAPACKE_dtprfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, lapack_int l, + const double* v, lapack_int ldv, + const double* t, lapack_int ldt, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* work, lapack_int ldwork ); +lapack_int LAPACKE_ctprfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, lapack_int l, + const lapack_complex_float* v, lapack_int ldv, + const lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int ldwork ); +lapack_int LAPACKE_ztprfb_work( int matrix_layout, char side, char trans, + char direct, char storev, lapack_int m, + lapack_int n, lapack_int k, lapack_int l, + const lapack_complex_double* v, lapack_int ldv, + const lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int ldwork ); +//LAPACK 3.X.X +lapack_int LAPACKE_ssysv_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsysv_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_csysv_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsysv_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_ssytrf_rook( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dsytrf_rook( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_csytrf_rook( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zsytrf_rook( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_ssytrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chetrf_rook( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zhetrf_rook( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_chetrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_rook( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_csyr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float alpha, + const lapack_complex_float* x, lapack_int incx, + lapack_complex_float* a, lapack_int lda ); +lapack_int LAPACKE_zsyr( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double alpha, + const lapack_complex_double* x, lapack_int incx, + lapack_complex_double* a, lapack_int lda ); + +lapack_int LAPACKE_ssysv_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsysv_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csysv_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zsysv_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_ssytrf_rook_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrf_rook_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytrf_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zsytrf_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_ssytrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, + lapack_int ldb ); +lapack_int LAPACKE_dsytrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const lapack_int* ipiv, + double* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_chetrf_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zhetrf_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_chetrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_rook_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); + + +lapack_int LAPACKE_csyr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float alpha, + const lapack_complex_float* x, + lapack_int incx, lapack_complex_float* a, + lapack_int lda ); +lapack_int LAPACKE_zsyr_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double alpha, + const lapack_complex_double* x, + lapack_int incx, lapack_complex_double* a, + lapack_int lda ); +void LAPACKE_ilaver( lapack_int* vers_major, + lapack_int* vers_minor, + lapack_int* vers_patch ); +// LAPACK 3.7.0 +lapack_int LAPACKE_ssysv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssysv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + lapack_int* ipiv, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsysv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_dsysv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + lapack_int* ipiv, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csysv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csysv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsysv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsysv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_chesv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chesv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhesv_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhesv_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssytrf_aa( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_dsytrf_aa( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, lapack_int* ipiv ); +lapack_int LAPACKE_csytrf_aa( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zsytrf_aa( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_chetrf_aa( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv ); +lapack_int LAPACKE_zhetrf_aa( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv ); + +lapack_int LAPACKE_ssytrf_aa_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrf_aa_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytrf_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zsytrf_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); +lapack_int LAPACKE_chetrf_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zhetrf_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + + +lapack_int LAPACKE_csytrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_chetrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chetrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const lapack_int* ipiv, + double* b, lapack_int ldb, double* work, lapack_int lwork ); +lapack_int LAPACKE_ssytrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssytrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const lapack_int* ipiv, float* b, + lapack_int ldb, float* work, lapack_int lwork ); +lapack_int LAPACKE_zsytrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork); +lapack_int LAPACKE_zhetrs_aa( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_aa_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork); + + +lapack_int LAPACKE_ssysv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* e, lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssysv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* e, lapack_int* ipiv, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsysv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* e, lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_dsysv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* e, lapack_int* ipiv, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csysv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csysv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsysv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsysv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_chesv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chesv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhesv_rk( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhesv_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssytrf_rk( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, float* e, lapack_int* ipiv ); +lapack_int LAPACKE_dsytrf_rk( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, double* e, lapack_int* ipiv ); +lapack_int LAPACKE_csytrf_rk( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* e, lapack_int* ipiv ); +lapack_int LAPACKE_zsytrf_rk( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* e, lapack_int* ipiv ); +lapack_int LAPACKE_chetrf_rk( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* e, lapack_int* ipiv ); +lapack_int LAPACKE_zhetrf_rk( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* e, lapack_int* ipiv ); +lapack_int LAPACKE_ssytrf_rk_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, float* e, lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrf_rk_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, double* e, lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytrf_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* e, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zsytrf_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* e, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); +lapack_int LAPACKE_chetrf_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* e, + lapack_int* ipiv, lapack_complex_float* work, + lapack_int lwork ); +lapack_int LAPACKE_zhetrf_rk_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* e, + lapack_int* ipiv, lapack_complex_double* work, + lapack_int lwork ); + +lapack_int LAPACKE_csytrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* e, + const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* e, + const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb); +lapack_int LAPACKE_chetrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* e, + const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chetrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_float* a, + lapack_int lda, const lapack_complex_float* e, + const lapack_int* ipiv, + lapack_complex_float* b, lapack_int ldb); +lapack_int LAPACKE_dsytrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, lapack_int lda, + const double* e, + const lapack_int* ipiv, double* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const double* a, + lapack_int lda, const double* e, + const lapack_int* ipiv, + double* b, lapack_int ldb); +lapack_int LAPACKE_ssytrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* e, + const lapack_int* ipiv, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssytrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const float* a, lapack_int lda, + const float* e, const lapack_int* ipiv, float* b, + lapack_int ldb); +lapack_int LAPACKE_zsytrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* e, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* e, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb); +lapack_int LAPACKE_zhetrs_3( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* e, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, const lapack_complex_double* a, + lapack_int lda, const lapack_complex_double* e, + const lapack_int* ipiv, + lapack_complex_double* b, lapack_int ldb); + +lapack_int LAPACKE_ssytri_3( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, const float* e, const lapack_int* ipiv ); +lapack_int LAPACKE_dsytri_3( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, const double* e, const lapack_int* ipiv ); +lapack_int LAPACKE_csytri_3( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, const lapack_int* ipiv ); +lapack_int LAPACKE_zsytri_3( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, const lapack_int* ipiv ); +lapack_int LAPACKE_chetri_3( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, const lapack_int* ipiv ); +lapack_int LAPACKE_zhetri_3( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, const lapack_int* ipiv ); +lapack_int LAPACKE_ssytri_3_work( int matrix_layout, char uplo, lapack_int n, float* a, + lapack_int lda, const float* e, const lapack_int* ipiv, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytri_3_work( int matrix_layout, char uplo, lapack_int n, double* a, + lapack_int lda, const double* e, const lapack_int* ipiv, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytri_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, const lapack_int* ipiv, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsytri_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, const lapack_int* ipiv, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_chetri_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, const lapack_int* ipiv, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhetri_3_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, const lapack_int* ipiv, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssycon_3( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, const float* e, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_dsycon_3( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, const double* e, + const lapack_int* ipiv, double anorm, + double* rcond ); +lapack_int LAPACKE_csycon_3( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zsycon_3( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, + const lapack_int* ipiv, double anorm, + double* rcond ); +lapack_int LAPACKE_checon_3( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, + const lapack_int* ipiv, float anorm, float* rcond ); +lapack_int LAPACKE_zhecon_3( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, + const lapack_int* ipiv, double anorm, + double* rcond ); +lapack_int LAPACKE_ssycon_3_work( int matrix_layout, char uplo, lapack_int n, + const float* a, lapack_int lda, const float* e, + const lapack_int* ipiv, float anorm, + float* rcond, float* work, lapack_int* iwork ); +lapack_int LAPACKE_dsycon_3_work( int matrix_layout, char uplo, lapack_int n, + const double* a, lapack_int lda, const double* e, + const lapack_int* ipiv, double anorm, + double* rcond, double* work, + lapack_int* iwork ); +lapack_int LAPACKE_csycon_3_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zsycon_3_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); +lapack_int LAPACKE_checon_3_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* e, + const lapack_int* ipiv, float anorm, + float* rcond, lapack_complex_float* work ); +lapack_int LAPACKE_zhecon_3_work( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* e, + const lapack_int* ipiv, double anorm, + double* rcond, lapack_complex_double* work ); + +lapack_int LAPACKE_sgelq( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, + float* t, lapack_int tsize ); +lapack_int LAPACKE_dgelq( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, + double* t, lapack_int tsize ); +lapack_int LAPACKE_cgelq( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int tsize ); +lapack_int LAPACKE_zgelq( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int tsize ); + +lapack_int LAPACKE_sgelq_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, + float* t, lapack_int tsize, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgelq_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, + double* t, lapack_int tsize, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgelq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgelq_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgemlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* t, lapack_int tsize, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dgemlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* t, lapack_int tsize, + double* c, lapack_int ldc ); +lapack_int LAPACKE_cgemlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zgemlq( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_sgemlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* t, lapack_int tsize, + float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgemlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* t, lapack_int tsize, + double* c, lapack_int ldc, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgemlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgemlq_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgeqr( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, + float* t, lapack_int tsize ); +lapack_int LAPACKE_dgeqr( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, + double* t, lapack_int tsize ); +lapack_int LAPACKE_cgeqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int tsize ); +lapack_int LAPACKE_zgeqr( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int tsize ); + +lapack_int LAPACKE_sgeqr_work( int matrix_layout, lapack_int m, lapack_int n, + float* a, lapack_int lda, + float* t, lapack_int tsize, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgeqr_work( int matrix_layout, lapack_int m, lapack_int n, + double* a, lapack_int lda, + double* t, lapack_int tsize, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgeqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgeqr_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgemqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* t, lapack_int tsize, + float* c, lapack_int ldc ); +lapack_int LAPACKE_dgemqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* t, lapack_int tsize, + double* c, lapack_int ldc ); +lapack_int LAPACKE_cgemqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* c, lapack_int ldc ); +lapack_int LAPACKE_zgemqr( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* c, lapack_int ldc ); + +lapack_int LAPACKE_sgemqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const float* a, lapack_int lda, + const float* t, lapack_int tsize, + float* c, lapack_int ldc, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgemqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const double* a, lapack_int lda, + const double* t, lapack_int tsize, + double* c, lapack_int ldc, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgemqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_float* a, lapack_int lda, + const lapack_complex_float* t, lapack_int tsize, + lapack_complex_float* c, lapack_int ldc, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgemqr_work( int matrix_layout, char side, char trans, + lapack_int m, lapack_int n, lapack_int k, + const lapack_complex_double* a, lapack_int lda, + const lapack_complex_double* t, lapack_int tsize, + lapack_complex_double* c, lapack_int ldc, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgetsls( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* b, lapack_int ldb ); +lapack_int LAPACKE_dgetsls( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* b, lapack_int ldb ); +lapack_int LAPACKE_cgetsls( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zgetsls( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb ); + +lapack_int LAPACKE_sgetsls_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgetsls_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgetsls_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgetsls_work( int matrix_layout, char trans, lapack_int m, + lapack_int n, lapack_int nrhs, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_sgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + float* a, lapack_int lda, + float* t, lapack_int ldt ); +lapack_int LAPACKE_dgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + double* a, lapack_int lda, + double* t, lapack_int ldt ); +lapack_int LAPACKE_cgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt ); +lapack_int LAPACKE_zgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt ); + +lapack_int LAPACKE_sgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + float* a, lapack_int lda, + float* t, lapack_int ldt, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + double* a, lapack_int lda, + double* t, lapack_int ldt, + double* work, lapack_int lwork ); +lapack_int LAPACKE_cgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + lapack_complex_float* a, lapack_int lda, + lapack_complex_float* t, lapack_int ldt, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int mb1, lapack_int nb1, lapack_int nb2, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* t, lapack_int ldt, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssyev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_dsyev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_ssyevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_dsyevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_ssyevr_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, float* a, lapack_int lda, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_dsyevr_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, double* a, lapack_int lda, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz ); + +lapack_int LAPACKE_ssyevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, float* a, lapack_int lda, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsyevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, double* a, lapack_int lda, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssyev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* a, lapack_int lda, float* w, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsyev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* a, lapack_int lda, + double* w, double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssyevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, float* a, lapack_int lda, + float* w, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsyevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, double* a, lapack_int lda, + double* w, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssyevr_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, lapack_int* isuppz, float* work, + lapack_int lwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_dsyevr_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* isuppz, + double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssyevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, float* a, + lapack_int lda, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_dsyevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, double* a, + lapack_int lda, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_cheev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_zheev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, double* w ); + +lapack_int LAPACKE_cheevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, float* w ); +lapack_int LAPACKE_zheevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double* w ); + +lapack_int LAPACKE_cheevr_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* isuppz ); +lapack_int LAPACKE_zheevr_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, lapack_int ldz, + lapack_int* isuppz ); + +lapack_int LAPACKE_cheevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, float* w, + lapack_complex_float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_zheevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_cheev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zheev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* w, + lapack_complex_double* work, lapack_int lwork, + double* rwork ); + +lapack_int LAPACKE_cheevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_float* a, + lapack_int lda, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_zheevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_complex_double* a, + lapack_int lda, double* w, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_cheevr_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* isuppz, + lapack_complex_float* work, lapack_int lwork, + float* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_zheevr_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_int* isuppz, + lapack_complex_double* work, lapack_int lwork, + double* rwork, lapack_int lrwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_cheevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_float* a, lapack_int lda, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int* iwork, lapack_int* ifail ); +lapack_int LAPACKE_zheevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int* iwork, lapack_int* ifail ); + +lapack_int LAPACKE_ssbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab, float* w, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab, double* w, + double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, float* ab, lapack_int ldab, float* w, + float* z, lapack_int ldz ); +lapack_int LAPACKE_dsbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, double* ab, lapack_int ldab, + double* w, double* z, lapack_int ldz ); + +lapack_int LAPACKE_ssbevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, lapack_int ldz, + lapack_int* ifail ); +lapack_int LAPACKE_dsbevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* q, lapack_int ldq, + double vl, double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, double* z, + lapack_int ldz, lapack_int* ifail ); + +lapack_int LAPACKE_ssbev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork ); +lapack_int LAPACKE_dsbev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssbevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, float* ab, + lapack_int ldab, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); +lapack_int LAPACKE_dsbevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, double* ab, + lapack_int ldab, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, + lapack_int* iwork, lapack_int liwork ); + +lapack_int LAPACKE_ssbevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + float* ab, lapack_int ldab, float* q, + lapack_int ldq, float vl, float vu, + lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, float* z, + lapack_int ldz, float* work, lapack_int lwork, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_dsbevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + double* ab, lapack_int ldab, double* q, + lapack_int ldq, double vl, double vu, + lapack_int il, lapack_int iu, double abstol, + lapack_int* m, double* w, double* z, + lapack_int ldz, double* work, lapack_int lwork, lapack_int* iwork, + lapack_int* ifail ); + +lapack_int LAPACKE_chbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab, float* w, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab, double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_chbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_float* ab, + lapack_int ldab, float* w, lapack_complex_float* z, + lapack_int ldz ); +lapack_int LAPACKE_zhbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, + lapack_int kd, lapack_complex_double* ab, + lapack_int ldab, double* w, lapack_complex_double* z, + lapack_int ldz ); + +lapack_int LAPACKE_chbevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* q, lapack_int ldq, float vl, + float vu, lapack_int il, lapack_int iu, float abstol, + lapack_int* m, float* w, lapack_complex_float* z, + lapack_int ldz, lapack_int* ifail ); +lapack_int LAPACKE_zhbevx_2stage( int matrix_layout, char jobz, char range, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* q, lapack_int ldq, double vl, + double vu, lapack_int il, lapack_int iu, + double abstol, lapack_int* m, double* w, + lapack_complex_double* z, lapack_int ldz, + lapack_int* ifail ); + +lapack_int LAPACKE_chbev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork ); +lapack_int LAPACKE_zhbev_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +lapack_int LAPACKE_chbevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); +lapack_int LAPACKE_zhbevd_2stage_work( int matrix_layout, char jobz, char uplo, + lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, + lapack_int lrwork, lapack_int* iwork, + lapack_int liwork ); + +lapack_int LAPACKE_chbevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + lapack_complex_float* ab, lapack_int ldab, + lapack_complex_float* q, lapack_int ldq, + float vl, float vu, lapack_int il, + lapack_int iu, float abstol, lapack_int* m, + float* w, lapack_complex_float* z, + lapack_int ldz, lapack_complex_float* work, + lapack_int lwork, float* rwork, lapack_int* iwork, + lapack_int* ifail ); +lapack_int LAPACKE_zhbevx_2stage_work( int matrix_layout, char jobz, char range, + char uplo, lapack_int n, lapack_int kd, + lapack_complex_double* ab, lapack_int ldab, + lapack_complex_double* q, lapack_int ldq, + double vl, double vu, lapack_int il, + lapack_int iu, double abstol, lapack_int* m, + double* w, lapack_complex_double* z, + lapack_int ldz, lapack_complex_double* work, + lapack_int lwork, double* rwork, lapack_int* iwork, + lapack_int* ifail ); + +lapack_int LAPACKE_ssygv_2stage( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, lapack_int lda, + float* b, lapack_int ldb, float* w ); +lapack_int LAPACKE_dsygv_2stage( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, lapack_int lda, + double* b, lapack_int ldb, double* w ); +lapack_int LAPACKE_ssygv_2stage_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, float* a, + lapack_int lda, float* b, lapack_int ldb, + float* w, float* work, lapack_int lwork ); +lapack_int LAPACKE_dsygv_2stage_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, double* a, + lapack_int lda, double* b, lapack_int ldb, + double* w, double* work, lapack_int lwork ); + +lapack_int LAPACKE_chegv_2stage( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* w ); +lapack_int LAPACKE_zhegv_2stage( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* b, + lapack_int ldb, double* w ); +lapack_int LAPACKE_chegv_2stage_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* b, + lapack_int ldb, float* w, + lapack_complex_float* work, lapack_int lwork, + float* rwork ); +lapack_int LAPACKE_zhegv_2stage_work( int matrix_layout, lapack_int itype, char jobz, + char uplo, lapack_int n, + lapack_complex_double* a, lapack_int lda, + lapack_complex_double* b, lapack_int ldb, + double* w, lapack_complex_double* work, + lapack_int lwork, double* rwork ); + +//LAPACK 3.8.0 +lapack_int LAPACKE_ssysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2, float* b, lapack_int ldb, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2, + double* b, lapack_int ldb ); +lapack_int LAPACKE_dsysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2, + double* b, lapack_int ldb, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_chesv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chesv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhesv_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhesv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb, + lapack_complex_double* work, lapack_int lwork ); + +lapack_int LAPACKE_ssytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2 ); +lapack_int LAPACKE_ssytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2, + float* work, lapack_int lwork ); +lapack_int LAPACKE_dsytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2 ); +lapack_int LAPACKE_dsytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2, + double* work, lapack_int lwork ); +lapack_int LAPACKE_csytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); +lapack_int LAPACKE_csytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zsytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); +lapack_int LAPACKE_zsytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* work, lapack_int lwork ); +lapack_int LAPACKE_chetrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); +lapack_int LAPACKE_chetrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* work, lapack_int lwork ); +lapack_int LAPACKE_zhetrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); +lapack_int LAPACKE_zhetrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* work, lapack_int lwork ); + + +lapack_int LAPACKE_ssytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2, float* b, lapack_int ldb ); +lapack_int LAPACKE_ssytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, float* a, lapack_int lda, + float* tb, lapack_int ltb, lapack_int* ipiv, + lapack_int* ipiv2, float* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2, + double* b, lapack_int ldb ); +lapack_int LAPACKE_dsytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, double* a, lapack_int lda, + double* tb, lapack_int ltb, + lapack_int* ipiv, lapack_int* ipiv2, + double* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_csytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zsytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_chetrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_chetrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_float* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +lapack_int LAPACKE_zhetrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, + lapack_int nrhs, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* tb, + lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, + lapack_complex_double* b, lapack_int ldb ); +//LAPACK 3.10.0 +lapack_int LAPACKE_sorhr_col( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, float* a, + lapack_int lda, float* t, + lapack_int ldt, float* d ); +lapack_int LAPACKE_sorhr_col_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, float* a, + lapack_int lda, float* t, + lapack_int ldt, float* d ); +lapack_int LAPACKE_dorhr_col( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, double* a, + lapack_int lda, double* t, + lapack_int ldt, double* d ); +lapack_int LAPACKE_dorhr_col_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, double* a, + lapack_int lda, double* t, + lapack_int ldt, double* d ); +lapack_int LAPACKE_cunhr_col( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* d ); +lapack_int LAPACKE_cunhr_col_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_float* a, + lapack_int lda, lapack_complex_float* t, + lapack_int ldt, lapack_complex_float* d ); +lapack_int LAPACKE_zunhr_col( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* d ); +lapack_int LAPACKE_zunhr_col_work( int matrix_layout, lapack_int m, lapack_int n, + lapack_int nb, lapack_complex_double* a, + lapack_int lda, lapack_complex_double* t, + lapack_int ldt, lapack_complex_double* d ); + +/* APIs for set/get nancheck flags */ +void LAPACKE_set_nancheck( int flag ); +int LAPACKE_get_nancheck( void ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _LAPACKE_H_ */ diff --git a/install/include/lapacke_config.h b/install/include/lapacke_config.h new file mode 100644 index 0000000000..a8679dfa26 --- /dev/null +++ b/install/include/lapacke_config.h @@ -0,0 +1,159 @@ +/***************************************************************************** + Copyright (c) 2010, Intel Corp. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Intel Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. +****************************************************************************** +* Contents: Native C interface to LAPACK +* Author: Intel Corporation +*****************************************************************************/ + +#ifndef _LAPACKE_CONFIG_H_ +#define _LAPACKE_CONFIG_H_ + +#ifdef __cplusplus +#if defined(LAPACK_COMPLEX_CPP) +#include +#endif +extern "C" { +#endif /* __cplusplus */ + +#include +#include +#include + +#ifndef lapack_int +#if defined(LAPACK_ILP64) +#define lapack_int int64_t +#else +#define lapack_int int32_t +#endif +#endif + +/* + * Integer format string + */ +#ifndef LAPACK_IFMT +#if defined(LAPACK_ILP64) +#define LAPACK_IFMT PRId64 +#else +#define LAPACK_IFMT PRId32 +#endif +#endif + +#ifndef lapack_logical +#define lapack_logical lapack_int +#endif + +#if defined(_MSC_VER) && defined(__INTEL_CLANG_COMPILER) +#define LAPACK_COMPLEX_STRUCTURE +#define LAPACK_GLOBAL(lcname,UCNAME) lcname +#define NOCHANGE +#endif + +#ifndef LAPACK_COMPLEX_CUSTOM +#if defined(_MSC_VER) && !defined(__INTEL_CLANG_COMPILER) +#if defined(LAPACK_COMPLEX_CPP) + #include + #define lapack_complex_float std::complex + #define lapack_complex_double std::complex + #define lapack_complex_float_real(z) ((z).real()) + #define lapack_complex_float_imag(z) ((z).imag()) + #define lapack_complex_double_real(z) ((z).real()) + #define lapack_complex_double_imag(z) ((z).imag()) + #define _CRT_USE_C_COMPLEX_H +#else + #include + #define LAPACK_COMPLEX_CUSTOM + #define lapack_complex_float _Fcomplex + #define lapack_complex_double _Dcomplex + #define lapack_complex_float_real(z) (creal(z)) + #define lapack_complex_float_imag(z) (cimag(z)) + #define lapack_complex_double_real(z) (creal(z)) + #define lapack_complex_double_imag(z) (cimag(z)) +#endif +#else + +#if defined(LAPACK_COMPLEX_STRUCTURE) + +typedef struct { float real, imag; } _lapack_complex_float; +typedef struct { double real, imag; } _lapack_complex_double; +#define lapack_complex_float _lapack_complex_float +#define lapack_complex_double _lapack_complex_double +#define lapack_complex_float_real(z) ((z).real) +#define lapack_complex_float_imag(z) ((z).imag) +#define lapack_complex_double_real(z) ((z).real) +#define lapack_complex_double_imag(z) ((z).imag) + +#elif defined(LAPACK_COMPLEX_C99) + +#include +#define lapack_complex_float float _Complex +#define lapack_complex_double double _Complex +#define lapack_complex_float_real(z) (creal(z)) +#define lapack_complex_float_imag(z) (cimag(z)) +#define lapack_complex_double_real(z) (creal(z)) +#define lapack_complex_double_imag(z) (cimag(z)) + +#elif defined(LAPACK_COMPLEX_CPP) + +#define lapack_complex_float std::complex +#define lapack_complex_double std::complex +#define lapack_complex_float_real(z) ((z).real()) +#define lapack_complex_float_imag(z) ((z).imag()) +#define lapack_complex_double_real(z) ((z).real()) +#define lapack_complex_double_imag(z) ((z).imag()) + +#else + +#include +#define lapack_complex_float float _Complex +#define lapack_complex_double double _Complex +#define lapack_complex_float_real(z) (creal(z)) +#define lapack_complex_float_imag(z) (cimag(z)) +#define lapack_complex_double_real(z) (creal(z)) +#define lapack_complex_double_imag(z) (cimag(z)) + +#endif +#endif + +lapack_complex_float lapack_make_complex_float( float re, float im ); +lapack_complex_double lapack_make_complex_double( double re, double im ); + +#endif + +#ifndef LAPACK_malloc +#define LAPACK_malloc( size ) malloc( size ) +#endif + +#ifndef LAPACK_free +#define LAPACK_free( p ) free( p ) +#endif + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _LAPACKE_CONFIG_H_ */ diff --git a/install/include/lapacke_mangling.h b/install/include/lapacke_mangling.h new file mode 100644 index 0000000000..6211fd144d --- /dev/null +++ b/install/include/lapacke_mangling.h @@ -0,0 +1,17 @@ +#ifndef LAPACK_HEADER_INCLUDED +#define LAPACK_HEADER_INCLUDED + +#ifndef LAPACK_GLOBAL +#if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) +#define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ +#elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) +#define LAPACK_GLOBAL(lcname,UCNAME) UCNAME +#elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) +#define LAPACK_GLOBAL(lcname,UCNAME) lcname +#else +#define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ +#endif +#endif + +#endif + diff --git a/install/include/lapacke_utils.h b/install/include/lapacke_utils.h new file mode 100644 index 0000000000..332a5024fb --- /dev/null +++ b/install/include/lapacke_utils.h @@ -0,0 +1,612 @@ +/***************************************************************************** + Copyright (c) 2014, Intel Corp. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Intel Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. +****************************************************************************** +* Contents: Native C interface to LAPACK utility functions +* Author: Intel Corporation +*****************************************************************************/ + +#ifndef _LAPACKE_UTILS_H_ +#define _LAPACKE_UTILS_H_ + +#include "lapacke.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifndef ABS +#define ABS(x) (((x) < 0) ? -(x) : (x)) +#endif +#ifndef MAX +#define MAX(x,y) (((x) > (y)) ? (x) : (y)) +#endif +#ifndef MIN +#define MIN(x,y) (((x) < (y)) ? (x) : (y)) +#endif +#ifndef MAX3 +#define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) +#endif +#ifndef MIN3 +#define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) +#endif + +#define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) +#define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) +#define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ + IS_S_NONZERO(*(((float*)&x)+1)) ) +#define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ + IS_D_NONZERO(*(((double*)&x)+1)) ) + +/* Error handler */ +void LAPACKE_xerbla( const char *name, lapack_int info ); + +/* Compare two chars (case-insensitive) */ +lapack_logical LAPACKE_lsame( char ca, char cb ) +#if defined __GNUC__ + __attribute__((const)) +#endif + ; + +/* Functions to convert column-major to row-major 2d arrays and vice versa. */ +void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* in, lapack_int ldin, + lapack_complex_float* out, lapack_int ldout ); +void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_float* in, lapack_int ldin, + lapack_complex_float* out, lapack_int ldout ); +void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_chs_trans( int matrix_layout, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag, + lapack_int n, const lapack_complex_float *in, + lapack_complex_float *out ); +void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); +void LAPACKE_ctz_trans( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_float *in, lapack_int ldin, + lapack_complex_float *out, lapack_int ldout ); + +void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n, + const double* in, lapack_int ldin, + double* out, lapack_int ldout ); +void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n, + const double* in, lapack_int ldin, + double* out, lapack_int ldout ); +void LAPACKE_dhs_trans( int matrix_layout, lapack_int n, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo, + lapack_int n, const double *in, + double *out ); +void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n, + const double *in, + double *out ); +void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n, + const double *in, + double *out ); +void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, const double *in, + double *out ); +void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag, + lapack_int n, const double *in, + double *out ); +void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); +void LAPACKE_dtz_trans( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const double *in, lapack_int ldin, + double *out, lapack_int ldout ); + +void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n, + const float* in, lapack_int ldin, + float* out, lapack_int ldout ); +void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n, + const float* in, lapack_int ldin, + float* out, lapack_int ldout ); +void LAPACKE_shs_trans( int matrix_layout, lapack_int n, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo, + lapack_int n, const float *in, + float *out ); +void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n, + const float *in, + float *out ); +void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n, + const float *in, + float *out ); +void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, const float *in, + float *out ); +void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag, + lapack_int n, const float *in, + float *out ); +void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); +void LAPACKE_stz_trans( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const float *in, lapack_int ldin, + float *out, lapack_int ldout ); + +void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n, + lapack_int kl, lapack_int ku, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* in, lapack_int ldin, + lapack_complex_double* out, lapack_int ldout ); +void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n, + const lapack_complex_double* in, lapack_int ldin, + lapack_complex_double* out, lapack_int ldout ); +void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_zhs_trans( int matrix_layout, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n, + lapack_int kd, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo, + lapack_int n, const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_zpo_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag, + lapack_int n, const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag, + lapack_int n, const lapack_complex_double *in, + lapack_complex_double *out ); +void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); +void LAPACKE_ztz_trans( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_double *in, lapack_int ldin, + lapack_complex_double *out, lapack_int ldout ); + +/* NaN checkers */ +#define LAPACK_SISNAN( x ) ( x != x ) +#define LAPACK_DISNAN( x ) ( x != x ) +#define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ + LAPACK_SISNAN(*(((float*) &x)+1)) ) +#define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ + LAPACK_DISNAN(*(((double*)&x)+1)) ) + +/* NaN checkers for vectors */ +lapack_logical LAPACKE_c_nancheck( lapack_int n, + const lapack_complex_float *x, + lapack_int incx ); +lapack_logical LAPACKE_d_nancheck( lapack_int n, + const double *x, + lapack_int incx ); +lapack_logical LAPACKE_s_nancheck( lapack_int n, + const float *x, + lapack_int incx ); +lapack_logical LAPACKE_z_nancheck( lapack_int n, + const lapack_complex_double *x, + lapack_int incx ); +/* NaN checkers for matrices */ +lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m, + lapack_int n, lapack_int kl, + lapack_int ku, + const lapack_complex_float *ab, + lapack_int ldab ); +lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_cgt_nancheck( lapack_int n, + const lapack_complex_float *dl, + const lapack_complex_float *d, + const lapack_complex_float *du ); +lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const lapack_complex_float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_chp_nancheck( lapack_int n, + const lapack_complex_float *ap ); +lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const lapack_complex_float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_cpf_nancheck( lapack_int n, + const lapack_complex_float *a ); +lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_cpp_nancheck( lapack_int n, + const lapack_complex_float *ap ); +lapack_logical LAPACKE_cpt_nancheck( lapack_int n, + const float *d, + const lapack_complex_float *e ); +lapack_logical LAPACKE_csp_nancheck( lapack_int n, + const lapack_complex_float *ap ); +lapack_logical LAPACKE_cst_nancheck( lapack_int n, + const lapack_complex_float *d, + const lapack_complex_float *e ); +lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr, + char uplo, char diag, + lapack_int n, + const lapack_complex_float *a ); +lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const lapack_complex_float *ap ); +lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); +lapack_logical LAPACKE_ctz_nancheck( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_float *a, + lapack_int lda ); + +lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m, + lapack_int n, lapack_int kl, + lapack_int ku, + const double *ab, + lapack_int ldab ); +lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dgt_nancheck( lapack_int n, + const double *dl, + const double *d, + const double *du ); +lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_dpf_nancheck( lapack_int n, + const double *a ); +lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo, + lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dpp_nancheck( lapack_int n, + const double *ap ); +lapack_logical LAPACKE_dpt_nancheck( lapack_int n, + const double *d, + const double *e ); +lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_dsp_nancheck( lapack_int n, + const double *ap ); +lapack_logical LAPACKE_dst_nancheck( lapack_int n, + const double *d, + const double *e ); +lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo, + lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr, + char uplo, char diag, + lapack_int n, + const double *a ); +lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const double *ap ); +lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const double *a, + lapack_int lda ); +lapack_logical LAPACKE_dtz_nancheck( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const double *a, lapack_int lda ); + +lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m, + lapack_int n, lapack_int kl, + lapack_int ku, + const float *ab, + lapack_int ldab ); +lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_sgt_nancheck( lapack_int n, + const float *dl, + const float *d, + const float *du ); +lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_spf_nancheck( lapack_int n, + const float *a ); +lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo, + lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_spp_nancheck( lapack_int n, + const float *ap ); +lapack_logical LAPACKE_spt_nancheck( lapack_int n, + const float *d, + const float *e ); +lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_ssp_nancheck( lapack_int n, + const float *ap ); +lapack_logical LAPACKE_sst_nancheck( lapack_int n, + const float *d, + const float *e ); +lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo, + lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const float* ab, + lapack_int ldab ); +lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr, + char uplo, char diag, + lapack_int n, + const float *a ); +lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const float *ap ); +lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const float *a, + lapack_int lda ); +lapack_logical LAPACKE_stz_nancheck( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const float *a, lapack_int lda ); + +lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m, + lapack_int n, lapack_int kl, + lapack_int ku, + const lapack_complex_double *ab, + lapack_int ldab ); +lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_zgt_nancheck( lapack_int n, + const lapack_complex_double *dl, + const lapack_complex_double *d, + const lapack_complex_double *du ); +lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const lapack_complex_double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_zhp_nancheck( lapack_int n, + const lapack_complex_double *ap ); +lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo, + lapack_int n, lapack_int kd, + const lapack_complex_double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_zpf_nancheck( lapack_int n, + const lapack_complex_double *a ); +lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_zpp_nancheck( lapack_int n, + const lapack_complex_double *ap ); +lapack_logical LAPACKE_zpt_nancheck( lapack_int n, + const double *d, + const lapack_complex_double *e ); +lapack_logical LAPACKE_zsp_nancheck( lapack_int n, + const lapack_complex_double *ap ); +lapack_logical LAPACKE_zst_nancheck( lapack_int n, + const lapack_complex_double *d, + const lapack_complex_double *e ); +lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, lapack_int kd, + const lapack_complex_double* ab, + lapack_int ldab ); +lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr, + char uplo, char diag, + lapack_int n, + const lapack_complex_double *a ); +lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const lapack_complex_double *ap ); +lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag, + lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); +lapack_logical LAPACKE_ztz_nancheck( int matrix_layout, char direct, char uplo, + char diag, lapack_int m, lapack_int n, + const lapack_complex_double *a, + lapack_int lda ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _LAPACKE_UTILS_H_ */ diff --git a/install/include/openblas_config.h b/install/include/openblas_config.h new file mode 100644 index 0000000000..4799973052 --- /dev/null +++ b/install/include/openblas_config.h @@ -0,0 +1,136 @@ +#ifndef OPENBLAS_CONFIG_H +#define OPENBLAS_CONFIG_H +#define OPENBLAS_OS_LINUX 1 +#define OPENBLAS_ARCH_RISCV64 1 +#define OPENBLAS_C_GCC 1 +#define OPENBLAS___64BIT__ 1 +#define OPENBLAS_HAVE_C11 1 +#define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create +#define OPENBLAS_BUNDERSCORE _ +#define OPENBLAS_NEEDBUNDERSCORE 1 +#define OPENBLAS_RISCV64_ZVL128B +#define OPENBLAS_L1_DATA_SIZE 32768 +#define OPENBLAS_L1_DATA_LINESIZE 32 +#define OPENBLAS_L2_SIZE 1048576 +#define OPENBLAS_L2_LINESIZE 32 +#define OPENBLAS_DTB_DEFAULT_ENTRIES 128 +#define OPENBLAS_DTB_SIZE 4096 +#define OPENBLAS_L2_ASSOCIATIVE 4 +#define OPENBLAS_CORE_RISCV64_ZVL128B +#define OPENBLAS_CHAR_CORENAME "RISCV64_ZVL128B" +#define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 +#define OPENBLAS_VERSION " OpenBLAS 0.3.29.dev " +/*This is only for "make install" target.*/ + +#if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) +#define OPENBLAS_WINDOWS_ABI +#define OPENBLAS_OS_WINDOWS + +#ifdef DOUBLE +#define DOUBLE_DEFINED DOUBLE +#undef DOUBLE +#endif +#endif + +#ifdef OPENBLAS_NEEDBUNDERSCORE +#define BLASFUNC(FUNC) FUNC##_ +#else +#define BLASFUNC(FUNC) FUNC +#endif + +#ifdef OPENBLAS_QUAD_PRECISION +typedef struct { + unsigned long x[2]; +} xdouble; +#elif defined OPENBLAS_EXPRECISION +#define xdouble long double +#else +#define xdouble double +#endif + +#if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) +typedef long long BLASLONG; +typedef unsigned long long BLASULONG; +#else +typedef long BLASLONG; +typedef unsigned long BLASULONG; +#endif + +#ifndef BFLOAT16 +#include +typedef uint16_t bfloat16; +#endif + +#if defined(__GNUC__) && (__GNUC__ >= 12) +typedef _Float16 hfloat16; +#else +#include +typedef uint16_t hfloat16; +#endif + +#ifdef OPENBLAS_USE64BITINT +typedef BLASLONG blasint; +#else +typedef int blasint; +#endif + +#if defined(XDOUBLE) || defined(DOUBLE) +#define FLOATRET FLOAT +#else +#ifdef NEED_F2CCONV +#define FLOATRET double +#else +#define FLOATRET float +#endif +#endif + +/* Inclusion of a standard header file is needed for definition of __STDC_* + predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs + as a side effect of including either or . */ +#include + +/* C99 supports complex floating numbers natively, which GCC also offers as an + extension since version 3.0. If neither are available, use a compatible + structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ +#if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ + (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) && !defined(_MSC_VER) + #define OPENBLAS_COMPLEX_C99 +#ifndef __cplusplus + #include +#endif + typedef float _Complex openblas_complex_float; + typedef double _Complex openblas_complex_double; + typedef xdouble _Complex openblas_complex_xdouble; + #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) + #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) + #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) + #define openblas_complex_float_real(z) (creal(z)) + #define openblas_complex_float_imag(z) (cimag(z)) + #define openblas_complex_double_real(z) (creal(z)) + #define openblas_complex_double_imag(z) (cimag(z)) + #define openblas_complex_xdouble_real(z) (creal(z)) + #define openblas_complex_xdouble_imag(z) (cimag(z)) +#else + #define OPENBLAS_COMPLEX_STRUCT + typedef struct { float real, imag; } openblas_complex_float; + typedef struct { double real, imag; } openblas_complex_double; + typedef struct { xdouble real, imag; } openblas_complex_xdouble; + #define openblas_make_complex_float(real, imag) {(real), (imag)} + #define openblas_make_complex_double(real, imag) {(real), (imag)} + #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} + #define openblas_complex_float_real(z) ((z).real) + #define openblas_complex_float_imag(z) ((z).imag) + #define openblas_complex_double_real(z) ((z).real) + #define openblas_complex_double_imag(z) ((z).imag) + #define openblas_complex_xdouble_real(z) ((z).real) + #define openblas_complex_xdouble_imag(z) ((z).imag) +#endif + +/* Inclusion of Linux-specific header is needed for definition of cpu_set_t. */ +#ifdef OPENBLAS_OS_LINUX +#ifndef _GNU_SOURCE + #define _GNU_SOURCE +#endif +#include +#endif +#endif /* OPENBLAS_CONFIG_H */ diff --git a/install/lib/cmake/openblas/OpenBLASConfig.cmake b/install/lib/cmake/openblas/OpenBLASConfig.cmake new file mode 100644 index 0000000000..7be3d33823 --- /dev/null +++ b/install/lib/cmake/openblas/OpenBLASConfig.cmake @@ -0,0 +1,4 @@ +SET(OpenBLAS_VERSION "0.3.29.dev") +file(REAL_PATH "../../.." _OpenBLAS_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} ) +SET(OpenBLAS_INCLUDE_DIRS ${_OpenBLAS_ROOT_DIR}/include) +SET(OpenBLAS_LIBRARIES ${_OpenBLAS_ROOT_DIR}/lib/libopenblas.so) diff --git a/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake b/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake new file mode 100644 index 0000000000..f6052c3b8a --- /dev/null +++ b/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake @@ -0,0 +1,9 @@ +set (PACKAGE_VERSION "0.3.29.dev") +if (PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set (PACKAGE_VERSION_COMPATIBLE FALSE) +else () + set (PACKAGE_VERSION_COMPATIBLE TRUE) + if (PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set (PACKAGE_VERSION_EXACT TRUE) + endif () +endif () diff --git a/install/lib/pkgconfig/openblas.pc b/install/lib/pkgconfig/openblas.pc new file mode 100644 index 0000000000..aafa9f0c94 --- /dev/null +++ b/install/lib/pkgconfig/openblas.pc @@ -0,0 +1,16 @@ +libdir=/home/da/OpenBLAS/install/lib +libprefix= +libnamesuffix= +libsuffix= +includedir=/home/da/OpenBLAS/install/include +omp_opt= +openblas_config= USE_64BITINT= DYNAMIC_ARCH= DYNAMIC_OLDER= NO_CBLAS= NO_LAPACK= NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP= RISCV64_ZVL128B MAX_THREADS=32 +version=0.3.29.dev +extralib=-lm -lpthread -lgfortran -lm -lpthread -lgfortran +Name: openblas +Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version +Version: ${version} +URL: https://github.com/xianyi/OpenBLAS +Libs: -L${libdir} -l${libprefix}openblas${libsuffix}${libnamesuffix} +Libs.private: ${extralib} +Cflags: -I${includedir} ${omp_opt} diff --git a/install/test_shgemm b/install/test_shgemm new file mode 100755 index 0000000000000000000000000000000000000000..2894008ae696dedbc263790f74757d58e9b90518 GIT binary patch literal 847232 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%0DI<4 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 q3oGe`@VQ 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 Ps@fGEu!&=`2c} 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 literal 0 HcmV?d00001 diff --git a/install/test_shgemm.c b/install/test_shgemm.c new file mode 100644 index 0000000000..b989239501 --- /dev/null +++ b/install/test_shgemm.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +void print_matrix(float *C, int M, int N) { + for (int i = 0; i < M; i++) { + for (int j = 0; j < N; j++) { + printf("%f ", C[i * N + j]); + } + printf("\n"); + } +} + +int main() { + const int M = 2, N = 2, K = 2; + const float alpha = 1.0f; + const float beta = 0.0f; + + // A[M x K], row-major + hfloat16 A[4] = {1.0, 2.0, + 3.0, 4.0}; + + // B[K x N], row-major + hfloat16 B[4] = {5.0, 6.0, + 7.0, 8.0}; + + // C[M x N], row-major + float C[4] = {0}; + + // Call OpenBLAS float16 GEMM + cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, + M, N, K, + alpha, + A, K, // lda = K + B, N, // ldb = N + beta, + C, N); // ldc = N + + printf("Result C = A*B:\n"); + print_matrix(C, M, N); + return 0; +} + diff --git a/install/zvl_test b/install/zvl_test new file mode 100755 index 0000000000000000000000000000000000000000..6679eddeef97dde0894ab47b3ccc1bec7724de10 GIT binary patch literal 714472 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�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∾evD;*+S!nOk6MNm-(B83cc3#?(h6mdE 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%0AdBFIjV7W^vWX&tJVG>i{ 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�(otE<>1aFG~+&+J3$F!g{@WP}8p&$NQ&@ka|5 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 Yc)cCl4_}(y|AA-i{*MJW1V5wy3#RNHXaE2J literal 0 HcmV?d00001 diff --git a/install/zvl_test.c b/install/zvl_test.c new file mode 100644 index 0000000000..e67b151bba --- /dev/null +++ b/install/zvl_test.c @@ -0,0 +1,22 @@ +#include +#include +#include + +int main(){ + unsigned int gvl = __riscv_vsetvl_e32m2(8); + float *A = (float *)malloc(4 * 4 * sizeof(float)); + for (int i =0;i<4*4;i++){ + A[i]=i%10; + } + vfloat32m2_t A0 = __riscv_vle32_v_f32m2(&A[0], gvl); + float tmp[8]; + __riscv_vse32_v_f32m2(tmp, A0, gvl); + + printf("A0 vector contents:\n"); + for (int i = 0; i < gvl; i++) { + printf("tmp[%d] = %.2f\n", i, tmp[i]); + } + + free(A); + return 0; +} diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index a3ee6559e9..b4c1b769d7 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -136,6 +136,9 @@ if (BUILD_BFLOAT16) GenerateNamedObjects("gemm_batch.c" "" "sbgemm_batch" ${CBLAS_FLAG} "" "" true "BFLOAT16") endif () endif () +if (BUILD_HFLOAT16) + GenerateNamedObjects("gemm.c" "" "shgemm" ${CBLAS_FLAG} "" "" true "HFLOAT16") +endif () # complex-specific sources foreach (float_type ${FLOAT_TYPES}) diff --git a/interface/Makefile b/interface/Makefile index f09a6f46b9..3ac54628f6 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -53,6 +53,10 @@ SBBLAS3OBJS = sbgemm.$(SUFFIX) sbgemmt.$(SUFFIX) sbgemmtr.$(SUFFIX) SBEXTOBJS = sbstobf16.$(SUFFIX) sbdtobf16.$(SUFFIX) sbf16tos.$(SUFFIX) dbf16tod.$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLAS3OBJS = shgemm.$(SUFFIX) +endif + DBLAS1OBJS = \ daxpy.$(SUFFIX) dswap.$(SUFFIX) \ dcopy.$(SUFFIX) dscal.$(SUFFIX) \ @@ -291,6 +295,10 @@ CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX) cblas_sbgemmt.$(SUFFIX) cblas_sbgemmtr.$(S CSBEXTOBJS = cblas_sbstobf16.$(SUFFIX) cblas_sbdtobf16.$(SUFFIX) cblas_sbf16tos.$(SUFFIX) cblas_dbf16tod.$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +CSHBLAS3OBJS = cblas_shgemm.$(SUFFIX) +endif + CDBLAS1OBJS = \ cblas_idamax.$(SUFFIX) cblas_idamin.$(SUFFIX) cblas_dasum.$(SUFFIX) cblas_daxpy.$(SUFFIX) \ cblas_dcopy.$(SUFFIX) cblas_ddot.$(SUFFIX) \ @@ -388,6 +396,7 @@ SBLAS3OBJS += $(CSBLAS3OBJS) SBBLAS1OBJS += $(CSBBLAS1OBJS) SBBLAS2OBJS += $(CSBBLAS2OBJS) SBBLAS3OBJS += $(CSBBLAS3OBJS) +SHBLAS3OBJS += $(CSHBLAS3OBJS) DBLAS1OBJS += $(CDBLAS1OBJS) DBLAS2OBJS += $(CDBLAS2OBJS) DBLAS3OBJS += $(CDBLAS3OBJS) @@ -405,6 +414,7 @@ endif SBLASOBJS = $(SBLAS1OBJS) $(SBLAS2OBJS) $(SBLAS3OBJS) SBBLASOBJS = $(SBBLAS1OBJS) $(SBBLAS2OBJS) $(SBBLAS3OBJS) +SHBLASOBJS = $(SHBLAS3OBJS) DBLASOBJS = $(DBLAS1OBJS) $(DBLAS2OBJS) $(DBLAS3OBJS) QBLASOBJS = $(QBLAS1OBJS) $(QBLAS2OBJS) $(QBLAS3OBJS) CBLASOBJS = $(CBLAS1OBJS) $(CBLAS2OBJS) $(CBLAS3OBJS) @@ -512,7 +522,7 @@ ifneq ($(BUILD_COMPLEX16),1) ZBLASOBJS= endif -FUNCOBJS = $(SBEXTOBJS) $(CXERBLAOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) +FUNCOBJS = $(SBEXTOBJS) $(CXERBLAOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(SHBLASOBJS) ifeq ($(EXPRECISION), 1) FUNCOBJS += $(QBLASOBJS) $(XBLASOBJS) @@ -550,7 +560,7 @@ level1 : $(SBEXTOBJS) $(SBBLAS1OBJS) $(SBLAS1OBJS) $(DBLAS1OBJS) $(QBLAS1OBJS) $ level2 : $(SBBLAS2OBJS) $(SBLAS2OBJS) $(DBLAS2OBJS) $(QBLAS2OBJS) $(CBLAS2OBJS) $(ZBLAS2OBJS) $(XBLAS2OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ -level3 : $(SBBLAS3OBJS) $(SBLAS3OBJS) $(DBLAS3OBJS) $(QBLAS3OBJS) $(CBLAS3OBJS) $(ZBLAS3OBJS) $(XBLAS3OBJS) +level3 : $(SBBLAS3OBJS) $(SBLAS3OBJS) $(DBLAS3OBJS) $(QBLAS3OBJS) $(CBLAS3OBJS) $(ZBLAS3OBJS) $(XBLAS3OBJS) $(SHBLAS3OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ aux : $(CBAUXOBJS) @@ -1309,6 +1319,11 @@ sbgemmtr.$(SUFFIX) sbgemmtr.$(PSUFFIX) : sbgemmt.c ../param.h $(CC) -c $(CFLAGS) -DRNAME $< -o $(@F) endif +ifeq ($(BUILD_HFLOAT16),1) +shgemm.$(SUFFIX) shgemm.$(PSUFFIX) : gemm.c ../param.h + $(CC) -c $(CFLAGS) $< -o $(@F) +endif + sgemm.$(SUFFIX) sgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -c $(CFLAGS) $< -o $(@F) @@ -1968,6 +1983,11 @@ cblas_sbgemm.$(SUFFIX) cblas_sbgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) endif +ifeq ($(BUILD_HFLOAT16),1) +cblas_shgemm.$(SUFFIX) cblas_shgemm.$(PSUFFIX) : gemm.c ../param.h + $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) +endif + cblas_dgemm.$(SUFFIX) cblas_dgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 48c8955888..9434f114ea 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -351,6 +351,22 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) GenerateNamedObjects("${KERNELDIR}/${SBGEMMKERNEL}" "" "gemm_kernel" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBGEMM_BETA}" "" "gemm_beta" false "" "" false "BFLOAT16") endif () + if (BUILD_HFLOAT16) + if (SHGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMINCOPY}" "" "${SHGEMMINCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMITCOPY}" "" "${SHGEMMITCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMONCOPY}" "" "${SHGEMMONCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMOTCOPY}" "" "${SHGEMMOTCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + GenerateNamedObjects("${KERNELDIR}/${SHGEMMKERNEL}" "" "gemm_kernel" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_BETA}" "" "gemm_beta" false "" "" false "HFLOAT16") + endif () foreach (float_type ${FLOAT_TYPES}) string(SUBSTRING ${float_type} 0 1 float_char) if (${float_char}GEMMINCOPY) @@ -769,6 +785,45 @@ endif () GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "BFLOAT16") endif () + + if (BUILD_HFLOAT16) + if (NOT DEFINED SHGEMM_SMALL_M_PERMIT) + set(SHGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_NN) + set(SHGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_NT) + set(SHGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_TN) + set(SHGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_TT) + set(SHGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_NN) + set(SHGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_NT) + set(SHGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_TN) + set(SHGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_TT) + set(SHGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "HFLOAT16") + endif () endif () if (NOT DEFINED ${float_char}OMATCOPY_CN) diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 2bd6b294fb..71d66f8f34 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -129,6 +129,26 @@ SBKERNELOBJS += \ $(SBGEMMONCOPYOBJ) $(SBGEMMOTCOPYOBJ) endif +ifeq ($(BUILD_HFLOAT16), 1) +ifndef SHGEMMKERNEL +SHGEMM_BETA = ../generic/gemm_beta.c +SHGEMMKERNEL = ../generic/gemmkernel_2x2.c +SHGEMMINCOPY = ../generic/gemm_ncopy_2.c +SHGEMMITCOPY = ../generic/gemm_tcopy_2.c +SHGEMMONCOPY = ../generic/gemm_ncopy_2.c +SHGEMMOTCOPY = ../generic/gemm_tcopy_2.c +SHGEMMINCOPYOBJ = shgemm_incopy$(TSUFFIX).$(SUFFIX) +SHGEMMITCOPYOBJ = shgemm_itcopy$(TSUFFIX).$(SUFFIX) +SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) +SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) +endif + +SHKERNELOBJS += \ + shgemm_kernel$(TSUFFIX).$(SUFFIX) \ + $(SHGEMMINCOPYOBJ) $(SHGEMMITCOPYOBJ) \ + $(SHGEMMONCOPYOBJ) $(SHGEMMOTCOPYOBJ) +endif + ifneq "$(or $(BUILD_SINGLE),$(BUILD_DOUBLE),$(BUILD_COMPLEX))" "" SKERNELOBJS += \ sgemm_kernel$(TSUFFIX).$(SUFFIX) \ @@ -192,6 +212,9 @@ XKERNELOBJS += \ ifeq ($(BUILD_BFLOAT16),1) SBBLASOBJS += $(SBKERNELOBJS) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLASOBJS += $(SHKERNELOBJS) +endif SBLASOBJS += $(SKERNELOBJS) DBLASOBJS += $(DKERNELOBJS) QBLASOBJS += $(QKERNELOBJS) @@ -202,6 +225,9 @@ XBLASOBJS += $(XKERNELOBJS) ifeq ($(BUILD_BFLOAT16),1) SBBLASOBJS += sbgemm_beta$(TSUFFIX).$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLASOBJS += shgemm_beta$(TSUFFIX).$(SUFFIX) +endif ifneq "$(or $(BUILD_SINGLE),$(BUILD_DOUBLE),$(BUILD_COMPLEX))" "" SBLASOBJS += \ @@ -493,6 +519,15 @@ SBBLASOBJS += \ sbgemm_small_kernel_b0_tn$(TSUFFIX).$(SUFFIX) sbgemm_small_kernel_b0_tt$(TSUFFIX).$(SUFFIX) endif +ifeq ($(BUILD_HFLOAT16),1) +SHBLASOBJS += \ + shgemm_small_matrix_permit$(TSUFFIX).$(SUFFIX) \ + shgemm_small_kernel_nn$(TSUFFIX).$(SUFFIX) shgemm_small_kernel_nt$(TSUFFIX).$(SUFFIX) \ + shgemm_small_kernel_tn$(TSUFFIX).$(SUFFIX) shgemm_small_kernel_tt$(TSUFFIX).$(SUFFIX) \ + shgemm_small_kernel_b0_nn$(TSUFFIX).$(SUFFIX) shgemm_small_kernel_b0_nt$(TSUFFIX).$(SUFFIX) \ + shgemm_small_kernel_b0_tn$(TSUFFIX).$(SUFFIX) shgemm_small_kernel_b0_tt$(TSUFFIX).$(SUFFIX) +endif + SBLASOBJS += \ sgemm_small_matrix_permit$(TSUFFIX).$(SUFFIX) \ sgemm_small_kernel_nn$(TSUFFIX).$(SUFFIX) sgemm_small_kernel_nt$(TSUFFIX).$(SUFFIX) \ @@ -599,6 +634,13 @@ SBGEMMONCOPYOBJ_P = $(SBGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SBGEMMOTCOPYOBJ_P = $(SBGEMMOTCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) endif +ifeq ($(BUILD_HFLOAT16), 1) +SHGEMMINCOPYOBJ_P = $(SHGEMMINCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +SHGEMMITCOPYOBJ_P = $(SHGEMMITCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +SHGEMMONCOPYOBJ_P = $(SHGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +SHGEMMOTCOPYOBJ_P = $(SHGEMMOTCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +endif + SGEMMINCOPYOBJ_P = $(SGEMMINCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SGEMMITCOPYOBJ_P = $(SGEMMITCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SGEMMONCOPYOBJ_P = $(SGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) @@ -629,6 +671,11 @@ $(KDIR)sbgemm_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SBGEMM_BETA) $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif +ifeq ($(BUILD_HFLOAT16),1) +$(KDIR)shgemm_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_BETA) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(KDIR)sgemm_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMM_BETA) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ @@ -671,6 +718,25 @@ $(KDIR)$(SBGEMMITCOPYOBJ) : $(KERNELDIR)/$(SBGEMMITCOPY) endif endif +ifeq ($(BUILD_HFLOAT16), 1) + +$(KDIR)$(SHGEMMONCOPYOBJ) : $(KERNELDIR)/$(SHGEMMONCOPY) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)$(SHGEMMOTCOPYOBJ) : $(KERNELDIR)/$(SHGEMMOTCOPY) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) + +$(KDIR)$(SHGEMMINCOPYOBJ) : $(KERNELDIR)/$(SHGEMMINCOPY) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)$(SHGEMMITCOPYOBJ) : $(KERNELDIR)/$(SHGEMMITCOPY) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +endif +endif + $(KDIR)$(SGEMMONCOPYOBJ) : $(KERNELDIR)/$(SGEMMONCOPY) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ @@ -853,6 +919,12 @@ $(KDIR)sbgemm_kernel$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SBGEMMKERNEL) $(SBGEMM $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif +ifeq ($(BUILD_HFLOAT16), 1) + +$(KDIR)shgemm_kernel$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMMKERNEL) $(SHGEMMDEPEND) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(KDIR)dgemm_kernel$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(DGEMMKERNEL) $(DGEMMDEPEND) ifeq ($(OS), AIX) $(CC) $(CFLAGS) -S -DDOUBLE -UCOMPLEX $< -o - > dgemm_kernel$(TSUFFIX).s @@ -2840,6 +2912,11 @@ $(KDIR)sbgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBGEMM_BETA) $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif +ifeq ($(BUILD_HFLOAT16),1) +$(KDIR)shgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SHGEMM_BETA) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(KDIR)dgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DGEMM_BETA) $(CC) $(PFLAGS) -c -DDOUBLE -UCOMPLEX $< -o $@ @@ -2873,6 +2950,23 @@ $(SBGEMMITCOPYOBJ_P) : $(KERNELDIR)/$(SBGEMMITCOPY) endif endif +ifeq ($(BUILD_HFLOAT16), 1) +$(SHGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMONCOPY) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(SHGEMMOTCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMOTCOPY) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) +$(SHGEMMINCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMINCOPY) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(SHGEMMITCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMITCOPY) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +endif +endif + $(SGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(SGEMMONCOPY) $(CC) $(PFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ @@ -2983,6 +3077,11 @@ $(KDIR)sbgemm_kernel$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBGEMMKERNEL) $(SBGEM $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif +ifeq ($(BUILD_HFLOAT16), 1) +$(KDIR)shgemm_kernel$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SHGEMMKERNEL) $(SHGEMMDEPEND) + $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(KDIR)sgemm_kernel$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SGEMMKERNEL) $(SGEMMDEPEND) $(CC) $(PFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ @@ -4843,6 +4942,71 @@ $(KDIR)sbgemm_small_kernel_b0_tt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SBGEMM_SMA $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DB0 $< -o $@ endif +ifeq ($(BUILD_HFLOAT16), 1) +ifndef SHGEMM_SMALL_M_PERMIT +SHGEMM_SMALL_M_PERMIT = ../generic/gemm_small_matrix_permit.c +endif + +ifndef SHGEMM_SMALL_K_NN +SHGEMM_SMALL_K_NN = ../generic/gemm_small_matrix_kernel_nn.c +endif + +ifndef SHGEMM_SMALL_K_NT +SHGEMM_SMALL_K_NT = ../generic/gemm_small_matrix_kernel_nt.c +endif + +ifndef SHGEMM_SMALL_K_TN +SHGEMM_SMALL_K_TN = ../generic/gemm_small_matrix_kernel_tn.c +endif + +ifndef SHGEMM_SMALL_K_TT +SHGEMM_SMALL_K_TT = ../generic/gemm_small_matrix_kernel_tt.c +endif + +$(KDIR)shgemm_small_matrix_permit$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_M_PERMIT) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)shgemm_small_kernel_nn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_NN) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)shgemm_small_kernel_nt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_NT) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)shgemm_small_kernel_tn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_TN) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)shgemm_small_kernel_tt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_TT) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ + +ifndef SHGEMM_SMALL_K_B0_NN +SHGEMM_SMALL_K_B0_NN = ../generic/gemm_small_matrix_kernel_nn.c +endif + +ifndef SHGEMM_SMALL_K_B0_NT +SHGEMM_SMALL_K_B0_NT = ../generic/gemm_small_matrix_kernel_nt.c +endif + +ifndef SHGEMM_SMALL_K_B0_TN +SHGEMM_SMALL_K_B0_TN = ../generic/gemm_small_matrix_kernel_tn.c +endif + +ifndef SHGEMM_SMALL_K_B0_TT +SHGEMM_SMALL_K_B0_TT = ../generic/gemm_small_matrix_kernel_tt.c +endif + +$(KDIR)shgemm_small_kernel_b0_nn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_B0_NN) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DB0 $< -o $@ + +$(KDIR)shgemm_small_kernel_b0_nt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_B0_NT) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DB0 $< -o $@ + +$(KDIR)shgemm_small_kernel_b0_tn$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_B0_TN) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DB0 $< -o $@ + +$(KDIR)shgemm_small_kernel_b0_tt$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SHGEMM_SMALL_K_B0_TT) + $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DB0 $< -o $@ +endif + ifndef CGEMM_SMALL_M_PERMIT CGEMM_SMALL_M_PERMIT = ../generic/zgemm_small_matrix_permit.c endif diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL128B b/kernel/riscv64/KERNEL.RISCV64_ZVL128B index 7fbc26d213..d2a2d35786 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL128B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL128B @@ -245,3 +245,12 @@ endif ifndef ZGEMM_BETA ZGEMM_BETA = zgemm_beta_rvv.c endif + +SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl128b.c +SHGEMMONCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_N).c +SHGEMMOTCOPY = ../generic/gemm_tcopy_$(SHGEMM_UNROLL_N).c +SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) +SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) +ifndef SHGEMM_BETA +SHGEMM_BETA = gemm_beta_rvv.c +endif \ No newline at end of file diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL256B b/kernel/riscv64/KERNEL.RISCV64_ZVL256B index ba7a52bbf3..a058c23b6a 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL256B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL256B @@ -207,3 +207,19 @@ COMATCOPY_CN = zomatcopy_cn_vector.c DOMATCOPY_CN = omatcopy_cn_vector.c SOMATCOPY_CN = omatcopy_cn_vector.c + + +SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl256b.c +ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) +SHGEMMINCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_M).c +SHGEMMITCOPY = ../generic/gemm_tcopy_$(SHGEMM_UNROLL_M).c +SHGEMMINCOPYOBJ = shgemm_incopy$(TSUFFIX).$(SUFFIX) +SHGEMMITCOPYOBJ = shgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +SHGEMMONCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_N).c +SHGEMMOTCOPY = ../generic/gemm_tcopy_$(SHGEMM_UNROLL_N).c +SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) +SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) +ifndef SHGEMM_BETA +SHGEMM_BETA = gemm_beta_rvv.c +endif \ No newline at end of file diff --git a/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c index 43c1b3a65c..2942727015 100644 --- a/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c +++ b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c @@ -1,16 +1,16 @@ #include "common.h" - -int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT *A, FLOAT *B, FLOAT *C, BLASLONG ldc) +#include +int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, BLASLONG ldc) { BLASLONG gvl = 0; - BLASLONG m_top = 0; + volatile BLASLONG m_top = 0; BLASLONG n_top = 0; // -- MAIN PASS for (BLASLONG j=0; j int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, BLASLONG ldc) { @@ -14,7 +15,7 @@ int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, for (BLASLONG i=0; i= 12) +typedef _Float16 hfloat16; +#else #include typedef uint16_t hfloat16; #endif diff --git a/param.h b/param.h index 220f847e9b..cdc48cbe92 100644 --- a/param.h +++ b/param.h @@ -74,6 +74,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define SHGEMM_DEFAULT_UNROLL_N 8 #define SHGEMM_DEFAULT_UNROLL_M 8 +#define SHGEMM_DEFAULT_UNROLL_MN 32 #define SHGEMM_DEFAULT_P 128 #define SHGEMM_DEFAULT_R 240 #define SHGEMM_DEFAULT_Q 12288 From 4e1a381e5ba475ea692919464a6646122304cf20 Mon Sep 17 00:00:00 2001 From: Srangrang Date: Wed, 4 Jun 2025 20:00:12 +0800 Subject: [PATCH 004/360] fix: resolve the compilation failure without zfh instruction - modify the macro conditions in Makefile.system - Delete development test code Related to issue#5279 --- Makefile.rule | 2 +- Makefile.system | 1 - install/generate.py | 58 - install/generated_test | Bin 846752 -> 0 bytes install/generated_test.c | 31 - install/include/cblas.h | 457 - install/include/f77blas.h | 811 - install/include/lapack.h | 23341 ---------------- install/include/lapacke.h | 12888 --------- install/include/lapacke_config.h | 159 - install/include/lapacke_mangling.h | 17 - install/include/lapacke_utils.h | 612 - install/include/openblas_config.h | 136 - .../lib/cmake/openblas/OpenBLASConfig.cmake | 4 - .../openblas/OpenBLASConfigVersion.cmake | 9 - install/lib/pkgconfig/openblas.pc | 16 - install/test_shgemm | Bin 847232 -> 0 bytes install/test_shgemm.c | 45 - install/zvl_test | Bin 714472 -> 0 bytes install/zvl_test.c | 22 - kernel/riscv64/shgemm_kernel_16x8_zvl256b.c | 110 +- 21 files changed, 51 insertions(+), 38668 deletions(-) delete mode 100644 install/generate.py delete mode 100755 install/generated_test delete mode 100644 install/generated_test.c delete mode 100644 install/include/cblas.h delete mode 100644 install/include/f77blas.h delete mode 100644 install/include/lapack.h delete mode 100644 install/include/lapacke.h delete mode 100644 install/include/lapacke_config.h delete mode 100644 install/include/lapacke_mangling.h delete mode 100644 install/include/lapacke_utils.h delete mode 100644 install/include/openblas_config.h delete mode 100644 install/lib/cmake/openblas/OpenBLASConfig.cmake delete mode 100644 install/lib/cmake/openblas/OpenBLASConfigVersion.cmake delete mode 100644 install/lib/pkgconfig/openblas.pc delete mode 100755 install/test_shgemm delete mode 100644 install/test_shgemm.c delete mode 100755 install/zvl_test delete mode 100644 install/zvl_test.c diff --git a/Makefile.rule b/Makefile.rule index 00c7c07cc4..24b34d1c20 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -309,7 +309,7 @@ COMMON_PROF = -pg # BUILD_BFLOAT16 = 1 # If you want to enable the experimental HFLOAT16 support -BUILD_HFLOAT16 = 1 +# BUILD_HFLOAT16 = 1 # Set the thread number threshold beyond which the job array for the threaded level3 BLAS # will be allocated on the heap rather than the stack. (This array alone requires diff --git a/Makefile.system b/Makefile.system index f9eb17bc43..be31d05ef4 100644 --- a/Makefile.system +++ b/Makefile.system @@ -280,7 +280,6 @@ GEMM_GEMV_FORWARD_BF16 = 1 endif ifeq ($(ARCH), riscv) GEMM_GEMV_FORWARD = 1 -BUILD_HFLOAT16 = 1 endif ifeq ($(ARCH), power) GEMM_GEMV_FORWARD = 1 diff --git a/install/generate.py b/install/generate.py deleted file mode 100644 index 378975c22d..0000000000 --- a/install/generate.py +++ /dev/null @@ -1,58 +0,0 @@ -import numpy as np -import torch -# 设置矩阵尺寸 -M, K, N = 31, 31, 31 # 可修改为更大规模 - -# 生成随机输入矩阵,类型为float16 -A = np.random.randint(0, 11, size=(M, K)).astype(np.float16) -B = np.random.randint(0, 11, size=(K, N)).astype(np.float16) -A_torch = torch.tensor(A, dtype=torch.float16, device='cuda') -B_torch = torch.tensor(B, dtype=torch.float16, device='cuda') -C_torch = torch.matmul(A_torch, B_torch) -C_ref = C_torch.cpu().numpy().astype(np.float32) - -def format_array_c(name, array, c_type="hfloat16"): - flat = array.flatten() - elements = ", ".join(f"{x:.5f}" for x in flat) - return f"{c_type} {name}[{len(flat)}] = {{ {elements} }};\n" - -def format_array_c_float(name, array): - flat = array.flatten() - elements = ", ".join(f"{x:.5f}" for x in flat) - return f"float {name}[{len(flat)}] = {{ {elements} }};\n" - -# 写入C文件 -with open("generated_test.c", "w") as f: - f.write('#include \n') - f.write('#include \n') - f.write('#include \n') - f.write('#include \n\n') - - f.write(f"const int M = {M}, K = {K}, N = {N};\n") - f.write("const float alpha = 1.0f, beta = 0.0f;\n\n") - - f.write(format_array_c("A", A)) - f.write(format_array_c("B", B)) - f.write(f"float C[{M*N}] = {{ 0 }};\n\n") - - f.write("int main() {\n") - f.write(" cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,\n") - f.write(" M, N, K,\n") - f.write(" alpha,\n") - f.write(" A, K,\n") - f.write(" B, N,\n") - f.write(" beta,\n") - f.write(" C, N);\n\n") - - f.write(' printf("Result C = A * B:\\n");\n') - f.write(" for (int i = 0; i < M * N; i++) {\n") - f.write(" printf(\"%.5f \", C[i]);\n") - f.write(" if ((i + 1) % N == 0) printf(\"\\n\");\n") - f.write(" }\n") - f.write(" return 0;\n") - f.write("}\n\n") - - f.write("// Reference result computed in Python:\n") - c_ref_flat = ", ".join(f"{x:.5f}" for x in C_ref.flatten()) - f.write(f"// C_ref = {{ {c_ref_flat} }}\n") - diff --git a/install/generated_test b/install/generated_test deleted file mode 100755 index 54a1afe5fbf81cd0f67815983053d5b56effb205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846752 zcmeEvdt6l2+W*>nX79~SZiAqRhM?@?bc~!tqnb0IfKd@*IY%o)HZXyyXzF;6+sx*! zFuXfhHZ zlq`mOzu#bEt$FXE_1;ShZF~z;$F%PJjqxBHzpxSLjUAD*P!pHZ@O#)^D1Ug8t)*b> z_}!aAy#Oo!W9=}H`1h&xF`rudJa+UJnxU~Hu8aQ|_~G;4dY(6w;lDS80~(XUg0{7B zn9qOo&)Pi{4ekEk^S+xWP#im2yJO)I)4dwdq`oV(UvBsU}V5PP+MLapTm;`W)VLV#i|t z4C+b*)S7Bft`!}zMHR^*i4}>_no2d9WQYr0Hn|p`o6HaOddal|47u|xey-PCZ3jbo zo%T_aYb%lsakvec6uNBHiR78VE_AC2^!M@AJ~ut4*&>Npyw@wvuRr2CJuI;$vnw*V z6jnrq|AiI1rFQ(quXV!ktyDJktdH8{ykF+~#56+3+M@J>9lJc>C}P>&YWCF=wk9f6 z%OKL`Q(3FlCfVjuM1<`Rdkf?*)H++L4(Fx}&_Y{Qr}MK#zW+&=OwtUDMx7XEuv{Of zi>mp*9PG18Ww}2NAdl(59W}kkr+#*IYGG3=N5z&hjVVt$m>&b2RC5=?F^StW(Mke))K6tRI zz?ha|k+R%ORm9-CzE#XS!9-dL;o{R7(J~{$KWm2Cua)jLq0rao%~Q8{%`5myq7#!^ z#aW_4m%A!Lt)6Bwzdr0W&)C*Ck`?~yClV$Lv^hZJ#lincukODDGVWaQ4fI$b@44=l zRC7aK!>_pEqYjBP#8kwQiPW-HsMv>a!B6q&tjb6Y{mZN)js@3J;wFCLqegFKchaurA{ymfV?O!Tl)ZthXzV-u$aBr;r z-Cb~ctiLUfnB>mRg4Q3*Dx16WE1d#cK*zSSxv5`S+GA<>4wT~dCVBZIXKJCvvL9&&Jbzw0Z6i%7)=c$!tF9m$%hGY z$H{VCfeq58rtZh}(^6)uZP9Gr7HJu3n}lJuaW(^Rj!^1Z2}Ny7KC=f>dtRvNY222NQOlolODX6b0Htk?L?? z)R$5bL&o9W33Zh7)u(HVfgh+B?4nhxQ*dpNt@F1r6*0lYp5w*GpIl83`3$C@;jpb? z!=bgaX~Z97p4b{X9KMi2=B?pD-LrLI2@Ibe)G2GNRYK2reuJ##0@dMNm5Hw-7V-Nr|NBP;#<18x@j z>Uh#Zzo^ZZv#TUIn*=wGt|7G)Jd3Px3)B$L)~UC?M3r++m3~k%O-lhcwl#jZ#>77b zYURw=zOaMm?gS(V|hyD-q~dV%k#;EEYH!P=PUqPZ6|G}LeQyr65ZDEM4x z#Rps%=y1JI!kkL=o8&eP1-6k_s4%@U3vsy(&JZz(d`1@tmZV9TS)&tu$e>D1YB&*= z8v3veS?Z?-IX;TzSY?%D0m#{Sj_%8YZ zBX_raH*`khmmhQd85@YP42&Qtp+TzK&(IPY8ha2W?^qc(mdNK<2> zgeBc$k#t>aO{ZVCMbc)!zFuP6;F@ zZf8Ib?Q2Mx=E_kn^MIJk5_$u7)6R%-e~blZF3K$27t~_yF}l`Vx}v9^m04u-J)C`6 z3))3m=-Ic6wk|e`Zj8z_%Pe)Uem!1`YvZ$JM};HxY}?0UXAAUO7k^p1b#dr%XqkCn z$e0~JXe?^G`E_m8+P06LUY5Apucv;{Ygx46;;?MUE8cLu{aU^G>G+;D`bK?AMAxO8 z=|L2c{tQJ;TOkUfNUwD@xk0&SJ}X@&`bdp}`W81$h!s7hK|zBBpECy-q+==YP#s$? zu>Iv9ecrG>uZeT8BN^5XT>yV|fgLDUcZ8_8Xr)L>>qxE64OQwQ+qFB-qC6!Re2$js zB1??VD@UsntCM@Eg}c^)QX;@L}XvVaXs^sJZP}KQ^x!BUheO@ zTHOs#{k+4+N7bIQ@|vExDwnmX`8~{)-LmU-x=XpT{@9$z;Zv$GW$LpDH|un=s|_k? z#_V7%W1h@?%TLhqwodhZ5;1b}SHe9f?uU*E6)N@fl03!+B8832tV!@$pSDiV2a1;R zK5D7Mj^O%MS&2bK)3Op%jI+b3EsaA-SCSGVRy6VLS@pT6RIi0KYNY&4xt@6@SjzCE zkNV0BT=)%CpSM4pyHHEi=V??@6;DX%Cq*=~MAxGZ>P{#T=*3Ld^G}E>HZareP^^+% z=a+dI&}omlXJ>;ho4Ken$&=qSe)aCngpGD9w6*UjDs(7r!JoBF`_YKBJ&q zk|Va!jzcz;N=?F2UaHX{%x#ZaRstw5#*EsPn0iBerG?^3bwp+?kDp?aA5P#D|LJro zLr?FK8^8SimZaHTKAF*O3A8ac5#*CyaSze{GMy*MZY7P>Z?ouApozZQIk#9D{ z3$$mbyL1ilm|q`_pM`pCj!Awlra|SW;$9mNH>fH%j*WuxE51EU1+sRk>oZ>F+o_Dn z;$@}&N7@>ot@7WheqLria73E32R(kgN*R%t3fKET4pFry zB(2X=Hg1vWs!M_fYr46`Izq~K%j-Igf9tqh-`RH5b!~Oxq0NyiiuLuK*Y%AVu{lXu z@73P1qR94W1Gb_|H+$N!711{$y6Rh=PBdH>Jw*|+!P_>JSC{qUnK2t$fNkh$u%WAW z+t9)J*oNN!4I7G3a?$) zbg9%7bM9r=wF_!RPlE+rJz%w1$>05wurd2hY(ElgKj$8`zsR>|*XI_LYjf;w+fEYL zj>4kjW47b{!kFz`v`|~A_RCD*@e@pP^GxpB-#J~*mNJWjjbC29rG42$zK7Bdt4F!; zZku-gVs3plw#d3Xut*ElB(R(wHMYs}@G-jW7P>wfOnDJd27Z74K&$zL@4Rg_7x>Nx zSk0IBT20j!3aljWV|~tR#JJijWn(UZua871+Y`Dr=P4t=YA%-qUBy-dz6rDhtmZ;T zOMNGC#C2`YrbC;1-i%zKK3d;-v&kvKbYg&(qs8M&n^@LljCpr<^ju3&ytS1|+Cj{cp zbWuc$RDEy!sk?1G=Bci0j~o{Tf%RNb*QVq6Gx$-hp6QYYU6Bpp_~X}Ov7Q!)KqoqU zLclT%IePx8yng6T1d{bf=VmKoRjKnV_S4p`lxFDUmgw_W-d)R!o$5Pr^hp2@2+`+! z$AnX0J$Ir{mojZ#j|Thjirc={6y^L>wzA1w^=4zD)FCCfr!O|UKCf#KY=Joztmkus zUkk%=r%40WVu?I5OXN97$ns7prJ5{}R22?3BhytXyTEGvgxC{xc$S{Y5}n$>91vnp zgeCTLsgugaZ0E4p_+r^j&Bm~;m0Kka!0)_gsKxI{?8e#PI3(4)C#p~_<$E;kpw(kk zqXINaOff{+r8BI)2@ol!!~o|h#lB5jx^Y2Akti^X&JMbpdsV; z9WAn<$H8WL;{=;|@2G6(Oa0T!9$D>o10%IX?UyY`t?PQvwfb(bmyw8G*8tmPw%we&!&L93#% zwLA&da!s(7v=(eFSLH$1z}xdax1zfYH{1KGJHc8SJA7#6rM8G%Y%Q{@R%^lWWq4_h zpR!At`rKtRTwM=SX;g+QQt^OXg7Mly9B&vaUW*X$+NF*O8YLB>&9TOtK6+!7s$$&| z@ZGG%%XVojxF_lyb4s zrF~=7a=R50JFuH`PuXj>L}o#}$+EY>F-S^p6&X}Zz~dXhcC2VHDrHN9#dczqmvxnZ zr+Rd;5En3Ylf30Q?z=~vnsTHN8;vh?-DNuxY&)NV?Ep=UsxG%nvxLVM*_d@3w??(B zzn`*?Cc#1*=7C|Bi1Ye@xKb6Ssy9P4wvK=?_^zmPj_=f{gt!x-tk7ApT4P5$9vQ)c z8dY7JsR&u$kt2HBEyUx;8C~Q zsN=aMXI;Zq>TSJ)Lku%lL?^D{VmBOm%gwXmW^dl*;hFhieSw-q8Rs=kouXP1Bg^F$ zw~(pxwZ-#MO>sW8t2lF+?Uw}P^Y8wzblKJcTw85p{GxLRXG0^Ey}5Nd?!sB3K9~Dr znXQz$h|-^8kRj{Gh&5MaZGl%qt|er9UZ2uG^QM%~3f4107MpE^xOW9m;w@BfL5VtO z-vB=FNm09c>vo!1stYo&gqW99Vv33h!}G05m~YvG?Vd`&*6RcDs~zTBm2YG-4Pd?U z@y3(S{$jThFjGR(8+LD1y%n(@^GB<=*BL-c7eU!I>m<5R6sU7#JaslkHD%mMjqaz7 zC(mAwT-&p`VuR}&r#9uU@VTPpJ&|N@1ggwk+SZV9sWarNEN@MQLDiMR%^gOX%^Ia7 zZxWJ>e+EhO52ExyN0dG%f0X;?J6f7mDw3wV2U8;LVu`$6DcScqO6rs5bP$!QggpKB zog&%JN~N9cv=v5pUSVg)MK-kn9Ra+@cNBeXdB;?eU!1iECDR zYi(_8AiHLhtqf7Nua{~VqCpiKkLRzuKyy67BOdnj*$|>S)u~C4&>l$Z5s38JH&FT! zJCuGb8+vohQ=eHz>ea=;lKk;V``Q%TAGfmzqH9rua%P`2>jP1JX{9pTMw;hA^zdDI zv3aswJ6kgDvRCu`Q18+&&y(m z2WIG==6+rBG&ekeX;HLMe#4@%b;+JJZG&;| z2S(gZ5A6h*_#S4^j1uH1%mEK>DfgNblydNG-A(_5PU zp$)R+T+|=R{aW-k7YIKt+h$j(DJp7>VI@`Xv)-VZ$#ZjWAX;@wWt=o%;J)5SMP`m^ zg7Hh`W$foKXBmIMXA*?txa4PkRBtOHzSUcJyFFf*w*yBGDU(#jR|eXXwjENA`7P|F zj9+zpFvEh(f`((2#>*WaXl+4nnkUK~m9p+$zy(atJe zc)SGf1H`TNChygOUNPK{;e-}yd8jRK33iywQEz+27|(`}dd2AZ@L;bNECWo(6fjk( zNKXAy%h-z~w7pnM+fx$8p5)C8$*-{|nKd-YU#CfCHAB9G9<@1`OpynBDNgFn`w^x3&+Mt|OR zZjssFdE%sWTeLg#CcIO5q`a=!!7!CppMHw>AfBQw$j9${D*PZRQwL_M>7Cn+Uo#^! zifs(T;oPZaaXvlAB~Yhj9!9n9B+6&B8hUemi8JS5Q&U`fV|esXiSGvu`8UHjhwqS^ z%Son2=Qhci+t2tOJ3C@5yD`Eol2ckL#ZFJvk&4IB(z406Zv@yp;WB5Et&I*|C2KR^ zNv|(vuQQ}X%`?95FpTeq9>cyLoE`D~uzAGySjR}_PgSxcId`+nF>%Me>+t!YZh1n{*E#H8rb+M(f5 z$v6iWt=p$anpGP-DFNKzt$yfL%6S~tO_PS>srrqhq``(jIoaN?bM zkTb=UXr|I!=2h}2zlhkm?zvcmOgH{`}2$)OrvsGAx#l{S`L9ctQ3 ziHya|2e*cCFJ2T$bnpy17uA($`6*~NJT;$zQQw>!E7RH7`0EmMzE9Wg<+7X5NyeZn zjm6UM7%_SckEoTv+ZMpUC^eK@C>Igo+LD)%o^MBcnQ9%jM)-*-#^}*C0@2E)ZUpOU zE)@-46meq;W9sV(jW zmC5wl_PDUb%0xQJuqkA7#b$Dg;mwd06)WPw6Z#&m-H&^;Km4QG)X-+uIb=q^G1C0a zjGJ>@_J_wGZ9eQQOML;~m$i)hc=BpZHy#8!!PzDOh$4U*h9Z=k0>9V9O>s8{Ovspu_VXLMmgf5ltQ62ukSI4oR8Eve}A zD1zMh?6_UM+ugUT=cmpi<}FM=SivEYSZeeTajqg8{b>(~(rZY)<2G`e_SW86pKzh+ zv`;$s%}TU4V|}{X=EA_k=RGre_u-cA`;2a)p|CjheC}c?(x26lQkzn;5@uVBXkvMN zCN-a$YkW!av+tbojLE$3gR$NToG`OKDX474Jq?SqolhNa$Vfac(C^*nzHd)$`b@Rx z=Eou#CAxYfXee-SX5S36e|HGHWrPgElvovH(;%}Q8z1sUg)(*Ck>kr&M|RX@S+TWQ zz}7)mCd3DJ(*t!w6A~}qXz!`(oD(k_s%{Nxo0EvK^|TdrgZCioGyz%1-a*!V_ap0| zYn4hai&i~0mWbxih;y{L2T^0BF(DSCYDWfays^!KQ5;nxIYIll zg`>o+9PazAfU3Vmq96vz`d@qYJU`OCG<(z4!0VnjdvewfS6!*kZoi$2J&NbW%q9!Q zZh%ZIVC?XlcVTS&P6KCR+topRkhk1~GqDYCV2tLYG9-kIA?w{;Fe?UJ9dP1xh%YpM-FYySo;%WyYAgzfvMgUhwj+$KKs+XVI z5dDT>Q_~8ct6I%%TzwsIb$3XAAmD0^Qoz-fn=9|Z)uP#BxVlro)gliouGXk5xOx!d z>MrFNu5S3JadpUTTy0QgZ}#615tnc`uD&{krtZeoji4u0@P36Mvf&Mo6;}^>f=mPA zLpFfjc31wxxElIn#ntV~nS%nZZumR6+K@o5_xTmB_743mT-^h>+A|5`>Y5d?cOh$9 z_3uE|b%|rh`k%qo?GM1!xW86h-De6Y53Kl2TwSU1yB}AZyH@@qxH`;=t4}#!@meu_b6v5F|MAG)C0Ksj)yXy?5J63!PRwbq{?`%qh<_OM=E9J^E&Lg z09Sw3@d5T-cjM}JYkE{ocj4;a3%DA*^t-olHF@neuI_v0AI8-JdYInwD{MUvW9vUH zGI{SufUW-)PUrwdTV#&)<5V=wuijjBdtZm92L!t)&@?PS>nI`lUQ3G1@HfU zjkSe5wx8+Z2;{NjFWoZqVvG$L+)kXorU!g}4(f{d>GBPn$Hquo^fZNpcSE=FHmu#_ z0B^%O9!n;h6-k+_2W7GcA(IVw`!_P#j0JB$a~p4`K_(mBm&q>uCo&=Ag^3OVh{^*E=kXDUUJ9qm0m?Xg#q+B|!1K_*+) zen?ro9p|_$sQVm7-N;FsMc>J1f8P<&prYoD<+H1meyZ3+jG>8d3=e}!@NbOSOr-mak)^O2@kjdWW?72VU^3AZmI!&Yjqv!ul1{<*U zT^Z~(c|rzT28jL7w=>wXt6jO5`5&L{?F_sYa^17vkhA{g%wZY42hD-^w_EOHv0vaC z0Ac5G7jB{bFI2*+p>S9=v=LSfCE-;=W?4zQkev@OFSelV`|{YZZV1*rSo7H4=N>km z*!@e`%0^{Zg53uHw;H!4{iAv8rn9Cd$YQVDP?#8^%3rbcs+RFUk}2WHFE{c!WU;R` zWYy)!@_KP5JKK`U-lPG<4Ve7?O!fuHWM^brGuaYrCcDv^$%Z^~p57@-BrAeUws=u4 z9J7gtOBoS4TF7MkWQAp1&TP-=&E+QJJoZPE(`zA*T{P8hDde&HMlNO;vXdZ_-H>D4 zvkCIpjmwkX2wR@L(IDip6&t2UJ`itLB~+?H;O!qRij5aC*s_vri_Vw=lIQ*1O!kF; zQzqNn*^&F^o=o0MA7`iT&SO7(JCEJ)-^pXk&rybz+!kTktm2 z)T*gRJuEG#8K#yf*9YKjf!-s4RW|-F-o8Jl-I?|;$!Y&D-u~C-w4Kkby9aMubU1$4 zok z-j)aaHr^gvH-hmt&TY5%0Nx(Fvu>oP9pmk~K0w>z^rwHdZX^}5+aC*P`vZ7moA&^; z9ds4YcIJI(`+9x9HM?y=+YE0(+iJ*elMW9=+m5P34_Y^J?LpaX%es-Ml-Uu=h@bAs zZo`_9Q>wHf!&M=>{eh@`ePqYQk*=#6rHZDuJdOV5NDq6>G-?jHT`tmNkh8ObN&gWJePX+zbuqx@k{5E}8ew+Ty{I;-a zq&o4`rb8>1Ub~&&&WY>?ynVePE6{?rlX5ZIrndmv9_Mu%ZQssspNIT*#s+x9h4b51 zwEfT*RbHXxub1kbzyZ~*h??>BRIX+u2;x!{v zUInauIm2#4*YdFCRU0j9MljaC_MqH$RYLo3V(s#A|6j1SbClw@uy&JW)d*nV{|9K> zGYPL5ao=+Ps*!&Y)^;|}2dusCL0EhGU28@@yp6RR|DoKrb0V=}e zeA4ZI2G(As{x@UoIE=Mh*ZmK`+Q11jYu<`~5^D#fZ2UFW4tAM69+B`BynMm5N51q> z*uXv#2Oo#bhe)>wyq=~#fIHPeYCSwqoh~2Njd{RkA`-e%l-aT4CyFgSg}!vQ_fys|gpp3qor6R>k6zTH0GQF07V9q-n?d zw*DEz3eL7qEX?NOv;AOijFUkENBqMUj$lQfHsceP`>I1c_Owc!4mg7KZcIu?5pX25 zR%=R6n9%!46>$}6;fqyu7<_zBN~pt*rX8zY3^90r1`5_50T1LD5333Pj3dX>Ycg*4 zrN&C#5BkDGUz*D|9>+UJ_-EKGqq|+s2)wTr*|y=`8!$as*ZO!BpF7v1UkuTO`gBIC z>G0dN&QMwrZ-^1@9{3dYgpj8su3qhP9j{UpO%rd6Y@_@AuIUy-53}B#IO_}O?;p5J zycoVXOF8++s*G`8MqHKH_5m(TM2@!pnnpEzm!5KE$t>8D1a=)s30C-L`Kh^u-nQI= zEF0fHKf*<1m{RutF(R=l*+*@+wkxhG@de<|P6OYA+u*iS6_dX-hNO(x&bzmUgbJXb zGueeBoqYgzya*AblmXJh&VnrhNY!*s6fosAyu0v%f zK0EGPK8=XT7_J4%@O^h=Mn&TF;}wa*-T33vKep^KVt%_HxVQ9^kItNn?ZUDPz(Hlq z;?;tdYR-AU?ia8s@Ux~?O`ou)b;%&v9oQPwDUAKqn;(58_}I`Tp#OHnJdalZkJv9? zDq)a#VmU{(I$Bn$PK-l(@$ZPT`P8)j0oV=1;-e`=*{3G-_)}$Z?|&Y#TQn;N-C5xm zvN;~)CDc>DWI_ZbaK|soG6`I>bIay(`OFm9J>$^LSo{>B_JIX}g=W21yR@%jIbMG& zu}ek6OSn|~DVO>48L$^l{C;tot}MnsqxdVM?aQO-wYKpEXJ>mLvQFpw;mtT}e_k+| z&u!H+zay;I&!=>l(CPrZ@~~oa)^XT>!L5G?^W^&h6Zu-Lz+K1lU!F~!w?E;La&3lK z%;kM!gZWCY&5DEU^KE{AXD%^w?{LW`NXJbzbTwda%voMEKZPRq=vuzP* zgqm?SGQY)TTZqY={1&D!P;3jX)L}laPq#c1)=O6EGL@KTVcn!4RiYd;YMRjEjLd{w ze69S*Oy(Ucg`R}Vzx+wiMCbuM-p$27 zLwJJvci;ug=2ucfg{Y%>4El_@ox>BWjx^W_JS@|lo34Iv%j*P>8V->n? zZ`GGaJV1jajPlIRuhM7paYag?G!6Hk<25AEC_Q7L;iIwg`7ZG9jHw7z+k7xJ7Y0jL z1nu$Dhu7EWWIEr68Dy1*cVaD$nyci*@wBFSeFXF_{BiwDNO|d&La< zO?fNBRbD#5c90|UMI0Ni@25)6KJK!{S7JB=v&2j9W`u5rM+h=FS;b#jxg%)DOVG59MOAVj+*&`5nOaabz z5)X>p4f#DTm~r)p1Br^ownF_gJG@Sq0%A7bsU5)Ft{uvZ>G5{2Phj=+#yhpn!Ivpk znsXUPfflv>RiIVAo)c4!_{n}CohWiQMAk~4YY^KBwGQOJ3bf>F2`hI2h?vfWlsj?@ zcQ{tW33b}?Oab0&Qp1Tag&wqQz5TR>3`z~RJ}(b;zzQf|b*Em;<_FbN=e!E_yjR?* z*RtW>dWIOUF9bxB8h+-;ZTcCQ)AGcr!^O2@_s*o?KE}LZbf$W({Yl09PWc{SV3l4= z!dS0Ptbtz5Ek{J?{7+^<>-di=;^u!cuC^kM2pz7)xKN^-C92AwnI4$09q32giwrp~ zoJ;Glvkm8pJ7}*pqCaS;^f@$v-%!FDTFNV7PJ&x(`mA(OK&)t%NVKMPQ%l-jLkz}Y z&@#V+gqEcpq;#O2un%5)RZ(V4`bU%qR*;AmoaFLs#p%<< zcATTFSgWH%Hg9rG4EW0NBJM2gHy7u;)*(59Z_=dg!k$c^247miUQiWl$&H4@kfe$v zyepJfOq%ZIaln(BMX-0>-#R`!j;U5<8QpDf;qkDHgxoR`nHG7fJ4oNBr-@eA+J>6U zkM(A@>^Tmy&h9|A;l`qlk!6XIJ8}7u+S#@w63*4NlUHk@*Oje}EkbWHh(&!%%-U>* zkmT^9+28MaDspIPx8Lr{U7GHS&gj9aocbb(t!;UB78TK?reMdp)G+YTN~w67=$W#z z80ZtpCETL#|2~TfZBm<(PtHwKR=`eicrMfNr5?T^uF<9LGp-vL5?cN^fcuKpWrdfu zro?eJeQ4@CrV~-JvN*1kM?#&8>Lu#_W~hgP{XRaPYk4A;B+OB=`q7bZiLgm(djva> z89zGS9upQ<8Am4?Him4f*hFqNEEm3O5M~N~tr0DB_o0lLStj#ee&n7LlicDzky~eR zA~gv+8iA$2mouMM=tM^tXS`=z1m00F(c%kH@EjA`Kl@s($vf&z>^Hv;_d1F9l-v3; z*6|0>Z~hJXryfYZrF67(jIliZ!Hr19p*GFP3*7gh5 zA=8)mzHh+0mNMffeIpoob6I_W+12~fJW{pVk|$7okq1Z$;(ATKIIyU$$R@`247B~l zH$aT0ij5PCM$!-3BCd>a1uZV)UM?qZhI{zoNZIh7KaaoTk@3431{H*H7n)HZuMR(| z>p)(o1fH|CBFr1?`_fq_Pr_UaSwk!-Omn*;A==9jjj#PfI??NoTAce?4S=V7%ReE3Dq{slpGa@ z@2W#3bQCSzRX+uLBgST{VQt0X!V^3nM|QHtC+>=%kpxrL}1e0Mm| zM`vtk9ub}!UY8m!)M)GVoim8;_(g^g&9M=y#l}fCxA0wTlfL!LVReMl(|H!?4$>s32TQ6(QdzZXwf&l?UVS5e{3Kco_q241oeuVa)T-mP zR47?0U^*fcdnJKN$1@*&9?=3juQ^Pk(sbPXa+*y1b4=C~u-7s78;`?T?f&CXO7;!CcAQLHcf52< z(S{vsbCXlU$(KCRnYg!iY_ zW_`9}N$1kmrXn58^R+oYsa&4B+m|%yuqR0k_5DBzzQoxPdlK**hojz>jDG@EXqFaR z{YiFeC?z(Xi*dzX$@t>DUkqz2Hij&(ST67spXOWcPk?KP?ZI-4ZgWOdDdEg zPTAa#KbOE)pi=%S`Ls(x0?eI0yi&0&l?=j{E%uNS(NMcw%YpTs2FxV{YD+@UI4rOM#FBu(XiX^0@&?$LHd)aQA8;4 zw-E1}`cUz*T2ssD4+1A_K-t^_qt|M&=D)VuI=_SQ_8Zc)Mw_kQ2S>q*?X@~fW^r1K z5LLF9+=(h4pbw&;?B8L3f93PYKAo*49tMaY+CaScp~FsS8@CSY5FSat4B}Z~EPwab z)>jH5AcNNuwNlH7M}=`!5?YUq=(0{iWstrfC>^^GXqGK}BT7v(oeOvj*Pd!?sTtZj0yU!tNMau3>RMV7K}$%} z;lqn86sKX07@lpM+cy%j5i}KaqGF@3H^gU4&ge{x$?QAvu& zzbNahPG86z@b=FR%n#Cpq;vC*qgBr3)3qKGkYsWHT-nemopj?>LhJT0s&A1L%|#l< zf2VfJLU=1a2i14$X&%0RjYASu1gdWhGV7UmxkTlU)_3oZ4C<3SoDC(Oun*As!Mg2| z#ZSs53{8Y>H#*rYC7w%-P(M48f5=?jH#y9>G;G|OJiWS=*rZ8)VM(hZIpYgHY8=V9 zFr&OPJIXkRk22$xqx^V&lyN^e%DbN(Yb8x-f^ z_qB(C`|C!rmK;aaZRgLCB)`K6F*_bZO!13|FJ6V1lI@5u`3qtSzCyeXvUpC4@0@!T z3i!P=zE^Ppev90D72m=y+NBrh^`0b+Wq-S+NOm5_tb{MiyD3s{Uy1bOIzpOr0O_|^ zAjMKfFU{SD^bY@tm^U0q=Bg9Pm`IZ8g7a(eRr+#!Qt@g>H4E((ub-_}EIC-Mc#W@C zyrQgDEDo<`fu`b*Y_)ov&mIX)ldyJ>WT71k?O3400v#4;vOwGTB!vypZn6v4Xn^^(_b&6T|U zHj3W2Cmc&#^7YKS^Q@Aw9(ErJ!wS>Z@l ztj(H+B)Rjz6UHIhmZqwAW;@O-tKMB*G;`<7;)cEaIVX}Y7K4m!5%2B*^0h~bZ(wv5 z;*r54ghyu+#4abIk>}6BxBA5l)MjBs!lAYj?Ps8VFVqLg!|yyupEi2+4_Tz&;YjK= z`G{$!Nj>uoNV^X)Z4RVD!B;b_45?V8tX7kk_9 zcv6v^;sCq%k?Zj{%4Xx@zL5 zb1584;VAJdR7e5~n+xGs7+9EHrr2V3ICu`EVD1NMvkSEj1cUEM%BCYjp`TXtEq z=j&e?cI&qvmn(Kfeue2MrXMfLO6D-#XS7)Kzb&*i+f`szIP@&uJJ z@DDqTwcNmDX;#_NhxW1F!16oxRvM?@Ql%6)HSA-{HzWQ(9DvdXDBFJSTgo|X`J0IO z51^g9fhe#)y+#qxu$wK9M!b&$s*IhxCj8+;h1n$Q{XAkSoRBp4kEnn=y?VBHLm^xK z2gL7pK<%sMu4X4-e!7aYDYpDk#O${RdYJRm$sW%5sgn@zji34( z??=WA$C}%=wlI0l-?Oz}+YD*Gr(Ui$Pbv2c7*+&{xF-x58$v z8`#Epu#NGB3Rm~S<^uOZg&XLZi$`Je4)|#|H%ZFIgH8?sx=t>(f3# z*(4rEc*9(7k1AKS$K%nchLLR8S6$4OL)1AyqHL<67>`VBi5(qQ!j@OxH$E^Xmht%( z@qV;0KHfLbm1@2EG^t2V`{KWfyV`x@QSUzNvVKiO=I$;L*F^ z$yio%%VLLnrXw5=8ulqcx7yIAVh@!OF{M4Gee@dHFt7Ov~EwhHhQ+)__y$JdS(MDDV89~ z&besKb}f##FH-X?@pc#N*ptOVyp`nmBMrpanY*iZSz;}Yu~86XOY9Ku0kL%q@hn_R zYH25;Nr49Jv41rB0Z4545J3kAl5*)Zvg>c?jNh@YW}5 znaA$%_Wd?eyH|p4?bR?erE#p*ttqaCUQp1BF+QhKclaC`(KBzrbDYQ3=_JK03M*#f zC~}u&B`D_Fg}Kc$+-KpAz@a~CJ1wPDmYA-mH;`OZ@|L@O4LqBMCztHaZysicwSJ4;?{K^&^daMmI-M5KjXwW7uuw--KsS_N3&p*Wss~|&*z$U?QW`br zY#G6mHXz2&YN_5}sg;b?lMWy)pz7~Gzo(BcC$GePysvNPX&)?K#Rcfo*FvAP`vAjP z`?U@C%f%J?;|l%pg?_jQ9_+T?as;%S@dfS!i~(p;n2zyd5at?tkOm#=-Fy#cwl?Z4 zE{~dWuag;_*zKGtw4B+2#apOJ>rFjA)*sIJ(K3M=N%Ig-4G6SCm< z*ViHm??~L@`6$@c37((D1T)wN7)$#FEslkMMZ&3auOb>W7tUcV$8D{B&7!qfV~?D@ zqp^Bw1F0?XK)odxbrvw%lJTgzgohXZmM31=M(!=f9BCcfM|*WQfFJy1Ka@oSBDFmE z+q?7rX&}=Hx9L-8au*My0L^e}j%2(Q; zxt0juiSW$Ry+ zjd_&e(^B3j!jXpx)#r;uTKBQ>(bC~aqML$d>iF?6KX8Znfji6(Je0qhO-T4i#4T7S z#xs}o#WbU#!CUHjOJ>3d!tCO{)>D5qyMP@~ybi**vm)TbdE6$Qb_$Cc_A)Sg@YG4h zTf9#K1?PB*bO28gkVI~+a%sKE}!^O$sm0kvIfch+yuux;nGjXYmr=EV> z;+v!}&*EN9o^iKtx_{0Ay|Q+h0ShKuyZNkp`V%*<9!PiMZSQGE;VT_IyW0BTpF7u=Z%y! z7k(t58W%t@<^czV>$`$aa1O9sHy4x&<<8zhxl5*SZ9zc;4uG$O`c^-1KR!%i>G)nodBYG`z)^syh)zL%W3g+dJVNTkeOLsepf=)-K&?K&9CK=<{(|82Fv> zfR3Cjo(N+j!H0tH1mx`m*od~G)JluDJ#9g$;9sXR0!sBh`*(fowbS>E(c)zHyT|Ch zF^OhkEq45X_Nopuy4lk1AKEijvx>_SNU$^fu{Y@A20f7$&sb+$G(^F zZqk93`>VB*q6tW2C-IzwPIYT{hN0>-SysKds_)QX^-#@rY5Gf`sfC18Q$gs}X@pdr z20T?0`pjsegl{V3B9kX`lkB6mPHfT|J#B|Hs)Y4^>xMn_{A^M6&W3es)}CKGbK{z% z^GP$87cQ4-W)my76mD$VGGlB0)|JzmrphZMT`P-8TUR!FwdV;|(ND?}a&n zBk(2y5AZXRibjAhxb_eMB4C|AMXbwrh;{8mtYi>q8%qX;^KHU(n?OQB zM3RN$<-H}^ZQ~Ia6*EurkT25Pv=bneOvar?j0Z@>9eVEZFakus12`@KjthZf?ErGI z+0Pg!yAL~xJat@w9p!M9kg>#O!NF{6k@g_e?;{ zBn{#x!F{g==vh1P847&DyvxlGF-6l6?*-3wUq-SXt4VeOAz~+<6tSLHMC_#NBGzkx zh<|80@UTq8PFXEtA4(PRlVI*yMgcF^#jMK}G3)xZm~n@>oHNjL23;ut{V7xa+)&LCKqy(Bw+M8vyY0ouW0e!@wTaSH~1 zE{ov#Vs;{wdrpCJg5)P$A=%0J{z)9XuU5TF|W<4D#c5*JUL0P_T%{<1%R*#d<9jvk%R{JkhL+jAmV%7*>+c zz%yugJ`K4dnw=O)vz|Q+JE@*#y_#s~2Muzf*@s5xlT5JaBppnjq=Knno0B#YM@O(h zRg*qbK}a)8(dZV!2dPEZ5T|a!;K!y+m%bwLessPel5)>NCy~Qm4}dzXNi{ z&Q3_5(E!&C1Oqu_emuTD1J`E=rUb6t;adDDA>IBd!RX)`W(&5C?2aj5ua01^hrnLz z!6P++N4g9isRumL2s-I#oDzAnU0D$))4g|W(_RK%$nhSIC{V*XgN3_*g)`cL@u=V{ z?zM85#loyW$3q=k8W8nE10zPy8zaK*{hKr^YK%FKBM+jm_4o^`wFBx=?ckYF$za>4 zo zZ^X9ionqvYA7;s=*^Pu`0_5ZOJ%%E0B^bJfwO)@xM1wrB^`ZDS8&hGr0#^lDSaiKBdrxjD&KE>uj$?M2QKbk^6}D-Vvi)epY-0!cQ1F} zY6&s-ns4-3P_0)e(vHHfcRJGkJRa5Mt7@h@1*mP(W8kq~M2zPu#P4(j?=b`MMUmj8R)R&t z^+Rwy1+J&S^#l=k3}5gDb0Io`hjq2FL@?fEK6u(Uz!OoRN7KQRgo6IWg9o9&>%lel zey~=QpUj}CPE#3nM=i16ku5j~kxWOhTApBwR0LbBB-j!K!TulC-aVj+Yg-(inPg^? z5Fi?PD5yw;D5q5lidHQrpd^ZlXsuRjJ=D!Zu@$unwMQ%=B;k!1HCnJ$ZpD^!Y84bJ zR8XtX+WNe$*50-U86;?_pyj0!_^mxdeDw6(@BZ=qp=4(EbG`T4d#!ENk?K8DNcCPd zsea!In#>HEtcO(Zvyti#u9NBy8%WTEBG7~)(1a9dLJBk?1)7ioO-O+zq(Bo=pb06^ zgcN8(3N#@FnveobNP#A##<+|TjggF@577MS*IY_s_GDph02?L1Lc!Lvlkz968-H>9gn;~j#Odd!2h7Nxk@)=i=Ra_Pllqd4U{Py#E8l_rEkZKF zGFk~1Pd6Ey-%nbU!G!V#@R4gjS#Gh2;f(Q8AJ#Hd1>Cf#d&&Kw(%m0ghDQ+O>pdv8(~xT&$-*U{woPjemmGLZIkEplAg^R51at8U@f@ z2heo|=uQOaE&w@|^#6m+b-)E^%@x~R${s)Bg$A<%Mx^i;@VN_mb_cw=!(Wi6W{-)y z4Fq&j$bd{O1v&yc*;x;C1az{y1?Z@o;Hkv*G@}H$iDaxVwxY~nr?DVcu~haqs}*NK zwtfe;Su@yXox~{97_sslu*qB`az+&F5>F_9n5@}ou~6V`TtIe z3t{CR&BK`tW5Oirg)D{PoNVQkEd$#=z>ppDWFBr>fL#1j^8iSCtP>yy^8j09$03*p zSfe`|U>;!G?Y6-@z#4Tq&0?6)4g3t;0VezmCh#zTITym5cfg!2z#A?Hg!#I%Lme8x z9p(x18`4RPFb#qE0W{H7Py z*UeC4m_y)c!uF~j-reNi4S{zIWz5Pthc%H}(Mg2F?vC9EXOlL7CnfyNbw+(eu%wD$ z7X!^oY6$bo@HexXVDVo`HDO)^e+?%Hc9964PY~vX`1u&DOrR{lm0c);eCRZ(UJSX> zp$`0})WToUA*c(_Vzuy>J_L2)nNbUW*+WqOG#$T-Q+(0upRlU6f^Hy~gkbo8RZ6e~ z{!a)NH4xf_V3!smJf*^=0W#JGyEed$5J6VyF?aI_)6J9q=24~#HCT%rIEr^*aR!I1 zcC`Emk)EL3qb5+qe#Y*0X3s4T-V%n}W?>k?8eP#PuF`xjL4m_T^{8?M&R9%iuQ*cE&Ys@~z@u7p`c{Wv1&r zAQtx&L+@jPL&2YRF*ifiqZp5QW^3kF7Qq&d{kll&pf< zVcqkkbU)5%Eu8qY9>Vb)HqPTC7RMjGk`b!qcWtxn@w@g3z z)deSS9#kpKZp5+;F6@)+{X*mu&fy>57G(7(gVQatJG*MLCuEgp1?1qltLoSSRp1>s z(Km+e>W90z*I#*2G#O5;G{ed7Ngv&@{tED^`3Kj&{*5*5X`ekn8#d8O`F@f0pKyjM z_qpm9KK5QMf~;1g)*45`DYb(Dk2l1bjVN^!DN4v7#4#LU9`HDaPgF*ngj*DX;C^1E z6UD%K`$|DLZKz*LEX!-6 zMGXnW*LjA96oPV}pI_pBB|qHbm4YUZ8wGF|c!zf*5=jVZPjSrB^_#w(N*rL#X&`Y3 zmMTf`ZboJqvBZdD;vl|k37n8iI~^^{nQQ8&q-Y8 ze=Dz#AS2pi7RsX_=5RTjQ+n@zAii(kwCrEbdc?z4`e}?QZnoy8B4D@4#X_bVF0~i?qDg=i-0XSi`SGJviHz>l0q?U?qq}|yKf*^wmqyp<^>&c zlDk`+`UWa`azsrTxNb$xBh4>a>;{tZms6`$f|`Cp+}h!s;QGA?wVASex+2Cz9G&V zmv)E9*$kR0%!fTvG3IG|w}%dTVr_1!&u#so>Fw(ejKU)^!-(Mw*i2PmMg-i6KGS0< zF2xRo=p^wWm>uo`PFXHA>Qqy6!l8AIYDVWQ)r_7rRp9k>#L5W^+c$8>8vL_aWSHVa zw5-=|va?35YKGMSB{G;TEo-!irHRbi@U10Vo8GF(_((*h{<5>wsxMMawWg~k^`w_> zYWlkrqydl5NqAJ(1BsRPNc|iPPjb0_F5C=9k@Lto###4{SLe<@ZjlgTX@nK{1o9u` zDVfWZz~PNFzHJ@tz$90XfaI0Y_4I$KkcO0FNnFw=CgWJJ&rKfq^0{)pC zcXBBFh8w^mhVM5whbk*dJSBGse_k!tEIBGrsIh=15jt0oy~)zn?I zYQ{lY6?mLgP4Z)WPK-UN4)l|%Cry^Br$$KCGhUIZ1LK_3lQui4ry8BqGj=(t0}nc@ zCmnZAA~bN@w{IiU9FU>ET@s@jcT7$}#0id0QZhzop1KJiv1PIw@$6SeEjXq9*Aip< zk+gUz#Hb24iVxE9ksa2|FH>Ln4en}(xTniL^BhsEgWnGe-@AlZ#s+oGg?19|ffv8w z+lphNuAD7}=;S?d7LTRGVXO2TLnS+)_fRrD1BG{j%x^s^enWMPCMIN_Xs9*buCoB` zBc_K^x-BKbXqug{YtJo#)(*Yxjj*gYYKPsdw0d(mb|5|Nj1hr1!~*6sNEF2e=Q1Pt zwfLr_(WooFr8Lsym8xe>?N$PgO>i?3oHe%|=kdM41O9@1+}PfsUxxMMi~Q~ALY&I7 z3m$w9=;pPDv&ta0f!0~*4C1px^e{NPU3$wi^`TyUz!rk#MaK*03U%H$#kW*bCzBY@ zdYzJmvg#h0UJd6KBYPkw=t*SC7#O=p1aJp^Fur{|G41=R3C57-_U&mCOX4E{3K_)2 zgNNWmEloh(Sv_$7^p&c?@(9XLNqyy&Ix9b$(lttEJ0;BKR;)0axcK&t1M{riAn8q| z|9lCg7?xG0zLMUj<(DA4f||>6Cgj59QoJ^9_^j~DbgQ6&#Obu|Gqo7z`k8;Tryb^s zcCzkbY|$ttJzk74xGDO?mVY(j&!b}Dv#)DuzM)2OCh?|4rd#GBlfHn!96HQ zq;^8$DJ(ZS!EX4%Oy<6=hn715GAR6^%SvN(C?I7iV#P zNbC5xy&T)l$Mt6S$V(FTHVC7(rQuPpG`4HPhU4~kz70`?aDscVk2wz|A+U1(V=q_! z-t9!4p~@LJyN~$vzt=$oP2omhp%I?F(&I?S_cue}jb=o8d|s7M<5nU(5BIBrld{_zU6!3R zYQu(vn5ZYb+8Mn)NB1aGZ53~+k5)#qSnX`(Hxox$VRl3iE3;2 zx#F4@Q|L1aar#kE5qbHepJ2#8L_0gm>gDM@fjX;!BaU&Q%E|Z`L{RLh5$FDgBZAg)!US z!?$YVH(>qovuM~x55AG^$B{UTdU4E@sjVz~0^G}|pM$nDqb!VuLhbbmBi!tBO#v}F z^)lk0DbhHL)g2^?0ou8i0k$mc2EwW3`eB3-&e=P@+%B;9pnT@JlGgK$E88sWWeR0< zds^5dlzuMC>{f`*f)oHEKrWp_-?)q1Wr0%;?;WmmIlQ;((B8e&D2v&;H}nIy1>?2k z93&R|;8BBJI{f1lL#>%D%_L{)BMxejWCRVT-|d#39#`~xH-&~uWIiu#GhP z8f4<+o!*)vv$c;e^{)m3y}3?;BqIgQ18EO&Df?XDgCo#Vl6$~4W#7;n6UL>4O zRiO8shK?|z1tK49ERIZqD6F-PI4nQFj{r+{$ufZUo-fIWmYAo%exl>V-S>;=mH~W| zI_UlBmfe$y+TDk(qFNIry2KLX95T|m$|$~Yl6!ZcTbpT&*i{F62L%sctslsp*F?$OtAqaJj8UuQ|_?!WL2a$$#N>5y0VP{X-lgaD@m_Sk#b zphbPehj;G`N9m;jsVkK$M-lXb*FQFjjdSN5&rML$mt95GMzKLFgIE?zceg8w`Q8O$ z0L6xSDZ%Yv8ZjMo)eO=LEX}?D>9i!oT652cf zYoaOatWYDaQ^D$p+f`3S$=ZccrqTQ;b4umUe~H`}UnS!sPF;!2^`n$4Ly3_K#%Re% za?bGMaI2yOGOdLHJ$~0s8R|O+2H_7eOlfpBQ)z{$AVY&p+Mr~8#1Nq=(efBm1-?d> z#^xO-BVVdWUHQs2<;p1Hr3GQyx2itTA+p>335IMwk1+(;!C1mQ3oupRUsy31iMMw6 zNlxPQ5VspwH3*-{&?lAp$_}fe%$_f4{kfXdm7=q7=9up>OB@E&Oh(c*qK4)HO#Pgq zr`tYE6<9<#YHhBGGEQr5_X(Tpn-GwN2wI`njoEKxQI6U**z^E)>pBUMmH~ca2#&ti zj|SAvh!iV?G1_c~&&>=Zt71!yei2HruOPzctQ%pZUpVXF6Yia^exXgypdJv~?0Tk6 zu19UhTvY#p5hCe>Rp1U6q)k1w3A;C^a6h!Wq2vTDRIt zGnQrY5?_+L-v>wiVaON7wwIJj9-iw{(S?xah$ra`mVF2B>Lrev`A2RY<*sg)A z9f`fZH%t3|Z2hIVsc~JW(i!dq&we-%+T4^-k?#1N3{q|w#=3+JyRy`04p*T7% z?!lRaU~{nsOY-wpB zv|CEIv?RtGo3_pYN#dJOky8`4+=^mSoN#&km3g-%@ky<+7)ROgH%oIwbG->fJBewz zGUL$zV*WvMaf|IGd1Ll-PP#|cd3c1N9TkOvO0#`nb5{vOw;qH0iYnkTA$0q78Wo$U zyL>C$Xs3swxpD%x!;SjKBeZ!jd9sdk$?odLa&@vA%f(M5X&Y*A(*xw!Houh(6fBjoc8B z4>8q*QlzIQbO!Z?^xZcKwW=Fyo6oe?x8Yi+#x=!YDI2%p>iuhX6CbYY#_Lz$fMJ3%$a%<#fz=zK zut@c!Qc6;(uet5_HKEQNkR61gJuoa@nu{cHN+hL+;$8xZhn#InDCJkTHwS{5yfCCa zC5D(Q>gG4NzxaNolb$?8I8j$KKKa=38)+Fa+z@C&t};n{f7X8dp466_e#H570?C+Q z=2H!N?UWqsW(uNz1Jf7b7Ei)S@=f33Rv)*s9M`um*3W@;kHX@lhX@@Q^NNy$A5Fi& zdV5!cKa9P2aP0c!0U77vu2z_jD1#*-_WsP@OZIY+vOaz8gHH6f{UpkBCW4ul!tQTH z%T9qe0QcV>SQ0s8|NX7iF(YETH!ayxxyAk6?!+Z)E7!WexhSAsr5 zIm!Cs`;S-M->TXVaHzune_e&ge(pG)$It)cm`8j+hK#-{#55ctIemKttA0@{(^r;p zI19&fP0K!TX-Tv7N3f`>vwucIu8B($pIGVPeDwHL%wvIP=40y#?!+WK(XA=W7q~)2iT+H;ZHUtTsg8wTB1T&Ngai zvns8Mpv9b1Rxd8&`@)u=gwh{;$y29hWEPzc?#6H<7$!j5n?_ErR%b;JlX% zx~#1M`;5ODX2>a{v(hO?jQjZXOU~<<9V~an>4ihS7EQ|9R+3_7>cB zPcBgH7gJ3Mh<-?b%}S6nTs9Yjb<{;b)cSOo_j}#zmu#xs0v?H3H^>_64Kgh%!xP@^+sPPT$kH*?o=Hyxw^L^_W`Wp(FiusHy$vhcp-o*a9&Q%EN#A)Q<9PTIz7ju7*=ue zd6gqF{Pr6TIf)FVb4A(gMeEKlg(oL*Hd_i$wAhl9BStxSz`fs4$aILrrBwTY@($%Z z`+Ph{bo&OE?f1w~ngemTaza$SS;9D1)ht0}KI8s)JrqGNf4p$z_&UZ9jqXHk}=lPKk~ z#gy{pSW5XfICH&X7-e~FC#8ICEM>QckU&V=Zn&ZIF%xn($^d>c-9r;a8p zeXwu)2<{{PyB9%cTKXTlqO_JxJD97xMTg?(WqDp7V-)NLN=YuSJt|Y;d zmnY_$A9P^qI#BT}6fq1v(H`!tlNhf`fbJq|u?lXd%eZ7TPNbaVIF$y18Q@AYr7%DncxbUjmlln!mcpvRaI;tp2dB>t?(q&S8%(p z_dPobPrxwXl5;zmo?_Vz7~ZYy2H!7?h#SsmPO_(q_8=wP_Ewyr3jCJX(^T9t{&;;# z;Wr)!v9E+qY}cgCx6mD~T}Q2@SgOUZgDCw4R`?3*)L5aEUtD|R8?)@MZaD5`cIj89 z^tf7>{WQAQ;({d{mt|X_G>D}ldaZUp~K za>Ln3SV>V_AscEq=uGlk;F=&`ukXM6BQF z=&zCQPjt{3v{{(*c_Z9It8MogIvHZ4*ZYZZ4On|bbPjL^o2O6*OKWb}*a5?#Jc2W` zjeBBuuC{c+T5s5OX!%GgzI&v&Sw&P4=V~kuAG+$NdB92w@;F>sVl`-4!o!Sr63nl9 zxjGa1Oo(+D3Qs7?hI?I|od~^JKao`FpCiXA|K8_naWaRdn+%7XMY5C~aQ`}ZG`E(e zaJym7*Dmm@Dnpey2k4tfO-^;cm#^CWGjJ_H*KT1H;#`E}*Owe4*MVK!t{JMzt3VRx zl@4vVo%Dxj7lzu{f!oKe=gx#X%6#ohsciwERl7c}ksa0`cWDeaFZwT~n*(qwK0Drf zp~g|(Pz`*fmn9?8S*%PMPTV(XP1mq?>`1!%^NA5R``c<;yPF?2YCAV}pbR!9d~>@` z$8*%Sl6RP-(slI-ElDy|md)kKd@XDs%@y=NgzQ|#UVnVU`^JuT#g!#6k{q0qZ@M^N zgXV*`LMfF?zf!u3DRKw47VwD5b<2fbeXec}J6fND(%7J;6fTnuXi7mpvVnv27v8S% zQ9T~{7clY+`D*U8BuK9f)BXaw>3uk*QQrvt`YduYt){k>CTUSXXMMI3E?zH53C??@ z2`(rLv*-o}?AGA-1_&>?Gf@ONFgRK)=T>;X$hk^GkcTLqD|C%L4Yt0;C5;X3pi)jJ z6tWf9ZGC&t)l*=Th zr_c%V;ow)!n_#`+;hXG zWgZeck2TDIIe#MwL79>XRC0Yb_$n5pH{#h@O!*HjmF@(F!ie9t-44C=?#=qP`+z&Z zw^)`G&{?`pyRKz*S;G0GL=>F&4-FdO>LWc%rF^0Vsrn`l7cIbLckp}vBD@#@ECDP7lrMJyuVD=AZLaAdgV(4?ay+Myx+}rY%SnHg+|Nd{qhA1j zNf69B=;>JtbH3s6^sL*turE-id@L$tmzxrhlQbN+%_&4dT%K#IUZ-EMJvMhWM^*+| zXm=vF8AC@!R1&G7T%Npz%VAscj)wu1Zl5%Ow8vTlxj9eW8O|AG;-cLqvgn#AOnI$) zrt*5XsAAqVqPnpn_gf9RDA@{UD&xm%gE|E2IDMSQV1`ZZz@Q+*E>w?!){mbY5C88w z$s|<7^^g^D6@=ao>FE$Wn$!^FQnR>5wuA%?>cx&i!$moo%X ztnAcBVj3dnThFkBp}ZvAe>3KcU{g4uSk+`QMhFy@%v02EpeWeU#(eacUP@PC+R9!h zP#5MXfwDOE`n1qn#stsd;G=?DsxlF7>D`-xCT>^g!?ROB_a=)<8&VU|`K0MgDOHvr zOKMr?ziztRM6NP%Gu>~Tt3W&Cq3OwEAU9Ua2+rNL6S;^-jMw4OBXf&pWoLRLIZv2_ zUQ5nLqoqTcgz2ViayoNS^Mp##aH%(@QY8MBna(UBx#&~ZDjO;Hw@LtWBiN}(AsWZ+ zas7cylb?CLqBL2Mxj`vO9qs+bNGkan_6-8REj)pC$%k6J;dH`JVELZFm_}s7dIzR2 z^Oy!tPUNX!+{)-n%H1+S)&b5c8{2)(ykm;zDCtFvU6gA}bWofiGj1O(*__DB>7jl} z9SeHA#Qg(k1mp;MHI49nEFID}VH&_%3sZsN9LNQy>sy~_E#xe{k6uf=|D?vM4M`nI z_Z>Q5(P*?H`rhM_@e(II3Hs{*Sh%wz&`8lb^nq)#Am?hbvq?0Xai1<-8Rk}dCN3QI zThbt3&3{^ z)g6hXi7PuXzQ_gSe7$x{-5~rnI^cJNhu@78U=P5~(W69e#i^RgMy0#UV<@)!q{o`# zBPz)``gzAsRM>zg6MiQ!#`S89b5z96<1tObedxfM+_LDZPfzmjPPc7!zA_|(@0o%~nRle#d*K??_{<99b5+yVaIt#F=P30klylO?QWU^!*WE_20q z^W%6W4jw_@q zzV9MT3C64%`iQ2&Hb6Ysi?MNZAK=2|7sh?S{*%X~?2$jl#qdh3@tdNPIwrO{)`CEH zA5zJV-f`b_HJ1G&tGFen%6QCDvNi}-G*amw9`LvI}lk>l-~G6mKD*? z#K+`_Tib35v&B|H`gkjxhA>pZNsi4cO*?jHu4<1i@pj0v($#|YqqbpqWG4lnmgIn3 zEX`1un;MzrZvtJt`H3#HV{f&?UOAJ9B;qfgwPwytOX|2(1N$}_&}h5Z7&Jl@k9N7n zpEsW`fQZ*V80n+JyGZF84|TP8#OaNI$Jv4mK2U|Vk|52JI_lDkv2@98n5P6!1FuKG zvS=Xqx5kE9!dq3^b#hB6M3{7=*S-CaTpECeiBvIYXU#jLGmx+{m$Zm{UE^ zBYCz+2M28zV;+HWUk>t?*6{@>l>c(+RCr2tF4D3A=qt%=q?gPPG_qjR02J?I3FU7T zEX8&oU%%4LzPxMJf=y@~Baedft)&mtye1LY!$4X8?`yV2Mysv0C16BkR z1~TFiKM$i#m<1@v%x5Qfv9z#2yM894{aJkaClp$BK;L9&Vd%g_?4G$)5n z>jXP4fS$K14>R|edlP!*Bzez>$DE2bkHL1a>yfqXZSEvJbb??z}G@w=6h}$DnJ=Vd@qFO z!G~ar-fw*TUBRp?i_cDKNzlSNA{A(NA~&7M4?C>`%^dcmr!BQl>~PS$mHBM#ZbKE* z2R?{g@QIPd;i3?7fnlfx`rhx#Abn}ci0u=e9W18El}4( zIJqZp#P*~AcrC5N)?+nqf5SY#Li10#qb1Q-Kvx0P7FMei9}y7Y^~fPDL$gkQ@hmKk zP~V??3igVi6fD_+M{DpX0IHXP!xTZ=k~;osaKQHn6>%KP#w*p1Hw3li__OU2)P|F$ z1pR`a%Pn*x#)snm7JzX6%1*Gbhl1twSo>nCdr#jD61K9fzx5&33H&Hp;_H+Aldw!# zaFqWF@5?uv;?d%0kQT1LJ4Ov0r3l(o8gBxMS@3;$3P-c$n1=y_yiEzzRr$1B$52da zq31m`ugW_Jqr+M)1Xh^>b+jusCS}LBBw?Ch*1Z5!7RZl&=sL_pfSpJBdCn&+^m_hn z`J2MqfrnT_fMul!LNLOYqfY?uw+>R8Vo_pJHA#&FH!buLzKxBm zg*NIShu?NF|2+Zv>2*kvbg*QS%Eklj^DrBv1PnFTA7S)-8$q!`8}I$j*GEZ>qdUWN zAWgLT1$YICOJ9QRk=g=)wJ|7TLN@l^34S=$5i99A(=Y`*W1ldD3wWOmRcs&Z#~9PC z=ZhbEe@21t!R2s6QsaB)_>naV67JG|-hKd{cl6`h*KdZ||MPwG`_S9ON8@!^zf8mU zc&uSS&YZ^b26;(gb_Ex(M#GwB#}3hPiolxDv4R}5(={6d1Rt3!NwDw(a-oeg)+*4Y zRSj#wWBU)tvbH$%H}E#j49I{?YcEf@H6d#P>;^s)1vv>5*-xwOCL{!$#4b~K#kx}=$YR1BawXJ)< zgiKr^!aMdg&I;Gl^4}X)fd44bzBIH8X8}-6eFHMQZCD87SqObDP)$9sKsD*;0_vVV zGSqI+f!`5)R$gYd-;xa8o=w*nSdEEA(;*|8?Tw$8~Lct8yIF|M~S4ah;mx*)e(%(Cgu zuyZy-Mxo{V!K>pu=#|3MxMZO;zTJV{?Izq_<7c1SPjU*U?$npiFd4zk-@n;A z)^oMt9Qa~$G6>$gsfgiyNuIpD^5wMayaqg9J>dCDEhuX)g0m=IE^tODO}+}XFV8@fQ)I27wg&|#B-4ca1Z2@Cjx-l;ms5{ zBw=2aa=$sWmt$D}_|5H#m{l;Ibpg2?D~Ht}cqj91E#RHZda&`L5nw|MaSq5SlF~$t z^rbL_Po^kk{@f1f^5p`S6hogsP?MdIm6P>Nb_!==*Jr1o?^uBFslS30$jTrxV%inp zrIb1O;5Bb%w0Jh?usecNAb(J3rZN$I+bQ`ATCvDJClo`3f8E_CFwT*w;%G%10 zgjSekPq*UV_@oue44SQ1;0YviipCs*zLiEJlQbqg8B5+MGu5ewJ+JN@te* zXU@Hp#VykuT=ZD(G|kI81~{Ugl@(_;kI`~j=X^Ly=7ZjMUhSJa{7e$jv4yib`7G*t z{gYKGoEPiExw!8jz4nAI%J&mp}%~ z+ccKfABnj0(g{EhZ;sbudI;)`GFLW!U&BK=%{JQsX&cjseiTPU;Ng~{dodB!=#tHJ5j^dX;4GMa|W=Z zrstg_re!(Wz}`dj#&I!sV+AC%PclQ1XK5HIr|^v|9r+6TkK@|5((RvNll|DzRjm&H`? z{Ir$UvXh?cu+qY_el!VC`M26l_19qSaPvaUkhmckA~FtY&m5;BKOdvL$E zw)0^}I}!9Y^ImC+c3WhML$Y$jwRzgOK{?!US+jD9HpPD%-V-pT7_~=>{Y??aT4Kpa za-JX!VCN;{)>te((N1R<-xToSyQ4fOVVtfFqaKf*_a}3s|Etk<=TRUtJ(*$X1E30_i3(Aj7d6Hp`mfDq)Ve>Rup zRK~e6!+6P&Z4)~rhajK5WcGpSviCJ0uXZqH4oQ7RJ^u@b9h?px`GQMNQz!TL?(gm- zDA^-oEHm)QUsz{eMkC~&qBb$%SB)`%TpG4HW`;ezu%|@J@1HJ5e^b~(I+eR6gI;pb z3q;UHEaUNtdsPaI1M*?Oe0UuLXO(iMvyGZ9MK63fozaESx|Y~!eJ85Vz%C1y-SQDq zxI}X~@{i6WkJq8x7BSeLA6?Cbb0ATAZLJ`yb!61*5wR?%ybhb|Nx|RCnI*2<>erHqN(J zVh?Wop3*oa=x5%C8@N$(CWYDNpHh~A!Y5DXoaFgU$=nBwk3%Q!`+QxWel9;2m&!LC zW5LkFV;OQ1c7lE~#rYa5p_f{SGb~?On#^o#Nrb-l^m@%H zEVW$plNkH)9>()KA^#i>dDDmcuRD{1SH=@>06k7XBjs;qp1PQUJt(jrkJq1FfXyO@ zb?M8(T_}f@yQNQ797NDkz}4ZFSh@o3a}EJ&9Lj9u%uYX0j?p_;u6K-na3A!gy){VT zGy&|Ct>CSE7t=LZHUJq?2P?@ah!dJu*?jsqKX*yx#>cgRqbmvit+?`C;jN13Cbqov zVvRvJ9^2_4i+Kt9PIpkT=72cVfErj{mVyQV**X3gUrwiFgmT=QJ^6+Rcfwg(WTfrf z>MDkgn8FZgSZ}0;ctK=p4cki;Sv`p9l1dGV>YXH-%@Ut}crdDnme{9dDP2K+H`l&1 z<%e(OO37E>a!Yz;SdPD&H7Ln{?T1kba$At)+`HZV+z>j`z7$gu()QpT!Yo^On2y_R zGtu+#N)qcNhkinvDgkE`^@7x_KQ<^eVgsC^e;&^ON-IU41Zu0DRt4j?WWx9_w^9b3Cn1$!C~~*@ z&-m#K5MxIR&wuafAASNq`{@SXZ0PA9a&(tA%8bt67;0ex>6X|cDV#LP1q(+0=3mh6 z>&L+BQWT#uEf?+>a)%WQthuC%1S_Vr4cjr;s)aIFajc}F>JY%?va4_c>`1~tkwM20 zL0yMi?Nj)8g)KdD3Mg{oIoO@bc`yQYr@orvrJqC2_2|Premf87`>0zJF0;@vw z)1=9G?GmO9f{b+&KTxH8L|_V^Xz(h^2hPX=FZqJo4x4vjEmFv4IG*Upg_SFTj{RyJ zTnXIpK44DtU#>UjAvc$K###P3NGyxAu=k+9+GY|Y47B&1!%o9;8nofrXL;tn3fegs zVt#Pk&_ENYko_Fb>QYte%Y`+MSIfkXG2j);+SqwN6Lu5-X^NxV$sJ%d_O%oDNBeGT ziET=T)3aYgnIAE)-Kc%SM}v|H^AlL8mCetW$EO5iAMn@G=%-2GTkRyYwENYk zsHdg>gFjNw&FZ~#qH+Z4kh{T*Em-=CDJk$Jws*j~0lK4EF1h>L+b3wDu=vEZv|iJC0HwWH0p%4GT^7 z>^KEJ1~&qJ`4mnJxCig^F}Et&7lC)c?pjqjtI7pt|NXaed#I8=_id4NJj{FwS+p1U z$6TvHm!{Boq%~QSNx>3RN@#$^#H3=4c;!s&LyL!v^!Mxif6$qY|N04^(ZajoV5#F4HnjA`9Wk79BcxIitWJ(J1&KW;uhO`EL)fL~-~c;JFvDuLWQJx1iJJ##KM%VIfMQ@H(cf8T(k!`|@E% zZLm51v8To1XF+qf6JgqrJ_jcOCK~^G$MGcaQ~N)#PYmmA>OFw_g~w|(0?u0{1C>9* zKJ6!1E7{rtJ2fRK2=qUEEw1dW?!fpIO0^Ru?}8Qsyq2V-z69TSpFO`)f(-*`uW|G( zZ0&M8TRY(Qk!NJlyFEVu_xB)+voB~NcV;Zw=j4AiXA$gYUAn8<&U1a^zu^ASb|QQe z%;Xx@>{x#aBWNd@HahxF>iC;ppfjONJK?)Qpf)6xw?Hr3F-)ELy#Qf!XX5c}FWsS~ z@P9omSOkNftHjZn&r92|z63l+U@iwq&?~^dvZK0jV;|;{k~mW`ldx)ANy^P5m_G0d z_TGF!KHwEBmR1vY;uejwunxXAe`BA2&J+2;w|WsWk1DX`Qr-*^Xh2oqX`98@gh(cb z?yhY91b@T&dsav<36ePJn_BQ3RyI!S+Xy3}UN^^NP{u08!Pk+sK8%VNQ zr%0G7-h0d+oWtM@(w9L!7(cZ4rEhW&l$h8;&ilR=ONY`nEFbjqlN#&pB8nawrbBug zg%Qp75v6cD3V19Q_GH6fF?cDr({q0`t@-?J&N^sm!JWZY@_0GZ__sSxq$A7( z%kIX}w@XrS*-O7T;73MPH;;#z>b27b;ozEvZC@DwektHT>HU>ZKB?nb*gVD+NaPTZ zX$2=h^Jn0_<^^Ws{G^T#(@NVAD}yzw&_1-S<^2m-qcnba7j~$6o3=u8{(EDc(-i19E*ZV_16is#|1iN%_ z6%%;I-2`hGEm)>7i*lNUvF-`NJ2X2+WWxUs4Qg8c)&}3E^A9d|UA@P&l-dI_a6XBU z?1R7Bm#Tcay1IlRT?U4P@n&8Z`KAEvSTC?JA;+3jF`{KCF7~0q# zO)T-&+$zYk3H2;uDjQibJxmYL#<%!r<4?I2u^BdFWMSQJzZ-SpTi&OQ zkq4^s?&4l5&7Y~e_{eJRZ#|vu(T#C?>q?A-f|oJT!i?Z|G=V~V2v!MQt<8^#ZlO)TH&k={x7^=M^Isl)bMP7?V)Mg}( zAlomW8V5T~5wOz~0Xt2zV5eyo_@HKj2WlqlifDa}uotC;k?PXZE}9}CN(ks6X4S%g z3~DnsG{SzR3gV7`2*~(j*+IM>#w$<^pFis(buqp}&9|57^Y0AESa#Z5!&8=yrJlzB zm~T*Kr$oSimTls=Tb^)BS-)QWHBSM6!H)NSeN2_}Si(Vb&RpJOn!`~$K+}9A@`XnN zz1*lWp26=0%sajg;=3XZ<<)N{d!-I&1Sn)#RY+SQTtfK{2?KSBe46`-Lj0cceH z88kG34rm;#!;pyaD~bEG>ctI)rS*hwZ&1dTWF?dA@kyibX6{t>p3Lh^3+6|+vqLoSGa;hTm4jzX1%D0?Rlhl6}5Ilq%WKdz1~7v0S=HWE(}KxSHj$3ULx%~e}5}4 zH>QRvMPGjFwOdUb{Sf1dUv)F1!or(TRQGd+C^umZg6rLOn}}ZdeUnn+$79n^So8nd z1z2_9216aMwaGcp!kqK$ZdC$og8;S==S~BTj8y@+G{n!_1$+c$KEX)o-?|Dww-YPQ zaxBw=@tV(u?)F{DIlF$;Fe_y^55L5K8B?(RIOE%d(ygR(x z;9kWwkw$6@&cYzVG|#SA&^bf6eYzDtz)GCxUhWH*6Gl^#w)V#Tb0r-@?BbI;m?o4x zIsy%6eU&|G0(r8&z&Adqfb}=(HrH9`al{0G*f@fR*R9fkDI)NugI6NNlp2gZ6GcE5 z$3IkN3UpD!{Fesk;(WKa=%O3($%lNcwWa>(hu%fXOr9zl1ghX-y3ZecmMR{0_pdn` zlF8F4;LKw4;A!>2Q4yvHHjP1&9$$XMgFK}kPYwy$&aj zFcb{{#WJ&(0q8Cc%7As9|m>U3&HSF&MUoR$3f&SJz z!(#U1>BA3VEAR^T+|`2-4w~ZMJUrL$2UG<10nnKnrXpOf|6HH6Mvy$(=kr+{F9=aF zpIaEQSjo&186$k*oRFl?a~3zBuJnGDE1GhHlhQwke+bySrozww?FjJb>TbSp4CIf` zh8k>*EUVeYQyb^i4P|NRmI`A6oX}6h6vz$f{-LYN==gr^Tveg)+pYWBmAWk9_vr5L zZdT<9zlV2!x4BLgAf}+MvirM;I%VbrEK3?D5ErVsZ1$`YvVCy7FP`1LO1X=r>{H0X z72lz^ONjuJKwsON$T`kmOvv;;_0kstB~1mdnZ?HXV7i!d%))>?1{uTS3d^FT?q4j- zRQxV#DnUo_@^6*98}_zTfxkg%atChJ7l=UG=$##ojMqSWgA13n`r(W_n@nvQ@H#P0zSubliz;f>%oX} z6RtrsTyIw&e7}aj8yO|6=a8n`8_rFe8)RWx^g+W2ettGJPw{c(Qpt^@O3_qe1V59* zW-lX9+Nx6bDhWt(pfvkbOlL)q=l;_V`B@l0)}Yf}VhgS0sZ)vh71v29m7$fr?iN-B z^kdMf2;NV!`r1`LEv7Q;E#cq1d#!&wP=JyzrNp$4{VCh7^$n>gH;vJTWO9WK=LH;K zZWb^=mUDS7M|eKkJ8(oPnM@R~Qo2K$u3&OUc(ZC;EQNjt4m1}xVVMrAnt?%#0r!wR zcDT3QZAy%>%yJWCB*|sJ;%Q>f#jm!nvhXyaFZ2eQs3azsloAzC&-Nzg&pA20pYL@~ z|Ni1tl$)1Je;-+>@;?jt)(!z*I)m*{4739)s{zEiFsCC>b``<>)OFv>gwIHI+aWRw z^bE*YkWIIXEH=nu#DLB5IhRA9;#;=%pDJFJ?pBo9+ovy7jU5IpR}qKJL->|qP4@`a zono%w`olA(H!4F+5jCE(=!p48F=hc$P0(|Hx$#!*1jEsjXN+;j!i^h_bZ3TDdxve= z;M>7;`nN^4Mm57d4I(&CJr|-Lv7NY*mEG~MeAhEm^kRmyM+$hKS#yUmA(*|bfjI0P z=$1_Zw@j0Ip0^EZI6SqqLt%I^Ln_>-`Sp2hRZIC*)ome%(+BJ@(Qzr!9ylgWbUaJc z9tdkfDDyzbQ#HG1s30>B{es9&O89NNhMYPH;kSASqC4@4r4j}xB=VUc4EEXvykBCcif#3oA*C3R-enE z&sV)PK*K81^YolL=Z4fNubxgl4qu4%+q^Yn63Q}guN$heV(q!Vbt-oq5?K~^&D?Mt z_gnsCt+}$N1)>Vy+ja8QFk1cU=>t{5?V@qV+BK(AZytwChMJhS=O1s^5O0sH`m+^_ z^w+!=+$J79tg-^d)3g4#o_(dKzg^S#&V?#r)p8rwPx#(x|IVm3?6X#~J}l%6$+rzv zvg=u7w1MA3!Ju@T18?68S%8|>>*wHGm7|PJYq0gOsI_pG(iA~pIS(r~3X-EmTA0fW zGT7wEd|mdvEiVGbPaK#8c7?P{Zb_L;ocq<%lR^Ca4P=qJewIKv>`+SztpN{07CY3p zS4pRhY(Em11k~z654Etg%ZgiNSr&$NMKqkuftpv^1&XyjAaR6pV9fJYpkRwR;l|cB z4EsQhw#S;UDRfm$2R3eX5oJa^I<3osCOom|vr>BN+F zDgpjKwf}|iO?cd&p7ib2N8UK8jHflEe<2TH{V0Gi(*>(1W8~(OLb&cqY!BgIGH_jk^r`)I&ye1RG_4P>GzQ@%1M_vaHkk!`rO4acJVXeKT zN`DcT5vcZQsetMIDSyohSYvA%BO~gJv$kMg46L)W>L4fR8e?6%Chf0T|0ll5VE>$N zVj`aK&FdTd`ylf@WorKZRB?DoV`T55j;Kxy$qCs(S!KqM3^b3WzKX~Gt0isTaTXbs zJ)8q7SD>_qia*LK^ggRt5vzi`jGGcMbU$fd(k8&yFwG&EZM!jq?+6t0n@w)0$`<+a z5cbwIC6)G=#)_&~zMhHoj^LcLoW15$L;8^EclOJQG9Hi(TCEWyN< z#^`4Wr5t7Sa~wVpH|{7eL3qF0?n#eu>GK&STf(7DN9lj_nML>XwrlnW9jvSPZjK1o zc((NwVNHn`FJlIMW_q}hTs7$x())B%;*cuv0ucM7O5&XHFHOwYlDJ#Pm$dzM^8X<3 ze1^UG=Xh%z{{(MaHbgaB;SO@ci8X6{JFr${Iu|tt057cfH5`)?0U5=D7ik$Q@i$_h z==VIOcgaQ5jLsejSV!u%VI4V$iAI|X+(a*eQ{yI}b+3;kSpRu%_S}Mcg$Q2HuJJk? zn^VOSX|&kV&@+I3H^Z&w zcbxM#htUSq#$2yX$`H;=(GZAq%T3)&vOtT<{e+X7RKh z!cuGJqCdw=jN%DiUfdAXCgA1v0{>2o3GCM^)YL4{Z#8#-&S@ zW+wg}j()Z)X9PG3YgU{&aDowQszE49F%(CBgPb1x8x%hsgd*-obxciqZt>pC-Ldty z`=re(GcK&V*MlMH2aq(@UHKycJ?*UxwRY33lAHea z$Olnfi|#G?ZTan$w^rRe{9F0G%C71M;Z52W!yKCULK@l(=MslOmL9S!V@b}EY&}E* zD8>X&o+&IUeqY21`n4Lvcu)8#+S*pNkq-xSbqAbJkwV0?a z3X^#;kjpDWDh|s1x(ct3xgBad_kLENp7Wn36**$qC(qvZ}$8C)7JF3pZb>^Eavp2~lG7h{rxg#ve{`lU7)DSj@U9 z{>F*N56PwH3~@AM64JlY?lXFK*pM=#M;zX@i5QEsZN6t4#E%a0i>8GQ5x&tX{+nH} z+p)G@)QGjU(mDk!cgQQ1?Xd=AkQA~*yaq`jm#(-S`zBs7_v{GH8XJZ>0Rd^fHNwb{|EM z&?D^!k!O-8{c_sI-h0^N-|$!DCjFNdUP{Hii>@Bc+ zlvx9IcNJ{TM{By}6||Z}%?+|)s}->;RzKHRn7^yQvu#Byx}uhjdo|SR*(`4*wXjds z5j}iHjOW(91t{wfXi3=`Sb0+3rwaGW)=0KK7n79-bTrkG_Zf2Vif}gFL+e?};4hYg zhmGJfQG=EMJ2X1fj8BpQBI&E3{m3kU+`v!YpR6!8XoBempsbq{J-3E$!Lu7# zC0nzibwizFlwlKOYYx;s4O!dJe}n8To5TUx;kO>c)okNuW94T7c`eOIdzlbMd`N|7 zBg{n@?U~K@Zmd`hRt4;Na_74GroL*_hM4p^G9nV9s^0KPT?RZS_7k1iJnmIe3-E~s4_&47uurHo<+xxUHpEbH& zp_tSZGxmq@SRv2z|5kGS3s0Bax{Ms++lp@sh-}Qt3CO61y|!{A+%#r`b15mXa+)V) zyfyY@I^lx*3v66LSAjA9MuF0-C4}|IgIu($nF5;`U<)IAU@>>^z?6=DwE>4cSpgt9 zSnv=tvweJ13}noOaZ+n&pc_GA=O$C?3J;h6Y==tZORg(BaMsAi_qVq?YDc%WL7se?|4{(sE9 zdstJ)_CLIH*?R{J8VyR+*is^({@O}KrCMtfBt)p%*01-fMK`Eet#In4SgByL6Qd|< z#E9UL(hBPLRIwCOFBqsIM?GFoTk5IpK>`F74YpjB%e&Uz38L-y@;>kLKF{wD4awd! zvu0+^n$KFZ)*2Y8P-6t~@~uMZmfAwM?9vaX02wiND#ZFQvv^x1*{!QEK25}~-Kw0? zf&dn!36EG1uN0ahh`p1VfD;@;pWrS}d{U2X@ZWSVw*HRU%?DN?%{;ZE3_yEcZcHforCJypIwpsBgUnImTbPf0 z=v)f$ITTJC@Wy$M5&8cI&y@*SOaNxZv z&>#4<5*}L>BLrE+e?yeXyx%~~PfT02<71!gUPf2UruUB+yzJ6M*&4`M*3fnTh@mgY zt&KYaA$w+S=DuTn2q#+GAAW8T76?U?2M{F1R7ptY6Sy2tQr9N` zq_q#TypPCRvUaa1Py)Bk3R!;bm@e`JC4B@o`lvm120>s zn8C0^m4fsl$e|c1W`(`m!m@vJT_+gEhYXN=&4iPt5@9qu4bIVBB|FB2dIxIc3}N?l<@4HWlQ|PP8DC)ZG?V$CNG=k}9(f&Yskp{N!|lFx8?;sU6Q9nPml8iDponAIa9@n2(_R|&kD@-CG3Tr8WJdPAE`>CuDp9R9RTc<~v zFP?UY=iHV94>+hpw;lZ?w|nx=#{EYO4qx(ic+z{Pqg!8sIQi7bS570}g(rFV4rju# z-&yUYa}bU?RZ25Ks#xlCv>i6sPw|pE_OCd~G5zL7?Apz1(kUh8!mCDd5?Rc@5s@9h zqO?t!%Z2|@YNW#6 zv`V()Gmm8W;7Bs;P_AotVW*b2&;mR~XPe`zEV$8S{RQ zaL%$LR%IRRB;poggmq4xG8Xq!Q5j9(-pbnn@Gp@T91}RJfKn|7ggWpJ{4eO3jc+ST z=GP_9EVW}V;cGXn80gH6_h`K}#o&w3 zl^Z|5w4=z?F!H!`!)vxV8m=6SIa;~-QbXe%yUXu^P7vbXCpZ2gyu0e?K^xd~#m6~Y zDnx~TWI-feiuu*ihbnnyM^Q4wv*R4OEd*1+sR3paEp9V3&)FbkGot@ogZ7v7(4gZK z@l2Bw?kJ)`dlmrF!#hTR?h^y=Vq^`|?iAuPL|cfnIL-%YET@AP^x%A#6R=x&Y<5Cb z47W>~zz#hVs23mFf190@C+4Au`7MkwwFsR^Z-KHs3P_dz&95;!O`6Zmo*(*$yke;hp=^1R3O|K~#`_59~+- zn_3aqCePH^Iixckkxl^HjU?XvZI*)w?2@fMY?Ez})qQP@vSF=U`C5l4utT<*v~&D9 zT?QN~tCv;F>Qe1+%Mt9~p&;_gD92W}r?k2clV{ni1mgq2Tz zo~H)dWNV~}ycB{F?JNVy0tjc}GqUg9zf2u|R}rgRR!Fv}ArGi9sNOS!`4f7~U=3n= z(ycQy!X_cEW?bF#>jYX{#fXxzH^**Gy#@SivjSCMuX$^Yt}51T^>0s}c?&(GDmQlI z#!a;=zznxj(9q|^u%E4;2Dul2p}yFsz6e|o5?M$MeBCYVd#1nu0)w{bD( zkps1S9QT@SndzbCZy*9Qcra4owt)ZzjMF&`T9*j8k%wDL)Z_?;_EOBdD|+MUdvAbM z!x;qkK+)0-(MD#sHxUASiu)DZV5JRwG5W(1`xF~|)vDJcyvApqvKH@yJEsK7Iz_#r zQPH4i^({FX(>pdg=}40I`g>qKxwkqVW)pfvyt~%nP1Z*z-CLeKlRZ@E-J-Uf8bnMj z=KEkC1n>C!zlb#BYHHb4h%_&6Q6kOJM$~-q3<&t8w*t7DL+)yNVR4qSWO5zgb$_oq!>29!&isGtnT`((45pZm>q z+aI^t;I^hHb8)I}K~ZYN4SUZKbW;sB%rFtNfTqA6#K}Yx-D5@7Ii)?dWCzi7PrO>0 zFu87jT9PdqG+H<-;YtOIksIAQ)jizfynq)`YsImRPIAbanv-W=IUyaD|yOtSNHo&USXpLva47~e5t0h~F4bac;U`8}{eHBgN`YV zfv$H*Vsafy#VYQ!e^fQxXjJ*)(SRkJ;@a%VGk>vdm^*B)d26O)RVA@4dRqpU{%p=RUF3@&eS0ebd^6%MWfs#dQ{Q+b-)o*t@nwmnP4X z_iCVVPlw&}vDLd6Ji;xo8VUoD66FBS$)a*^w-B8e`B2j#%f{l{Hi)g|E+DFZ?uoMQu!EY+h{D zhtVt*ABb4em~8u%ooK9Bi)RqDu>bb4R-E4x8OhCx*t1#t(@t4oeR5P4RdD-^l&9Bm z&)S%WH>7gq;Oqj*^%9=V>S$KR=0TZ68@`<|#L-v#dnlQy#+IMbk;mO0gcOVdN!6z% zV9C=SI5atpJ@pGLttcsV>j>)MJ$4M@-SJ7q3fKe2aW`S0zjkK&2*cL~rmI}&t9jLI zX{KcC!vGfL;ajP>ahe+UXg{%vebu0O3w%osJ44BnYR`!sp4Po;?x^U0=+)=PMNA6E z!ngp+GdB_Y)1Xcw=2NUMH!d^X@zC1JIIO~G<9OCHE+n4m!2ObxaN?eh<{+^52W7rz zKWlho2fvr@U86h)c-_SB8lhe%)yzF7;4v>Tf65-6Q5By7GW%L}ZrlSKVnjgjoL3dq zcogpM1Bq>ZS{I%Dv@Yf$VtL_etSdJmHy(HS@OVznnV`OZ{{Xii22|p`c(9*;rHrAf zQHS}weD@^z9!kWhDe>Qz&d_L_rI+|KO=~US#Js%!JjtIGpZ6fVXHRt@3Yo%s;(vC( zf9URGKPOG7M$w1lfFsarg1?D_zK}l#*C~6_Qq}sKk zV8oF$yq8q&qotV1Vo5;Oayac92P>wRu+ZG5o|wg-_c``>bwVbv9XmeNk2MQwvs9xq zNs#hXRZ{K>)r2In(C{zy=Q&kLp;U^xkW3?71?u@Cu!w`rRuF2~st&M*8Xv273**fONB$WPt11P37eN& zJv`hCdDu;7NAqEOK-Tj;AcYe%um?Tcs!HNpi?TCiV#rCylBLCq*;E_$2y~001&LOg zAmGgMC$!CavqA0Athu`c~_+mu)f2;p80rSXhW#l(zYjI=K<= zp`?6MA+DsB_W?XWD^%YO75J)CDlJyv-%GS)axB(^WtDLYt}$fWAMG*wX~pDN-bSn2 zjOXh+%jayEuv+QZdG4n!r5ejynp;|YOCY8J>ZHVzV`pgQmP5uMnR`|Ih^r!UJ>EG2 zH#C02ua?{A!Fnd!k%V@)s?}&eLoXPZESFwA(|-JS9_i3Q2cm--4E*+O($SR zpdM@Qy_ROYpHWW6edLn8yU}dNGWz`Tm2B|s^J|L1*8s*c`~1}6p1rL7kgK_fUcR&Q z_;YbaV2KiU_vagWnY%yB918m3o7`QH5I49K;s!rDTs&Xn2i9KE*q}u8$Z;sBI(|GB z6v3FS#adR{;bdS1AY-uF(2|{wO(|`KoV`xc_uQrwwCM93W2^?0BT<%)Fj#qhD#VC9 z;33)d`5ZNnugqfj@&gYK^>y4i$4J_||CEEQV4H)svFA$UB7VlDlVf=fntF~Q{)B@p zw89F#fjow>lVf)*R;qD+u%6H3LKd? zv6J+SUmkKJe1@LEeSS&LSj68dnIAj@XXYSylChDy&m)a)3NKO+cg9mF(47R&HQq}E z`2}#^`@5O>?V}spF32eZmEySGSz~>-N2J^Q(^g{VW|Z{JAJCM%zN* z2o~FbA7-G*B0)NL9^W4jZ!y8eDfp0>hzH3bZCdmABwxK+p7}nFWD=)v8td+tX!QN3o)!~ zX&GB9+W@`*^>Cji0T!9H7Gv|qHR*t_T9plo61Yp(Z2=p-%(woE&2{}i%>sLF>;s!p zgF7`pKekJlY3%1c+fz7o(2u*`?8^|yY(UvlGwas01*O}v%zD|d{p z+hP+a?egQ ztA1YH!fIpn;!4n_&955d-j8>EZMgBaANX0q&2Uv6^8m340f&j0^(_SGd%rglc_yaz ziI{cnPb)qznqc-Rq*rK|RgWpXRtz^+r3s?p7Cx|1&@;&n-;1_Fh*3CY6h(>&Qj909 z7djn-zUiE3RgJzY+@F?gKLz@qN0TE_ljAgX)a3YgChp#!w#Z&+&QyD(Hk?K-5C1Ut zL*WY0ojHW!y8gjmqd0vWH4Tr1$p4XD3igv8GGamuSQZkrAR|WAzgjl}?oj{tKKyO* zlJDXI;`k@1mtid)Z3X;Y!O{V-{RZaKrz3D95+X*aZLa-k86^R1@;o^GKE?FX3Q(_d zeALp8>+{8vj)B@Pq#UgbXkp;Aea`NI{$ChDle!agkdEJcDdQ51kpxbcNeMSb`%ZL{ z^av~IrKlc}xj!x5eyMwup4WFL!gKV>LcX6?tp`sPw|u{V79{KkT9J57jmuI1zA0dv zuz7)u;&{fViBhQHW*w0iak$R1G#L2P!?goT$*r%Id)8-9-UYezjCB>hd;Cw_z0Ku% zYFSs&r7XF$d*(0XR&AGSN6za?wHA2$Eq$?FpuNGZRnLr>PWPO#uZ>KdlbC?kqXa=@ z&skg5g}+w0XN`Y`dmOCKI5;Ir*|Ctk5>$P}AlVRI=@qY32W9fB&+A%SmbhINGL)=} zQI@#Z9`6OT!+)eweT9>w$un_1;x4bxcmCbe_b~daCxu}R5RJNyxV3G=ExkzTbMXe$ImLz+C#5Ntw4P;fzP< ze`PUIJO`M-7Yk?JMDZM8qBssveM^a3e*>=Z-jo8TT95d@JU&ynTT#`5GQi1Ox0O#w zFqb1|WHS%ChQ)f7!CmyEYP49)S+pdq!-I}oJ4!^J-opCh+PeW3EVNI6U7}%R2JRkc zl}3pM_FDrWKmzTV@|LDP%(hzoG>*qF`X2jOHS8##@Y10wmLXwJQRA5k$}w1nDG(7| zGoEe2sDtarF674DfU`EmN?d_>2F!fcLdZ=mU5Xk}Sqo^RSQ2+STvZ(U3`6cI-_WDI z`%WVJ6A${#jdcuYYHtH1=_+|(3*B5sd}o6Ez3oke2;u?25<9q}GgQ*59t>VUn^Ioe z558xK)|Rd=@WuMoo6T#yTK})gfx97H^PL)FIhYPp({Q|A}tlR=Q`vu-xF&2*5 z4gN%%K{wYoDnYZNwmq+#@1m8e*Y^{Ct3m4DzNB$+tHsc` zD>dr#6>PNMc&Ocb%c|tL?AxGAg=`}*kM@3dZWXx{b@{%IvdfILy|+6`D0t?;&LWGNs-I*mREfmz9Dym9(0l$m$|!i@{H?$;k^D;K^??A zuz7~8uT6+towu6$P?$W8t&R7B*@7GirAU=(G%Iju8=4hxe&lF$wtDDtG&eT8uBYc^ zxFh5i*=nBg@ps&Q(hR;GV%D9-W1QU&yhcQ$#mS)W!N{tHb`TCf@jafRC5ZgvTUV`DERD6JC@Mr2ZJR5dvv@AthgV? z74h$|AG(Mgf9YSG8r4zk;T8G}@(RvmH>VH{oaM!O8FbLCmzU~oy#!mhs7bKlqynF$ zH4Z`zeCzXkl0^?veVaw_eT!H%wd7L6zbeUi^6jhjH|rL+E@_+x)||FoFRg&PoBgfh zpmy`!DZnKKTY*bVf;$d=4*3i`eI2*TnJtY{50_|pF4;r-Dq|)CLO1z~YnU{v7tX&) zkm*7_6RkUMmfyOEdbuaQi_tyl=jMZN>3LDW2et8$%c&1NeDKRTe$=UXWt?SHmG=bh zfrhc1%ku&94Dx_7rrUqTA3S9IA>NUgp?MlRnP^wWAXSci*0$Icg{ILOW?7riqe~uk z>(2Y_Gc?K=HfTmE_im=OiGSCzp{?C@ebuH?H)q7Yk2ahvLiObn!ZF0d85iC;*~xLl zX?hy>`2{^~r=8=BQS>yqX=_i;SlIF#KkI>0T!d`F7#q(SrniAJppSnB)9UY9i`d8 zL}NS3n;)x}H0HK~7n+TiL%Kaj%x;SgQScVdko6x>Yg$^k-X?v@Q`=|-WZQWGc`EIB zp4vyhp!zo3%~Rs&nSa03u&|wsXWzbA_pi#ut;-u0x_K&jf!`aj4tiYEAr&e%@K|m}Ba{)&X~o%y)i5jC2Ao;J`^-W_ z1j?hx2Jq2V`G4udaa*^vS>XDC<2HGr`5siG5Yd_><&$ZGY}KW%4~PdT%_TKw$V_`#)AgDnYqEUp>% z1pEBb&#&3|2xI&;xq`1N(=DY^?axW6>rWszTf+E2J0DB@$i}baFGnFSW&w4S{9eoF(-XK^a6 zo{;_bs+hf%LmLpyB2Ow;;O{lISHbUeW2I7EYFETf_!vBqsGa4EF`t-d!gGL4DcOt? z?30qH?5H8IgDT@P&h4GFd#QXKEgR^}UL}btG&QU7N%n_N|3);C9mo7NU#!&Zjgo_< z1iW2@zAO7)4T%%IP6}S;Y*V9al%=u-57ha-AjMq(y)?&{OSj;%Tt7c*&RzBgp;t^}4n$CdJl!LfoTs5ZzMw zPHoZy{ctgqF_6PRuT#WY?s~}}e~>^@|9bTVxVwEQc;B~mDXYKeli7*>V4l;ss(Ajs z`V8l=xWFsXCagiZ%u{+oJ(j{cum-;LMVm5yUgfOnLbFaI&l-q3a*BVyBU@g&66!TZ zaMg6lI2}&2dC%y~^zoc$^r<}^Ewi%V1STbhQN123P)(R25Pq1u9BL&G+Tba7najLfu4jkv(}JcUoZ2T`v3(tWlhG0mmHw;Vj`NMBK!I#29lBbPxP(*c$u| zr5GYSa_3LwyXb^+D~^8-^|dZV?%) z3k?w(rs5lKr3O!a*sZCTDTvjrS}j~pYVnL@UY&famYT=ndC;u-gdU+B1R{NNMLLBDauy!2Vm_RESqRurmn8u}I(#+qNM z0;#m4U}2#d?z@eg=Js0npbYNu6MBio4dQw+tclSgTo<`OjVeUko41_swuC}c8PPG< z@q1JIS#yu_rI$>OeqQa<%z36f^GeR5z*{{$?Sh|G1SQU*DdKYnQm|vzvlP5l3=|0d zHx%Sqq5a0jXWKss?aMvwud#bpNi=ZEQ3JF+iEn$q3){XvEfjjs`>v&eC*sB;$h!eO zw>V9NxLVvOZpGeL#bDpNZ4|&^c~K+ojhKr<-ew}e1Lg%U8TiOR z7B#9Qpmk09w0g)B0r%B|E=E`MR;PLL~e! ze7Ov4?chDwC~bw&OKTKkMqu>BwGztJ;92}}3!FoQLq4wDZWK~} zNLQ9Bnq)NtA+A_%?oWh{^B26~<*#}AF8GkQJBg|Ug}bJwPoU-mth>iAAT9a!lILpd z$~Cfh$Y@0h0evk{PwzBj3xWoGu=#l4CM^}3}_o=xgQDSsHpMM@ zDH+k{(jFY!q8z5SmO$@krh@Xez)rsHp6`a_HFC0PfCMr#|=C{!kddbOz`+mb$%_6I%y zDktBgm8-FIb@9jP@(9R8Qa#!T}TPB*_| zW1{i%j*Wzrryh{@PoCcyr`OxzjsrLrKzIpSP;Zq>}e)O z4m+W643c!7W}DSnCW>f!^z6Hel@@Z-KGlS(y?ZsXsQ#C-D4Ouv+TXd$G}a_v5=Lm|7L04BYH{4=xYh=4ON{yTlJ0e9~PiXqZ^r1s}_wB z?(>@j`)jCbwa{|Jq|gY0&5c)4pG^GxECCp1yR{0eZJh3a>VrN=KrQXt>k}K-+Nqr2VlH_4ht!h zfNv^C1^iOhUxL3r{Y9@6UcPgANaC!CeFJVkT*)+>l1xG=To*KRibx zE)_d`c6Uf(l5b_lh{6nAAgKvQ|CY||*rtDOvX()_ey_`!mpcYKcJz8IrwIR4t(+8Q zxpok5$;DewTg1ICOJcyLmmr&rC0`Od2JY@euN z0accDV?h^T4$v>imkt2!R|MQ!P80a2BZ3yetY5`{^KED_+d3%_^Cn+6aT zzd+(UYxX-wwjVC{CJX69z@-+WNeG-w?0x6atmLr0*Nz4MbMdyV@VoW}39}9IibysK z!!vqvNyj>-F8_t97!S1)VL+We7jmuL41kEw%|r@g>5>y$`h0glpPw!u^<>J)1A?Ka zO|#XO-{l0e!z4_ceJt3)wZa&kGCX%x%>s`e%=;?2S%yV+?YbH3MDXbE^Uj?AaS z2ha8+#*{SdE?Bv!*ljd!r#VS9+_96kuMoQ44ypz#%5*3A7*UBv38g-ufPtN zF{-A0-kfYX~c5v2YN8hT1gU=Fhe1QXk~{*XS=I5Oy*bx*-gwm3Xip!>>}8+)b5QX2##DG}~IchR0j#|eJP z`lF&f13T+J*y23i90mK=CXYsc|w>T=LCJLlSX8j8DKgZ!&n;Ubv58evvN zFyRA|(Fu|f?+Za$B9CnD!V%?b>{#dcJ->5q;DXGgUp&&SOag19;H@9we1_wK8lDTd zTAr6iP`;Tjzvf1Fc`;Z1rrb&jEwh~h4LLC*iK8bqcv~c+uK;RB`q#wRAOns?JAjjJ za~=W~E3H~NDK*&A97c>a-l&z=`oZd= zVU;x##{$b0O|VDsJ53T~MK!=#1FL5?{0_dCzrk+#!EgK?ho=Z1oRiaHp<Mrc>tkp$kEHovhki-UwVwde#)VrQ*q9{ zVa_EpJ9$2) zY!S;zvoI**kF&`<%qOH%FpI#yf0iu6RnMQ^ukx?-MlM-%gKw3sh57gLQ|zGvw1-`^tecBg zJn8Mt%4Aj&d?nd~b@%EXRxfS{Xq?^}blVj&YM~%9$dn4vB`}U5qdrR2j@Sk<(ji|j zfPBzYknu-AYfPUGh`uWjGrc+_;OBD1(@x~dyp=H1&}WB)Zb${&fEOVM-m%z`RsNfN zE$m7Uv&dlRJy>-50}={634C;#1SCXL#NCc)PF7mVe7o@jtk2H;hrDcXnCXXZ{Bj8? z2Ki+D7tk`xm}dk;d5O!i(eS~UGKja_cs>twA$$s)@b`P>yp@qFrxyRn1{v{}1K%wu z%Az4Rk6p3kwM1LRzBj0j=tmIibpWERlmTti9?Yr%pMot%&A3knHBG-e@6NC7_Zmb; z;6}Z9g9yBHc6=qEuQzMN@=u2lmiLDcFX@hb>FmKHDWj1`ARfb)R8+OrHp-Q~gz`cE zhpr-a3DK-~(s1CB5#}=Bj)FI5)hd;dN2D42B6ma~J{S1HPNqPP_c;*@YSn_B5(bdf#Te|t< z(8GFHL7(P(33H=7eV=Fi75wKpe#qxJ#h&@>Xi>?xih)~l@{IT{r;!}|$XvTJu^6)a zb0uFqpn(Wrnn<5#SvB+S+-o>tK%Wkf zDsQ4x83Iyeh+C?R9KlPK!GqR=REg;;U+*m$k;V)p6~DIEHd?G8Q?f>I9FuDKHG5*E zXAF6n(%*UK@_)fG+0SsyqWj_i_9pWE7Ff};cgOcF9g!Bj`d-43)!s=@xdnM;F&nu7 zIptpb+$r}GJl}*%c$wrFQv0}j#;oO!d#vdHe#W$edamfl`OO~0;a<<%xcU0IkY4>K zy!nf(TW&3X;@y)o$^9PAyi|D;ICEFOX^@{H&&`>;0-kc_Z+($7r}MHatpn^8AiFkq zh+)1{J)_#qnIwI$v>142il_f5NpA8SVBl`kZg4dr?>rqnD)}PtPM?mO-BM>`>PKm{ zD;E|0$WG@Z>}5F9Alis8 zyc*SV(x4&TIV+C^mMJ>g0D+tvUp=-GqHGTYEZwxE@1g7n^VTM(KFSM9z{#G)tDon7 z?o-t#DqmOR6SVMK3I1%$wu z8^c>&1=mAB+xBXrkfz53qxTYG7LC$#*{el?VjqhnhfZ6%gF$_>W8GjHZqld(FIAvu z|2cf`;5B?p9~d#oB1xd-lz38)H^HMopv5dwM<82NZBpcV%p`?bXqs%+Fx33ZKgFlJ zteYqGd?PigtjHRKR?bMhoJx>e`=gbUTFv=A^Vyov1!w5r!zKC-|?KBr8ccHz9jtV?(0hR0wWw3P zYUD9I6ZeHLBdz1Sd~evXCRG6)-aY4&+r$>hbyA?k(SG_@lg;8KzTZ8ckrpyVNETzg zL13AAY7+rW(~@7uOTb_5M-{**6Qv&nOZCY9`nlwOAcNBo^p~t z$QbcMI#4NdY^87O!>CBM+!d1h`kg|7*7fejbJ!QvQCj_`9d@kBfB&mL=8LY}czs|I z^6EjI>dcQ3szc2Y;I|6jl}qKDjl?Kc71A6za;yaK6KGIl4uJ;cFqS`Vvs+<>!9Bqf z!CE45msaTzqdy?ZXaN&h-TMdKm5pl1mhpuM&Z`k-ix071E}z z(4-8(&HWui3R|X%1jCP*3%7Ns9sRw0;Rbaf<0~Cyy${xttsjP?)ak`Zo%_7h*-L-q zR}b|~czF`?-V;9SxTfW!?1;~|G8TG8s7S3T{6sHsY?ny0m%TxUXhOHN6QS$x5#a4R zvCuqOz}z4B7Jmc5Lu;+|rnN0S^=;-(+eE(!T)koXm!$+xyHh%`j?|qs9?Qq*r;&NJ zT!v)0^>LZsSa^4At!(gLUnbm{1*k9hxq)R7@Y-v#zxVMnGi}!*{rEva# zv|T-(9iKM7)fMvHD~nm{7#P7KHpCTD^(s%ng%=fz^-x!;&L>?_6~5FH@5iWHmgu2A z)t6G4>WsAa#0K!;h*BMqg13b<@{1H{f+|;-CIf zo6nZQZ7bCu0VTxhRIMwaU=bNzXf$i&CZE2*XW#xZS#@Sxl0T%3 z`=Y(TnXp=;Pa_moEDRQBxL zD2K%7-XRG{)Kv?LE-ZmI!6Ovz2>SN+N2$fI3J?K!?u5fU{grk@MlpB0Rlc)DpO?nV zW{G1nUBynuS;ZN}nO(xF=)NRm`S~ZDT=pU-K0mv9-6QdSxOp4q*FaAub*dxv>YnZ4 zK5a2beZY=S6B6_%f`0h_wlqzRwvyDq2TdKbkq?1;{6}p#t_v_b`ZoUhO4Os%sztJc7HDA|a(EQ$fVYIWzRHgGoIRlS)!cRRv4eXK()Wd+*E_Cc+GX>jEu!p}fzf^|qruv<^MrZtQ?!E?One5grBC?*B|dvV-Vc49TqH7j@NF01G; zO)$N@#va!>2DY7lCF=Nbo~zlzF34*k{A>YaFIZJMq=^4D@DQ|Enf`24jxU5A{+*lSzUJe$<8HvWp9h`_ zkBe*=1UEJvyT0j@#Z1O2O=R&mi{k{5pwH$cygl$Pj?R1ER4olyizDgE35ibrA$$qu zM|&oUcMm-%d=2o_(_K#P9weZM;=`)ISn_jxV4dkU-9T7@N1X)&Jw@Tu>MC^A3d%Mr6XW$8NZf6I1a!! z>VCUL;J>t>2s!t)OKEC(Eof%VG^NV>hm4ckwG`X{58P|G@Fik8#}4{S%o@pKPd&Z` z5+3pmh>_>X!rf}%WGLMZrEiCOox!@?<#XiCv>0xGy7}Pbn~_&p5APPd#`7(pyYC0u z!s8%o!YT3u-{*r{BU=YG`~^qJ67-uhW8=fdk=ie z>G?ca2f3$K<_j$YNTIyqf&e@mv-(*jOMOZq0vhh|yCAUUK}*I9J5N}5GfIZBG{eaX z#FT?w0HW>ahPNCm@;e95o=Nnk`+=TFpSG-R60G^>E^4fGrJdB_?lJC=rtgSq3oYCd zLW~T9b9%6?9~(=-2_^OyA}oF8CK?-a8z5>Q?*1Xe^Wc<}*_Pk?Qr*?+S?yTv1Y~X) zW!`0kU%f?Rh5um0dERoPI2>x>Ph!SEZEZ|Sg>;BhWHW>Vf;iMD1#cVR@Ozl|*}tEv zHa0RoFTQHMAR-T<{HWD&fLOd)-l`JUe6w<1>%zvx4O_Ol{1-2iZxQ>*dsR|$X@OX9 z$mJjK3GAeTI4`CTOX~x@Ig4;=AnuNMzvy(ftz#jaJGlJ6i^JBb<>8;^ek$DXm0c9X z%H(S=h+ccF&ol0ODN-&D0m-pPp(tlVagj&hSoBfC(wQ?hzSs0cIM^1!us{x(F zv5Dmh$G+a3%%D!fVvQsw?p2Ncmhdgb8D%LA?btn_;}!VZ0<+89$roGvfH!_97x-CG zGYn1~VdZPif|Ep_@7SPC1K=cdSE^;?Sg4=V>MC$He49BQnF}@XH~s{);#|IJ23wV6 zTD`?9m4Iv}jng~`b`2s}?HfFTg;Q2>M8dNco>K5F^-b7zSr7sI&RKSV-=kZ=7w}p1 znhQQnRWQflaQ^{jbaACLEYX9FD;in~k>EhBbw|4TEL@fpdI@=H}PsUM9Wz7>K8U1 zF<5$$0%M~nzZYRy*FsyU5D`<=3>iQhgp8wEaV3(eZyo?1!!#qLhshj5| z66(B500tj%EDzRy?Xi4V|4;BF5A@0rdm|7rTFRYWOs|%)tnPM+C``E5LJ9ZE*E-<_ z1FCCp!|r-jh%giC+pGF=v_PQEOF*v4{S-MX%S5-sx$UwRfADM-h}$X63B*d98~ZF4cwgYVAtiFmv9cd4uPU7C?q{2@`QxxrDuh=UpGb$;r^rb+H2Z zGB|GrdmNMD1Romlz^2DwcT0Ctayac2?2sL6E)Vx4qfw zEq-PTvpp=(Gbh;IQ_JI{YZi*L!)Q^`{L(9@J7zMw z&h(~MN4n(*j?rB0qtos>CebfYt9x*nqy==r=eaDB<1+bj7^#qOj?=I<9OJ0d@;!b+ z8~9H$^C%&D287mL#Chf=_QCTYBT|DHV}~iS|)6>)JAdteToHev#EptCln618e9B{2HVa#y5J`XslxtWfN zWVT*VY9k%HFFd{t9)7qw7?aZ%JgH0CPG*69{D)Z%Lq+?eS&r0-_FPy2p0%)~-VY=L z*snWWI}Th@<%%&z!6S!sEx;?V_Q()P{7JMWg5UUc`w{%D$!69uz1yU$&e5-}s=Li? z*d}u1!Q=4Ur_CFl%i8`$EpM}bZ5n*qOsKWLYHuaeg>arynY5q7ur=5d@&XjRz% zILd<#KN38^e=5;?WI;183$op^0IUsAvLo#Fc{%AXDLV^gN;<+u<}}7)X;RnW_ftvs z`DaTg16)Zhf0;zuvA zH!oS1)Vo3wNAmC0ssLFH=HCkx^Y0xbpN_jLV7n9q_q{)7^5>Dcv6%-> zmsbc+9+?04OgkIw$ZTx)j3VpIGd;5Nv@a0>LMM6J58mNvKllJ?zX9jiJ;%ybpJ!TN z<4aL+a^o-IOKE@QOKI<6sYLp$VUfG;ybhRi_qf#j%)eCwnMqtBeMt?ROp*esn%g6U zV<0Y!7L0Qs{;^<&B8(n{F_H-tW#|{g-?fCX!{BkquY=#A?qNIyfj{zf2fAD#i#EES zKax`gp6B25&kx>(=gIEpE;*Isd4AJf9w=M%sdAAYY#6G5meCM>vuQi8hU&~zogkt|8M4BgD?*bvlH|MFF^`W=7}Og1n3820lLX|A{d{*%RS1A zDsXS{$MzhGidMPRBz(^T-^2qi5B3WasQm8|aW?oaLTVP+;Jz?E?sSMg-wQm3V6CP& zz4^bH@CJ!Mm#waXoSS!vZFY;FpU`oghE>u)X4s*;@T494>DXP-$w&U1&Y;ItMmZnh zpMTnM3u0~H?Mz#)-wmXKEd4plid3`_*!~ck@B$*BWpD=soW;5KgpRea#wzoK%5!mc z5m1G6d#GrF+(^VE)|N$)xCYuB+b^^aCf%~|4rqPdvM?WHVd`bzvJS`#v-QGbR;RVQ z`E2{Nde@HhpZ`ZpTm7e))|(Cj-T_QowO6STM8YY}h(afi0|3z;Y=rZ24$!eQCo zHKV(+tZxr2oBRhXE1OPsV_9R{pl9p;{NI0yVP(67fMKO>3@fU6?8cuF^e}35e;bEk zw>TktpJSJ^8ZfNE`l1KJ4lDu;oAE~sTjs&Ay5}%#uNL3`3B!8OmA255;l{7OkQ@T- z*j`w3k+`z`*g?dwO%NmSJ$OE48AA-B9d+5@Z+E3(~I5s^jHe6Bo3d7 z+hl-06>Zhs_%ziifH-lQs^Y zvXR;6zyB{+Hlk9biO03CXonnkBl7JP4*`*Ht$6qxB5x7_BCna`+OcXU)c+?~_F1j? zS$zdtdx~aPp6!Wc*PK8cx!{DgS%mhlWDXHRYj7XWJU^~glJQ6r#Im2G-j4WRxa}-o z#<-qCwOkqPY`%oeZeY|9IRh+A$b6`z-q1&!OL)&WAYDuXUr}$n5_D z{r=PHeb)HDN5A`RJoD4zs3(fXFP?*$UA* zXjReBV--&^idW04h)-a|;q=FYQJOk^8)OiL>Ie3a-#DByKZ4YW&*LhYQ!*Ul$q@_X z?p3O7B%uaRrxeTPrY`xkhg}e&lM>njnf3i>Sz(KxfJwLd@^=4`!Moif!StegKS+mj z)rYVGQ_KBA*TNywc6gm#~mfq9*Z24BEYxgf20 zX`4}uk^tlT(FTYS{&0hfw^cT)dU~DByR~b`q3LMvBO3gfexz?`%UpqF3E(1Z7wmng z%dL5wWd^N}4C`Ci@)(dY%um1QErV~36F?pYt>eAJ?XXi5r+mRnp4b61hBwn<6y$@` z&=Z4I`aHioSh`*Vwy24w*X+Je$K2EmK2klcoKO2QCxVSc4#|QjSMmAz=Vz28o`z_g zK+ra8Mg}*+2nqu64!yzswZwac9Ou$eI)-&BwK_+(vu?h}7L@7~!)%qDJgo{46O6f< za?5qe$wCf`n4P|WMJ&#TfJL?j4`hR}FY`;^EW{e%_x4w`{R=tmT!C{hOk#uiz9Lm~ zN(L5s`rdIen(degOYw8ca7NH?|aZ+ zn%8Q5!G_Ze?|@Z)SuMoyQdGtThzji_wPBPGQ8?fSVhr_YJCjW*EtE{eNGb-wrx5NA z?1z^AvPcGWP^P-}h0;jSAUk(Y62aakw+0ElER3vH0e9UD*sTi#!1t zP9NI+@!nN!`&4IYJ9mGal;!L2_&>@`ChoSx9p$NIKk1UgekvDW45_ze0O-vB4`J^f z(8QHJj^9Z#8G?Xl(4e9sQE2&WeKac7S_;-Am9DmRt5kPu!2wdVR^0k1wrs&L2>}u9 z00F^P*$T>MTOSeQqll+b2 zbI-F@8jO32Pu{FFSOWfD{xoNo0M{;|#f|XaUjjPZ?f^C3x#+L#e(y%7MZ8-Z|9HZV zz-YYh`m4Pa0Gp&SfZlS(@9Jw%|EYP8zkywMvV>DK{;K?%LY{VuUL(RHq&+UxC-oq? zg*YYP8M}8EHL9!k7$bPb_CJWAyilrQZQig`&@aM=msVk)AMkVqO!0V>f=^v@MWB4) zOVRxcul+q=%R{%-F1`9%h6Y1GKF+Vd+=^?!QU;9kw1f)4?bC071P${GW_y4KhDqhr z$hD6=-npp*ctrZE+uMtabe5TnHyo36z`Z30c*o$w~eS0<|U)XGqc=C`)y&Q*S2A9U9Pda##KLg zJIvlAjC5)n$Nk=%Er1jL{|6^-RWs^HW+G^( zp7E~hskk9ns&abj26)K98VCR3FQhGw^uadVjxZ|_&ztul>~-y`hS{lG%X`H=kt3|< z`YUeZeNRq-q`=sA+aoF9+A1FXR#NceO+4aN$1q=ywZK?5B>$wIqDOj3uy?e4y;D(X z{MImo!`QU__EQ+P-h!FW9?_=Ufi=j2j7-38A`Hg1(LMk^DkmmcFI$BXzGmHX1hB!M z9%2>Yc6?r&4L+20-b5&zMlRO(VJ;EMA6!@?2cE=#wtQVT#i;2qhmgOp0wi_>u|*&z z5nct0oy;@ka@8Dhs9UC?N7cJabEE8ifzeZ(q!p zdYmuIh6H0jvi zZ6)?WY{heyxE{~hh0{2nNO_9^q5yuI86;R;fxlK58d7fu59jiP30S68Pa$zweG$f- zNuh4N2v`VoJvt@@k3>p}db`YWeyR zXv789NR@nH&Zq-xIj`mh(FplsnFw2)hk;fV$IcKm&Db7dv6}n9Ie??mD%SJ*^1sQi z)DbW8wc)ywf1ZE0Duav&ZH>5+Fji6LiM#T@W0#_=&Aw@;S6VRcQ$KWo9~ z9f^jvIHFGckvLnHq&&RmXj2U?lWfJmQ`B!;zcr3nouP&}=QO*>N#tf1G#}^n;X8Rf zSlW6l`>Qk(YI;p0j6g>ejz$-oa`+t8Nr}2*2dI8UT3$92wuTVRv_Y1jA*32d8&`}6 z*d^mHI8x%?^*TX-qnV0`1iau+|&H0*(OR_#0g; zT|@=yE6#3H2In9+4TzF|V4ai%Y@qx>N_#HyG(JzzjmChG)B0U=&xv=*%#)ELC3qe^ zhx8}FYWayi?{#N@5GlDVRfv=v!_4NRB-7}c5MjcN;g9>LBLgFC8hi8Oq8%|Ah8rU0|7cb{mudyEI%z*72ZP zs7Dtm)KgcDXFlpB<&H|AqA*S~@VsW7dOD}38t#wUJJ+gSn0wa!ZN*ICTW+N6_G;`m zvG4s0)%^dOt7%mNRkefHPaJ6mng@EpwF1T2wZY-P`XjR)OIz%p13%_@|FQf1$MF8c zDRaN6;sWM2aYN@cy;qGbxpBUAB*pr--n^liAdmM7ZNb(f8-MsMW}M^nVW;tEiAJBo zII;7Tc)aA?Gc*22r?d=wk#Pietn&b`C^Jh+V4R~SxWAN;xA+ka?cBEdA%5>jK@*hW zU*pjn-X%$UXI_nXyy)E1I?|j%sU0CgDQ<8V*2iYenJ(J+JmQ_ebSZ>W!mr)&;?m3qzre?e5O1L zZ#nndFnIf_^9#NtzMdvr%ONuiwqp@=CO`-CW<5^R{6aArdR;fFEvZ&))gLdM>crng z>mX*jyCi&{|D-OJa1Ha~E!4GL6RoAYy3tP9#i+q%3|U^=WNZUh$q3$sbsqp7Px-uB z?ne?}10y9~%XnQ6$K$OIa(9s~e?=`7Un0L!k4WXwB8&D4qJ6Kx`gWqVKY8}fT}$y! zF!u2{KQ7?={#mQZkK}%SjQ%*}DgBbvumhW27Q-0Gg#+I9vK~~VD_uo~#+Mu|{XdUu|IjT6nThV=nDi?&~6y zhZE73)`Lw&y;#@A8jS{8+y&zyXx_py6tHoM!*ri34_+pf2T4)Uz0wEp7J3i4R>p1R zAlH&8YyzpzBYvUt5xYI0)!RBEP(O3MJCCm znrcC>XwMMVVB&nCMC*Kq|CH&`Lxi`6ERbJ@3MJ~^5=zv)1*7c$K!v#;6fbQ7-IKIa zME4j)AS0G{B4SPmAH_g19QF@s(kk;XfR9Q12*VNeHpJM|&{78A5;!DBI*PkX#f{}UWgv% z68B zdOl$m@KM1xuQOobI7mcq`o>oukwYvowEoO(-`)q;pkp5-I_H45lKt~8TTdD@)I)aT z6^Pd#L-MO{&=s(yaiV)y1guC@f%o{Slj~r0A)kBS7B-bk@39zwV>c*VL9PBxhe|G2 zar*LK8Fj|%X@4SKFHMRpq95u|q@I4*gN|qAFaOrakX%9eK+t{VOHx8PISKUG!wDQs zAhNWs8jpeAO2xq0sV}2Go3cndqSodKqYY?*TnI&#$-6aik3Xg3&dY!3WSN)DWhjy?Z4|>mUO= zQ1-l=3y&?;9ZwpQ5f#pkA9A7c!!$+SjNjsWGsA1KOgFOQ156~T_ z!KI?QfcDT^+oX_tbLEy*w7gE@zk>F!lN33E?qCj={=5-EHk=Cq>*;{Yl7O{a{)*pj z`FO~g0B6y!!kLctYehv5^PNFXh}8D5%jzC44a5f7QR*yxcnd6&@rkDn^2gu&O1LJq zK%c%EvHH5r05QjLZ1C_L7BU0ivm)z5O0gX!UVp@#Ne6R$Mzrr7#Fc#J!Vz$BtlYBC zFlUP?$N9VEofRpBNQg0xqx^n!mtEh9SXsxbzi@#GC9zu68zI;?Um<<_ zE|qsa($CBWZ$7X;kip;Lvxv-*_h-8-^Gt-y5fnFi6J$ork1v5U6}HLgsJV+Ff}Flm zdXtv4P?bcfj>)O6XCK{mDW@)h{bmrQd?`no?x1^$krAMhgCwgW1y1~J0TAmpALsXN z3C)+-Xo*SuQ6`4-$W8Zn%z*LOd^?|Q34oY}%E>uW&fnyM*y4N)>hk5YAv$pL%6ruy zQ|)-Q<#s-XB-%5sFGKX1YJCpXQl4N85>$te!jk*wBD3i^+l860j zN(zm{s8}Ofn0F+P&8I{eTOgkva>Ut2Z%hi&v1W;AS{_LE(5ONKU+(R^X?Y?A!GZ_i z)LvwEN`cN8mz!btVhsivUR!c6ufboK^Eqro0^VS`Cyk|!(mS;jHyTcP6zWlm;5(pC zu;)@3Q-L;gyIf#pqnoEz?vqlEE$Op7&!oCnAjW9=%bxr4Wz+EeOwaw9#JBPNj3@W; zQ}F#uo_l-3ID8-Bxd%xAzMt;7PfAeZ`)Qv0(4=U5Kh<-elr$ILt33CiNi*>Mi*V0d z21)fV;QJ|x0O%`35)JyKxDC%7&boqU7NAYm-?qPvEcGTVV{d2txZXxpiakReHB0o~H&O|LrQwY0^248|_!hb`i& z9O7G}-1x{9+Bd)RsM#WUE1JC(D(c^)Zd%gLdvh5G4LfWE$c-TCo2Wk)&PIM+{whf? z3eUGt!O>}(mf0+_@r26f>nJ+#Yw*;3nXr(iXo$O#vPI&n!4XAfL%thF3fQfkis*5Unz=q?4EaR5Ik3=hNx9S`|!MY*SFTc^kj7!3GlD5CK@mU6n9 z^7c4pXyCiml6DE`Y~B$Ia0*aAg|-=LidrXw{5DG<-sq0CwbkLUhk><}rh&oZg;s$F zgIA&$$4tJJxAo5K71fXh(iWv!YXtxFPP7`ng!A2Bi8;9D*^n2guG(`&%(+~J`8n_} z{*iEdr(ns{ko)fS@+m$uHOFlMsLK*EG-Uj}V|WGW%abku9k`kN3$`OG<4;vM9&k*L z8Ki=2X69-|uN2}~npCAJWwr$!Drzps3~=OMM2Bbpa)FP847%Ij_=pw5`Ti*QWE;J` z$Rw4q0qLh3jrwU+R(=QlCHWHQfF?I)J^#H$b{dJTvMkz*nwh3h?z@$RaVryQ!%>Xs z+HMI6XMJzpiu<> z0LRHzony!QciyYPZx>}w`r7DCjAyj;DdW)6PlPpe`q;Y(Tib$CdhY~$NZ+;l^(*N9 zHh<`Wgf@9YCc@vr01i_WJ0&<}m<%_;@22+Y?T zjBdEzV-la=p+Tr)V_D*^Du`gaOWv_@enjqRAtO%=&Ad}`7LSzbq3FZaPfSZ()?VCV;pRIi9P^NaNVV1y~`aHnbn2o)c zGa&0nEXHQ|Mu^D`ITImvE#yW0-D>&e4(;s?a7AtdTAX$H6kyBbM=;~Rnd>O$|G`5p zk2;S>vBq-wh#;}il*^@WO*CJ|yd{|;?A*+82YUNY{2sWm6LnSjB)~TvUsYF{xMAe& z{#ZGc={0GxQ<4#rwqK|v>1(ia{ew`;t`+Y6|F8o+m=Cyilrs84e4aOp1nijrkt=Hc zH^VC2si(l*!JRe2T_W7ww9Ih7gZKkG#_qv+C$JRAz3y@eE$z*SCWWw3D zJm{=5zz4SElkx9n9IyO z_3eZ+x`|%%FUUcB$doaMc1|PlZo(#oi+sWV6I1Rud4DYU!+Cd!SjBY_eUlQMXM`QZ zup2m_6k8O(YgDxT4P&PQ`l=k~{F`#JiRZayCznCKv{0rw0q@_!{z9$&+D2wMnatBSlxJ3 z+Jd2DjTIk&e;Z;naxBjXyMm^D#TvAdNfq`M)&Noss{w_WVV%KMTZ^!-2$}zczG-!5 zZ*m`Y_6U7z8&X7u^@XaUnAh>gjd}7 z$pU_k$1|&t0iMX7{{ZJx#yJr)bxlRAv9q6E(*-&bnDYqT`ym~sydiB0;3L7_*gKHs zXL*ei5$&QipzliY@JZMYS6{Ca-E$J^`7Hp~XKAsxUZ6_SR%yAJW_pomOo?OpkKJrKAc^Dh65~0)E7$d;%7`gSz^Xuc?fCqBz5zKD<}UrRDGGryH{L(`3No zw?wIocJMj|9phAc7OuCnl~m`}WXxS$vvzez6Fy~uJx^;X*ds%%!$4ssjEiZ%&cGWj z=0TW4`=2-URfEJ0J+KEOnYnUro0!c84axrkq=N=MNMiKgZ3526hmdDd zE)`_|cqM1VrlkCU1iEPYxPZ7}n*tKpPJ`=czTDV}Y9;i_+aXN0$sQPYG@p*$GMw(p zR0OWJP<>J5=0#?@xy@f}&CT*p)=$qNEEGcw$x|M@2m58WH}FYu7wMpckX$C`+7Hm8 zNJVW&{R*&GXQ^Nef!$1xagJ0@-b3MYmvZWMz)2r5H@Lr3y1~9&v!W~wG8&<#BFwMx zv;R*Dh3M#1ClVj@5f$gDB zezeApAN}lTMfe~|Z&gs7%C|FWIZ#rEf#GLgX`yU8tq`eWvoJ4I6gRxnJ}U*|9O&hy z1<<9srV`H4*yEj08Rw;&8*e(MpPGw2@K$a*V$~nbqjna530+)oisT$8?{Z6^5K zN`7n`0;^WV%pw2}-+C;&bZMTaX{SA3+u%UOu1nD%c^0xYx;G z1?&oPa>9oW6#v&u-MK0^UDNX|R}h0#V9qfZyI-w;{>`QQ&DmLN49nX`gbpzZBYE?uKugT#ClK;UnGe zli~db?)NG=g!p&A7rWoT2k(>I@27x;oznfD5Z>>KgZBv_NhTk_I7Pifzq2khQ>d%;ZM;H+_3#m7&1qWt5}eL) zhDn@h67Lu)Qys)|uzLL^Ivk=KnQ|bTC`1u6fy`Th)Tg4gY_HJ;_GwZ^cL}&OV;1e| zm6(Ai)$f|{-H)w72~1A$ooA#K0lc)rcC%@|vB3~(C}TioU>obI)zKTe_|I>Pp8U~7clrq?{NWYG9JERgzLJ+5Gf@y2=Fe_%q84{eBu}f5|=n^u8qR=u0KPZ zsf}`j#3d&sgk$m+@i&kO9G4>Bci6s4FG|Grgjnh#?F;F#P+Owt+t!h+vkOhk1R3ne zel4~Uq92(@vg?e9E|iXBsg0rorY*W~lka&m2{egmC3mldH8`+UPj^;`%)6oghj;%& ztjZ*Ir$G!of*vd%2bNIiK%xG!6w!Bf`3tl&tdedrdo5_^@}s5;lDJ^ePFB|}^5OLZlUT0|F^hhu+~*~_tQQrQ}8^(f1kc1I7k5a;S4gC6F< zcq#PW&|99<$Vfa-Aph(5{6@x8iEpe^iZ#Dj=N!Xet@ElKlm5;YPDQxohC({q=%uO$ z310goD`YtUPy0!S3}7q6ncBLK8nKNm_KFt1hi`3rdp1*%g@0KlkNqB`Q31q}yr6bw z0!X1{$}NW=uY*upfVd34#b4qmzh%6}dymCE@9HP^TsB9ud;Zl6+QF{O=4f)?zm4w( zH!W(R%`(yN`+Ec;sqyo$%88!o?dwi&;cN995V_zNJVW}K#w__GqwASc(M}PUwxqvo z`Ti<5Jo9i{Z(fJd+p!A#!0`VITOQQRWH3HLY~Ur~Mu_@W5P=R9{4<`*BmYes%O&!M zU5Fkd2Ae;U6kEU!=0+W2q!#r@khkiify86(e#{d3wd!BE*1QbQER8+Ary4(bGy8}K z&m)AA7k(7JB;8+LxQO@MhMp@Bul1u&X{)&(q)yc@7;m)bkNN`k0|)5~l-<|&DxFOZ z#hDiA&$|4ZZ6KADp6@IN89l_&@3`KMX+TmR;HNa>4VBj{f|lG3NYm1Pi+B@a#pY1+ zS&*ez*7pGR!L^S}ME_d+wgUEY`Jg*L(}NR6K+R&%j86u6x^G96DtlJ6CG9(cUKBM% zZ1ok15Bm~nBWG^oIT(mmHhUX=OFLLxl}j{d(jTeAn542oz15JVGR^}{*gV2wq@q=n zG5V63Kj9qgh8^QBB6T77lxdkj8s~w9whiM6OIsK*wFC1f zIMYUH3$CHaj(J1-n(|cX1`WT9;yqN8YF}QyVs=_t8s1Iu4k!-Oo)z{G>MXa^c~?Kp zS6p06e|jW@&|Kly&!m6B4l=Z>@4XZMUt`GdW61g6y~}+myN$=|$7=nwT%cDn5-3>* z?Msd!mxsVfDmyDM88s=VRuMXpOuhe4Ey*F)*vGS`$>(8`Zw}# z>sQm{B-mV*TZ!ccWOa3zOwEm`89HV??w# zB3DEYrNUuuK)U91MLwCC1$Sv}ltPSWGmsi7_s$?Pv0&Y~qn!3vO*LcXXYvTS;+ zbU1B-JfECoipnU7KFXJo1OHBsrAD4NhT0;xg>J*ru?1#}_gm2x$ik%B5KBaEqoceh zn$4Kkt@so8!Un>=6BjiPWMf9!r)v!DO+uVV=vM|61kvzDiVyjsOTe#p!&!v>k_w)o zfrwIZC!#T28xulcuOrGVWM!1E=A#1WRoo6WH~sm3UUh`qHKH8WUl9l|K50;kjQY7w5v@hL}+!GQKzDJ1DXBJ^1LHLT-~3;O_T z6kS(W9-~cz{25&tzt4_OdBx)HkA^c-?F;be#sxzT7CgFOM`h=HNIUKma|(I{5(1$| z_;dw669F?cJls=79}wEPRc^f9j^}IvbJXCOt-U4g`bKrN46BxR!#EF<4kuy~>&d(Y z!upzAA}wmcGsWe}zRwuJV_@3|z^}VV4Olme@Ne^Xq-nX7h_lTMsZqdw3Hx&?Xe_eu zXzHg9k{0Z*)dIf?9Q91wdGjkC`;8F%Zs&gG5lXZ^c63ahBV6xtLiX)WTw1eFC@uZMUEgA%1PQq;--;f++HiM4 z4}FrHs{$DrJsRaYxa_kP&35z3(a34XCQXPqB^vHv+|{%K%>KR9bZPIVV_dkT0DNernWo^MDkwo9F*ke`vFm{`AIF`Peb&ky+meYxK}&ivG26s-K_vE1(B? zd5S$d@>j4~Q1jLAk>w2NWub1!c_YeC(jUkJx$zm|V!ZOZSoEk+rI8X_?kM*Slj$4b z>Em;vPV>xrsdVtaJf}{_>@#wW~B&!Sms&XfKW-13uJyr{UZR zbZ+BB+9VA>Wc+PO&i85`3-&0tt_vfbcxzE7&Qg=qvfKvQ=&$oSt1jbmPxhLm7Itw0 zc>W_X?TVPdF3v|kYH2QFZi(p#39?(npL@Tg{veDNJE(Jj{rL@)5mWqw`4M3A(c6iZ zqkkrN%C_Mh;vb*MH^H9!N19!&kWbW`{E zz$AJd_Z--VKNqm9X&e1z_h0f?>W@nay7c&L{c)0@i#ET;{te>uZ1r2l`hljcWiz5T z8s0nDr#x&RXtFa@j`eRT&OgW-bujkOgJ11)%r`Cve{e$i9 zLR_izwrA`oO}B#FmD}8Solci7$7AooE{pmK;(V__R%u#H1`4ZG*F`tA`N7zFndZvD z^tIfa1+m2_7oD+dWZ=qx6?9?wyDG5x2uM;q1n9)dcd&0xfW4^A=MHU1K!J&J9YnKh zl>?^gUjj~lqn96+pTK_l`c&|X1I&F_134G2`pCxwBF&eRKi4nvL$vFRcae_X)asq~ zvudyr=_B)y{zW6f-X8-r@FqcLCBQQyV(-s~`$mEt^AbAqrMSk=3*5Po-tyXQ<-u6Q z4yJ&2Ie^$p7Z4Mwdh>nYQQ8RQto7*R@Y*kw`vzo6{~PG-8sfFzuEl7r&{v2aai+vP z0__jmsOZvj%=i*-|nZYW1I!k_dq*7xdYcRlQwjs(nPjR z3;J4lHo%w;QSM=WAZna>6jF2p8cr{tcGRrDLLs{4OrX0z|AM~6c=}tmLG)=epL=PX zbrhU|SOxqUDUfY#q1nxpt0XoSY$%zea`PdxcrRsOG%uUMdPxW4zoX5d{O&Tb<(AKV z<>BLq@u5jSi6B*|p9onp2h3tOT{FK721F3Y*Na^TkqPm%^_j#)jOZ1Y_I0J>D{+@2H)T08EYbDp+#Q!GJ4Vc7OnUa$Xw+7@7Sdc zNTs<#D8H+Nkz_)ZleKWBYeeLHm=B5)d#J{(LnWqL(tF>PP=QEphFIIIoHC9Bw|(=J z9saKkp=i1EIVLPJi`(#MV0Q|s3pEENx=+bT&Y9Sn0W?~#KcS*oR1{#_#hV;Irnijf zAD`jxs}D5?K%+oGm@{Zg61~QN zmfNbT#77OH5j(^)vqk#p*@*2mxVYPX5#?C0=d{PS% zFf2EH1k`jSx>OtlR^N+>XzvCrL%I0Ao;ZeKuXUde)m!n*?EO`LJX6YjdAyAEgYjt} zm@Lq9&bRY>OwYMboacd-YvjOn?m39Zhc(aTSI60d3gBAgq&oHK>clnX-4kZMPN@H` zP^$H_XR+hWJDa*TJvgxWz5VjWdbCGFx7+7hQ-K7o9^d9~ z1ALpjgfKIBPf7fnJX=Q4TggDr%702_MJv?@+|;BkLX2U*1rbS^A293}x`Y`4z12m> z_W~B|`WTP$;P2gZ=f3bwD#c|p_4u2-U+3eqE)w?Q`m3H*z~!_6uWkb9v=H687j3sb zi#@pAvlN%boWgayd7rm&u)X>qJbT9F1{kw9FBV%Z1_mAMIoNlwGXtU>8-PL?2)ruj z4bCT4MslN+w~`WCZ@Z|%I*bS#@}{Emca*CGOjs zM}@Dcb5Fmv04EZicd#RauO+Y*_X_XA4NR#W*YW0=_xMx9B7Xs=&s-L8T3srPntG+9 z14%rq!x0=jeS0-t15)=IICIHezE~(<_h-BYYzUW`P6~AzE(&ExvrvYKg)+8%e-rL@ zC1BX|zQtb{h6rCIofE!jWrZ@WiBSGi;d;UcKyUu{5?BP7+;c@8=jRIMhRba^i06=> zE1+O|4w->FhkTtuSf}@eIh~f?4Q+Y;`xx8rHKXz)3Uu}kcwRjh0_Qx3r7}~LJgyGQ z+}v?S-*kG-PQbfxb6h6GBP~k+iTiUIYBCw>4-YgAVVpHXGL2U3Gkj%+HVO;dz zDj?JO_x|*)SW?(6s0xd*m)|Yqsi`2*QW@Wg?$@Z2!MCN|?rmuqPe@w8t`=qi?<0>v zhbSRHlA40EhnImwRgmLuOb2TMDJ|9cTBt$16=883NT{43^FbB>IU2H}tpfJc zy&lqorIbtXdNHbQg%j_ACER%ayl)}jA&Octd<7&_jH{{Scs_mW9T}h9 zc2GV#S1r`ZXd&nE#Z?tPAJv-DnMrQe;sQcaHin*q*(XRudOtFnecUt5SPW^oT_*D(Mlt3$)gw&|-WIc`;lp zNT^LYmh6V8U)lsLsmSzT31CQDEI-1aS3?%*VxlN%KEqQryBNM5opUYk$2{e%&H>=s zZ_u`wL2`+Vu&l`!H85w}MX6=WOB1m-;1o{Y4O*bj8$=dE9V$vvL5A}*HON<2)ImN6 zz$NN3QZaVql}MV1d)sp?ZCawVbv|>c0OtB8=zc!$5;gO2QZW|JUXHaA`Uue1Kx@Kt z_I5ZrU{+3D3>MkF2=F!aX-OCz+p5x9UU#l})qDnX0QU9n@t!M;cj6x$w#ie>M%cUR zE9Auv-dpdjC|~fGAwloNM@aK{?qR5_1^bRkVL~(`lOrZyJXK=khUE{Gx$PK*9Oyhn zVa{1Mrq2YL@+z~kMrhmY_01`4iz?KbkQ~y1TL$|LzIG2)qJQWWxocMB4+xM}NWiX! zhtF-3GvE1)W)17rc!SMnrq{psdxP&&eu% zpqvHSjUuE*?hA#BFIz$NdB$APi?cgQ?}oHjX8v-4J}L2m{Hn$^M4FbEORsbCoUcP7ld~VsHbe>Rmo0j`q@2^1#+kciT zM!<(^=x)az29jOLzP{_unS0?@C|w z<10AtPx^)HrYhkZ<}yT{DZ{Hs+F7gpHj{o>;g8o5(8$LXe*Lin3i?h(2upQgnRpHr zjHMVf#RN+w+^Vk!=+lzm1w8KcgD(%=EqI;DL4u&T4WsK_844VYlumPkJP*q@A!=Qq z0%BO}-vzH6*2|m6#!L@3*5}S|`NE9tDIs@y0N`T<_Vw9Y?$)wyr-HHm4pVy9m*FPb z2cp$L88=48I6*sM;%CtJ2}XuJXS#qbn}0itG65UeTY;cO2mQHdd2<4IjPh2~xPLEL zu}*y=qmGY05>5G0DnlFO=-L0Xoa}TRU}U?&dl$TGjx&~eJL2-}zp9)SXsuIx1ftLk zJ~W)YQioJ?uOW6l@Dy9X0v3#@<*{c`6g22yW zOStLnv!3~X9&qx=&;P9_ZhRc!!N)>Qz>hN{-S~0GjgL3MddX&60J=Je^cVs=%ixo^ z)k+hzX9_pXxJReUMDuxEeU-O7z;9m7g0cQmCgq06ZeyzhVy-|DJtG#L2^PdWr&?bC z>vt|*zmOq{e^QaZ*!|>zmD?r*&PrHgTmaP$_{>svjL(N!-0%)|!)tTHdmZrk^`~>p zz3=RX*-v+T%lXKfb|x`9I(^~L*hNKs)28Sof>d8Kv#Vp=o(KW>cplC3Z8~mVBJ$6 zQSVJzK$CGVFN-ELz&YP9OZg&Sxnn%Bam_Lwi}=!E+Q(SG0(teiWsaid^rub)cqpQE zPSjKaF^W*>?V{$1ID*3C-+vGMrIsSXZLhe%Ua@0ujVQ4!5kp=L_I-FIg|=ksq<3LQ z$!bG8PlvR}*pvrhZ_1Q-$xV{yh}}W)^4K~A_5pC7x!D0u8E4t`UFcq;dt4hFC*I`7 zLF|$7IKx;+&3#N4&Gq=SVO;oyIg?iIqtMRpL)sOYP^;whR>7kMUES;4mhcY$hF#BrkL zUly9Pl`=e6vzN-4`Xb=x0gb#KSV(F4ek&kR8%YsK{;6 zD%}LItLt{H%zKdcULLKWhRbu-p`?q792(qs5cDOj-G+3)f1usxhr37RRfE7c5u80bR3>^7=!!1-v zG`98)YEupRpJ=&JLhg;w5!d0ol?hkQmf0VA#<6)t*@vQ)A*Q$8dvjgE6Fu39H+Mh9 zj!B!tO)u0vp{2tyZ-6Nds1RoCkCw$=09iD?&^s^fuj=Ax{|Wk6vy|3gBVN z`&Z*FPocYKX&OOusidGO5Um8d&(jR;^eNir)Gy2eHWZyYYr)hDw9ySNxw zwcc@YOT2kKKKaDHR(xtz$0UfbD7`zeCEVsX@&4AbL{VaM98ju`z4wGt&Zyi|0#B6D zHlh~F-xWrpVgl@UYPVz)I332RMg zp>bvJ4^LN21&fc$ zqyh({%@xncM)FjU>@d9|VaGKx)@OEH3sBjjRp4(1HY@bUy(rSe^Mkg%nU$F@)QYDw zE*A3go#WW`8dwb=bz!IgfqF|ba6K77y)8h!d-EX2Vt#KBhO_t-=5FG*y}jFf3wCSM ztxOCNt`|cCT>C&}CWdL=16(@y2e1_c9;pnl)Af+&oi5(&1M7fIGHeUy;YJraK@J1! z=j-h)vw2(1j5+vB>#^;}HJz=eGi6@Se4};xix0t>$_Tp?^df%St~P#*E9yrSb2Pf` z7eD+LE$HV#f7>CUxq2^;m#6Zu1o-O|(20QlqN82{`W*sW&%iS=ln2Y_OkQ6C_Y!!I z@5T7N0NIe;LMu9Xh=I8yJbM;a;7^)HS7Ck*;#z!67x#K$=yy8fx8+(zYdqy~&ob2N z_*LlQ`vNw#bxzS{@Ta*ER((CtgF@;C(1Qb)Ex>!i=)J$K(nQ1%bGgA}bJsEMuV;Ua zG0dpJqc+yqWx@YH-vTjBVBHSCZ$5-27H3un>sB490C|#}tXt%`=pTwpoVhKOC{Gqj zOqeBEQZE4@Ko}^Cfa~y61dy6sV>(I;W zhJ-5s87o0v5O07#gG{P$#~avAjReR}?A<5yu|kSZ&oCdaj(TSH!t= z4WU|F0KQFNA(q%R)MBhgbV`@Mg{q3)p38l5tZ#_M()Ar=H=n!$e@$w*FVgzSKhzGQ zQK^VtveCvBtF5=p}!r7lFpK&FD2svWB`>B}xRp;}c)Ch9p%Q{}W8yyF9O-GO1%bFSROs zO_*Wn8^R2eV}u!oJh>Myk{Acpxl7nz7fQ5_5=taa1Ntw<_>|YQwF)@jgU?rwlC(&- zSIOUb9&6HCjcAnQG*w(3nTh`&sj4*k){24K23uyAEJw~rU9z@Hu#_N8Lz%4%NK<)VLyur79-i~d51y>yvykE%?9H;|S1ZyfQIHq@oyGq`Gz@&r z{{{u}*ZglO!q?yNzZHlOWoO1@GBIQf^F(6y4j=z}PaChX*;iA6c||^Z_Un&C^93o| zsPX-=DOC_TN+QCxn1Y8x*qT8iY`edN(X7BWnXnF124C;RviFp|7v|MCPOK{1X~n#C zc&0aFxC0snmWpCOEfkANnO)%tToRyRCQ04Y74;4KJ>Tekjw%KSAwKYzQ%FZF)%{N>*+_giuM)0odH zKl4tzy>bZP2ba6E>SU z-XHJy&*opMx}yN=emTkbL9D5Nk0LYCE}$e8;4g>smbDRzFbT$uqL~Fj(KsqGu3!00 z*dFrPJYrE!ACH7k@F#QZb9DMjWo+<1Q2CgeM2_lb!A|R5v_<2y}<*N7o1=kT~E-d9&=d{SZb|QG!P^v;~i6 zIK*c=kjY$-$AZ@YoHu&&=Stp9yu^_cr3)R^ys@oehlv!h|jU`)FtQ9Of0 zAsvE$B-X)(XR^fsh$bPH8dofdVa_wa(Ho|m^Rg+YP9;e2o)htr2(ZKm%hQ4W+TPD6 z&tZOlD)9R<(e_P|#R9kA-+9Ywwqof+#cF~3#8T(?TVcMUl#}NWK`n$@T_c_$0q;Lz zh^4I#;n9)a&0tm5I>@M~%B&L=|4`g2^qd5}=EiiaeFZ7Ct?jEE-*ckmEL(cZEvr{NNKW7_gMdHzMSz4#-md|Rk0{W)+VW2o0R-;ap>7_o zedCGJ7LeYmTOkggw8ahovaP2!nuTkf?&)>KhNstU+KhT$n_?7nDo^Jc&osz~(}}l- zoD-xZqU1_um_|6IBtB2Zueul&JWM03?8N)R^VTrOMcbH4LyQq)g911u@MXH^h}y6C zEpAn7DvcA3wEc`I`Am4B%D5|P#11;W-p3+!B7Gg4ec)8hP%7qf6vteK?DWvj?zQO0 zX8FSDi0xXBAg|84X=r9vT`Qxea}EXPs_Bh~#&q5GtcIXQtcN;Kpfa>Z{T|BwzmybALy%cfLe4*ybvR1?5VUXE zX9oMur%h)DePf??O&lo(PkTKQzX}|jpB}0HbR4O^98Rd{Q-BNH*papk|FI{dYlQyF zNbqrWMJs62;lTga>*uY{wgO-H>EVmtwWRoOEj_3bR-=Bp7_7wfXxnD+bx~0$USYX% z2&u-7AuM(~L2pX(o^BiYA7M?dN*m_+8uxSIIo3~1jHCGP<@oy~MCaItO#d%^-BTs> zm4v<;UGWM!=dk3z^>s!yw8dird2Sp9<-r2_u=jr}U3W}>$d3S+h;!ADbDi*6kyy>8 zAHMP5%GX*{jnL;YV+fV5p5O+x{XFx(z`Xd_YJkH)_^eW213M>?oT5bAYgP{vAKwh^ zL2%7q*v)?Y(|grol@Y;nqy`ua$VW$70T#gJ(HJ@&GwxXgUq3kiN~@wk65evg>lH1I zL`tXDOH|~JsF04)rui)@NqH1#B>XJ03B*Jr##n|TslVqn4shFg2P~PpV4qn7){awA zIh-t;>K({`HM>63bv$3bZVftb2AO)Y+~{M5$VDq|h8NWk;3r(P1$!FH_y?{$^rP*n9#5z-X z2+l(^o}H&4+mIMTfZJDrO$3Hu`=+;VsHF8#M~(doOcN{yGb-M!Oh1IU!0z9)??973 zK5KQLw-&un(_k8AJ!+a~9S!3`e_ZbsK@o(UQuxaQDbdU#uvi|f%94ulX;r>{EozMN zTKd8d%JfF)o!q$|r9BQW9KBf{n*`aO*gzdRUKFY4Pp<|FPO(xEtTH&g^8ew~3jd81 zWNlWsMp7fqZ0vNjJty~v&5*@FIhg{?#*uzTXA=#vDN>)t6Xa5!vr7lA9qOO=5SI@( zo~=1*9G(53Cem1IwF0cH5nwfAxs$vHVD)Mjg&X3Fed4Xg&p!wIQ>XCG;%r4AdH9|r zEZyzsXraYEoH&=)m3Iwxz!Da<|MHt~4qReg# z1Z?y=UU0N1TpyS?4&t*>gvww=>=`H6DOeGXJKmf3VDsfX6=W4yeNzq@%SZ>bFNQ3U zQaNP2qW_5hQzD48jqeFMhQBB9b5gq$e52)63N*4{1_^zJuU}*mUHtbk5XB0AucjpY z_gefPzSr>g1b+VX`xgsF;P1)d5Ft@cvi$Gg`CkkFdy4-J<$r(Tf2Z@m8vb_?{JQr; zuP@A-XxWY#t3!Ge2QfFF`4D>_S|B>@f_7}*qu)cJiKg&uN6P;AVdp9{VdpodgF<;WZ^BCLvyj`PwX%N<+ zo@88e&XJb_c>0agb8q=G+e&G%C2Wz5r8#v%IO5l>ERT}w{i5x>E^fd7Ur?* z*77r4QaBx{VjIykM+D$Wgdsg0%0t$;;a*m_W`|J_0U9Wm*U^IMg^^iBx}87;1l(Ag zhpm>ouCVJUFXle00K7N>_S6cP*IN7^@ZuzYPtd3MdxAa_!_C*Pp%F>x%&Re)m8VE#cM|t+w%#mLyeyPcsTK*o)(KmDlZ)xx5MP1 z{U`!cPklX!_j~e~u{$b~Y3&Bvk1RsX^?yGgA6N_fdKOYilcK~gfgai0Z)j7o{s3f< zR7Ao~jwBJJYd}tRIV_t8Aj^a0(yvH9mK3QJjRYQFuwp{t5T|0eR|J!uemqb98eV&C z#Kz%Z4d7*Q>QH52R~|_9NAA?BnEGgXeci~S#9C4%Zv@`pPY6rcj&Jnc5kDMqI)>7p z*Nqoj8P`rP@!>3&Q05~<51d5u`9i%GXFai#?8;LubrPIZ-2XeOvc4Tz)M5fCOLr@> zv{A%#^SnGvO@OYz`W@HCuU;)=8^)`54i(O?-g*2zLC@yz3E?^HxbS?tHWD^DuBZMk zrbnuG+kvy;kbG^=VEM-n2fs`v!t8@L3))H2fmcbMQemvalnRdtP%1g5RKqc)iYz!< zIPSF}yP>aNQbTbM^~b@gZsb+D1!h~W?Ez}F(+l^GTXm}MKlSXYyJyqQxNn}GvE6`u zT8K4|DVvrGoI0j-LNl=o_7OK7jArLg-uLebBT! z2g}!X4IaH6Vm7#GHd{!Eju%?iUqy$^Dm9ETw2nvBvi36iw(xA;3pE?lNf_bO>Rf>P`I@cpJEW! z7)riA+c1$iS%6D&_l$kyyyb@5xR$>_ExE>Mz830`yOz_a`M0$=?0vM+?uWmcxaoF* z1xoU@_>d&M<{xNwZullr$NJz%l2p3gm}E}pc2ba!b%6B+%S7fNp_1mKP@^6ovcM^Z zq&8D_h+oJB)(u8mCc63Gz@kV4jv72VR5!mby zCv}k}88H@F4oIP2Cdv|3WGeX0es!y|gueT-%tFl|^f1@B_EP$R^NNvvm`yapY0yfH z-px?7sUIltV-!=wkCDbp7$ZsJ0NrOL7L+Ws(nvatl&Y&~S-G5)_E*WNK9`ET17|TN znzm;Xqbuo*+oI`4R*I<}P%`FUsKKnS8wQkIfw+xb10*Fkj6`%&z2C{@%S(!3Rlux$ zemgEEp)$cc*`BJ|P`*L>seOg!!}1TME1T1NVeVCfGNb7gIfKX;3-t!UdiS{^?^=xS z5RvV8Jn%TcD72)#_xpa2ymw zR1Gx4OfWUea`szQWHK?O=0E|dNjrvrbC1czeJ+c11+-`ZpSSmFmKnRM=B+MkHrVHP z>(7!9*N0|g0Wpt8f&X^sz_*zVzE@Gpy>Fe=8t%ZEDh(&<5D0N8x{(;tP7$WVJTOKvZyzyzE|U0qb4*uR5{C(1Okz^=GAMGllJ7A#d2=Y_l@G4R&O1=$!$JaXcZ0 zT=o`Y0$>$|V9Wkvah_00f0ja{W0dJS!XkS)`bZ4jm4i&X>GmA2CHZ1)rwgq4p!}24 z@O9Tuqc?H)bp7HJ6y78&=254zX~$P*4((ic&F8v$Yk)LyTR} za5fEtnCAqXwu!)|qLtwL3I3u|0-nLS$tZ$nYvGyL{Y(tc#PBQ)pP}N1XVbxaQTiO3(?ac$4y3)V#b8m8U35$XOgBn{U0+ng4 ziu*!A2~n(8ovN+hX$QRmLaV~mrM5B!lA90&lm-k|oKjk)GE;|2m1?Vq7O7gTT9>XC z2#b4g%HqQEeok%>+j-ybKfm7}kbCdhpL5Q0p7X3Ut-H!ExAK(>(ign^?Uq1+E?$a5x#a)u1!`w`zdde)b3Yb2p7zbCW@DozF{^bbY~Z4(=2x8ZSZd^c*FN@ z-Wvbg1+V#D&x`kOED)9r^sU2;bs}G<&xyQu{JRR?_Pu|;(!Yz&j;n^wRX?JJhiBlc zTI^ZohdDBHJ?ATEYJ?x=$Siixt)ywg{V+dfu3P6!WBf2fX3U+l9Qg8Gm?1OQ^-1NT z3p6*rbmF~p+{~TV&8_Tz0 zb{5^ktR)XL9B?C^b!q;LpWpB2<+gKluDTe%br(=q*B|O)Ja6~ag_;=8>$5AJa|sw= zBpF=K0@wR+KfHCHtV}y)D*@Ret?(oP8I{au&d}#A*ON;reth|O z{komm7V+?zM0)byR>}QHVqUT7vN;I4VbP*EiRn#ypLS7dZe** z{7j_Z97cb`6m*Y{?y~t+=Sb7HA6p-4-WIMjPsy`0vCxUw-;)-c`|WnUUDMVs&05JF z6(7!}yht@}xJpCGiJlZ+@ru;DrY+DSaQQdZ2Mp05dc z(m$p+cKhLD8%*o_M*XvE)b{@Tjm4WbRxIAcL{=S^>W#}p^#*QolqC&y zr6UqUS#SD!SNhvXA41m@T~F(h>1v{0g|Lzusdq7H^^7`kitNFg;w+6@R0g9*JcTIMD#7Xe@g4lG z9u6LcI^_9!!Mn|U#yT$B=NtHPN!;UpWy3^I-Y92>ZaD&tD>)mMm(tNEC8m<$O(g7= z#_fnnT5qG>dh0#&t5mN&uH%8!!}!azB%KF33zD2UWf868*anqZO{Uz_rt)Mq;-OEk zP-BllTjMTQF{;)u+^TrGyEhFX6^gh8jWkG#UuOt`OQjgW9hUj|> zTNdA1dM(wh)MEHd$*N<~GcNEWN0HCU!k8{Qtld~n=Q#HyG%*Dk=W8fA$r=t=+#7Ei zp!1eC%WIa}juj;{d;}e%ffLLyjMZ7W7M6nz_5lJuJ$M-F9{6pUVVllJ>`?EeC!kJStM1__>`hprczO6&l!!uextGoQ6%H8--OL%e_kqsCEOz1`X!6%UAXKIW_OVM-}yLIFQO|-e9JN4ar_r}gnZ}w!kBCtBVvC4gAtW3 zyfEA0{qI_8@2FCyk$`)drVwK^X52O3avJ$;uh9{noKp@(&f<6>;SlS2OLHy%H06~#W12d>z|p-iI$%bkcC;K(qG+1r z9WFf;vHZff4%1GO6VDZHF{tTDq{GteZl#p>eC3QpPIn*DPDGPQRy1g0vTM|sQ^Xyr z7gC$qtTh?0p{E*6Ojdk`fbv67%Q;5|ElnlMRGQa|0Rtrrcr&Q^Y`4M@ZNKo~a=X8O zNen$h!+wTFw`HI4`Y~y4n>Qb*r8Ao$KnBfH?S5!#`9klCF&x5*nPOq*9^Ea1qg!_V zDGsr?iu1}%rKHe}(FegpW3)KWgqNacIThg!YY#-#YNtP^|x48eg?@h`FRkjDjw=yPw{k)7<&vf3DuCzae3* zxJkHKx$u49Sl7Hh;V6rlCQ%e|9|l$~7Nru7vIRp-@m8fD$y651yu97$Hsvdvi0+H8 zg`Jp2rnDZZRe7c{Ru9NeJQy}Vy55XYw9ww4HN9&35$8YqUiyYmvn?EFBD<)^tJ+5| z$Qs#%@uJ>-y`+8M+wHF{e%)qs(l?u&XCw6a3yudu1FxfJzgQ>9W;fyOtqhh$~d#$$&yVdG;)SafMrxHSC6hW<2 zI-%$+wT!|FRKJKFEN?JFqr~Zn`dN6QPI-_P+=aL#fsS7PWmXV*SKz_SwgmK}nKwyi zoWktgLZw(Le`tOuO)2Q-#=(vV5mT=%IwhNAB)*6qGyyh1L5%!{RpCzj8%=)jiTbm!)fMcwpE){das&y3KaDSfw57)Um zO;T}OV732B)xcmfWm`W**fx$|P|>R=2D)Hg2Rr7`{;yA3n#|P9o}oUP<&3ggCRy+BuW{LYyPO$bJwwT<)RZ=NsNB4 zd1Mj1OtV7&8gSvw496ca+5KS~s}6#fm45u8d{u^-oneNrNRK5g`_8zn5!^(=ujSd` zRw`FC;p8&2_WZ`~iC4by#J%>Riof#B#7p0NQ*LexXVq5j(l?`Q*@kj+Gds$h?uYu^ zGT0nmb!8$E4To&-%2^P~e;@8;4&^HlrAfh1?ytxXI+ij}jI!Tq?#?~7^%}-o;DKs9p zj{C&{D`I#mwvh2viyKNa=~`Y0Pv8%Fgf~A@fX-sAz9UF+UXJ`oUO|iuQ5l%i!V?~H z)<(g`RtA8r=EPRk347ugSvIU#L^XP(G0MV#EZD%W3R3k3UHH@aVj zCBB9Ha3$U5Z11g$@Q|luF&{~GwZ4m!@2re+`k$h96!q}NBn#90@MatI z+6tGYoo4h_Q%6tR7B0B4XY$SuIQzEhZb=t+&C$Q6Lxl{{n%jH!n#Y2_eSjQ5B)Bqu ziphBbtQYEcvrJ&uVnK08NwH@1(Rg}ZSlv?p@I5?E`hM;Y-;b`4zSsWYd$=HdPx{06qnK?%UQRZ(?%>z8 zKBE^BI{K*~H?l5)eq;yea6aDa5bh72h$5G6R^is+AW5T#H@eQZu9x*G&QpJPQY>n6 zrH@*5Ubcu~dcUQj%;;w}UYZfx`(-P>ct5@97ullWk8;s(=R$OsXvrTcR9q2#9~tq> zjM(dVJBqiKr)Hy$b(Jda94-IUcxU-4q&nY&$2-d=;Jucn2aQ45jd&}=+vvc_NFC11 zMrr5!h@mLWFrQWyw^;cyH}Ji`E`b%pRyW~jiQG#k@E?t^^21m`+3GF~lm~gbp~fMl z=7}6jvTGD;8BhmX`@?Ih98^MoXA}m0zET*_HesTlj40NsxO_$1{$ueIVUcgY-rT9W z6ih1k7-Ijfq*JjrOvDY}NpaM4z&a$0pQhql-ciQdU+j2*viZT#5^|-tWeBtHyXc`Z zP))8oYjvSS=~Vw?_pMXc&Nf`AUEI0!o}=j8kh2X|CBsaiT9Txtzrb=MoF3MlJc(G_ zscRUA47O$#cv^7VeM>5*-hn&g)XlXiOLL>g6hZz0&xb?K9M7-c-FP`Z2Y2v zABHo%qNAd{XUh=zIB3GAtF5L3wV`S=WR3T?THqgh|Mi`kgfd`YsY_q73Zl~>xXo@QrDCX54OJu zj{(k^Dmg1zPHnHGeM=3STs|DVP4OF4PTyPlcO6u$U7&*o2`TeXtgXgdgzomIinYUI zFMZlK1G-E)1GR~C2JB4Ry|WFyb3kWp*I}$CPWZ;`X60k#!ez7X5V`T;Novb5*s7MZ z67*{7RTrC?a=rnxMB%4c>!XW6OV}lU+J$zVeJAH;_da>ggznUI#oABNx2?}9*5)3R zM#P`X5WsKn&yBb1+b(1LD65PeivNIp`1DWdY?JxV9G-!3?oOC|(8?d>?PtwRRz6%I z{A}(wME=qJAM`?lx!+@b`{nn2i*Ul|%z>0e*fY7;k0{nITX!D+(ZapE2b_@O&*PVi zO~F@27b~U7b@-)oAB(id*U_>g*p(jkpGvL{kzZ=1Rz~(Z+N05O$U+DG6C^#6gP2g&2#$5tg*Jo%9AqwbKs$DlyvBD7CRcu$Rc4 zWBOfAN9uW|)J*dQiBe9CYh~ZK#wdPYvoyBmcl*Zna)mUu5}<+JvHgJC8|l5hHNXxg zu=j?i-{LIkJmcv3T-ytAdkM~Gsdhg5@jOFe$4KE|?cn5numBuH(NV!ikWfT&Op6i} z9W0$o@n!%b8K%mxckjFA^2X!irqI#&huxxik1f9Y)2N0CwT{%ZWWXR6kqduU_V+WK zwoZZstwHLiIlT`Gb6rr-r}aVMdIfETT7Cvx%f;$yag7ycV?&9&9&1bDcv5QtYI(5_ zYpiZ%sri%`WP1r*$QACXn8Ht8}AX--ht;;c=sx1n4dLu{!&J zj&4c`-mP@OBmN7z8y5|*X^zu!66E6J`r4gaxl2!5c(h;YX&dQ?o!vO=|J4d2*bv%^ z&&N_L@yq&Jp;$v|g^%fLB|UX=a#-uwYjibBV~gq>WhfQ1o29k<8(qu&JILVQt;DVk z)Xqj4vBvFKR9M3w)9wE$>6Tgxez~tTI?~>CggT@>=7f07;=WuoPw$#|JdgRs$Mftp zS^YRRE!XNc-<#1fQLdTz-8{xGc)SF~mN8y5AH7>>N0;0XR?yo(FI>#?#<-|m%%fi5 z+t}-R@P}Aw93?Xgg#y8+Mu0|20iq(u!bf>}YGFL5E3E6Sp?O82@c4WD+}?N8hni4d z|3~$Ox$2`4bDj0M;1#9R_u74D;C3K=)&Dg^=zZpA^*!rf$e8I7*^hcs-%_VI+yw-yUwLprR!Ysz+Gmm_qw6U^cHMf zE}N_%uil#1S-yEh1oa`h&r+H>YV)gz2eL<3d~M-9)2#`{DVdI~xzG7kTOnoCmTf1R z7@^75Pp|}gQBMrJA9;AF$6a6Y@L=~!=(6vK?0OYG5?~2-?u8spj0{qo#p3oYKiV|4 z+Oh=3GbU7VC>)+geikA*H^Wpp*`q7np&h*z{0SvIUHvHnRLoYNNz)t4`NRn72_+1g z+#NHsHy^TD%wapI4}wt7#E3o53)|;#+R-bR<=}nNcy*OmKqJor7Z`PhnD*#iMLoHp z+SDBk{c_6LM)D=v$_#i5prd-Gf<7^`xk~yrrm{Efs*$ObAQ>kI1+S2(fxrh6EO&L% zJ~+0Hj)9I6Xe?$1r53f*awEeU!mc64IgO26)3qcmQW)Gu5VbifNHmOtCq-EGrKf7~ zPP~gn70UU#jfTW!xK2AdLI*A9mcKTISdy!>1#=`<$$X+kA7sPcL zCZ|Ojrlif3O=V^prl!q+|AdxzKB0Y+jbox@lNp_C3KRKwKUEfJX05y4X*hvjTipGW zO8O;Qq^&z@kIL)g1u>YhCyMtHD*jk|TBMG~fd2xpiEvWVPAV$!24FNJtTwCxFp9){ z?RUb+tIZ8Ci3A)l+A%W$iW!JzZ+gnwP=R$ zSMJlOfQ&83Ne20^`NhX1*vSPXe5G=&te7&geZ=s zoLUwhg^Hb$<#IkXoaV6KZFQZM@lBG=BF)$JVqZ>1ht-#7*KysnjYSn9hEd`^#Ew5? z3Ns%wM`gU1;e>|kL|rp1W`=ZX#2+sdsNW4ryG!<#G^*G>=mi|Ih_EiiZPY0NDSpht zlF|=4%%Td>nihg$4>FxHF;+mvTUx*8D-DyNlM}|VvM`aAg>o|4B#zOf_^&Fz_C2!? z8n8o5Zls)BP1cls@N5JmeCm%N*^@W?0y$rJS}^1Vh0QGTnXFtY=O8hj@CvD*ULmEM zjnwm+OH}ewZqk#y8A47INm*1~;W{5LzH6gt1(4y~tp9N{7qRY4^7Cuma*_Y_D%;{8q`K;YQaqBeZ{@wF<*_6b*XQXcZ^|@k@b92Hc8HC zHu=B)ZXUZs2KAhO%6Zs(l04?;F3huxadGUZxStLk15wE6^%8wmqllG?joYfD%s^xYWd zka_NvGUnfk| zBAvtg=->9~#nTfPE&ek!J52%L{P|t9x+S@%>F5~tECHTUwh>5s5pRsf4WspFi*OeH z?hD53;aqu-_Qlb`bYDzPPSZ))OP8nUgl6aufV@|mJmB6ivM35`suh~rEn9vK!7UHB zjFx}b2!Gki7K>DanbD1$MPnEven@sTk=0OJj6hOqGx3Pu-X(Hysn#R)g7%3@5$cm9 zdDbhBT8-Um0v_CQ0j;{XDWdODiTEjTS(K!)5n}vhHrl*WY80CH$f1Es0z|EmC(tpf z6#g+zW^>-=18tPDU|uVQj{eTm(zn<=`mHLV)Ql*a$D>8*tC;K9nzoXw>eYDg((R5} zhQ29Q?2eIiAfz|xS*bfiPrJ{xqlfFY;}+oTPR0r56QwQVh<2EQ?1jVul!*s7fQhP# zm7o}#p`8=~9I&Pue5Fi`X|Q%&Zj^Q!PX5u$@b>{u|FkIl;Y`d$ZJ$O^ZWA}hDz9Y& z=R&3&ewKQz-5?s2?~XtxwFz!vFg@Q4ovJDPI$Or zggQS3+>8_^X_10koBXV}+oV#oJc-l1XxZXYvkEcHY$$0JtCQx5?lxFFL8pX23a^I$ zEH&@Z%@g-H99!>tQRtN;CfA^h$ArfB3sGYI zS}A1hN@Y8R?uGunko-NA|KGg?9pQvu<4VvGB%DO}l#0@q>I6zz+$mm{Og)oOT;hUP z!lU#?$Nb@gux`CI5yRsH>R#F6Usbi4t!3fG;eK;()XS?4_0Bl5t6M|ex5Fo18p+J0 zIto_hIo7GK;7M4O*D$`=G&0Ibr_UemEBv)c!Nx{JUBw+?Sj@3_Hoi0){AYzqRFjZv zRBK%L$3!k7s-C95S|1OJ*3>L_>WkfS(z;LDWWs~FGU3fVtjY`-HohYAj&F%fWuAyP zLrpLdc20!8`aw>J({bg-$cQ_6yS~wcS8d+)D~&_fg!r$!T@hW2Q!wwftM9V0h(-OY z`-)GGmc~#`HAzoRNY-(u@+?_*TLM4cy|di-N%)!0=|#2;lrLglSr-Lef|>SfO`R3N zgvsTpg{Qc=?mJE=)j_EzT6@k-T6@nAoX&m4f46_W(s`<`1z%;{SIZQz`U`$7`oC0ZV#UoC#JeC*YZ?tpbn>0YS$OIaK`*W;`_x@C+rGG^Thu{EZL(CJ z=DFVk?j18Auhi^@)3`WBJD^Q2mB{7k-IAks%X5|2(&GbS>tm*8?^q&|>De>3-41h^}~xujNmnbgZJ$)!+7I#*?9T%p;0@t!}5XaudF*? z&PNmD%)3ALNnC{&5C_!h1&q>cy*|LCzME&j-{#E5R;gdvl~SuCpQWuzEhdH|QZqB1 zw#to={oh*cf3COH^Q|Pt{^W?Rw8+_1ratVQ3(r)l*P-9zxe<8#N$SNXkVA9PhVkNT ze4icRBlVu*iZ!PPRZIQiCqv_ArgVE5l$_WSlKpC@VX9Y;RNJm6PqkdQw)&RjPwVV0 z>Pw4y(i)X%O94C&KNI4Z|6Ci5rzbn;(IYIo?%OLVmTC_kd!_727XGFPGbb(Dwh3jv ze0@43_MgL7?m<`yZBW9G`XDkuJ}!#UuEcfNEJG~4`T`}vv3F;j@!J#g#WiME3JLB|Bfo$83pI3$Lc zuB@K`Pb6-vU(SSrU?ayK$WLjf`N0jHN&7n`KTS6@rzDAC;TP#$`o)ZA=cv$6PASSG zz7g1~O2+D^2j%rpt`a?Z zfP+3M-K;yK;zp7IT-OqsJJd7+n&CUhtN8;IX*&2-6stUFKeUrldUo!YdK?#|Qk)Bv zdc4b1>T#f#Bems)Q8;n8d|tYFe3ew^S#yZ#s%gmvK+njtgK`epf}Nf`Q`%=&N_FiX zj?o86bv5!*U5%(~^c+|Eli<1ZrgN@zCDLcR+GQNx0em}qyv0P78rSI*h`zja zMzI*Mf{EIwgIqA8I8N02)E1jn;9v-=wz0e3A7bw4ng0F`SiT;7e}_%)yeaH|AKU?@ z8u&~$!8BOH1$>vL-q&8gf>Pq}1@1gSb#4ytV_xbvkS|o`Y0%4vR3@rxd$VS_$ZP7g z)7m0?u}<@#LO~X$z5wG~Mt_ttB$h6PkM9e)P}DGj^`Q6YeU-Fi)v=(IM5&5l8B|vC=NA>7wWG zc6b@Y{;O!dreG;7y z8QgkDQU7E>u1uLdD559c91%Al27w*G|jJzzGCv zr7E4u(o7sh&t3AW(vA*fA~@}&kGiq;QFEW{Ns1-_-KwH3zcP_$Dx`D^$Q+g-KV1}N7Mw$e#pMn~CTeli%>wi7tby8keyaE*1ERPrQLkuoJtWB<=StbOZ!bc?MOZPwk!QK<4WCiW(=_K2WpAWqi~-7 zSXZD94WF&pLurx6eWqQvOW6M8MasRVYS5rLbTSw`8z#tSLN_BZI-mO0qNkaH-I)`% zE!gQrx2ql0!c63wnWhWNADROnU%O?Km57i%xl5{X&p-aZ*4R_jTO*}+T>6c3ALr1} z6^K1I?B6G!sbn8Tt9Q{6@97YO$Z_7azD}r}7(<^g!Mo-kc};os{>}dO!sbFsUrKny znkO($T{Z2v|7_EazOYTjv)c-q1{nL3(K1M(6a{t_$J!{5LmdQc8Kqcl<=Fx&$L>g5 z%;~jH6>rl{+IQ$fw_~TY<1Q3vr_oyeQxGOQp8}78Hq-&%qX{3T zHWA8+S%#Bm*ixx4!4~l9mej{+0~$IJ1LlIX%QY`6^+IBYBLB1|Wzw<;==&`@a6Y63W!dn&Caaj?Xl<_AfE$b^I%)KW^-ajK+ zp-K2k!At=6P&m~lw?|iWicwGB)^ts()5jM$1v%NnoJ_l>aqr(X_M_Imo0Y-OVFQEQoL zZuA~r0{@65h!Eiaa<;zIIEv~J4Cr7-T^oBV2%1gQ`Uw2GmOd*IPDgntPm=(V1#OwU zrZ_%SF@g~?Ye-)n#+fJNT1utl0no-!%mBT~kW!nh+Kf^C{yRT1EMK?ZDLXHzX%%ez zXmAmZf`bw^0`i$L)3LujOD*s$AcC6^27b+R;KED?uOym{MR zGiVt3XQYyUZjh}icgMHffpaL_VI?T*c{~4TAnPKSgd9p?~ve)zkXXW!1 z@7d@r_vL2psa!X^@7F!WmU%||`^t7{WWmh`?cjfT4lk;c3ppcXsW?GWzBlNNipGbs zLq^Ps=b@qC(_T+Bq5Wx!H$myX;JV+;Y+;2$>$NVKOr@QbHoYq5T3vhn5S1o(#QaHGE1cW@p=>VfVpz&rl3Mdis%#f&NKnHD>>O<643Gu^ul zUs#Cj3ng<^TuSHbRP5c$u;u704Ly2tOn{yTh1L#zhgGd2??I>hvMrR~AFeG^Gg-|A zH|_HN|A8mm7oMqTH`@#JZPzPBJtCgpqw7WcLCIGbe>wR7kLDvy|M-j?-rpxtP_(LF zq`dtVt+oU}$a4Lr*KAAV}|8F>!C8S4(i;a1;8ElWATm7KOZEX4>nA zk4x!d64DoGUJ}eU*8W>-=jhj;p6{BEwX~Fj)c@J;H?E7`cie11ZOl%qPqLDFB?--j6%qravmND6k7g8xxQA*w6+GJeo;N^KTa zVf36RpOBw{H`b5ImGB7Pq*AYgZ;fUm`&c2f%n}-K{aY>ccOwOLPjI2;60Bsi!ly=g z0;RdIeAbknT2S>%1$H~6A;Qwd0zNNH}W zr@%N*j#6_#K0STxxh37j(7~z2cdsa`Vi=pUBu!6KQa0FElyuUvrDmzLY)K#kjk*4U ze+O}Ud5|U9kIES(-DYZk9MlnFRP+G54YrNIc?5rz?qZrQwHEv7V=i73bI7C~*p2k4 zFR7=IeGL=tO>z8kJS0QKkCqAWLg2e1hd&0-BAS&E^2Ue9)<;LZ6<@mY#^0LWabI(G z^{Btkdt=nfv9a~>#p}*}uQp+QD4N2wAN$I1@xc1}^FOqowIcd*1L8kk1V!|fO#9gi z*0vI9m2Nc|onO}etHHP4zbU)f#&`D^uJEs@_*9uq(cOdjdP&G_W()o%rI`O`g6;F# zFB={tQQKo`Ys^ILsTOh3gae*W0T>PM9>b3iFgQ?RNLTS8^ zyT$i@#GbqxX*l36msMoS4HcO(DowH)8>VZ^KANB{yZE%Wpy6pm#4_+pC5y;vvHZT*^x}}Rr;}p#W}M7z>i$p(^~&aPY*FG$o>;46InH)><*kr z2IWxi3H?CrDs|kfp)-{q3;p@ILjU*}oK`Y{X_tdbs4nULex@O6MQGNBAxqSR+YFD0 zjEZ8i_V%tJ>LmnTz%J{E)}vvpb`W|v$(Ny}5ge{lgLugDiT*3g`R?!|+rkjZ?W>8< zrj<@J87| z`89=lZAfdFs>4j+A$gV>`$iUA@{?)O;O| z_$E=W{W4Ro#$0J9bb!mW_8aO+newQCjhPbS!IltD=v1VEdhuXYGQz5ZvATKl%f+I* z3DMvYU&yL3PLWny;B!lBwTfl%13P9B8*kX3$z^5U?Z5ub~DN=iJCKrC2+}qlMc~WawQ4=1umDxV2 zuPx0r!N7(6cN_fN|Gf=vd~X{*vmUiE`mr{~KGw!9A)A}<-)+=H{qJp5Kik{J`G`kt zggn;9(~q^$f^mfWcN^yL$J>bOof*JPf))3t-ZpZlvhf1L2R*7kt39ZaRd|$yfNO zPvh6)=AW<=%gzPjf6;R-@b-{rU%8?udH;@Wu$I0&FkE=^D*3{6HQZ`buxZxpBjt+U zfSZ1mS13pl_@wr7c=-GDi0rdWZur*{zIohOvi_IC%`^{Hwjc65Z4A7w3B=|L8YOU-dGP3#9)Er)5%EPuTTh2oj7{#!wx@FY zq_xu6?r6!KY6y;eZp;DcTsy(56kBD|$`YHUT--G}mr~u1q@s;ddxtBe--DIXud}BI z_=N{6q?&d!@VLQCHN`ecHN`ePUK3d-<)pO2FgGb@b-k3c`ugKJWBw-PjO$b>%3O5@ z)=D{d*&ok&bd59zy00n6PvV0?mpv(FZKmj@bFQci^C9R0)>m-Di1K=Re996?^AI5~ zH(sb~Q&1~$@BvGtH5dOcf1yyY#bNy&*nJ^y`5_xTXtg)9Ts);*CfIVf9I^?&RS?{- z%usuU!(p8s5p@;glY<)f8bw{eb;WJ;?A!}S z!NKC&h~!<2dJ=Q3_kRW=(oW$_dtP&QbX^6{LJMfLw+oIfLPjgzlX~9~51U4%T60qH z`3Oqkh|g$aZXeShj#I|NKcuahq;H@!v3o*7CA+l(Hb@aZBFE^c9ObzV`p$v-_kMeE z41K0LUwbMk--2ptD{k2^9;-Qcy#$-!Z8VD6Sc|tk<9JpxWL9@6$FLs0{&$P4GgjuB z)ZD)jVoGO7${WIl4@oFAeze1iSy-s0yDiIFwkGL=|M6Z$b(<8od=o+}Lr>9`n8>uq za`QG)Fh}@HEh!MfMCSCDLT(NA`~+BwPOvbrQ8XGA_SIi?&VVL%_KA$uj;;UBmQA!U zRz<3US{jD(SJ*?a5;Z?`Z0(-~4-JfC>z2*v8+yhqTeJ0BXr~7tUW8jRwH~Bg)8~5J z-lV^k-Bx)Et9d;@Bx~vIM#!*{RgcAuMt$a0E!8flPzcbGKw6npH&1!pZN-cgS%5(? zW_e9g)m%E?^ci-_exNPJ#|phqIz0I=>!r~Bj%#LjP1Kysy*X{!c3?OEm?@$orbYR< zAA)Jix_**Yzv&{R9$wNu(Vchglk<+G)bKIM0r!L2qVLw#lY- zwcfdv%4o-Z)UF-Z(5jvGRqI&G0pqBwuZC2)r+Z>}92?GE(o9(YHnO@0sdA>JXG5hpdvT=<Da+Av&=%(fzfix1%=g-lRxr zS~Wo&33v;c@_EqKLXFx#2;eb1Gvfac6{+Hu!wVWQA1sCk%U{nM)PYE~=Sf6dJ)BbthR^m5wClPd+DwNY2yv z=JoHTFLfhh@5>H?Z=zR1Q*>h25HsW+cA0(<8DvLXf%bw~KhKi=)184l7g`u!C?_&g zJsuKA(y}10DuMST_0-}nDJ>B7p4kX*iBoyw+QZ+|KCG$`JlzLe$aco^VFi=d0KF9pFy%H^Z})W{u@^70+YF{NK>5xk7x{+Ygtd`HZ!i6-?fG zI+NEQ*m?Im7tCXd1hT=eaDzRSzmvCS>l+2p&qrU3_Ktq${qIkI`j5QR_5~Yy4rCqL ze4olZoc(qnrrE+r{dUi+J1n@l2O(}OoBQp>IkMnr%zG0N3YthB-mnV3Ya(Hph6(Ph zkfsP>p3nPRy@m6<-EHORuIOaJYfk<5ZD?ch+*8`oh_BS&^C`OC%RTc++T65AXjr+o zuwDNnWGm&gmb~TKFMmcP052k>o1S#mqUdB#K~|?N`x-rwwaohIZN>QfhqVE{ztb${a+k zGM3$N!`euFzk>Gixr){J|LXy|$F-v&jVp09m}yDJWJsC4*mBGD z@IyOk`jl<~FzPN@kXYED{d@%Y6Oq8p7+31Dr)Yb2Z*CtQ!#hRvO?gB% z-W~h;gQoyFwlv%B!_{Z+cfudAr{khy5~IdfNUKxAci$fS-|^QZ?6C&muG|B%DPDxu zmIlqhVCI+oj1JLizY4Joy52j-%xpT#Omucs-F|0#(N&d&vp8kf#KNzIcV>eJg!$p` zvq!ei6FF#yRlaMrSQPfe+3-J;`z1Yfoa@KxTt8Ol`gymvZs*+4+A)St_DlSGQv>DH z!`6Cj5|yOG`;hl@gBmISeXOp2E#=QsO-lxYR=4+nX59U@1X1qJyw;#=j@047!*Sa+ z9K@|YOUd@;irVOc`^^C4sT;u|PgcC;%sia5WByEQr(UF_`gdEdR}_oCAgUC#OOax+ z!Wt!Wip6vbai%i&S|)6^`QltOMmE7tHvzF`O-AP5!3rAtIj9LSm(qfTJl;3j{G(~H z$*B`Lzig6458jPWn|of2uvy{l?&|%CHB!F<>tXooS}qlxheA5`u4 z^;v555VPPpug2e(5@x^)%xftx&aRZo#$IxeU;i*42eUpXw*RDBL_?{SfVu9~aA#ryUJkj5^& zrXGxbx`&*ZcWZG2_0wO9d7@E(GygC%zudGM?<3BlQW0=Z1-c~EXknvUQeK7!iTjK5 zh8AgNffoB3v{+19O@NqggHNdWqY>j?PP%+)9>Fw1<`$FCH7%y`C);Am1&o{Oq{tRg zE@0p!HGbi@Z;~S>DVX~FKTGX^=5LJ#jCk4?*Z8742-SLa`ngJ!G>fG%ipLzJXY(J^ zC>$zNw>u;E1k^fWQkOZBTAo#76@s60*lh*0pcdhNvVWJmBlUwRZZVXa{r0@uN}rP~ zH0*3`J@C6N&W2WAYSpA(9r%}%i(Ae%#N9HrQu|=ZhX2*p=A-glCA&Rm3gRSDyw}yf zq-Eka>Lq{(Zyv=%##;)l`XZS&6&i_rnl2dHIKVhbA4~|b7^VWYup@VD?P(9mRC)M8 zmQo~xy;O{k8amVrH;{YYr>N8@dJ2X-hI^W(szhIcbidtD?ij*R|IV?p9lVCr8{g%3 z+b-Ln;g<9yysHTAoUbTXc^L0oZIR?v(H2POs&VvEQ@Qa0p)?tyQUA*kll)StcsYxC z-s;i93LFO?TZO~``I=zfAQRk_{dU9FXQ2!KD=7ZoM)in}0RKbVpV6jnV65=Q2Ama> z_J&N~)&riqVgsWk>wqQwhzz76^`jDMZVuOec8kC}7kC}liPRgM{qQ=tlzQbu9gdh! zU*MiD6{|eQcMb4dT&Nul+I*ZR=rnEF%Zwv+%MsAQ_je~L);@06Ui>z@ss8m?>}d*j z8{iJTNHx`Yitx$YEWwkT6D(&~Ci-wRojYJZ1}B_~y8+vwNGng+y8YZ7CVIhsX>A9o zRf^idHs{)o?I*46MsG(<(MH=L)SellK3pN?H2Fea=E_;^A?4J0Ibz5LSNZ^zqG+I0 zQ?=5S?vC_zlaqs5UHCLN;9hDBjk6Jw8F)0h1&RY?al_tBPf8`neDJ37j4+pzYu>cV z<+2aHO~qHw7)Q+T4XfIqe}UMio+~ImAHIHMl~rzJ$=Ybq=WCjSS(kFY_e<YvE zXPr8BxDoijY31G70NgijI3t(R+Uf46Ez!M9+gOwO?1u}*+ZF4QsV7aUt4yOX?(V#N zt508>2jt}2K!&Y&McI1iem zT!Hk<3UW86tsU{Yy`N6`F;f{g=;OkfqWgzi9&{UO;CFos55FvGNI+#vc#;V|d-9gp z?+i7Ai8j@pShEKcni|TXrk6N!$Eb`AZU34uXASV=jr~K@(25LFt%RI)?RPdS%v3%4~TmPboz-q>_3-m7!OL2V+Um) za?*)YwxzVW&hr)<=e$=h$9?)9&X)U#CNm`PZaKFq0(e?>Dt~uAcrmFj{5Iy2Y=XQ4 z9;aoRx+AEOVptDoFizPKjG7No{m+T=j`Gd_6LH6M$fjvLBED*p^c)pb&k^{kH?T{?9tlJ+3 zD=+6MVWg+Tp+~30DO)yfS2S|-?(pbqAr?S|p*nYaEx_M}(BgFCn4nt$rc&b!^C{C6 zryeKpZ_W{y-cU+=xn*R;vF#FcO+QM|ZG0a0|IfzZCM0KY7ycWis)Wt0gzEHA`L3kb zye8?_>-8&&A@!x-bXWy6I_jv+Hl6c4U#@5zTk9BB=fhrOZwX4SU$5OkTqm_W08LlG z2lT~Jt*>3(dbJ_(9xOx|N~Ml`-WEw^d>@Uptn!QA9!)I{oZfJTF}?!l)QtWT?>)(bL3VwLwBj%HiX`t3zP(IhrFbJGVLTV}pJu z;k?pLKc1)UN;$tXLP*u~Lg5l7PF!q~ux?|8W2+-mAlyJ|b8z^lW3NlTZ|P2;b_X+3 zic`>!q+h=WU01gEy8DXyO{FnX+|`t!aXSrqFJgb!+@U32~x{;-f^Z7V$rZmzIxBT3_|2vxR z>NbkYD2BS5bNd2K)uwvFpQ(m8YY~5PVyGz%Q$&iPlq;2IB|VGB+X!8+U{0ZUJ^p`}X&3l(#Dwj=O)gINolsIcQ5Z4@l9!nDdmd#RF882T7#okGEaU z-NFfk6c2DlJi3cxRVEEhYx(QNb^Gy^t*W#sP;z(BQ*2zKxWhb<{3xn<&=*g21mWgd z^z#0+=aUbwO1|1?n*)07i+|2lG?kmFr=&3WF7#fiyj~o?FXr7H)J|#dYYVU%FW>(0 zdR$lH{eb%2U8nA!ZM$$+?FFjOD|;C1f*R;em`3Y}m}58uer1mPfF(%_zM(#wVZA83 z5~GH$SuMM|Er0fva5cOJE+Zw_&yd65baBV7cox>(ppN>L;->O{r)-ua^->b?`IM3f zmCt4tnl6LCWc5m8s4r$m%adnltF(5CEv)=S&?yvSdtm}75jkBxk>wvFg&MQN* zrk|AQpJr4WHuO*FP|2q;SZ!PXeI>-a%FneamVno7Y4*hTr04!c+stJ{vR-bZPs3OA zdmWTSQe`QH+mAL1vj`9ScK17_DQf64s^lYfP@P8X*RMtvf!YVvm&a;iB)p=?m+(p~ zA18*j0HcI&grzoY=#dZ9_HTAgUgsd4?K9vF<3}d7J7&o}M6Lo)A!s{V-MZ$a3|gG! z$~~Z)1`$e`pilD`yapbf9t`(4WADKS3U({7?7s~)gGlbTxH)X?f8w%nUFGsv3Uj0! z2&^DU=PQci2dtp$ai-PC!`EqHNxXo(k4M^PVm_L8XKzTWz34hCJXFlNhyF5#Iso=G; z0q-qy55_y55hD*;dM!%OQtTPL%X!9~?bTMDk$9yjAi6k_`Wx5&ODUIZM0eOkX2%tC zM9LyW3nN2B_@77}lYHma-t4T|lmkwA->TpIh@$I83$;T&VwnLS=%T_Zddbq}3BEFF zS*#Si-Jf3E*whLY+0lkC!3Q~%4I3}F0Ri_Z*S!ATmt?gu?AEB3_3%d2ls%`EiV*(%ko;)2UV={u%aMHRPl4gk$QrgfD=wRfmI3=2 zqENs786wk7CjtDTEywsDwk+pf$z}o_WyhY}u~;NSmT(L#otO{F&qPbWC1Y-p51CGK z!Nj@yc=>qRcg}f8Egn_o=W*wpOF}c-sqeE|pSeOtFf52lnW1xq-yRUZxyAADn(zP8 zEX^z~_@%GK&B6}eU+9`E)5IKGxjZg?-HdesZyafWhh8(IzhGjmx%!YSSbLJ7Rl>lz z9>O5cVc=$wL6!M>yJuJT^0$tyEY22Snhl=&BVPNBq+b4e)2c*KkwUrdvi)AHY!obM z*Z-Z^a}+lOKmMu07_S$Eo?r&@Q`i?4*2<1|^oWX3w@Vn?N@DlB-<_=&?p^UW=+}{6 zxNB280jpS&>-k|0XhHoVqNOyUUPmbY)5#5>c!u(aF$*`z zQnPgtorOdB7E#FJ{F&&0+B=&U8sj#P%9MdxmPG-h>;HtAn2MQL@Vl7^;D^B0YzJmS zoBB^OWD#Z~^(N7#JtQBd{gVWkIk}HVu7`bS<^y(xJ8#XAW}-an4lE_KWqFJsKFz7j zQA9|-Ef>6h@wE>=eDkGQDHC7%+Rl64i2ZnVW|R5geyX*-=x}lNLL=tmEp1sgnY+IL z9!N?fe6|$S+F8$Q8;b;=U%XxSrea7?10`ytdZ`*ziHfU!6&!`(!jpVILxmSh?~Nbg zPn(8c{Attii$ARazxXqNdoFI?X_w}VN=X)GoHa)$-bfe=U))rO0JE24n8uT?gUsBa z`>h*t5MxVIRhqba)6ltt4ofRwd3M_uJN5P_x~>++_~^?O_rrxXSEy|fw0ZPo`zb>; zv=ezw@nQc1-S)xvyN6^dh-N1B+V1{Z-Hy-|4+uHl^mg>xs7CI+{47`b*#Y+@$yfcordG%N zmVQ#+rffiRsFXJ_O3E9k?_G6{`AMFOl5gCTeF9puYhK&(x~9%Mt)|9T8&!WFN=9Yv zgUswm)-lvU@d)R{BmE>ivfXP`^!qgHn`D&LV=*6JEW;ZVB(Z4J@u( ze0%BjFWtggo6Kp^^;x6tt?%4dJLTG)hNzaXED4tgoF}Btp5)Mb>G2CUs|nHFClo7fe%QHtRr;H8S-{rA`mKoG=>FD? z#OT-d#@tw2y3zghrcF^PyHj2jOJ7T%SZR_cYj_skI(~bH*t2C#z)B(D!jLD#>={DK zHdd%BW)an(><1z{-rmD;G)~}$Y4OCKcd;9>mpAS8H_VttRQ-sXu;x{NL)4o@noBMD z5m=KXk zc-cpu%!N#C*?l53t$1SW=IGk@vY#pH!$GAk9CQPF`vH1YN={{3&2x#+&^qu)w#pJs zteemD2#J4E(|MMiIP=&%{|>Viy*v4_d1iTk>xL2JhZ<>~Q!47s1;U9qZQ1M0?o|_P z6tV^OMf)jk4ON^D_t~N?yG}mEtgJRH+`N6xnEk>)#EO~dNv+qh0)c55{Nhi`;`jfs z_T_O+UD@OJ<>h4~Y=%`pktkMLEs9HB3kX3$taYkPovBrxEaLvH7O~O-;U$Dcr2!(M zRjI|6X{|~zqZCmTZ0)GksnFWi0uKUGB+;^|EWdN#3u0&b{eI{B`TYLSklg#;z4zR6 z&wkH=e@YTQ;U76sPEc9ne&u(jbc1Z8DtU8;Nn4U^+C7bnzlR;#L(UPS2d7p6h9wbn zL8-k#1+s}o^y&!R3$@`-YpA_>8Csqi;a;il-8=O4UcB=FU34hIv0U-qWQcpWm+-su zYB|s<{gb=+WC69(bOq8I>*aXPe?YAcbPX2e@YJdhH5QfKAAlSQM&gY!!TMDijECzH ztyu@0HyqIkCNwSQlPWw{+{$KdAEG^1lI&R3Kk+$8o`ufCGWCan9~5vi z1sp4k_@rWiI@!qDMLgiwsRh!yyQ@5y&OBG};6Q-(NAPfUKvv|Hn$=8wFIZE+>xSo((fQgpi3P9==}nj%riMrqZqL>q^(l5=!0? z?KW*($(VLUVrl~s3*;0D)Yk+V$e!w?J;C#T#s=jqr7aqgZal%!8qkifjL@1^@Nxe% zm;==sN}MqL;320(KLCCCGjf!EX!irqm3W{p_;V-F7x?s*pvD7A@9$AkC3tBuBxi!H zKIe=$KokX#{2DFQ=vVdtBu`^VfpVx7kHktBAw4?T_l6# zOgW0)SywFCTgkV;c_Rlcy~&} z&*f@(IzZeU2(`EUe?lyxI<_653q;O5_SHI$oMq-ZkA2K7^Rhr^daTTD|JMJFj_hAV zWqGj};<5zOE)4NlkYG$3OF@Fc@=N4e!CrE<482;G8vYR{zkIzH(*@Y8O^3n@t#d7f zxz4Bry70l{CbiK9(*>$OkltVv?AtocQ1~^z3j-32_(OZBfj+u_uqc~Cp25nKS%hpm zP=$_uqGc0jXkl`GkZR!HQzvg9Y zD882oyqLo>%tv4Hy*{e+c@Tc@PG37n2=G3E^?d^)w1PTkh2xjdj>r=fF?E}7_tN`V z@@eYBnvdeGG1yw1eI|WQ*7;05U>+y8a3@!dPp*SxO85iNe;jS5VNXw51NQU4$xfFc zg*_pp4@z8o9xcCjx4*L^H4?O;oY>5|oThB76TREz(zi5wRrBM_V9<)l3OVRRaChEl zi{>1{@(1_{)9K#nq;0WBy_WE((?VpWnD~%r2C1bBc*bSm8Q%d#4TZc(bX&9V9HXE@ zkU~>4MAM%@-9i_zg4GO>VZNwX^z$Bd*h~}*T2m8fO{o*vdhug=ugqJYI0aSSfS6bA zJ&ag+@-brjn;%cnoC7b(KY$w)$Y|3SG6l#n^v-)T^CODmj+)7dAg#PR21_e`Agwsr zjiz^I3Na-a(T>hFcRouSsBVETO}ne@XfMhSOL(G9daJfItm;l%fY{2okl?qiv?(^OduZmsc)f8Um+`qaomXuK~#bXb8wFn1C8g_Pyb!QhmyR+ZJ&N4C=eeVSH^*4BD`CWaZ3S*Wg zwn?Wvse{_&7{VC7%9Hoewn{8#29WCl1H^G~`=|qbQn@_6Fv78tcC&E;8RmbNQjSYO zN}1Hk?+)G@QF5KOG{J?VEub6iRnN0Q*G|D+6SUhUIe!*K)gv@5G?hP#p-?BlVG$8I z4&;+PLpS%zl1g@aUi69_SFU(>3ZjK}lHt909n&Gjz+E-qomD=GtGC0m{bTvWBZHGq z{11YB5)j`9@`)JalRH@e1OMH`XGT0XHtljR+c3SCcDW>AJrcgdm=5v?VENIqCLM-Z zY_?xcc^RISdt`nED_{7Vm9CU?bY%v%cr)8w;S=aoqB(HcTs*>Z4IabYO7k?QIcmlA zt=Y!+t@$sXN8t}Jmf=`KsH8N@`rZ?8KW2=9>q{l^eVHU^pTW1+e#X&HzI~H*+_#`T zz}o&dj(+m(8?5achhYfwn>u4#c;ggZ_TpQ83o^k=BEofcrKE4m9ZP$I=>Fz@EWxNc z7BmYQrsZHdh^3alu3yjqw9nJ$-u3>vuDcz$GBfRDB5@QEp4&J-$9^vgsiSDBA-OsODm#XsL^yHx!j8e}(&r-}U&yK3)TgVgnwhEEK-ZlvJ|I#8oeDUxOpdDiG0#%A8{`vGc$V|YO984|pGx`0l<1N0|{Ag4eLk(6`=B{ykif2ks$E!muw5%q`)V-!PF3QQ-dzDuM2fekATJX)TU0MJ%)~lL?YkrAgbKFe za|qz8BsFqJB?)pK1)AhHXp+%a{e!VIXImxfWEkL|6}`jJ3l5h<7x2%91_QmItnEo7 z=PGobwSE4xI12bKaNf3bK>Z0tTy5;^pQ1aT!{I#Co{*9yEvp_RG^(04_gCL9ZP0hS zqu~ApU4jlC@2_VRHUi#vG$qmn;wi=VmOonA9epph1$fIe65~^wpiezd2Q~{^Y_sSC z8=_9^0y%vIo`Hw5XtmgdcCdMkgq>*Watu3dff%3Fa7&h|%UG!;pw@K=p}rCZF?m>e z>K(+-u(6K^b3@Ctp+Tn&bX(T~`rU&wPHWwd&^cW|)z4ehwY@`>EI=DhaPpS(xj|D{ zokcIQi0QVT1q!hzI@hH{{YaCT3%zM=)YLLeJQ zSPPkSBMIN#ZWpi|q6Thp{{35)rY>3=GBG;+mNpm1P>L1WFhn;t%jlhXHc*?Q?J>v( zPTV+MFplqbJQDkX0dRBxLDe0JdJS)w0F(p(-(@w8BUeBTr^Y6ltu8qbszn;N8|jNr5iifoLFbKzCB6yj%?rLUCS%P8_C9#0DCSECUu~Yl zRi>a>)n@iywxKZ0cYAewNpxuzi@N)q!!(I3(bB;d8QL~gp0k|OvIT~=(8^S>*7EzJ zf_rFmT9h2`7hb>md7vWbzza=UN0mZo5$i>uWjA~$r~9H55QTy0jm<84jVn6Sg`Q>yVnaf?r2BTbL>IwJ-l1jvj%{sJVNWs>9ID`;YNVqf3=VT zm0+?ee=UxW-pTLi2n^ac$ToFqP075abTZHi5@^K5v)F?aAbu@K2DQQQZe7osR2iLK z0+{x7ndWUgx1SN@=O4qL?h>fE2X;*E^v4YHr@IB21HD62BZ4Y&IH-XmX}hFwKy9?RR<(wtZ+Rw4mQJI64u-v$5!hy`I(ADs(X(QGjg> zb%7>~^58`0dJ>>CE^9HX=zSi!|5E+7XqUTce>C0=4!80`S}MymiG>kgp9;`k20DER zEjQ4eEpFHYG$)UKryZ!{X$u+FGsK8FiPgPp@KD6svS;u*1LO72m-M}mnW{kCsed#H zM{!E3-|m-SEXL#9KmV_oX!f=QyN8t|`e|6QrN=o;w2O6Yxr=uol3+!>cPlH;SY~Fj zc_BYOD$504`dIE6NCIT^J&6!Cb0=`7p%JLZeMJ8fCM|0XBYd=;7kmz=;SN4zMv#0+ z^dfe2*wCSfM`yYD9Fzj@iZT{PJUWGEl^a%mhW#M3k>6+E(IZs80UzI8Y7cx1A+KY(^`Ydhp;@*i$*=G$ZL zL;ILvO2F+^QPkg3jr?v2AHL=4#j)HAQEYxI<_*n# z9BFYIl8>tBTCq!HBIFoPnSU5~=X>-ZWSV=_Gd(DdZfl)BOY9An<<{wN z+fZ0`rXJ~QT~NL#0Q~c8<9)bAhb(hf)&(j-8#l!$L{8{L!I=(yPcNxAiTW^CPIfJ- z2TQms+|mpaLiSV)joX#LTb%p5J~0kU2W*D8oi337nVe~Z+B-lxXoI-9KP$*o;Q{q% z@OG4mU*n_$=2_{$#7hS&cnIRSEDSS3KTsU3&tCEw)yNCxItnSNMj~4W`}EjBF$JBs9g*Y2ufja@<2wi2`C_ zYU5^@-IolM;Sn%ak>i1%rM@<+U8AtaSOwh7+-yhpXcXje;AU&hP6~|+)CKCbKi#2B zF(DOgiq*>&0!Fe2UK{X*SrsALvtAB7Ev?moKRGy06ZinRGsYa?PY&~e*?-yErdYi8 z{n74AxO4qM*RA|AybsawK0CgY0H>B*WybWGy)SGn42xY?{gz)g#&uTM-Q^rs8^_99 zZn1e?-%=H@e}Vrwr=&j++oi<|c4GV?Cn zl-VEXDZu!LHE#4^i+4~gz5dFWSt7vrwO2&50OJE@UO@_#3vw2fK^8AI=F7*BVaqai zMNObGr3A&sD;O6PTyVNW@pdn%hy{$_TQfM|>=A`AzI+hpmU(qA-ltD0b*cxa;Qqs@ zT-D7}#FCmaM-^D`55#>xj4{qj9+Uycb?E;|J&Us|Vvf7XIR1a+xE9Y~0dU+Rj^hr$ z$+LQK8P7e7ptdFbYs;82Eyq2daNM))_uO;%DX%4`$`U~Ka9nce4E>eZ?%LZ$8c|9m z4`)&2-i?-te)~hr~jBD7+QcL*jgz<`Prs8 zHb>l`2KnG<*3DnBZ;55Z4bibGx-iTwn#XQR?AF81AMDN;t_PqSSPBMqmOWUkA6`b=e{K93s(5)jmQdHl~;LF+(%ci zyl}0ToEK~f7=(|z&Wvx-1Oi?DmbdbbS1<6Ylu0!)Hhfgqfe)q+FvA&8wB^rpS0lqu| z+hl6uT;UV^LL1Ef4pvD3w}b7OYY%qpajLXFZ`;udNuPVS`tEjY?ibxRHFMUT<^>(oGH0fr z%K@tmj_d(xfF3KE6W(~ezp1UgfzGuJgzQsb*}?ZIi6xwM8zSb4;~KAEZw>aOD0<#T zk=N-%wi}D;HG!@Z0oG#ijs*sCVe63kWf^+Oft;`i_O{2q45Go6!nFcw>3}Q5tsuo) z-K2shfp)|XdaQ^+18(fPL5NjJ6)5&DMsMUOc68g*^u4)vEK1=~!C;2_QqX|yoCxxg z1akH>V7;ve>ucN~BVqGvhnz#zi{ME+i`YXgL3I3>Amx$uh=dt3VP2W^pL*hR_Xgw) z0XHipvKJ}6CFrqk+!1oV4BfFLXqRT?E}^A40{$;OyhS02fVW7+Y8AwQi6FayRs^|d z?~0V(PtY`Na2D&J9mKX4y2w`eEqKc)-*2(E%nQ6_J?jCVz*t zBCtkLEe<}3v?9)#cBcaI=or2<%JIuy^r{iRFMkQEvwf^Qxrw-cq)6NP+m28=rduL? zMc>;)>{8D;JdI%%aUS&z%~E_rQPCrk(+;&%ks%I4nPi^3y_bR<{E8u+ikAHo6}c!; zg(em~m|0O*k960E=^Mmmzem4ahjwY^8`&rE{j{B2f^Ek)zrl9ZG&lYC5{Nodfjy}o z6)s`jwVl!`eXqzK_<$W`Jo)!`}-}RKkLO~Wa~{yqIXmqMVt6L{Hk5py4C~{wIv&E zL3$`$@_Hq(Mq-lgx6OU8^U_Q~x57RjNm-HV9% zh1(_P)Lce9a(^;dJ3P8sTFwl^?3IW8&M8kD>|{qu_|@RsdBu3c=z&`q?ThSK`(o{(CC*7 zz21gi1304KgZ>6J+{aV{-Jn$XX3$*87lFzn5~4^W?!tGp>Fss%Jj4J^70&rQkOi>z zR%oGC6+UJEr3G#FVBO>?6uZ1EC;u1VoYAstkEdx(k*KBz()g&xeRh#EwPE?rB6e8VXf;z6K$uvhN@jXUx+ zf$5G(>y^3o4BNfBA4jj~bcKzDOWZ54w@h!a6D-|JiIx5xC{@qCZ+E6}N%z^(>}zM~ z|H=?N)<{2QCMfn(0>z&tf`t9_&I~v~5EFw>P&%9-JK;ZDU^i+38&mA*1II@>12)bC zY`k_x@tedRsDmBtacNu*zfy=sgjLytSIdres2^RKB~<}r{og2O$IQCHp92lAdGmav z&3XL-b(R=9s`c2TD1~ZzX_`pt}SZybm^8vkc5RtFgA;o+4a#r}}AnP#r&>bpl zn?wQH+Q4^#X0)RnVX40Kx;RST*GGVCwbr7F{cYf-0Z)yO8*yj}tg07Qh3D^fMF8&udW`&~VWCz0?0w}UT(HGD z`<4f0e{ZFtHv>OsPmjIgpzqs>p9{1N`v~Zm31D{tpJbUkz|I9=_r@0(qIwL`eMXmj zz}%UDxz1<#F=8b!hL?eZ(1bc3LKEumSj_$xJoz3f(9nl@KJ^{ngSw45=^YE^r7)k- z*7*WFK$qv<1$GShgc##yXm^8rT6mxAL5C3>%Cg1#6gY5}34>3GyQ)moi;6PDh<&0t zrUnUH50szHFFD4DS^bs4{6+J>RPjqHS#ehJ8^FU3 z-mkbs=5pAv6SbUG^nL|Uf~OQ1x-VfUEprUhRVsdi-|gUcuS-Ne*ZU=O@07mJ4fj~% z97aKpHt2D|o*s3HD&%^&p_o%vcyt48waQr3C4QC6&j2qehQ1y{|A0|Y2yk`*I6wG8 zAN+c6S=>%01HshSs91Z}6WMMMYw zZ0z4^D^8>jiv5;1*7ch@a0~(cfpiLvwc)M&;L(E9td|jFaa_(f5IG{)AFKeox>q%1 zDh_m9M8b^+`jxK&$?Gb_EKVIvN=6L>lmT8x4bt;BNfy4n}yg5MmNfB$x!g=t3=3$T9H#Bawe)>F1}Cq{vwlH z2u^1YH1~sd3OpyYP6{~zbV#-xM|zkx4oBLAuP^VCX|fh!G#~5ZLcM^Y61)qq3BPG%P3-<- zzbQ}tjo6&-7!hi8jtHs($x)>5nSeg3h8%v#Jp#P&C+|SM&}K_6_LRwgeGKsh^}r=Y zJ?XN>mtZ|G!T8+&s0Vg=2K#_a!0UmY)$T_32xstyK|I3S#h{Jw{;&?jYQ>!^jMx(g zw}T)WAQ*e%G%AJqMVNK^v2nJWJ?!jKHfMm`_g*_AwWZsRk$TA@L~n3)R@cJq(^{zP zE4sO7uBMgj}sU%1-@6FYGg}706TzB$$pgiJ5><`xO zhy$-0cy9_RZw%`IQB9!2))%r!{0;m!!MpZXSLf^~qw}Pm|G8&xDq9@yvyzTO)(i>PjgZSBAZb>NDWii|Qe#87SVD2%gdI3L+w@qD*@%PzRn;u)Vz9 zC*fgW0`K*(2KLcj9tIQiJ`c>^-$G7=3dDMd@3V*R-yy+1!Fw@7E7%-ayT0c|#Og%t z7)z`;vj13XQY9XP;l^Os^gYfO(c5|i>MMN^5C7rboc7hnrSf@jdjIAO<;l?yPwtnsxD3yqbuhMA=YNc| z8aZPPazdgje8N5ccfeXc-`ZZxX^?#Tj%V8ETHB9s{DN21d~WFqR4{&sZvSj1XWz8_o%d55G2;DH z-LYJZqX&Bed1wsLOrFDb&e|>D z3H?xrJ)tKfh>~5(Bli%dW?05PfB2TAu8T$?FJ4P3(n(Y5G`F;lkwF{47Wf|L6OC<_ zDKx%tuCK|!_WdNzrhu+me+#VSJ3_9I~{duP~tSeZ+Pl5$JS1utx5fVQw z!g(l|i9dZsJ4x-{ZKM0{2o7T1k-upIzEOz$4x8D*`$plunFM^J>ziV$x6pMQfXJL(mQM`zX8BK{Lv3*J%Z zNTy24c}Eo@@Q!M)$kP(@FX4A8l62t7^uX*2E_eh1<1?_KS-Mcy*jTok?xV#3?;y`NwtT`lh zYfr-dQ`tMF1|5<=8R{K2+4w&MLZ0Yk42)n6Boea`2&I+Ru#*K2%+=E#7GiB~F7RLMBDN z<6&cyvQq09dNE#MYk80JrEd8Ss%lJxz5RNW8v9cRT@@8f96@idbm4Xv^`Z}v5q9^C zWttZJWG*2CCWvdxf(%BjlKe2*wcCgNpdB>G@Eoi|>MCL1|3m$(^4F!HpNXuPVD+hP zDBURA)T9mHIO0)NL+pS4S$tcvA6PeuTJ$*3kwRtnX_6#BnB$ zO4Ll^sYK`tX77}(b(&(p>O*BjWMw72FV4|9vK;GdP6H+@H>Q9a)5h^Q+Vfw$prd&& z==lcEU=g==-U~VdysG^8tbK21kntHDW3D))C4TnLgNu%4HMU}H_Uw;o*drQxkn@Pb zU8g42G34GGm4dgO@8b4DKYB)EKP23&XmSr_6(OzbD+9#fCk04@pR^S$z2Z5x-{=!{==QIQq)CV-rGm6)yrkd<33_lo&FcN< zY>S4tA@|5nD$)|~|AL=jWzxa(nuBzoX+d}N`2J3G#yDzRAtiO)kE?`}?dprtLRub^zcRpL--t@O& zj@W0rRI7x_DNFy&YwH#H(J5}V9@0)WHSPh1%grzNS(>Ii!`~ayDC+E30H&0L4n3`6Y^7w z#?tqlW?*^Fw6SE9bL6CA^_McxJRrv&#Ajh_fYY)!Zz`{OtV%a&u--9KqZ2`LJzno< zv$er`2MM-2AL{iS4_5|_OI^G-*fmH$mvSX=O*y*nbBP<)LGr%ibdakEZdA%}Cd6!% zbOiI7tKk2a5B{s3@xy(3N0wF3;H;#amT{NYG7f;1l;pGwXRU;Gr2H`?s*~{iIW6Pq z{Mq;Ox|Jsn5UbK1BO{H@k&CM^cft{Tw!gYZzKZn<@_s*Xn8V`HvhBmL;3eJRSoj1+ zwF&D)`)N4mEW7VJ%LIs*wE_LXsy)CtNyagJume~E<}`7mswc^9i0 zHaBko>v2~>@-X`FxF_m*hF)LiaWC{H&}(N!h8x^u5_(`OHGAK-kpvr~ZHxy+fhKWL zK(0(B)vHrUyr&*68dP+54+@B_<8+s)hq#^l?ekHfTX=tiey3ZE;dBelSAlvt)-4Wz zL{y!$zdAVUUKu@FKIT8yEoO7N1>Rd8-lkom-KtG@wae8d@5mB{wF?sNvP`YuwF{8Y zf2UovBgb+gQio%GM-4P%>#sE$C)POXKhX&ffN!uY0jzP}D+wvw8wE^sF}AaAaX*ge z9Fb*diJ%*{aaxC3)RspxqCA#8n8zNfT$Mf_S^=LxZwP7{#vb>`i)Ce6ry#8F96n(NtaRN6%Ztz(Ny+`M}rT4%`=+HE4^#}Pnyc+ zt`MuHGUtEMRKh@0iKPeXLw*-|(qmfWVGu(kH2w$oJq%j#4=W5}GDxok?L`m2VJ+ql zG?-QYu?8aynL4b&EFaNe;QlckeOaz&K!a(mlzT3ud*f{9YC(hPYqRsnhxx3a;2+%V zhBSzo*}{Mx?~Tf6;72 z|DxGAiqBa*L9@ZqC+pVSF{w(Bc-q3>|D2{}$2PZ*`**FzARhgH)oR9cV5zZTF{jmR zX`-!Kja_#a$c~Aupu3%QZ*JaJc^Y($^^k4wcNz`TYyUfqMmnO=Z1@hW<)G2D ze(l6*G>=`K=VFa!>t}BN?QVmX!|gVF&dlU>9d>l)V=T!&)pYcr=@dMp>6FulAfqinHJR#T7mwuizVI2g|rRjSpadVFeNS zSvh?;&fYolDCRMvF^}QzwSlIy#pv^&YdYg9hsXanO-DVV>D*&SG@Zg{H67wl-?lrVV?7+cX;UdMrKd+`v%{E*XfMm^PXw5@j;E`rp#ip`tT%I{6dT8>|F zdlM7H?@bI;y!V%24afFhG@J%EUc+JKx4SqEM+6#<{{NSTbL#BB=y~SuN`98AD2|tL zv!rJ6v!q@!J6uTS+iRC|oQ!K{tgE1cq5U1}^Pp>khQmJ}V10fzv?p1gU&?V^{`vXV z_7G@Kw6-q+40h(9XXaYlUxxM_*7rwpT$z9WWNZ7B5$AQ&2aJZf=Gx?q| zFjMbs)^-)F)SVxxWjf#9G9TKvuw$vyBN|TVxfR>OA3@4gsFb|^)XMv3G6O`5kwdia z!14!9(W@cKl>A)e)840PnUh1#V<5kU43%ar$gEDMCH4+_F>so-1EbVNjStQau>kD+ z8l}2Yq*Q+?8o#uAL0{_PTiR9kR`$ncc4oF`7dN^`%(3{jUC)}*@i?ct;cD}OoZ`f} zx(dSMb$6t2nS@Ro)Sp1o#Y7@RUmz9e>rF%*Wc#1=F*UwIJe|-NK!zOaZ;jv3i3VGz zg^pr2t!Hq3Lt3K3bv#;NfM0EX-#2d|aKMfp$<-XTz2cGY`h-kD;;2H1?t`3R)f@8Y zrkJK(>f@RTnss*TN|VAN!m%Woxk3NQA^>hJAVCu&^lGEXSK;i6=Hz29ung)qGw?V6aSUaV zjXPq^73R;3c+Pk{eN-#AW{4?ts7_o^APm+UgaSofE3v%5Gx)P_AZJE1*k&7wv`&zn z5c;odC2ke$4?dsHOpJMgBiv87`NRogv7COsBbBR>E zQh%&Pa}!-j=PReg?7rjek&tr%B9+(3ggy`-0(YPwV-68|s%m6@o5~^kibQ!*M(}Oh zD!sN9x4C{Hg4|W>)?RIZ-0-NRc{peB>W=8P*k<*r#fV(B9%(wJWR>dR#?f5$Uv#KQ zNFnvSbmWo!>(Jc(bW$C)7^Oa6k=-9y(Y2kVUU2-F?lwSG1EoI7>DB^1VqbJELOly9hS-5FK@W$ee6JXCP(zgfwU{ptq2c7x}YJ^OG zBB-Y8+rd{5M{ZLxPwV_(Uhf%7(;+u-;1J|2b4F#_W>hKW^UTVatJ+M)SHso6h8$$h zd(J=wXTJV*Y2G<)RPQXv4ImQ~?wxaBB4nmImp9OBMi<^J)hbVZ0#z-TD|}S}up)h;ba-bD6K8i?7*|yC}cb*q@ zn;kxQY=9t2abr7 z+X!4?&QNFQWm`5Is=%4In)_tid9N9_nzQ10rCXC%;GWRx{qpzRuO;Gn_o|jR;yRA7 zKi)%W84Z)ZPF+0p2>yk(ET%Hnluz8m^ zlhxRfbL zS`71B%Df(kj3M#C|B1XL;0;38kO~UF04V^nQxrJ+=c9wujrktPQ&Mo_mivG+)wWhynfM0 zMqNgD$CF*p85ZQJR|-+C>1!kZ*R{JInw}vAL|;vV1dcuiydPxLMA#FJSSM!3z-XNA+pMe$pa!L@l_#PgGc|o6( zBXSqh-~S|1uY{~PD<&f4mpR1np7Yr~8I|(mpAmk;s(i=^Mk-I*Lhmqy{p)iYHfuVW zI|Xc>HUw68_rv=7E~3e}!0aGE?Cb zWA^^#0EU_FN^$bN@|?vn<@|mYCl{9SXRo!t@X{9V_x2A{i`IVpyIvdjB!hNrC2F$c zwrt%}o|dx3`{e?zk`HoxGqnctxEZ=3&$LeiS}SVy450~)z(YF`L2O{F2|-Tv%R8dz zy{%|C`*>Ok{icQc25q&t9;GCH$4&E*SEnjp5~6#MM-%HnC3iuBl<{(1OubdEtB0)n zui}xQhR=EtuHbXz!DJr>XF3lews`-NowUub*_Eqc6We0|`VIc?2hSnQbDW3kRRY>ba4icz&gi>^r`N&NNN!$Dye#Fr4%tsvEB^~2xB=P(&AN>=? zaxK+L;yo?=FAV&0(}f9>ba`Gb=IXLzS~PHH0n|Je3#f^1&-}{sl9)Chje*O~NZmJk z2fayzj66q#;U^v$!`pn;1Kk5|XkP+R>Xb9dWd-+s@o#?Vldma66j`DTXHG*lUCj9? z%=z+hF7k5)1HIi*4p4aLD{;8X>ffWXs}I0L2+M67p~k@*UVQIOR#AAuUa;DlE)pTslGG6Q@N&49A7VpiFP0WTW>GrrkxV_`7C~0fz|ZwKCoUuO(=iiE3}ukj zlC}X~X*qZmwB-c!KsTo==0PQ1AtN7W%X)2pLW|)37SKC>trN~eE>4s?4a`+IFJ|R} zX2_Ar>m^^}mIwYT?&ErMJ~6n;8?NbwE4}eG&jiU$o20Pkde`Zw&Y-Roqe>$l#S0*% zt_1ppYo~bc-RsvJdeLpCl>C&}^<8f6RVbe)if8@~d>&tSopq58`ZZHVLGx6Q&J?aQ z5P#ys8htESN;_u|b@_Ir(0;npP^IRK(9jFHLbP#E_biWI-e7RTa!mTR+^hUw&0D`r z^ffrJxlqdr;?;;f;`4bKYj}=OdYnd~6hPw^&X6uhaBr|Z;+rmy&#eiE>Q85p`NGBV zk~PAOFxziA{QUO51#@zYd3<(eLBa#0?KVy4s)wh-=!WC-irY&}xDpqgLb)s*)JuiL z)uxp_7(d~@#A!w0Y-AV>^UKVPGh4RqSXro^Aw_scZz>?ezXOlqp+(CdFpL&;jauEQ@R*JaPhibi&!?1WHxT5PV&vNb(dN^!)-j#%(Ey!z%P*6b zQ`6m63`CW#qsd<6dD~SAyDeS6pUxOh;4xoa;@1LPa+(kG0s#`m4J;p0{@B}er$}wg z60L-Ls1XDQH^Xeer3@P0lz9x|Qzj5*?^mk!Nb3rfCkqi-F0-K}!@u9CRQ^3v<_dd4 z&YD>6xsaLYdC9u|Vzb3RGB^g{UD30~Z^O!UXV$r_f0(p<*XdmkH!R<{iW&9J48UBz zcg$h4Wm!1(R1Nn#y{l)%pyfLGoU49L;2jxS%3!QE;?x7&jRrzJ{aJt6;G)AxP zj5Q@Rbq*+GsS?9IfVpn{7FYNLIL2G?YkA=kS6h6JuB8D*aLXgc$;Zi#O2LF3^y2`{Ev3qnUl7#zk!M+t?N2z!%KwH8 zy#l<>-8erkaQoxRzbDx65EdWyT=;Oq>5Zc{btaEM`lBqfW#3E;Y4b4whWD|aHN#NE z&>n#`tc%MGehcy%@K+D)tI_y|PH!HB=aOT|*Z=8si+IcbbkcZU#sXpsN}VKNpv2$D^-W@&4jE8%}_y zw7Lgl=_6cKP`a5FJ>Lp74dA@i8CG|yVSiU)SqhC?>)3KDPkC}X@o>Y@a;TbwZjQZ` zm(lQW1M5XKmBa0)M}np4nEL6{#ge+b1qTYl%NNs-E`po^^jAEAIJky~1>idx@0-1jpVP!Vyu+_U?Zy3usHpt_qLs zwK%_uhr4biJNEfsYtG&REwC_jMku|pi`7UQZ!$JcFOT@9X29_8ObZkJy?s{I0NFd@oh>gr~i#_VDl0zCPS5?p3~* z>D@_Bd%c;>_nNqKxR>@XR(S26{Iu7Qj_-BlPtc1y0~7aH;k9?_(_V+QuE1HLzR#0I zI}Kfc)9IH3Xeu9>9jfkz^x{En)b74DNqFt*UxYk2_~tqjcrQ$ne;O1B2@Ataz$NAih!IW zfk}RvaBYdEm~rg}%1^~WR@L*rTHilzRQ~W-G2Wx{$5F%In6absgYY*F*N)HU$DcT6 zl);UDAO1PKH=TZI1H@lCK!zHySc$#&v3afge@#m{4bh)CT4D>@M-g1*RnI`armS=^ z$Za_jDSF8xLCz((T~pX9k*q5LZdWy+nC*<3xC*M_T;0~Rl)nc0>IUkeS3#?YoSlxY z8EwPpeXSz?iNlW-Gn|nfRC7l0o`I}k;uHS&v5)>5I6n+*YU)@fVlBp#1&xc9Gt zlb|MB_bhsIFK<}}OEh1rO8igAtiJG^Ax(>CKrAj^H#`TThFbiYal&o>9dG^?F#8Dl zq$)uANnpTiZz8p7_SXTg>jX!Q@QXl){|{8mc1IJc0%m`L6pP)_d}F}u2?YMjnfq%t z*D{WKgS5)8aJG@C2}sfj+>PTx&1lLa{P+Dz{P*TQ{N{mj&utinzRjWzTqh6eOq0wF zs9i**llfOb!i{yjFJA+eH_Nv%(tGmwjCha$V~CcF5YG^=Lp(ewkoe@gZ&qdOZZxjg zR@}I>Thrn@Fq{b%`#?>v1=`h^@y?FTn9=GcmgvO0z;-q}G4 zJQaVH3z+9ClJm*AS-XQOvWtTB1&~P`d>zXTl7%?d-MlP#3Nc~*#Uf$%5dC1hJ!EVl z)0|TGseN+@MZt754fj)vMnQ#d$nl-_Jj|(^m_WyN3!oxSw|a&xTC@;m3~kku)H8(L z9%2d!TnYVB=3KtnV)@gGuj$53_7yo_60aK-9*}qMFE&sW>rQ4_dN{$PC=AmP{njc9 zR!8Cy)pKnjThdPpb88ns&4%LfxVBK5Ybw00jDfnV7RypPl#)%TQDi!ykvFhwR}B#1 zU{(I@#G2&{+#k2*mB87mu}{RrWvX5e`%$48A4JZ|5h@Bq;NhqxW*VGmcI!_)@;HF1 z#bNQ(M|kbS^Q4>C;h9kZS?hvE+1xSUdLFoz1=K?7s$>BYaC0S!SZl1vNhV@&wa9LW z+Ohn3A%;qKWl84LDl^*m%H&G*tQ?Y@2$m>-=NZFS3$ZT>=N6&`;xPb!7o0O1uW`Wv z^Rj5?BAGKv8?C=16RfR*k$$5y#BQJk5VX+7O>bi>0lQPf)^+N6Iby{@$dGr?PCm|a z+{fzKw&DTLrb5VSiN<+?hA|JM&rx?6HcvhXPguNhjW^2$4-%e(HHj6jo+#R&_nZaw zsImt!7M(vN{TONspk&XZUhw=&@Vwm}rc=kd$Om!dQazImm`KeuJG`eW)zN#TKDaj1 zd@=Oh;g>~=C?6AOO`jmZg5RKjSMpz#U+4&hSlFAY;^l4CKYEbv z6zcH#AI_aoqmVO*|0Sk68fI!)sfT(`ykEi(yb?`X88heio(ZtW%!JBJQw$1uIz(rP zQ8cqkW8SxI3#E!?^o$N}kYDbD?@p!KXl6mS`N&aQ+EwlkyCDXT1bBUv^9Dp5G`EpP z9U6#Y#l4WR7Vh~l;?Yp4Jf+nI<0sH4y8H^>cSWWaO)57W2g~_!ZLQ%mkO6XRYngAz ziX6l$Y)m|@j%&iQ-$9zJ(8^LP1k&*3=^ZDAbJ^n+M(^rHM5NwE*o$ES z75I8mk5Dl|&dQUY3C!rt!8b0#QvxRLsHD!kwqdq}jpVB>h@1)(s_Li)w@as^nE?PpOSiVF{{74G7E*H?CmF zD$B&Dhd*(>OAGZ|Sf2m#L6n8CG2mITr!G>T^N&o{Mm6^S(8uUwn*6fvYD+aME^@X+T$yVxROYhU z5@GMZ*hJv{pM7=;^nRHw)g_(%{k+*Xdrw;RsKc=ShS_Jx3AVzcp>wGTgut1|H9P!L zqWt?Oa5IUzI}oM(`y({Y2=y%Yo%rXYGW1*>AyhvPd8B-4dbje0*Sf(1{4V$!{f}9!aLB{;)Ssa z3|1Ou`1|=h^O33BamEF`*k1_wRtkIIR<<)@F6l*3&n>4Oxwc@5Fm$^a?fKM70S<^? zfN{JJSC(phnFTuKbeOGo)t6_827o6>E*L*}K{Pq=GX^38-~`SRK6E^COAB1P^WmE1>rSs5wZ1cH>8=yI z?B40zuyo^zjdq*blNT_~z_n8&4Zp(tv%ZOj+c}{iX(g1V2i^A5+|?KWj-ZD%!v2F4 zNk+( z2xDoRLKT6B1xb=dH6;l?VjK6hit}^&!2Tm`|W@S_dIV=4k zqgoCgB(vqk#!~J4n&c>!Xz9cd0!)7hm1Q5n`X2y9expU=QTT5|9oBbLTlWRK(NLus zPLP50>~*-|^aS4aV3a}W4R9N4Glqv~Xf*ephOHw0d(A4qXOK|Re}ig)<#K^OBU?Z~ zbOhC`oR@A^zO>z}oIc*Ho}2z~PPR%1e&iXtA?gJhf%Q*2Jkz~(15x9otZjGGrke`a zc_`KZ6>0>f+E0uIh~813mAZcfbm)^xPq@izBe0J9IzNwwWb3?^n;X27VIB_xw4k5C zobjBz%Ap2XnbTWpkO$PW#bkN{e(I~;X3HyQ`qtncemZt%%j5Hf=hKr{ozF~m_ho3& zVpqV&9EvK zkTPUA;00eJ7a|q*K%|0@uaQf_Q>zQFGLZklDo03hgagoEKEeU!X$d#X!4fr`u#`xC zZ!|0M+xG?I-SN{N?AqU!2lwH|6Z`(bubo+slUSv6E~#}MRU zr=FeO1@J3=3cu|wcYg;zo5k3I{Rr2=J)g(6VhG+WE74voBf}sfNG86lhdOnvTkox- zr%JT8m4qW$vGQQ9>FKk5+AeGtbvR!RZ*aYbEtU74_go`c_fr>V9YjOdB=Jz2`Wko( z(972@Y~NuKtaqhw%tlKOPhH~tIO`*N^P8`>8g2t#mxt~ITl{k=+YJWbCKcj&?w5TS zv?iqsxZ&5yeIr^DuGH$6&cleBCxTk7xNhqd@Pgcen_T9Glo{AZVg6Miaz+C1lL#8Z zp%OPAg9NfAM|r4u5V1MB)cTf>W|}|LhscF18Hbf>kysT8y_Cyn}&?#1(b8vgX0qBRr$tdt! zWCEnDXPBC7Zden|t?%dRw@dIXzC@oyYGHsV2F+|(+FZQwL>6AP7EZk&UN2m2MT162te zTe&~b=qk)-RKUe2&upVTdVL}O0K5V(ep8xFOQ>M7Gz3-0DPPKi6MhgWkM%<(>3M|m zQ@FQuQZ6W3DGQ>)ApU1fy?e`aheX`kpJ1`u^2^K~hP9(Li6uKV5Gkd4t7M~UU2GC$2U&@+0@q_y z9+3+b+HB$RtzrT8?%e1*vtfC1YN=5?>aJcJwU~A7mEAS*SX6&OxEf>P@vQ{tZ?6<{ z5{5%{+*g5A#J^!9V50KVjf6R{*b%B529;)c$Y7V&|LT_kIn$#Zl*c}WnvdK6fw7X$ z0HA8pBC$Z5DgsQElV2^0N_CtTwRPJy?KVPC?>+Svo*}?TuKe^PY)1AS)p4LTJ6y-~a+!T*EM8wbru*vS6Ipy}&m_6*TDjrj zZVyfGP)`CC=5|@>^AAK^J-24`x}NPTlUz2w4s^p6bBbx=hSQ)?^~+KxQeo_}-a(%F z#oRTg+}(GvDw;8;ysP=){Fx1Z1liP3<=0~_9!Ycmv);gD6+;`)dBuqKBJhJw` zjaP+RW*GTj!oG8_!aT!#ryF#CA~yj1$~(^D^Pv!XQ>jpmqUAan>IdKU30bd}e~_Vb z5ag*5c#zCv#aqAGvuyl7jBcZlKEo~Tw1knAeIJi-9vxOIxvE|i4*C64NP17ar-F1K z>74i%Ko%$I!+m4Og{$B_-Xx4LO7XRNQ37H=kkl55YaZbYuCIpD8@dsn12pE{OmQjL zT}#34%AeUQr~V&f-yau6wFN%2v$M0yZ(I-%Fl7ad%1{hVjR1vJOj4ge%CgYmhgycb zr;#SfvO7C0Kg9)C1QIDh>1FB)q=cx6sFj*8rK}7XeyE|lD(r%?@I7~DQR}_$_w)Tj znVoy)-gD1A_ug~QJwFu3XlFaOj3lCi!rGH69?yrSW0|j=_J%cvFa%$D5A_G4Yrs17 zKEzIP-Ik6K!fPFrCh&w;Kf?gNwVcaS6+zWnh9v~Usf zY81>*RNrQ-W6)18D;MZ<{v94v#_e<%LhlTJ@GCl6&jmN>(dIY!7G5|?do0EE>;lLD z%%!JVYB$#cFQT>`8>A{Zw%F*GMfgMZi3u@i4anF^0={o+M}uB&haXd0Xb8UlmN!`P z()i~joic&cjuwK&_%-}G*bcb=U~qZ0eY{g| zT@z{qTNc!!6#}gfoej%WiCGCJ_!SVXf8%SFb5~$of%xD5Yvjl^e;>KPoo{|4CE^Hr z#~LBe0pW-PT%`xB98e~%{9pAn{Z~Cz+G9tx)JY*--2XNai#Tba5bE(A`xz0t4t}`^ zIS=%_1)hUR&J{gp!E-ptd5_(zoVyz`_W@t3&n=fa0bgdF`-jvC__Fxi>%{D8fE!0} z9@0I^xyLc6b%*%Vr?6Vp_ZrWa`{JMUj_*qx!TCr_P*311op|?CUp?k#Ch^HvJU4f% z<{j}a^1v!mA&r9~tY~*@^x%x1&{l)-#t#{ZtCQM4649K1{5c~PkCh$zH|#T%K)UiQ z>@NH8u(GgTwEH3c2@$P_%(G~BxqY*%=R&XLt=in}1;m3c)IGSE?(q&k^4KbNZ9FaHmq1>a5j4cD$Bm9DOwdBBw159f1&s z1N=+vsjHKuzvI9G`_G}7+|WTQQlH`d30i>rRWv}kynCdQjZs(gr!KG?hn(}ekyBSt z@pxfc9WHkjUT0_YEY9}J3RA&4;~#_3U?~gz4S?GO(I$J;7wOd&+^-0-$LCO^$J^a% zl!Au>uD!r~FrxVdjjwxNC}=kL6Wfg9<7G_a+u=1o{nChL7%oS&=Sorshz<~T_+N#o z1CJ?=W??GOvyey>Vmx($3VTuw%A`5i_Ri8a&`sF&3((gUK=8l8<)vEAH>^%#=IUBlCQLq`VYJ`tWVpIu`Bm-SNrBXEHv_@+#-Kew5_to?XdvuN#qaXm>NV zI4#+D=^k*7@za~O@8kG=cVtyYJ8H7=D_E!RZ;kj`*MhWH-O=#ox~>X6SFKAn8h+uw z4P5!;TYlG0Hab5<*h+VTP6TGMbop7F^Lls=ui5P$y^d}3cTzd}a&{SCfMeC{c@b$v5-+rp8vUQDk>4Mz zHTaG_#qSTnB<+Eo(f$xl(yn7qDd%SKdqUPZSL>dTch1qeCzPF&5VLn%_XMC%1L`;6 zvP=BUQ|%_e>G&m(*2vDMdTgU}0MP$9&js=rp#L%3cm)FeZJg5V2jgXXru+fEj)#%M zxB0a;cp1Rk_@Nn|ooj&lE<9$|v3o|Uw~k4P_{dY3t?zT-F=NI)p)uP3Xx*AaR(P%W z&{Od5^?CB}O@A3{fZy|%JwCZlXscKDq+TA=BrlksU+~XWqmzxv)qL-hX25(nV0-Td z^I^XYUJCI0c@7Pn5Aan_-hWkTgLen`eYW?b0N(Z-2;U}uu8;#gKIcnWSD@c#{IlE< z=vQHT?+oi>|~%{?vwYcY;4^LT zy#UYhoYL$8@T~3qeSlZn>M;U5W5Z`6z^k6TcUJM=QovcSEBW{Gy8xeItLF~DEBJ4l zCqVrQ8$9BdbQ}Di$*p^aZSc2~TmKlc!H-XFeP+n^{$_IPyA~Tf!0Z|1pIP|!k4Lum z0Q1ZvTmAL`|Iqfn6W|B`)&1m1AM`P zHQ1`Rd0l1j%inBO%){sP!EI#OcYgg|`^E9JFbX$p`0=0LY$YXa5_;PJR{l|Jp*YT9 zJZKTG(Nd6U?(V}ugYn|vkByNV_kUzCP8!VI0KXrV&dH1`xRkR7&LPF^8w8u%*G8_Z zSQo%lY#hHT*?4ilV9XontV6yW9%n(vAv${^`SSKzQXKzH%U;E0(-nTQS+0JvsRe$r z;PEoqtjXhL(<8>qrY;&U3tlz;#&G+iF7xdNcMa)6o4;OWHEX9n_&?>YF; zg#wvOPkoI=GP)*oUlR3aAiObbckzaMd}s1`pNR2EvRT3#EAu^1oywLUoa~ zUw^pZYp|A@o zy*U+ETq2s?z*peOd-S%??DZ|}zFb0!!7l)!O`XdA{Xgj5D{KI?-+vTbLVLQF4Q$Jy zGv5Pc0P@ej6A=wDKRm#u;19Sh`b`g9r4}1A{2=%|008@b^AB{)*m9)jpUe!L{45oRE)(EKHJ1 zPvGw4_q7~AH(xFgM*{Q62HmLrcUOp4!24htL`L}7;sWvz)@Z5DO@zO%THr0tI4WPV z7idB29gGrsE^a4yz_G3qO-DM{+%T3^+0^00?{3GCPKnkW5 zS1%Ck^uCk*L`+C-U7~C=3*jIBr2bYs| zA?n{@|HZ=T4=Tk+iXs`=)SrHnO^^RgHtWpqaO-+QHudNY(ChpGJbe=^s5=OFMp!9d zQbD#&;SC~8^*a$F{2lI1egloH1Ys+i`h`FiTrUX9+*>ztr^r*{xzjCi9y>>!>asd*8CU=pEyo5Ll`SIdc#c#T zNN}-KM-<$?5B&#mb(nNJ9M0E~5x+4W?<}w&D}cdN1EEFYts%TW)7F$EW@S)$nkY*M_w z<$Ty7I=K&SnPKCU5172ZmCYIu;B&wlfI{u^)(~{8SyUP4$B5$FH%4x**eux6zAo~; ziuYE57OkGC3P;}w|WjRn+nZ>Pn%c6nYLs=l5J>4$1%-rw60By+51BMM3TWT6@>#qj2=!z^3 zHspPOwIKp|DX9QX82`C=BX}nnFCGxDvH6Y}oeoS+S=M=?<3!d)dCa{VgQ1%0>=}&T z0LrYq_|}THyO3)_WNGj3>b-58VSHzBQZ~dw>p#(|O`8XH-tT@Fq|!=)kfw%pwBEtI zdO<66$E0b`VzGq~w~TVc{5Bb|Kh9|-?wEF~7gkY-11v=Ig}2+9r3iMb2CFQF8o-Lq zDFJSz&Y~J7CBzm66vF&#s#f_G8Cp+V0N)WBc7~0oi%%mh#ith6nAxXBFr$T#_pe!d0&eNnItjN;ao~k^CEN>*^ zVsnU>9Iy%oKX14kw-S6}#?YXhZ&wksa&S)SFr-d`EF21IOy7s@Nm})?r6tR~!ll&m zrG5D!skg9Wd(uA4P4sRF4A-hdL!_e6kiPts{8#prESHBfiO2RxS(9-f-@AnkKemUI z&-5{4S8`V5Di+XAcAo2Cg?dJhG;bCkk_;+i966oCPzaMtxRXw#q4k|QuzA4AF<9G* z+{G#c{puk}PMVt))*+!EPT84*qhu4{Hf1{47~~2^mA)^V1;4&g;a61GHNcbDGhb?Q zEbv8jF)8eXFD~TJZoOEE!@#g~-oP-vfd0t=+gEOxr8hs1-x;Ru?Sxw2SFrZ76)L@O zKF-WTcT#`sKbVB>3{QU)){&Rw_mLnqtabIK%B0wvUFr%reGa!E&vlD{bo67uHf(bt z@YbGv=>s zu@5y5yso+fM`xkP2?qv4-QiHyD3BQn&$*pfdEq`jnUt3g%Jiw9fcR){U z$0SXV>RyxX7)VK)^HYhhHKHI^FRXzm$as`e4l5F+-RXgy-l@DMf}9zYMO#;e?aeAa zO_FJOoQrPAzYFNn8m0@%oYzF?HDJ9hp(t_Lo~lbt26;gj z>T^meehK3oB!hb41l)%I#D+%KsJ2Et>c_g3DFK5q{fl8W2QO&2y@P+j6#S*I%r@lv zdt5b*5Ma~5-;o4$V5nw>79uXH#iEK800UfXhOLziZ7MM6*Mb>KH%QJ<@#`C99rQQGk#mp+AiI4e7LEOwuhK0 zkSh+4(ISf?szrb}kRA)smndix+V*Kz%H6>GSQIZ^mxV2;6UA?C6vg8)s~VRXQMnXw z%WNe8M!PNuvcn$-zbH)T-%P8ofEl0k8zq$}NJ+eGR>2n8)X5*qf+Ieb z&04fsHhtA*+0>NH0Jj;+Qf1Tkrpl%shJUVGgKpNUF63UwkqU(=QipU0e1T&A=C`Cy z8yx&&bmu{K)<`DYTOmtN!}aXhSu0Fuz97(_bU>E^1AXundPZ3fjs6U@X9^@X`m2g$w=#yQd=?YJLcKip--^m zpP~%$d7=}ae)t$#h@e5TSo-u zlQ#a4Xi}ZXp>yU#e&EfxlBKW{`H7%XG0XMCj`B&&+*|Ng2^96yIv)f+4-aE$qf!R{eM&>g~9s#?jP-m8Ji+MS-lO9dRPQCduw$wv9i2VFX@_* z7O>eavrC_w7I9FA`bIF2YZPuF_KFVdp>GXg4|U3m>?mtysEmUn`1ml6n#Xt^w&X_9 z(gtkvTPaJ?mpo?4q2%jyRux3rrn`p#LuC^?iq7qHq_e&ul&odg;@dX*qP4|ajXb4Z z4;ksXrY|>&8`JQRlgB;cM%zCm=g{DT3KD(mP%)faw)!z}a@h(emyhA(@-duTw!p~+ zk|QZL!^vf{a;D-VVix|9a+V^Mcm+>YzM}XLI65sO9pe8CD;q`F35Yx<8s;?4JseB* zz~~7cw*GT)Qh%uN6Ue@9Xg%0ik<^}?@!{!Bt3MGXb0m2?AW0J`o8E`NamuGtHf|}F z&;S^EH5dUqBRMCx4#sFS_m2$^DpDO6@Z;#Hw~fDl2$_s4ok*-czXiWqADJX2FoFN; z$}pgHlM^O6PYV-3i{0r>G>yd=r}YDo5ap)@w{lHfpQj=gpKqhj__TV|4&(UCVTALR z{(l-L^`Mz?@Mr}@6cT(Axed+`?GQ@?8{e>NH7%s3Tj6XRF#{l-j`$^wa04wQLm9c+ zgP}Y-ecFE4m#!v&D&U3XM%zV{j@r=gV=ay%uEVvI} zI#NRpQi_`2^8xZ$R+lAGU82eGrfgHY$Ehm$zWl?HaD(^S$c5 zofC$o+lHOB#5hWuF&6WNTUok?BXlyDmrCU=JLj=`h!>r)v3mshQhOJdtB1pw8Bfj5 z;eCEdGnm}N_#AhAWRfNp!N`J_V|<(W0>mx9)Z+6kCx}a9v3;+56ZV!8CufVaZ^)T$ z`$`~nmtn-EQP`Lw5gDR9h>esn0`9?ALy<{e#*P6y$mMW8j&rf`j|J74dxHO!Jc#%* zG6``efI{4=}Aq+I605d`1KwHnS0bV zYH6bv)VB}H!~eU!TO;-Pf8!Xnw$3-|m&P#W@p{n#w}i%5HLGDPVQ0^*Nd5%=zM45Q zOYo@8M`tjPXR2|JdW4(tsG@HqbNp*hfnyQuDe~5xC0^`JPXsEV`D84cd zSs_(yM$!|KoJ8>zn=9jVsUX?1RX(UpBQI@@gmP4h;`CIrzRgX`?u%ZTYZ?7dIJ=J` zXB35`l6c66S268U7BnSZ--a|bVMun}^dKW0kIG1&#J-SngjGcOf^9bjnV(o}xe>H2 za7rYm!#Wwjiao`VtyxSUoa3f+;L!!&x=6I*IPu=-e_k@M~^u6r!W-)@{>6LVHCRHAuwiNkJqqn*3T1q`UKKewFB(GXm zxM~;O<^i68Z6TBiYjaO{l#veSt{oWCS~h|0TGi5X>tII zfjCTi27wZ09TotmK(OF8?s=rF$_5!z`Hj6mc?_)7kAoiTcs5QeyGKdnD{|?aZsC{T zG3P3nW$JZ|V0RZoFDZBOV`6zb;=kQWTih;|#unb|579hJbg}E$mJcBk2v8 z`vcwoR_7>5|E9XztgVlL_0!Sd(!8LLWt^wv?y9;Kxy3&}#`Mi{%qQI9<|>36W~{&g zFbzbQx;pZ|IUmVjF~mLz=n|lBsx;a$37AD>NRJuN#I{k8>c!~vXj`ol1UJ3#Yo29g+}PO4kU72C>8*o z!lzkobOPier|^pq57w#!0-pEHKe01VC>Dh6N;C6VaE2&z#p5%oz#7$#^Resw`@2fU zw-KbeTF~#yLEk@@nMd~?6NC1DE@=DZpzR0i$yHF20$!m7bKxdn9-5I5Q!smq3Sy*X z(H+eYA*)FsmEZ)FgkMn6ZB=giq>Z>=M{c&G{L4!#)Hj%k*oV(q zjB@$Ydmw+#1Nn0<$e(jT_LPI{84a>$G{~M&Afe6!nN$wg#lTsrC<-*7I5DNj){3D@ zFkY^aSAZ_;1`|TIVSN2FI>OGuDXcxEu|Q7BIYDp#Ub&;38{2Ernm-1cj4yw6lsDAr z4!|0J?AcAwPdJUt!-#)_*U#k>g*%F68zl?g8zq}{cy^k1?mX$+-k5Z) zH)eU8e*Za1JDkg;xo+5EHEmgs!txBjvSb6*#?mK2Vyod16 zQ?Fr4D~6wDjVhImD+LTwPJwJ51+w{^MGffbYD1dOW-o43sX4?Uo_MDewa^ahNt!q4 zU8}%bQ>2)~ye8G~IKK}#Pas5+5VG(uI45cVXZvD-6=#PDJkF(EPvM-%(7%GN#0PT! zIKbIxFCAZkUjUp#9CE@_Ktua~AI}kd;Vdx+&Jwf98pI_dG|tUV^XAH^n+0;tzW3%{ zIpiC^EJ5qK)qMW1>?n@YaOfm6MNNzD2mjTo9_&+Gak%2k`4R}p9$v+W?J=Mr22I6kym zm(tN@7d#3@oO%*(s{P~0trc4ZX(-kdM9H(Q@o4=+t2b|X^kyTR>5La)#|2$s2jBPG zGymRqPDL3PGkou}Up6cp`zxXVS0FT=iozH8H=_O&)m0>gFo8JICSK&Kv#QlG?7Z{* zDkDLwjMYaFX`21k>)9Y&N?j&o>D{0iTb}xg^;Rdu@lN>hQhwFqMmr99oW(%1uO8GT zz)c#%gn*C24V)M;d+R}lVCvUhn!9v&iZPRlQ;ow@@(x`@K&*R`ZAnHN(;z6pS=75fa zDlJILF|AWHhC>@Rc-?|y3wR4$fH^5xTM>^(ldBfhSHug}>Z*_|ST&^`JPG)?FlkGX zRKULvocyMomv}PL*PeelCB`Tkw6>x70sOZv6NW>F)SShZ&t(Tsvb6t-PpSPV5z?$E6t~H&(2B zihrWaf{Kmko)?d5ha2DVfN3SWD~aE`5{3tm_tL^o>)&kTDYVZEenH&1$c>vC`PQik zBRx7*XT!&DgFKc|5UC>U_|xA3H5P__ zwWu+|Rn+0v3g-nAkJ0B25V3C`U{J%n4BGIu5PuGAz4`caw*Cd-5Z$Mg_AR&leilWk zKyO_4+xiZ*IHvnFNZF>sr+Lo`+^3K!6wXGby7wBXvP$`0jOJM7=7 zk^~gn5wt&W=X^~i-4#gCZ;L^)wB9;DF1eL&G1IxCpo*IpTHk@po|gr*+T^LF4hbNW zd4|b_I0Kqm5Y=g-*KJe#-l%7z@p-hX-6Wj}bWCcH+vwo+eJPBIOB|s?5Zr6jA%4Y4I2mV&_?q?KS?fc zWgS-%_~2^ef47fn*QT0=4qpNdj*ABDd`vFNCO3?yQukL!w`Gx1a-8ts&caAqSqbrg z*Y9V9%>0IioFq6$I}^tl$j5DmSwc|`czWGcvGN!xMA4+U?V?u13!U{()mP2emrh#i z%dd2L~QKOj-RZ$SXEJnvYfBe?{sE z++pREu8XIOs&^84kRmRLKr@feyQ7C2f3e98(b~#IHaMP}y1zT919;#h#8C*Ir&Chd zf_htw=l2R~IMTi!wLZ_bI#6wZnIJlThmIfnw54F(S%dm{4Eh;i?Psx`XzmzBJk7b9 zdo6CV;1X=4#vkfmj*5uZ)Ww2M2ktjben~-^lqQ9Id^tnW8G()=>H$oz?!^emA*(zK zGBtT^h&BbE7;4oif z-(PCv%z+j(AI?6W55>(|j|tdrpg;F!|HCWlSakrx@MKwyUlN+3L0M>K)*R;C?0P*O z2rwdqKH)J8e_uD$jZm&xv+r1d6|UfLC9|oqmPKpLrrKH-tuRY#t67h)!Lw03_mJi+ z|1|N)vvQj15=F>qQ5Q(Jw4h5U7>)0k#Dtie1!?Xl)R8(uPGS0%X1Md~#JIk*LvZG2 zUWt~P%~+%k-QkC^X`s=%iWMli#4c;8FO;VKtu)tGT6gXH@3rb{-%E8O!6atiTs_%> z>1*o*Vd^yZ+zhEM01MTj%zUSHNXt;mT3c;B2leuCnjKt3NTPq><3exj13z6q7TF2F zJsI_xbIXvM3s>AS6k1rZAp~x11RJAZMm~vpx-vyd;DRZ}(B3g>MYO1AMt|7g>DIFy zV>%4mx8v<`NDneMfd~|2Es5~zF7A>|1r6Ich`^GrIa|V-hTlGwk&fQgf;7;_d*{4i z9!g&LK?~Za0y1GjVK?Qz1Bb51_leRwEQ4PI|)c3S$NZUi-?h;laU(aZ8%64|$Pn-iQiHXH!w8MTO?I0HJ zW{GnYc0?^zdSH?4Owl=vOa6Lr&dK&Thm$@XF6U%HZaBgqf2>T1yrlE_L$Mv<-to|%105BLlDMO0uBap=;o zK8td{^GtAA<+EN9?Fw-|>1GP{xo&|s1N+OTRaim$$ZF2+l~RXuiyx&^SQ9tkh96>!bM=5)^z32^oe% zFJACj^b6F8;xC~)(SxeP&3-qrgcyk04mYKsnPG&AT(FpG9U81)14eugKMGHg1#FXw zFoA9#8ne!=9`IL6Cj85A=&O?%>7JW>QawMWyShPYAPFf&+I!yefqRIIbe9BA7|G2k zAyikm+gkok{kYEOj#NV01HWqmNH{MLbiN7m+~n{vT~zDfVy1=H#4fFfo{?)2EjjON zL&_+U5N|RBJGDWC4#z&B=SFLbo!wXr3y~uU&zn9SKCSoa#G4kkdVoGtN>zPC%wQau zBy@wXWz9PvJ}VJI-453aLnG)r-9qKGEFu87AVWvvMS}MDinW4u6&qyZgo2TFr4Z}b z=ax%nQKQesU8$uX(;LlLnC7@fHhlsvn+oQ3!BcU5)X}#*t_GL9I`PJ(bv(_wQlz3d zlBe0e_j#J_TaPeW+-f-F{AKB;U7HJ{WwS`kq0jBd|3yEaMVd2Nj@ z3qr&{hu2y)I!Nax9x9FZ$^owtU1>)Ocq=1L;Qf_>lhXG})2^1r?^?r^cH6ihdX1I; ztz1AR@;xH|0sLPMxJ2-npjEG+`Hcv$vlr2n+0JL9%li&%_FbZvgQiu85eK3tfkl*J zp5(mG`<`pGY7Z=ra_c#+%j8hoU>j=nm-gHs{^*E$k{Z^exOB_v$l*Y@^0!^-9sicKn1PE`%3 zjpkc!i;&IwdP5pfOAS#)^B8t4&G>U*QY51vxmof*Rwj@GL1g>NC-9c(_=+%E0>?gm~6;p z`3^D7-fCa!L_tKC{tt9{R12~b1w4xKL7M@Z>rk*0g*N-a9@Iq7F^#1&n|%-tX|rhR z3x7nbwU85IvqOUQ*($w4JKXjkU(ca5he4R^WeBu8q`(8s+*NH1x`sWnr8l2 z^%Tg&h-u9d0c~d|^tNjrrVFSb`rYtn7bCl50nA_Ho_uBCocnYUHBtHIc?2s2J=PfQ z0PGfO$wV}>>B4R-*=3vz?MJ&hq@Yzrnv{mml>q>65|NP7F$mRt?*X?c+_JKcK4(9v zUOgXK>=E=&E%0qQL=iB=Eus;%AbyL9pU+?$YeF+s_Pnr{?_HG_5deFN|2z!!PCGgP z*64+Bx=?~#12dzC2$H~_)Z0TVyJM80DmazKiHJa9AD3-%DF)pyl+3e(xisev?GBO6 zt#8m+a3nR#RnEPeI=_VK8YW zBMvjf;aj*lWIGybz}&11750NIugOW&l8UT@L8G0AG}@FPjOS1@g3?mygm!c&$fU}b z*x`_tKFEe{c1F?(rxT5B^RSrlsB54f23*dOkoPYMY{JZsW_o1d2lmuE^ke#4x3IKX zobMOE%ATLv$1OgIqT!f{Ft~9RI-#+Ug59vGno-Qd<&yoS346)C60OJs;~Pye|m&s)jBwPKp)cy{k48f+HZ39Rstqc@fs^8vvo6JhGf52ePfsMf*58H zCalj|ht0HqD}ozqKbj-#xVs&LPJbD zY#z1c{<_8Q9eHom`**j-rX5U60V%=Tu4S0pLtWlm4>EIKA5pKq8Xi`Jc(dST#3uyc zGt+JhUb6gQL`h2(UeC&Lw7!MuWK%m#U>EW=>Wy^tG_ZC%0xMC6DYL!k#1$kb#-+T3 zdSfkzd4eo=tmPcszli%ps0_V>89ZFfm99Q~iQoN2&XD8m8GiSV>gV^$rhY^Do-b|l zo&0~#ce@8@zH_-#4#w96^T7l> z*nc3}5I1?D?M=UI>Y0A8^N7blzf;E!{~)J(VXeRpZQHd9@mmPl8ooIYX-^JCBrrpR4?Yn*N6wJFeDE1MXwl47lHfSzZEu3~1iLDF)8SfbTo?qMyTIe4YX8 zc$4dSVw$R73Y?Bs<}>|aIx&ad?2FdkhFuQE1<@R`mH{r@ZPP{+{cL5eG89G7%0>|u z&5S5dba!W(2lQeb^umn12*P&0+>|yN)#vyP`i)lq@gzh2zgK_M3z+NuV9hB+Hjz+U zzwG(mUdxfq*1CQ_A`3dxi&hpo+HS)%3QK2Vq;m7{wQPu1+9QLNMym;gNTi1J;0W3D z&wDtWoUUaDuu~<(bHYBfcf$HLb;4bUzt#iXb5{c~3ww>UyFJ8+139&idt<{3u?%Ae zH}|*6=RV7?9^&SGJPcI2hh|O*`)C+N01eZj`LZ`#(+zbPA*#;@@b@0_%V1(;7)17Z zMP-D&`7XYId<|wk@qwD2+kn$c7ZBi)V4@d&69gCLiEGC*Oy_!h)&*`IAR^q6hXUo%GvG~x- zDsko6!C@||c8K_eK%;?qcv z`C0lPyixV-gGiCjWAv4lpaXJmT_D(Ym*`*({na!yZB1gLRQyq*R(x3$!cv6yRdd7% zh7@U+2S#f4)Sop8O4K6aGiNw+Kt1(cCV}kvpL)6Pz8*yHW!N?Fd>IWAgwTlgR82GN zs$zO46(52QhPLi7a?ZhA0bWaY4JVy;zjTz-*sW=vBLb(?Zlai5YumDMA81kunclVplU|CN@$U5{y*(I=o6E+qJtkwr4J z-ulcil7qPI)a?;Dh%Tfiz{ug8lDciBMt)2D2;Gqk#M6CM4H2R;0e9O=WiV&V+#d4s zm`vK9_yFPNMC>jC?)7YQrv>5HhraO$tvGj>=VoT5 zMp$L6zer41)I}83I8`=PXjH^-mX;$+8|x{vjb}MW5!{DLgdkD6ASsfAv>@kexXlMo zOSg={Xg7%Sp%kB{F-I}c#IGG%W^fqvRO0P~Rt%iZR4t^(l5fh=-BCQedqh*;u*IDW z;C5Ca*}_PRO!4ryM=RPOBAQ63tp$9DR7L_gW2U+rW*w{q8C3$besGbM4NWH;qqxF- ze%vmn^I~qiBtr}uE|7jWrHQbew+X>i#2yLbZHo07u zF2XINY4y*TvI%s%ntgzY@E+Z18jF52{<8F1h+qQk#Z=am)pAOwqnx9-e{$n-27F)J zth|%n^1%r2pt0h4=kQ^~BVbkVHS~iJA0(y&|BMpf7?atihZam1;noB+T9nhc5b9(^ zNNO{z1t7&OgNWcD#nEo!4QM|F?hwACQ_iKZ`po|DlFWYMEW`>X1R+#hct~mz=v$up zW~_M2lW&lY)_0FL1!ph{+WF}w>>F@%@r+$GePMYLlIX6f;bbibikJz&6xMT-xBVDQ z&n7_$Do2_1K<)-PxgZKg0CYz}Q;3~BLOXf}@@j;AxR?vEONxN~4m@rzor-Wp>#~#@ z4?8v5+d7QLnys_I%_J;_D5@X>8tbfkrMB5TEStXM4wCB8UaJgM-G%n=NntKnrhTS3 zi=o|Crs#qkOwpKPKAJs_$DgjlS_6Cy`zY+83l7uoggZk|OiT=S@nIgq^mtAw&E->h zeTTTW;=X*m61Bd2;+Lb|cHncC7s@6Z4d0=$)rw%Q;#VCIcMua{KM}dWoCF)JrDzYJ zfmxWSFF!^5Kyf=drvu!bdi57LccW!T*{3rde-GE^{1(p5tJD@8Awq?BVdM=r)Sy#+ z0BcW$5@ZFm?p!^BBm+eZeZOVs*fB*6nqv&|Mz;_%RCg5fbC3PcQFRwDw2mtHA^<1A zs1{kz=DrPDDhLD5;{M|~40!#&t3X)M`Khm?UZ5T@&wU2G2)>N4Rv)WV#EeLXS!&RI zA(_T1^;taVH%*?zbjU~54-#YMM9mbI6l>k5V`1vEMTWRl_Eu=1ZAfT2lC%0DhuzN2 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%0AW8(22Uf&(o+rvd*FpQ%XRXG*Yk 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 z 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 z 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

      C3O*Uxe;!J#Hd-C*ZrkmcZSvxg( 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 z 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 diff --git a/install/test_shgemm.c b/install/test_shgemm.c deleted file mode 100644 index b989239501..0000000000 --- a/install/test_shgemm.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -#include - -void print_matrix(float *C, int M, int N) { - for (int i = 0; i < M; i++) { - for (int j = 0; j < N; j++) { - printf("%f ", C[i * N + j]); - } - printf("\n"); - } -} - -int main() { - const int M = 2, N = 2, K = 2; - const float alpha = 1.0f; - const float beta = 0.0f; - - // A[M x K], row-major - hfloat16 A[4] = {1.0, 2.0, - 3.0, 4.0}; - - // B[K x N], row-major - hfloat16 B[4] = {5.0, 6.0, - 7.0, 8.0}; - - // C[M x N], row-major - float C[4] = {0}; - - // Call OpenBLAS float16 GEMM - cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, - M, N, K, - alpha, - A, K, // lda = K - B, N, // ldb = N - beta, - C, N); // ldc = N - - printf("Result C = A*B:\n"); - print_matrix(C, M, N); - return 0; -} - diff --git a/install/zvl_test b/install/zvl_test deleted file mode 100755 index 6679eddeef97dde0894ab47b3ccc1bec7724de10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714472 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�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∾evD;*+S!nOk6MNm-(B83cc3#?(h6mdE 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%0AdBFIjV7W^vWX&tJVG>i{ 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�(otE<>1aFG~+&+J3$F!g{@WP}8p&$NQ&@ka|5 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 Yc)cCl4_}(y|AA-i{*MJW1V5wy3#RNHXaE2J diff --git a/install/zvl_test.c b/install/zvl_test.c deleted file mode 100644 index e67b151bba..0000000000 --- a/install/zvl_test.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include - -int main(){ - unsigned int gvl = __riscv_vsetvl_e32m2(8); - float *A = (float *)malloc(4 * 4 * sizeof(float)); - for (int i =0;i<4*4;i++){ - A[i]=i%10; - } - vfloat32m2_t A0 = __riscv_vle32_v_f32m2(&A[0], gvl); - float tmp[8]; - __riscv_vse32_v_f32m2(tmp, A0, gvl); - - printf("A0 vector contents:\n"); - for (int i = 0; i < gvl; i++) { - printf("tmp[%d] = %.2f\n", i, tmp[i]); - } - - free(A); - return 0; -} diff --git a/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c index 2942727015..fb98f564c3 100644 --- a/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c +++ b/kernel/riscv64/shgemm_kernel_16x8_zvl256b.c @@ -4,18 +4,18 @@ int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, BLASLONG ldc) { BLASLONG gvl = 0; - volatile BLASLONG m_top = 0; + BLASLONG m_top = 0; BLASLONG n_top = 0; // -- MAIN PASS for (BLASLONG j=0; j Date: Mon, 9 Jun 2025 09:25:45 +0000 Subject: [PATCH 005/360] Optimize gemv_n_sve_v1x3 kernel - Calculate predicate outside the loop - Divide matrix in blocks of 3 --- CONTRIBUTORS.md | 5 +- kernel/arm64/gemv_n_sve_v1x3.c | 96 ++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 40 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d8f57ef60a..35519e9001 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -253,4 +253,7 @@ In chronological order: * [2025-02-27] Add sbgemv_n_neon kernel * Abhishek Kumar - * [2025-04-22] Optimise dot kernel for NEOVERSE V1 \ No newline at end of file + * [2025-04-22] Optimise dot kernel for NEOVERSE V1 + +* Sharif Inamdar + * [2025-06-05] Optimize gemv_n_sve_v1x3 kernel \ No newline at end of file diff --git a/kernel/arm64/gemv_n_sve_v1x3.c b/kernel/arm64/gemv_n_sve_v1x3.c index d6aa3d3894..5ab8d3a166 100644 --- a/kernel/arm64/gemv_n_sve_v1x3.c +++ b/kernel/arm64/gemv_n_sve_v1x3.c @@ -52,17 +52,17 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) { - BLASLONG i; - BLASLONG ix,iy; - BLASLONG j; - FLOAT *a_ptr; + BLASLONG i, j; + BLASLONG ix = 0; + BLASLONG iy; + FLOAT *a_ptr = a; FLOAT temp; - ix = 0; - a_ptr = a; - if (inc_y == 1) { - BLASLONG width = (n + 3 - 1) / 3; + BLASLONG width = n / 3; // Only process full 3-column blocks + BLASLONG sve_size = SV_COUNT(); + svbool_t pg_full = SV_TRUE(); + svbool_t pg_tail = SV_WHILE(0, m % sve_size); FLOAT *a0_ptr = a_ptr + lda * width * 0; FLOAT *a1_ptr = a_ptr + lda * width * 1; @@ -73,57 +73,75 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, FLOAT *x2_ptr = x + inc_x * width * 2; for (j = 0; j < width; j++) { - svbool_t pg00 = ((j + width * 0) < n) ? SV_TRUE() : svpfalse(); - svbool_t pg01 = ((j + width * 1) < n) ? SV_TRUE() : svpfalse(); - svbool_t pg02 = ((j + width * 2) < n) ? SV_TRUE() : svpfalse(); + SV_TYPE temp0_vec = SV_DUP(alpha * x0_ptr[ix]); + SV_TYPE temp1_vec = SV_DUP(alpha * x1_ptr[ix]); + SV_TYPE temp2_vec = SV_DUP(alpha * x2_ptr[ix]); - SV_TYPE temp0_vec = ((j + width * 0) < n) ? SV_DUP(alpha * x0_ptr[ix]) : SV_DUP(0.0); - SV_TYPE temp1_vec = ((j + width * 1) < n) ? SV_DUP(alpha * x1_ptr[ix]) : SV_DUP(0.0); - SV_TYPE temp2_vec = ((j + width * 2) < n) ? SV_DUP(alpha * x2_ptr[ix]) : SV_DUP(0.0); i = 0; - BLASLONG sve_size = SV_COUNT(); - while ((i + sve_size * 1 - 1) < m) { - SV_TYPE y0_vec = svld1_vnum(SV_TRUE(), y + i, 0); + while ((i + sve_size - 1) < m) { + SV_TYPE y0_vec = svld1(pg_full, y + i); - SV_TYPE a00_vec = svld1_vnum(pg00, a0_ptr + i, 0); - SV_TYPE a01_vec = svld1_vnum(pg01, a1_ptr + i, 0); - SV_TYPE a02_vec = svld1_vnum(pg02, a2_ptr + i, 0); + SV_TYPE a00_vec = svld1(pg_full, a0_ptr + i); + SV_TYPE a01_vec = svld1(pg_full, a1_ptr + i); + SV_TYPE a02_vec = svld1(pg_full, a2_ptr + i); - y0_vec = svmla_m(pg00, y0_vec, temp0_vec, a00_vec); - y0_vec = svmla_m(pg01, y0_vec, temp1_vec, a01_vec); - y0_vec = svmla_m(pg02, y0_vec, temp2_vec, a02_vec); + y0_vec = svmla_x(pg_full, y0_vec, temp0_vec, a00_vec); + y0_vec = svmla_x(pg_full, y0_vec, temp1_vec, a01_vec); + y0_vec = svmla_x(pg_full, y0_vec, temp2_vec, a02_vec); - svst1_vnum(SV_TRUE(), y + i, 0, y0_vec); - i += sve_size * 1; + svst1(pg_full, y + i, y0_vec); + i += sve_size; } if (i < m) { - svbool_t pg0 = SV_WHILE(i + sve_size * 0, m); - - pg00 = svand_z(SV_TRUE(), pg0, pg00); - pg01 = svand_z(SV_TRUE(), pg0, pg01); - pg02 = svand_z(SV_TRUE(), pg0, pg02); + SV_TYPE y0_vec = svld1(pg_tail, y + i); - SV_TYPE y0_vec = svld1_vnum(pg0, y + i, 0); + SV_TYPE a00_vec = svld1(pg_tail, a0_ptr + i); + SV_TYPE a01_vec = svld1(pg_tail, a1_ptr + i); + SV_TYPE a02_vec = svld1(pg_tail, a2_ptr + i); - SV_TYPE a00_vec = svld1_vnum(pg00, a0_ptr + i, 0); - SV_TYPE a01_vec = svld1_vnum(pg01, a1_ptr + i, 0); - SV_TYPE a02_vec = svld1_vnum(pg02, a2_ptr + i, 0); + y0_vec = svmla_m(pg_tail, y0_vec, temp0_vec, a00_vec); + y0_vec = svmla_m(pg_tail, y0_vec, temp1_vec, a01_vec); + y0_vec = svmla_m(pg_tail, y0_vec, temp2_vec, a02_vec); - y0_vec = svmla_m(pg00, y0_vec, temp0_vec, a00_vec); - y0_vec = svmla_m(pg01, y0_vec, temp1_vec, a01_vec); - y0_vec = svmla_m(pg02, y0_vec, temp2_vec, a02_vec); - - svst1_vnum(pg0, y + i, 0, y0_vec); + svst1(pg_tail, y + i, y0_vec); } a0_ptr += lda; a1_ptr += lda; a2_ptr += lda; ix += inc_x; } + // Handle remaining n % 3 columns + for (j = width * 3; j < n; j++) { + FLOAT *a_col = a + j * lda; + temp = alpha * x[j * inc_x]; + SV_TYPE temp_vec = SV_DUP(temp); + + i = 0; + while ((i + sve_size - 1) < m) { + SV_TYPE y_vec = svld1(pg_full, y + i); + + SV_TYPE a_vec = svld1(pg_full, a_col + i); + + y_vec = svmla_x(pg_full, y_vec, temp_vec, a_vec); + + svst1(pg_full, y + i, y_vec); + i += sve_size; + } + if (i < m) { + SV_TYPE y_vec = svld1(pg_tail, y + i); + + SV_TYPE a_vec = svld1(pg_tail, a_col + i); + + y_vec = svmla_m(pg_tail, y_vec, temp_vec, a_vec); + + svst1(pg_tail, y + i, y_vec); + } + } return(0); } + // Fallback scalar loop for (j = 0; j < n; j++) { temp = alpha * x[ix]; iy = 0; From 31ef2cbbb353c1331a22ed4f909a6ffb5cc45b45 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 13 Jun 2025 14:11:03 +0200 Subject: [PATCH 006/360] Exit if memory allocation keeps failing, instead of looping forever --- driver/others/memory.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/driver/others/memory.c b/driver/others/memory.c index c53e798bc1..c8415f348e 100644 --- a/driver/others/memory.c +++ b/driver/others/memory.c @@ -2922,6 +2922,7 @@ void *blas_memory_alloc(int procpos){ blas_unlock(&memory[position].lock); #endif if (!memory[position].addr) { + int failcount = 0; do { #ifdef DEBUG printf("Allocation Start : %lx\n", base_address); @@ -2973,8 +2974,16 @@ void *blas_memory_alloc(int procpos){ #ifdef DEBUG printf(" Success -> %08lx\n", map_address); #endif - if (((BLASLONG) map_address) == -1) base_address = 0UL; - + if (((BLASLONG) map_address) == -1) { + base_address = 0UL; + failcount++; + if (failcount >10) { + fprintf(stderr, "OpenBLAS error: Memory allocation still failed after 10 retries, giving up.\n"); + exit(1); + } + } else { + failcount = 0; + } if (base_address) base_address += BUFFER_SIZE + FIXED_PAGESIZE; } while ((BLASLONG)map_address == -1); From ec14e1648cff986c3f4b5852ea94b8a1bec1b2ee Mon Sep 17 00:00:00 2001 From: Srangrang Date: Sun, 15 Jun 2025 20:25:15 +0800 Subject: [PATCH 007/360] fix: resolve non-RISCV host build failed issue - adjust interface to disable "small matrix" pathway - separate HFLOAT16 from BFLOAT16 - remove SHGEMM_UNROLL_M and SHGEMM_UNROLL_N equal conditions Related to PR#5290 Co-authored-by Martin --- Makefile.rule | 2 +- Makefile.system | 2 ++ exports/Makefile | 14 +++++++------- exports/gensymbol | 25 ++++++++++++++++--------- exports/gensymbol.pl | 22 +++++++++++++--------- interface/gemm.c | 14 ++++++++------ kernel/Makefile.L3 | 16 ++++++++-------- kernel/riscv64/KERNEL.RISCV64_ZVL128B | 2 ++ kernel/riscv64/KERNEL.RISCV64_ZVL256B | 2 ++ kernel/x86_64/KERNEL.HASWELL | 9 +++++++++ 10 files changed, 68 insertions(+), 40 deletions(-) diff --git a/Makefile.rule b/Makefile.rule index 24b34d1c20..00c7c07cc4 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -309,7 +309,7 @@ COMMON_PROF = -pg # BUILD_BFLOAT16 = 1 # If you want to enable the experimental HFLOAT16 support -# BUILD_HFLOAT16 = 1 +BUILD_HFLOAT16 = 1 # Set the thread number threshold beyond which the job array for the threaded level3 BLAS # will be allocated on the heap rather than the stack. (This array alone requires diff --git a/Makefile.system b/Makefile.system index be31d05ef4..820b3aff75 100644 --- a/Makefile.system +++ b/Makefile.system @@ -1898,6 +1898,8 @@ export NO_LASX export SBGEMM_UNROLL_M export SBGEMM_UNROLL_N +export SHGEMM_UNROLL_M +export SHGEMM_UNROLL_N export SGEMM_UNROLL_M export SGEMM_UNROLL_N export DGEMM_UNROLL_M diff --git a/exports/Makefile b/exports/Makefile index b4b391a197..176b1a7662 100644 --- a/exports/Makefile +++ b/exports/Makefile @@ -133,10 +133,10 @@ dll : ../$(LIBDLLNAME) -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive $(FEXTRALIB) $(EXTRALIB) $(LIBPREFIX).def : $(GENSYM) - ./$(GENSYM) win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) libgoto_hpl.def : $(GENSYM) - ./$(GENSYM) win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) ifeq ($(OSNAME), Darwin) ifeq ($(FIXED_LIBNAME),1) @@ -301,23 +301,23 @@ static : ../$(LIBNAME) rm -f goto.$(SUFFIX) osx.def : $(GENSYM) ../Makefile.system ../getarch.c - ./$(GENSYM) osx $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) osx $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) aix.def : $(GENSYM) ../Makefile.system ../getarch.c - ./$(GENSYM) aix $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) aix $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) objcopy.def : $(GENSYM) ../Makefile.system ../getarch.c - ./$(GENSYM) objcopy $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) objcopy $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) objconv.def : $(GENSYM) ../Makefile.system ../getarch.c - ./$(GENSYM) objconv $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) + ./$(GENSYM) objconv $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) test : linktest.c $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK. rm -f linktest linktest.c : $(GENSYM) ../Makefile.system ../getarch.c - ./$(GENSYM) linktest $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c + ./$(GENSYM) linktest $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_HFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c clean :: @rm -f *.def *.dylib __.SYMDEF* *.renamed diff --git a/exports/gensymbol b/exports/gensymbol index 231e72f48d..3719574ea6 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -3816,13 +3816,20 @@ shift p16=$9 shift p17=$9 +shift +p18=$9 if [ $p13 -eq 1 ]; then - blasobjs="$blasobjs $bfblasobjs $hfblasobjs" - cblasobjs="$cblasobjs $bfcblasobjs $hfcblasobjs" + blasobjs="$blasobjs $bfblasobjs" + cblasobjs="$cblasobjs $bfcblasobjs" fi if [ $p14 -eq 1 ]; then + blasobjs="$blasobjs $hfblasobjs" + cblasobjs="$cblasobjs $hfcblasobjs" +fi + +if [ $p15 -eq 1 ]; then blasobjs="$blasobjs $blasobjss" cblasobjs="$cblasobjs $cblasobjss" lapackobjs="$lapackobjs $lapackobjss" @@ -3835,11 +3842,11 @@ if [ $p14 -eq 1 ]; then lapackeobjs="$lapackeobjs $lapackeobjss" fi -if [ $p15 -eq 1 ]; then +if [ $p16 -eq 1 ]; then blasobjs="$blasobjs $blasobjsd" cblasobjs="$cblasobjs $cblasobjsd" lapackobjs="$lapackobjs $lapackobjsd" - if [ $p14 -eq 0 ]; then + if [ $p15 -eq 0 ]; then lapackobjs2="$lapackobjs2 $lapackobjs2ds" fi lapackobjs2="$lapackobjs2 $lapackobjs2d $lapackobjs2dz" @@ -3849,14 +3856,14 @@ if [ $p15 -eq 1 ]; then lapackeobjs="$lapackeobjs $lapackeobjsd" fi -if [ $p16 -eq 1 ]; then +if [ $p17 -eq 1 ]; then blasobjs="$blasobjs $blasobjsc" cblasobjs="$cblasobjs $cblasobjsc" gemm3mobjs="$gemm3mobjs $gemm3mobjsc" cblasgemm3mobjs="$cblasgemm3mobjs $cblasgemm3mobjsc" lapackobjs="$lapackobjs $lapackobjsc" lapackobjs2="$lapackobjs2 $lapackobjs2c $lapackobjs2zc" - if [ $p14 -eq 0 ]; then + if [ $p15 -eq 0 ]; then lapackobjs2="$lapackobjs2 $lapackobjs2sc" fi lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objsc" @@ -3865,17 +3872,17 @@ if [ $p16 -eq 1 ]; then lapackeobjs="$lapackeobjs $lapackeobjsc" fi -if [ $p17 -eq 1 ]; then +if [ $p18 -eq 1 ]; then blasobjs="$blasobjs $blasobjsz" cblasobjs="$cblasobjs $cblasobjsz" gemm3mobjs="$gemm3mobjs $gemm3mobjsz" cblasgemm3mobjs="$cblasgemm3mobjs $cblasgemm3mobjsz" lapackobjs="$lapackobjs $lapackobjsz" lapackobjs2="$lapackobjs2 $lapackobjs2z" - if [ $p16 -eq 0 ]; then + if [ $p17 -eq 0 ]; then lapackobjs2="$lapackobjs2 $lapackobjs2zc" fi - if [ $p15 -eq 0 ]; then + if [ $p16 -eq 0 ]; then lapackobjs2="$lapackobjs2 $lapackobjs2dz" fi lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objsz" diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index 1c4e912f2b..5a8423697b 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -3774,10 +3774,14 @@ my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib"); if ($ARGV[12] == 1) { - @blasobjs = (@blasobjs, @bfblasobjs, @hfblasobjs); - @cblasobjs = (@cblasobjs, @bfcblasobjs, @hfcblasobjs); + @blasobjs = (@blasobjs, @bfblasobjs); + @cblasobjs = (@cblasobjs, @bfcblasobjs); } if ($ARGV[13] == 1) { + @blasobjs = (@blasobjs, @hfblasobjs); + @cblasobjs = (@cblasobjs, @hfcblasobjs); +} +if ($ARGV[14] == 1) { @blasobjs = (@blasobjs, @blasobjss); @cblasobjs = (@cblasobjs, @cblasobjss); @lapackobjs = (@lapackobjs, @lapackobjss); @@ -3789,11 +3793,11 @@ @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs, @lapack_embeded_underscore_objs_s); @lapackeobjs = (@lapackeobjs, @lapackeobjss); } -if ($ARGV[14] == 1) { +if ($ARGV[15] == 1) { @blasobjs = (@blasobjs, @blasobjsd); @cblasobjs = (@cblasobjs, @cblasobjsd); @lapackobjs = (@lapackobjs, @lapackobjsd); - if ($ARGV[13] == 0) { + if ($ARGV[14] == 0) { @lapackobjs2 = (@lapackobjs2, @lapackobjs2ds); } @lapackobjs2 = (@lapackobjs2, @lapackobjs2d, @lapackobjs2dz); @@ -3802,14 +3806,14 @@ @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs, @lapack_embeded_underscore_objs_d); @lapackeobjs = (@lapackeobjs, @lapackeobjsd); } -if ($ARGV[15] == 1) { +if ($ARGV[16] == 1) { @blasobjs = (@blasobjs, @blasobjsc); @cblasobjs = (@cblasobjs, @cblasobjsc); @gemm3mobjs = (@gemm3mobjs, @gemm3mobjsc); @cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsc); @lapackobjs = (@lapackobjs, @lapackobjsc); @lapackobjs2 = (@lapackobjs2, @lapackobjs2c, @lapackobjs2zc); - if ($ARGV[13] == 0) { + if ($ARGV[14] == 0) { @lapackobjs2 = (@lapackobjs2, @lapackobjs2sc); } @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsc); @@ -3817,17 +3821,17 @@ @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs, @lapack_embeded_underscore_objs_c); @lapackeobjs = (@lapackeobjs, @lapackeobjsc); } -if ($ARGV[16] == 1) { +if ($ARGV[17] == 1) { @blasobjs = (@blasobjs, @blasobjsz); @cblasobjs = (@cblasobjs, @cblasobjsz); @gemm3mobjs = (@gemm3mobjs, @gemm3mobjsz); @cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsz); @lapackobjs = (@lapackobjs, @lapackobjsz); @lapackobjs2 = (@lapackobjs2, @lapackobjs2z); - if ($ARGV[15] == 0) { + if ($ARGV[16] == 0) { @lapackobjs2 = (@lapackobjs2, @lapackobjs2zc); } - if ($ARGV[14] == 0) { + if ($ARGV[15] == 0) { @lapackobjs2 = (@lapackobjs2, @lapackobjs2dz); } @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsz); diff --git a/interface/gemm.c b/interface/gemm.c index 54e5604fd3..d79282e13f 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -56,6 +56,8 @@ #elif defined(BFLOAT16) #define ERROR_NAME "SBGEMM " #define GEMV BLASFUNC(sbgemv) +#elif defined(HFLOAT16) +#define ERROR_NAME "SHGEMM " #else #define ERROR_NAME "SGEMM " #define GEMV BLASFUNC(sgemv) @@ -111,7 +113,7 @@ static int (*gemm[])(blas_arg_t *, BLASLONG *, BLASLONG *, IFLOAT *, IFLOAT *, B #endif }; -#if defined(SMALL_MATRIX_OPT) && !defined(GEMM3M) && !defined(XDOUBLE) +#if defined(SMALL_MATRIX_OPT) && !defined(GEMM3M) && !defined(XDOUBLE) &&!defined(HFLOAT16) #define USE_SMALL_MATRIX_OPT 1 #else #define USE_SMALL_MATRIX_OPT 0 @@ -219,11 +221,11 @@ static inline int get_gemm_optimal_nthreads_neoversev2(double MNK, int ncpu) { static inline int get_gemm_optimal_nthreads(double MNK) { int ncpu = num_cpu_avail(3); -#if defined(NEOVERSEV1) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) +#if defined(NEOVERSEV1) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) return get_gemm_optimal_nthreads_neoversev1(MNK, ncpu); -#elif defined(NEOVERSEV2) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) +#elif defined(NEOVERSEV2) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) return get_gemm_optimal_nthreads_neoversev2(MNK, ncpu); -#elif defined(DYNAMIC_ARCH) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) +#elif defined(DYNAMIC_ARCH) && !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) if (strcmp(gotoblas_corename(), "neoversev1") == 0) { return get_gemm_optimal_nthreads_neoversev1(MNK, ncpu); } @@ -417,7 +419,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS PRINT_DEBUG_CNAME; -#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) +#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) #if defined(ARCH_x86) && (defined(USE_SGEMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH)) #if defined(DYNAMIC_ARCH) if (support_avx512() ) @@ -577,7 +579,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS args.m, args.n, args.k, args.lda, args.ldb, args.ldc); #endif -#if defined(GEMM_GEMV_FORWARD) && !defined(GEMM3M) && !defined(COMPLEX) && (!defined(BFLOAT16) || defined(GEMM_GEMV_FORWARD_BF16)) +#if defined(GEMM_GEMV_FORWARD) && !defined(GEMM3M) && !defined(COMPLEX) && !defined(HFLOAT16) && (!defined(BFLOAT16) || defined(GEMM_GEMV_FORWARD_BF16)) #if defined(ARCH_ARM64) // The gemv kernels in arm64/{gemv_n.S,gemv_n_sve.c,gemv_t.S,gemv_t_sve.c} // perform poorly in certain circumstances. We use the following boolean diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 71d66f8f34..6afb49a779 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -133,14 +133,14 @@ ifeq ($(BUILD_HFLOAT16), 1) ifndef SHGEMMKERNEL SHGEMM_BETA = ../generic/gemm_beta.c SHGEMMKERNEL = ../generic/gemmkernel_2x2.c -SHGEMMINCOPY = ../generic/gemm_ncopy_2.c -SHGEMMITCOPY = ../generic/gemm_tcopy_2.c SHGEMMONCOPY = ../generic/gemm_ncopy_2.c SHGEMMOTCOPY = ../generic/gemm_tcopy_2.c -SHGEMMINCOPYOBJ = shgemm_incopy$(TSUFFIX).$(SUFFIX) -SHGEMMITCOPYOBJ = shgemm_itcopy$(TSUFFIX).$(SUFFIX) SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) +SHGEMMINCOPY = ../generic/gemm_ncopy_2.c +SHGEMMITCOPY = ../generic/gemm_tcopy_2.c +SHGEMMINCOPYOBJ = shgemm_incopy$(TSUFFIX).$(SUFFIX) +SHGEMMITCOPYOBJ = shgemm_itcopy$(TSUFFIX).$(SUFFIX) endif SHKERNELOBJS += \ @@ -726,7 +726,7 @@ $(KDIR)$(SHGEMMONCOPYOBJ) : $(KERNELDIR)/$(SHGEMMONCOPY) $(KDIR)$(SHGEMMOTCOPYOBJ) : $(KERNELDIR)/$(SHGEMMOTCOPY) $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ -ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) +#ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) $(KDIR)$(SHGEMMINCOPYOBJ) : $(KERNELDIR)/$(SHGEMMINCOPY) $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ @@ -734,7 +734,7 @@ $(KDIR)$(SHGEMMINCOPYOBJ) : $(KERNELDIR)/$(SHGEMMINCOPY) $(KDIR)$(SHGEMMITCOPYOBJ) : $(KERNELDIR)/$(SHGEMMITCOPY) $(CC) $(CFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ -endif +#endif endif $(KDIR)$(SGEMMONCOPYOBJ) : $(KERNELDIR)/$(SGEMMONCOPY) @@ -2957,14 +2957,14 @@ $(SHGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMONCOPY) $(SHGEMMOTCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMOTCOPY) $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ -ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) +#ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) $(SHGEMMINCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMINCOPY) $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ $(SHGEMMITCOPYOBJ_P) : $(KERNELDIR)/$(SHGEMMITCOPY) $(CC) $(PFLAGS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ -endif +#endif endif $(SGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(SGEMMONCOPY) diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL128B b/kernel/riscv64/KERNEL.RISCV64_ZVL128B index d2a2d35786..fac233c00d 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL128B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL128B @@ -246,6 +246,7 @@ ifndef ZGEMM_BETA ZGEMM_BETA = zgemm_beta_rvv.c endif +ifeq ($(BUILD_BFLOAT16), 1) SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl128b.c SHGEMMONCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_N).c SHGEMMOTCOPY = ../generic/gemm_tcopy_$(SHGEMM_UNROLL_N).c @@ -253,4 +254,5 @@ SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) ifndef SHGEMM_BETA SHGEMM_BETA = gemm_beta_rvv.c +endif endif \ No newline at end of file diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL256B b/kernel/riscv64/KERNEL.RISCV64_ZVL256B index 847ebff705..a41678abee 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL256B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL256B @@ -210,6 +210,7 @@ DOMATCOPY_CN = omatcopy_cn_vector.c SOMATCOPY_CN = omatcopy_cn_vector.c +ifeq ($(BUILD_BFLOAT16), 1) SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl256b.c ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N)) SHGEMMINCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_M).c @@ -224,6 +225,7 @@ SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) ifndef SHGEMM_BETA SHGEMM_BETA = gemm_beta_rvv.c endif +endif SAXPBYKERNEL = axpby_vector_v2.c DAXPBYKERNEL = axpby_vector_v2.c diff --git a/kernel/x86_64/KERNEL.HASWELL b/kernel/x86_64/KERNEL.HASWELL index aaf686c9f7..91962c1504 100644 --- a/kernel/x86_64/KERNEL.HASWELL +++ b/kernel/x86_64/KERNEL.HASWELL @@ -106,3 +106,12 @@ DASUMKERNEL = dasum.c SROTKERNEL = srot.c DROTKERNEL = drot.c + + +ifeq ($(BUILD_BFLOAT16), 1) +SHGEMMKERNEL = ../generic/gemmkernel_2x2.c +SHGEMMONCOPY = ../generic/gemm_ncopy_2.c +SHGEMMOTCOPY = ../generic/gemm_tcopy_2.c +SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) +SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) +endif \ No newline at end of file From 9f13b2c6ac952bfa0fcdd71653f7aab84798b170 Mon Sep 17 00:00:00 2001 From: Srangrang Date: Sun, 15 Jun 2025 20:57:05 +0800 Subject: [PATCH 008/360] style: modify HALF to BFLOAT16 in benchmark folder --- benchmark/Makefile | 26 +++++++++++++++++++++----- benchmark/gemm.c | 7 ++++++- driver/level3/Makefile | 32 ++++++++++++++++---------------- kernel/x86_64/KERNEL.HASWELL | 9 --------- 4 files changed, 43 insertions(+), 31 deletions(-) diff --git a/benchmark/Makefile b/benchmark/Makefile index c295b14585..9316921e1b 100644 --- a/benchmark/Makefile +++ b/benchmark/Makefile @@ -56,9 +56,15 @@ GOTO_LAPACK_TARGETS= endif ifeq ($(BUILD_BFLOAT16),1) -GOTO_HALF_TARGETS=sbgemm.goto +GOTO_BFLOAT_TARGETS=sbgemm.goto else -GOTO_HALF_TARGETS= +GOTO_BFLOAT_TARGETS= +endif + +ifeq ($(BUILD_HFLOAT16),1) +GOTO_HFLOAT_TARGETS=shgemm.goto +else +GOTO_HFLOAT_TARGETS= endif ifeq ($(OSNAME), WINNT) @@ -104,7 +110,7 @@ goto :: slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \ spotrf.goto dpotrf.goto cpotrf.goto zpotrf.goto \ ssymm.goto dsymm.goto csymm.goto zsymm.goto \ somatcopy.goto domatcopy.goto comatcopy.goto zomatcopy.goto \ - saxpby.goto daxpby.goto caxpby.goto zaxpby.goto $(GOTO_HALF_TARGETS) + saxpby.goto daxpby.goto caxpby.goto zaxpby.goto $(GOTO_BFLOAT_TARGETS) $(GOTO_HFLOAT_TARGETS) acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \ scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \ @@ -278,7 +284,7 @@ goto :: sgemm.goto dgemm.goto cgemm.goto zgemm.goto \ smin.goto dmin.goto \ saxpby.goto daxpby.goto caxpby.goto zaxpby.goto \ somatcopy.goto domatcopy.goto comatcopy.goto zomatcopy.goto \ - snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS) $(GOTO_HALF_TARGETS) + snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS) $(GOTO_BFLOAT_TARGETS) $(GOTO_HFLOAT_TARGETS) acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \ scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \ @@ -633,6 +639,11 @@ sbgemm.goto : sbgemm.$(SUFFIX) ../$(LIBNAME) $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm endif +ifeq ($(BUILD_HFLOAT16),1) +shgemm.goto : shgemm.$(SUFFIX) ../$(LIBNAME) + $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm +endif + sgemm.goto : sgemm.$(SUFFIX) ../$(LIBNAME) $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm @@ -2960,7 +2971,12 @@ zcholesky.$(SUFFIX) : cholesky.c ifeq ($(BUILD_BFLOAT16),1) sbgemm.$(SUFFIX) : gemm.c - $(CC) $(CFLAGS) -c -DHALF -UCOMPLEX -UDOUBLE -o $(@F) $^ + $(CC) $(CFLAGS) -c -DBFLOAT16 -UCOMPLEX -UDOUBLE -o $(@F) $^ +endif + +ifeq ($(BUILD_HFLOAT16),1) +shgemm.$(SUFFIX) : gemm.c + $(CC) $(CFLAGS) -c -DHFLOAT16 -UCOMPLEX -UDOUBLE -o $(@F) $^ endif sgemm.$(SUFFIX) : gemm.c diff --git a/benchmark/gemm.c b/benchmark/gemm.c index 6662c26e97..a138bfe1ef 100644 --- a/benchmark/gemm.c +++ b/benchmark/gemm.c @@ -33,12 +33,17 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef DOUBLE #define GEMM BLASFUNC(dgemm) -#elif defined(HALF) +#elif defined(BFLOAT16) #define GEMM BLASFUNC(sbgemm) +#undef IFLOAT +#define IFLOAT bfloat16 #elif defined(HFLOAT16) #define GEMM BLASFUNC(shgemm) +#undef IFLOAT +#define IFLOAT hfloat16 #else #define GEMM BLASFUNC(sgemm) +#define IFLOAT float #endif #else diff --git a/driver/level3/Makefile b/driver/level3/Makefile index b0d1d6b623..132645a871 100644 --- a/driver/level3/Makefile +++ b/driver/level3/Makefile @@ -351,16 +351,16 @@ endif all :: sbgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) sbgemm_nt.$(SUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) sbgemm_tn.$(SUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) sbgemm_tt.$(SUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) shgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -570,16 +570,16 @@ beta_thread.$(SUFFIX) : beta_thread.c ../../common.h $(CC) -c $(CFLAGS) $< -o $(@F) sbgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) sbgemm_thread_nt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) sbgemm_thread_tn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) sbgemm_thread_tt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) shgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -2767,16 +2767,16 @@ xtrsm_RCLN.$(SUFFIX) : trsm_R.c $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DTRANSA -UUPPER -UUNIT -DCONJ $< -o $(@F) sbgemm_nn.$(PSUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) sbgemm_nt.$(PSUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) sbgemm_tn.$(PSUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) sbgemm_tt.$(PSUFFIX) : gemm.c level3.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) shgemm_nn.$(PSUFFIX) : gemm.c level3.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -3002,16 +3002,16 @@ zgemm_batch_thread.$(SUFFIX) : gemm_batch_thread.c ../../common.h sbgemm_thread_nn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) sbgemm_thread_nt.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) sbgemm_thread_tn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) sbgemm_thread_tt.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h - $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHALF -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) shgemm_thread_nn.$(PSUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(PFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DHFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) diff --git a/kernel/x86_64/KERNEL.HASWELL b/kernel/x86_64/KERNEL.HASWELL index 91962c1504..aaf686c9f7 100644 --- a/kernel/x86_64/KERNEL.HASWELL +++ b/kernel/x86_64/KERNEL.HASWELL @@ -106,12 +106,3 @@ DASUMKERNEL = dasum.c SROTKERNEL = srot.c DROTKERNEL = drot.c - - -ifeq ($(BUILD_BFLOAT16), 1) -SHGEMMKERNEL = ../generic/gemmkernel_2x2.c -SHGEMMONCOPY = ../generic/gemm_ncopy_2.c -SHGEMMOTCOPY = ../generic/gemm_tcopy_2.c -SHGEMMONCOPYOBJ = shgemm_oncopy$(TSUFFIX).$(SUFFIX) -SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) -endif \ No newline at end of file From be68ef03b4b7ec03c268dfc68aaa6b0b87f89ae9 Mon Sep 17 00:00:00 2001 From: davidz-ampere Date: Sun, 15 Jun 2025 21:08:48 -0400 Subject: [PATCH 009/360] Add support for Ampere processors --- Makefile.arm64 | 20 ++++ Makefile.system | 2 + cpuid_arm64.c | 32 +++++- getarch.c | 35 ++++++- kernel/arm64/KERNEL.AMPERE1 | 189 +++++++++++++++++++++++++++++++++++ kernel/arm64/KERNEL.AMPERE1A | 189 +++++++++++++++++++++++++++++++++++ param.h | 35 +++++++ 7 files changed, 499 insertions(+), 3 deletions(-) create mode 100644 kernel/arm64/KERNEL.AMPERE1 create mode 100644 kernel/arm64/KERNEL.AMPERE1A diff --git a/Makefile.arm64 b/Makefile.arm64 index 5d75eef30b..7bf178a29c 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -191,6 +191,26 @@ endif endif endif +# Detect Ampere AmpereOne(ampere1) processors. +ifeq ($(CORE), AMPERE1) +ifeq (1, $(filter 1,$(GCCVERSIONGTEQ12) $(ISCLANG))) +CCOMMON_OPT += -march=armv8.6-a -mtune=ampere1 +ifneq ($(F_COMPILER), NAG) +FCOMMON_OPT += -march=armv8.6-a -mtune=ampere1 +endif +endif +endif + +# Detect Ampere AmpereOne(ampere1a) processors. +ifeq ($(CORE), AMPERE1A) +ifeq (1, $(filter 1,$(GCCVERSIONGTEQ13) $(ISCLANG))) +CCOMMON_OPT += -march=armv8.6-a -mtune=ampere1a +ifneq ($(F_COMPILER), NAG) +FCOMMON_OPT += -march=armv8.6-a -mtune=ampere1a +endif +endif +endif + # Use a53 tunings because a55 is only available in GCC>=8.1 ifeq ($(CORE), CORTEXA55) ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG))) diff --git a/Makefile.system b/Makefile.system index 38646c3c6b..9d7fab937f 100644 --- a/Makefile.system +++ b/Makefile.system @@ -393,6 +393,8 @@ GCCVERSIONGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9) GCCVERSIONGTEQ10 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 10) GCCVERSIONGTEQ11 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 11) GCCVERSIONGTEQ12 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 12) +GCCVERSIONGTEQ13 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 13) +GCCVERSIONGTEQ14 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 14) # Note that the behavior of -dumpversion is compile-time-configurable for # gcc-7.x and newer. Use -dumpfullversion there ifeq ($(GCCVERSIONGTEQ7),1) diff --git a/cpuid_arm64.c b/cpuid_arm64.c index c607258286..ec16923af8 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -79,6 +79,8 @@ size_t length64=sizeof(value64); #define CPU_TSV110 9 // Ampere #define CPU_EMAG8180 10 +#define CPU_AMPERE1 25 +#define CPU_AMPERE1A 26 // Apple #define CPU_VORTEX 13 // Fujitsu @@ -111,7 +113,9 @@ static char *cpuname[] = { "CORTEXA710", "FT2000", "CORTEXA76", - "NEOVERSEV2" + "NEOVERSEV2", + "AMPERE1", + "AMPERE1A" }; static char *cpuname_lower[] = { @@ -139,7 +143,9 @@ static char *cpuname_lower[] = { "cortexa710", "ft2000", "cortexa76", - "neoversev2" + "neoversev2", + "ampere1", + "ampere1a" }; static int cpulowperf=0; @@ -334,6 +340,12 @@ int detect(void) // Ampere else if (strstr(cpu_implementer, "0x50") && strstr(cpu_part, "0x000")) return CPU_EMAG8180; + else if (strstr(cpu_implementer, "0xc0")) { + if (strstr(cpu_part, "0xac3")) + return CPU_AMPERE1; + else if (strstr(cpu_part, "0xac4")) + return CPU_AMPERE1A; + } // Fujitsu else if (strstr(cpu_implementer, "0x46") && strstr(cpu_part, "0x001")) return CPU_A64FX; @@ -684,6 +696,22 @@ void get_cpuconfig(void) printf("#define DTB_SIZE 4096\n"); break; + case CPU_AMPERE1: + case CPU_AMPERE1A: + printf("#define %s\n", cpuname[d]); + printf("#define L1_CODE_SIZE 16384\n"); + printf("#define L1_CODE_LINESIZE 64\n"); + printf("#define L1_CODE_ASSOCIATIVE 4\n"); + printf("#define L1_DATA_SIZE 65536\n"); + printf("#define L1_DATA_LINESIZE 64\n"); + printf("#define L1_DATA_ASSOCIATIVE 4\n"); + printf("#define L2_SIZE 2097152\n"); + printf("#define L2_LINESIZE 64\n"); + printf("#define L2_ASSOCIATIVE 8\n"); + printf("#define DTB_DEFAULT_ENTRIES 64\n"); + printf("#define DTB_SIZE 4096\n"); + break; + case CPU_THUNDERX3T110: printf("#define THUNDERX3T110 \n"); printf("#define L1_CODE_SIZE 65536 \n"); diff --git a/getarch.c b/getarch.c index b51c3ed643..3bec705789 100644 --- a/getarch.c +++ b/getarch.c @@ -158,6 +158,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* #define FORCE_CSKY */ /* #define FORCE_CK860FV */ /* #define FORCE_GENERIC */ +/* #define FORCE_AMPERE1 */ +/* #define FORCE_AMPERE1A */ #ifdef FORCE_P2 #define FORCE @@ -1590,6 +1592,38 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "EMAG8180" #endif +#ifdef FORCE_AMPERE1 +#define FORCE +#define ARCHITECTURE "ARM64" +#define SUBARCHITECTURE "AMPERE1" +#define SUBDIRNAME "arm64" +#define ARCHCONFIG "-DAMPERE1 " \ + "-DL1_CODE_SIZE=16384 -DL1_CODE_LINESIZE=64 -DL1_CODE_ASSOCIATIVE=4 " \ + "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 -DL1_DATA_ASSOCIATIVE=4 " \ + "-DL2_SIZE=2097152 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ + "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DARMV8 " \ + "-march=armv8.6-a -mtune=ampere1" +#define LIBNAME "ampere1" +#define CORENAME "AMPERE1" +#endif + +#ifdef FORCE_AMPERE1A +#define FORCE +#define ARCHITECTURE "ARM64" +#define SUBARCHITECTURE "AMPERE1A" +#define SUBDIRNAME "arm64" +#define ARCHCONFIG "-DAMPERE1A " \ + "-DL1_CODE_SIZE=16384 -DL1_CODE_LINESIZE=64 -DL1_CODE_ASSOCIATIVE=4 " \ + "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 -DL1_DATA_ASSOCIATIVE=4 " \ + "-DL2_SIZE=2097152 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ + "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DARMV8 " \ + "-march=armv8.6-a -mtune=ampere1a" +#define LIBNAME "ampere1a" +#define CORENAME "AMPERE1A" +#endif + #ifdef FORCE_THUNDERX3T110 #define ARMV8 #define FORCE @@ -1820,7 +1854,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "CK860FV" #endif - #ifndef FORCE #ifdef USER_TARGET diff --git a/kernel/arm64/KERNEL.AMPERE1 b/kernel/arm64/KERNEL.AMPERE1 new file mode 100644 index 0000000000..5b31744730 --- /dev/null +++ b/kernel/arm64/KERNEL.AMPERE1 @@ -0,0 +1,189 @@ +SAMINKERNEL = ../arm/amin.c +DAMINKERNEL = ../arm/amin.c +CAMINKERNEL = ../arm/zamin.c +ZAMINKERNEL = ../arm/zamin.c + +SMAXKERNEL = ../arm/max.c +DMAXKERNEL = ../arm/max.c + +SMINKERNEL = ../arm/min.c +DMINKERNEL = ../arm/min.c + +ISAMINKERNEL = ../arm/iamin.c +IDAMINKERNEL = ../arm/iamin.c +ICAMINKERNEL = ../arm/izamin.c +IZAMINKERNEL = ../arm/izamin.c + +ISMAXKERNEL = ../arm/imax.c +IDMAXKERNEL = ../arm/imax.c + +ISMINKERNEL = ../arm/imin.c +IDMINKERNEL = ../arm/imin.c + +STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +SAMAXKERNEL = amax.S +DAMAXKERNEL = amax.S +CAMAXKERNEL = zamax.S +ZAMAXKERNEL = zamax.S + +SAXPYKERNEL = axpy.S +DAXPYKERNEL = daxpy_thunderx2t99.S +CAXPYKERNEL = zaxpy.S +ZAXPYKERNEL = zaxpy.S + +SROTKERNEL = rot.S +DROTKERNEL = rot.S +CROTKERNEL = zrot.S +ZROTKERNEL = zrot.S + +SSCALKERNEL = scal.S +DSCALKERNEL = scal.S +CSCALKERNEL = zscal.S +ZSCALKERNEL = zscal.S + +SGEMVNKERNEL = gemv_n.S +DGEMVNKERNEL = gemv_n.S +CGEMVNKERNEL = zgemv_n.S +ZGEMVNKERNEL = zgemv_n.S + +SGEMVTKERNEL = gemv_t.S +DGEMVTKERNEL = gemv_t.S +CGEMVTKERNEL = zgemv_t.S +ZGEMVTKERNEL = zgemv_t.S + + +SASUMKERNEL = sasum_thunderx2t99.c +DASUMKERNEL = dasum_thunderx2t99.c +CASUMKERNEL = casum_thunderx2t99.c +ZASUMKERNEL = zasum_thunderx2t99.c + +SCOPYKERNEL = copy_thunderx2t99.c +DCOPYKERNEL = copy_thunderx2t99.c +CCOPYKERNEL = copy_thunderx2t99.c +ZCOPYKERNEL = copy_thunderx2t99.c + +SSWAPKERNEL = swap_thunderx2t99.S +DSWAPKERNEL = swap_thunderx2t99.S +CSWAPKERNEL = swap_thunderx2t99.S +ZSWAPKERNEL = swap_thunderx2t99.S + +ISAMAXKERNEL = iamax_thunderx2t99.c +IDAMAXKERNEL = iamax_thunderx2t99.c +ICAMAXKERNEL = izamax_thunderx2t99.c +IZAMAXKERNEL = izamax_thunderx2t99.c + +SNRM2KERNEL = nrm2.S +DNRM2KERNEL = nrm2.S +CNRM2KERNEL = znrm2.S +ZNRM2KERNEL = znrm2.S + +DDOTKERNEL = dot.c +SDOTKERNEL = dot.c +CDOTKERNEL = zdot_thunderx2t99.c +ZDOTKERNEL = zdot_thunderx2t99.c +DSDOTKERNEL = dot.S + +DGEMM_BETA = dgemm_beta.S +SGEMM_BETA = sgemm_beta.S + +SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S +STRMMKERNEL = strmm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S +ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) +ifeq ($(SGEMM_UNROLL_M), 16) +SGEMMITCOPY = sgemm_tcopy_$(SGEMM_UNROLL_M).S +else +SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c +endif +ifeq ($(SGEMM_UNROLL_M), 4) +SGEMMINCOPY = sgemm_ncopy_$(SGEMM_UNROLL_M).S +else +SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c +endif +SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) +SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +ifeq ($(SGEMM_UNROLL_N), 16) +SGEMMOTCOPY = sgemm_tcopy_$(SGEMM_UNROLL_N).S +else +SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c +endif +ifeq ($(SGEMM_UNROLL_N), 4) +SGEMMONCOPY = sgemm_ncopy_$(SGEMM_UNROLL_N).S +else +SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c +endif +SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) +SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) + +DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S +DTRMMKERNEL = dtrmm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S + +ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) + +ifeq ($(DGEMM_UNROLL_M), 8) +DGEMMINCOPY = dgemm_ncopy_$(DGEMM_UNROLL_M).S +DGEMMITCOPY = dgemm_tcopy_$(DGEMM_UNROLL_M).S +else +DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c +DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c +endif + +DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) +DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif + +ifeq ($(DGEMM_UNROLL_N), 4) +DGEMMONCOPY = dgemm_ncopy_$(DGEMM_UNROLL_N).S +DGEMMOTCOPY = dgemm_tcopy_$(DGEMM_UNROLL_N).S +else +DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c +DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c +endif + +DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) +DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) + +CGEMMKERNEL = cgemm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S +CTRMMKERNEL = ctrmm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S +ifneq ($(CGEMM_UNROLL_M), $(CGEMM_UNROLL_N)) +CGEMMINCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_M).c +CGEMMITCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_M).c +CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX) +CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +CGEMMONCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_N).c +CGEMMOTCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_N).c +CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX) +CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX) + +ZGEMMKERNEL = zgemm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S +ZTRMMKERNEL = ztrmm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S +ifneq ($(ZGEMM_UNROLL_M), $(ZGEMM_UNROLL_N)) +ZGEMMINCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_M).c +ZGEMMITCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_M).c +ZGEMMINCOPYOBJ = zgemm_incopy$(TSUFFIX).$(SUFFIX) +ZGEMMITCOPYOBJ = zgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +ZGEMMONCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_N).c +ZGEMMOTCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_N).c +ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX) +ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) diff --git a/kernel/arm64/KERNEL.AMPERE1A b/kernel/arm64/KERNEL.AMPERE1A new file mode 100644 index 0000000000..5b31744730 --- /dev/null +++ b/kernel/arm64/KERNEL.AMPERE1A @@ -0,0 +1,189 @@ +SAMINKERNEL = ../arm/amin.c +DAMINKERNEL = ../arm/amin.c +CAMINKERNEL = ../arm/zamin.c +ZAMINKERNEL = ../arm/zamin.c + +SMAXKERNEL = ../arm/max.c +DMAXKERNEL = ../arm/max.c + +SMINKERNEL = ../arm/min.c +DMINKERNEL = ../arm/min.c + +ISAMINKERNEL = ../arm/iamin.c +IDAMINKERNEL = ../arm/iamin.c +ICAMINKERNEL = ../arm/izamin.c +IZAMINKERNEL = ../arm/izamin.c + +ISMAXKERNEL = ../arm/imax.c +IDMAXKERNEL = ../arm/imax.c + +ISMINKERNEL = ../arm/imin.c +IDMINKERNEL = ../arm/imin.c + +STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c +ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c +ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c +ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c + +SAMAXKERNEL = amax.S +DAMAXKERNEL = amax.S +CAMAXKERNEL = zamax.S +ZAMAXKERNEL = zamax.S + +SAXPYKERNEL = axpy.S +DAXPYKERNEL = daxpy_thunderx2t99.S +CAXPYKERNEL = zaxpy.S +ZAXPYKERNEL = zaxpy.S + +SROTKERNEL = rot.S +DROTKERNEL = rot.S +CROTKERNEL = zrot.S +ZROTKERNEL = zrot.S + +SSCALKERNEL = scal.S +DSCALKERNEL = scal.S +CSCALKERNEL = zscal.S +ZSCALKERNEL = zscal.S + +SGEMVNKERNEL = gemv_n.S +DGEMVNKERNEL = gemv_n.S +CGEMVNKERNEL = zgemv_n.S +ZGEMVNKERNEL = zgemv_n.S + +SGEMVTKERNEL = gemv_t.S +DGEMVTKERNEL = gemv_t.S +CGEMVTKERNEL = zgemv_t.S +ZGEMVTKERNEL = zgemv_t.S + + +SASUMKERNEL = sasum_thunderx2t99.c +DASUMKERNEL = dasum_thunderx2t99.c +CASUMKERNEL = casum_thunderx2t99.c +ZASUMKERNEL = zasum_thunderx2t99.c + +SCOPYKERNEL = copy_thunderx2t99.c +DCOPYKERNEL = copy_thunderx2t99.c +CCOPYKERNEL = copy_thunderx2t99.c +ZCOPYKERNEL = copy_thunderx2t99.c + +SSWAPKERNEL = swap_thunderx2t99.S +DSWAPKERNEL = swap_thunderx2t99.S +CSWAPKERNEL = swap_thunderx2t99.S +ZSWAPKERNEL = swap_thunderx2t99.S + +ISAMAXKERNEL = iamax_thunderx2t99.c +IDAMAXKERNEL = iamax_thunderx2t99.c +ICAMAXKERNEL = izamax_thunderx2t99.c +IZAMAXKERNEL = izamax_thunderx2t99.c + +SNRM2KERNEL = nrm2.S +DNRM2KERNEL = nrm2.S +CNRM2KERNEL = znrm2.S +ZNRM2KERNEL = znrm2.S + +DDOTKERNEL = dot.c +SDOTKERNEL = dot.c +CDOTKERNEL = zdot_thunderx2t99.c +ZDOTKERNEL = zdot_thunderx2t99.c +DSDOTKERNEL = dot.S + +DGEMM_BETA = dgemm_beta.S +SGEMM_BETA = sgemm_beta.S + +SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S +STRMMKERNEL = strmm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S +ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) +ifeq ($(SGEMM_UNROLL_M), 16) +SGEMMITCOPY = sgemm_tcopy_$(SGEMM_UNROLL_M).S +else +SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c +endif +ifeq ($(SGEMM_UNROLL_M), 4) +SGEMMINCOPY = sgemm_ncopy_$(SGEMM_UNROLL_M).S +else +SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c +endif +SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) +SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +ifeq ($(SGEMM_UNROLL_N), 16) +SGEMMOTCOPY = sgemm_tcopy_$(SGEMM_UNROLL_N).S +else +SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c +endif +ifeq ($(SGEMM_UNROLL_N), 4) +SGEMMONCOPY = sgemm_ncopy_$(SGEMM_UNROLL_N).S +else +SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c +endif +SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) +SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) + +DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S +DTRMMKERNEL = dtrmm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S + +ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) + +ifeq ($(DGEMM_UNROLL_M), 8) +DGEMMINCOPY = dgemm_ncopy_$(DGEMM_UNROLL_M).S +DGEMMITCOPY = dgemm_tcopy_$(DGEMM_UNROLL_M).S +else +DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c +DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c +endif + +DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) +DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif + +ifeq ($(DGEMM_UNROLL_N), 4) +DGEMMONCOPY = dgemm_ncopy_$(DGEMM_UNROLL_N).S +DGEMMOTCOPY = dgemm_tcopy_$(DGEMM_UNROLL_N).S +else +DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c +DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c +endif + +DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) +DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) + +CGEMMKERNEL = cgemm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S +CTRMMKERNEL = ctrmm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S +ifneq ($(CGEMM_UNROLL_M), $(CGEMM_UNROLL_N)) +CGEMMINCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_M).c +CGEMMITCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_M).c +CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX) +CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +CGEMMONCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_N).c +CGEMMOTCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_N).c +CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX) +CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX) + +ZGEMMKERNEL = zgemm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S +ZTRMMKERNEL = ztrmm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S +ifneq ($(ZGEMM_UNROLL_M), $(ZGEMM_UNROLL_N)) +ZGEMMINCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_M).c +ZGEMMITCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_M).c +ZGEMMINCOPYOBJ = zgemm_incopy$(TSUFFIX).$(SUFFIX) +ZGEMMITCOPYOBJ = zgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +ZGEMMONCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_N).c +ZGEMMOTCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_N).c +ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX) +ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) diff --git a/param.h b/param.h index 48b64fd2ae..6917cd2456 100644 --- a/param.h +++ b/param.h @@ -3635,6 +3635,41 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #define CGEMM_DEFAULT_R 4096 #define ZGEMM_DEFAULT_R 4096 +#elif defined(AMPERE1) || defined(AMPERE1A) + +#if defined(XDOUBLE) || defined(DOUBLE) +#define SWITCH_RATIO 8 +#else +#define SWITCH_RATIO 16 +#endif + +#define SGEMM_DEFAULT_UNROLL_M 16 +#define SGEMM_DEFAULT_UNROLL_N 4 + +#define DGEMM_DEFAULT_UNROLL_M 8 +#define DGEMM_DEFAULT_UNROLL_N 4 + +#define CGEMM_DEFAULT_UNROLL_M 8 +#define CGEMM_DEFAULT_UNROLL_N 4 + +#define ZGEMM_DEFAULT_UNROLL_M 4 +#define ZGEMM_DEFAULT_UNROLL_N 4 + +#define SGEMM_DEFAULT_P 240 +#define DGEMM_DEFAULT_P 240 +#define CGEMM_DEFAULT_P 128 +#define ZGEMM_DEFAULT_P 128 + +#define SGEMM_DEFAULT_Q 640 +#define DGEMM_DEFAULT_Q 320 +#define CGEMM_DEFAULT_Q 224 +#define ZGEMM_DEFAULT_Q 112 + +#define SGEMM_DEFAULT_R 4096 +#define DGEMM_DEFAULT_R 4096 +#define CGEMM_DEFAULT_R 4096 +#define ZGEMM_DEFAULT_R 4096 + #elif defined(A64FX) // 512-bit SVE /* When all BLAS3 routines are implemeted with SVE, SGEMM_DEFAULT_UNROLL_M should be "sve_vl". From 3b1ac29b776051177a21e1fadb20640fb47ee033 Mon Sep 17 00:00:00 2001 From: Srangrang Date: Mon, 16 Jun 2025 18:05:16 +0800 Subject: [PATCH 010/360] disable BUILD_HFLOAT16 --- Makefile.rule | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.rule b/Makefile.rule index 00c7c07cc4..24b34d1c20 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -309,7 +309,7 @@ COMMON_PROF = -pg # BUILD_BFLOAT16 = 1 # If you want to enable the experimental HFLOAT16 support -BUILD_HFLOAT16 = 1 +# BUILD_HFLOAT16 = 1 # Set the thread number threshold beyond which the job array for the threaded level3 BLAS # will be allocated on the heap rather than the stack. (This array alone requires From 84730068afeb0590b06ef12888cf59331a2cc47f Mon Sep 17 00:00:00 2001 From: davidz-ampere <> Date: Tue, 17 Jun 2025 03:05:34 -0400 Subject: [PATCH 011/360] reduce duplicate kernel code --- kernel/arm64/KERNEL.AMPERE1 | 190 +---------------------------------- kernel/arm64/KERNEL.AMPERE1A | 190 +---------------------------------- 2 files changed, 2 insertions(+), 378 deletions(-) diff --git a/kernel/arm64/KERNEL.AMPERE1 b/kernel/arm64/KERNEL.AMPERE1 index 5b31744730..46a34469c3 100644 --- a/kernel/arm64/KERNEL.AMPERE1 +++ b/kernel/arm64/KERNEL.AMPERE1 @@ -1,189 +1 @@ -SAMINKERNEL = ../arm/amin.c -DAMINKERNEL = ../arm/amin.c -CAMINKERNEL = ../arm/zamin.c -ZAMINKERNEL = ../arm/zamin.c - -SMAXKERNEL = ../arm/max.c -DMAXKERNEL = ../arm/max.c - -SMINKERNEL = ../arm/min.c -DMINKERNEL = ../arm/min.c - -ISAMINKERNEL = ../arm/iamin.c -IDAMINKERNEL = ../arm/iamin.c -ICAMINKERNEL = ../arm/izamin.c -IZAMINKERNEL = ../arm/izamin.c - -ISMAXKERNEL = ../arm/imax.c -IDMAXKERNEL = ../arm/imax.c - -ISMINKERNEL = ../arm/imin.c -IDMINKERNEL = ../arm/imin.c - -STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -SAMAXKERNEL = amax.S -DAMAXKERNEL = amax.S -CAMAXKERNEL = zamax.S -ZAMAXKERNEL = zamax.S - -SAXPYKERNEL = axpy.S -DAXPYKERNEL = daxpy_thunderx2t99.S -CAXPYKERNEL = zaxpy.S -ZAXPYKERNEL = zaxpy.S - -SROTKERNEL = rot.S -DROTKERNEL = rot.S -CROTKERNEL = zrot.S -ZROTKERNEL = zrot.S - -SSCALKERNEL = scal.S -DSCALKERNEL = scal.S -CSCALKERNEL = zscal.S -ZSCALKERNEL = zscal.S - -SGEMVNKERNEL = gemv_n.S -DGEMVNKERNEL = gemv_n.S -CGEMVNKERNEL = zgemv_n.S -ZGEMVNKERNEL = zgemv_n.S - -SGEMVTKERNEL = gemv_t.S -DGEMVTKERNEL = gemv_t.S -CGEMVTKERNEL = zgemv_t.S -ZGEMVTKERNEL = zgemv_t.S - - -SASUMKERNEL = sasum_thunderx2t99.c -DASUMKERNEL = dasum_thunderx2t99.c -CASUMKERNEL = casum_thunderx2t99.c -ZASUMKERNEL = zasum_thunderx2t99.c - -SCOPYKERNEL = copy_thunderx2t99.c -DCOPYKERNEL = copy_thunderx2t99.c -CCOPYKERNEL = copy_thunderx2t99.c -ZCOPYKERNEL = copy_thunderx2t99.c - -SSWAPKERNEL = swap_thunderx2t99.S -DSWAPKERNEL = swap_thunderx2t99.S -CSWAPKERNEL = swap_thunderx2t99.S -ZSWAPKERNEL = swap_thunderx2t99.S - -ISAMAXKERNEL = iamax_thunderx2t99.c -IDAMAXKERNEL = iamax_thunderx2t99.c -ICAMAXKERNEL = izamax_thunderx2t99.c -IZAMAXKERNEL = izamax_thunderx2t99.c - -SNRM2KERNEL = nrm2.S -DNRM2KERNEL = nrm2.S -CNRM2KERNEL = znrm2.S -ZNRM2KERNEL = znrm2.S - -DDOTKERNEL = dot.c -SDOTKERNEL = dot.c -CDOTKERNEL = zdot_thunderx2t99.c -ZDOTKERNEL = zdot_thunderx2t99.c -DSDOTKERNEL = dot.S - -DGEMM_BETA = dgemm_beta.S -SGEMM_BETA = sgemm_beta.S - -SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S -STRMMKERNEL = strmm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S -ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) -ifeq ($(SGEMM_UNROLL_M), 16) -SGEMMITCOPY = sgemm_tcopy_$(SGEMM_UNROLL_M).S -else -SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c -endif -ifeq ($(SGEMM_UNROLL_M), 4) -SGEMMINCOPY = sgemm_ncopy_$(SGEMM_UNROLL_M).S -else -SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c -endif -SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) -SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -ifeq ($(SGEMM_UNROLL_N), 16) -SGEMMOTCOPY = sgemm_tcopy_$(SGEMM_UNROLL_N).S -else -SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c -endif -ifeq ($(SGEMM_UNROLL_N), 4) -SGEMMONCOPY = sgemm_ncopy_$(SGEMM_UNROLL_N).S -else -SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c -endif -SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) -SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) - -DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S -DTRMMKERNEL = dtrmm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S - -ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) - -ifeq ($(DGEMM_UNROLL_M), 8) -DGEMMINCOPY = dgemm_ncopy_$(DGEMM_UNROLL_M).S -DGEMMITCOPY = dgemm_tcopy_$(DGEMM_UNROLL_M).S -else -DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c -DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c -endif - -DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) -DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif - -ifeq ($(DGEMM_UNROLL_N), 4) -DGEMMONCOPY = dgemm_ncopy_$(DGEMM_UNROLL_N).S -DGEMMOTCOPY = dgemm_tcopy_$(DGEMM_UNROLL_N).S -else -DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c -DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c -endif - -DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) -DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) - -CGEMMKERNEL = cgemm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S -CTRMMKERNEL = ctrmm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S -ifneq ($(CGEMM_UNROLL_M), $(CGEMM_UNROLL_N)) -CGEMMINCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_M).c -CGEMMITCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_M).c -CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX) -CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -CGEMMONCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_N).c -CGEMMOTCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_N).c -CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX) -CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX) - -ZGEMMKERNEL = zgemm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S -ZTRMMKERNEL = ztrmm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S -ifneq ($(ZGEMM_UNROLL_M), $(ZGEMM_UNROLL_N)) -ZGEMMINCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_M).c -ZGEMMITCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_M).c -ZGEMMINCOPYOBJ = zgemm_incopy$(TSUFFIX).$(SUFFIX) -ZGEMMITCOPYOBJ = zgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -ZGEMMONCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_N).c -ZGEMMOTCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_N).c -ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX) -ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) +include $(KERNELDIR)/KERNEL.NEOVERSEN1 diff --git a/kernel/arm64/KERNEL.AMPERE1A b/kernel/arm64/KERNEL.AMPERE1A index 5b31744730..46a34469c3 100644 --- a/kernel/arm64/KERNEL.AMPERE1A +++ b/kernel/arm64/KERNEL.AMPERE1A @@ -1,189 +1 @@ -SAMINKERNEL = ../arm/amin.c -DAMINKERNEL = ../arm/amin.c -CAMINKERNEL = ../arm/zamin.c -ZAMINKERNEL = ../arm/zamin.c - -SMAXKERNEL = ../arm/max.c -DMAXKERNEL = ../arm/max.c - -SMINKERNEL = ../arm/min.c -DMINKERNEL = ../arm/min.c - -ISAMINKERNEL = ../arm/iamin.c -IDAMINKERNEL = ../arm/iamin.c -ICAMINKERNEL = ../arm/izamin.c -IZAMINKERNEL = ../arm/izamin.c - -ISMAXKERNEL = ../arm/imax.c -IDMAXKERNEL = ../arm/imax.c - -ISMINKERNEL = ../arm/imin.c -IDMINKERNEL = ../arm/imin.c - -STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c -ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c -ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c - -SAMAXKERNEL = amax.S -DAMAXKERNEL = amax.S -CAMAXKERNEL = zamax.S -ZAMAXKERNEL = zamax.S - -SAXPYKERNEL = axpy.S -DAXPYKERNEL = daxpy_thunderx2t99.S -CAXPYKERNEL = zaxpy.S -ZAXPYKERNEL = zaxpy.S - -SROTKERNEL = rot.S -DROTKERNEL = rot.S -CROTKERNEL = zrot.S -ZROTKERNEL = zrot.S - -SSCALKERNEL = scal.S -DSCALKERNEL = scal.S -CSCALKERNEL = zscal.S -ZSCALKERNEL = zscal.S - -SGEMVNKERNEL = gemv_n.S -DGEMVNKERNEL = gemv_n.S -CGEMVNKERNEL = zgemv_n.S -ZGEMVNKERNEL = zgemv_n.S - -SGEMVTKERNEL = gemv_t.S -DGEMVTKERNEL = gemv_t.S -CGEMVTKERNEL = zgemv_t.S -ZGEMVTKERNEL = zgemv_t.S - - -SASUMKERNEL = sasum_thunderx2t99.c -DASUMKERNEL = dasum_thunderx2t99.c -CASUMKERNEL = casum_thunderx2t99.c -ZASUMKERNEL = zasum_thunderx2t99.c - -SCOPYKERNEL = copy_thunderx2t99.c -DCOPYKERNEL = copy_thunderx2t99.c -CCOPYKERNEL = copy_thunderx2t99.c -ZCOPYKERNEL = copy_thunderx2t99.c - -SSWAPKERNEL = swap_thunderx2t99.S -DSWAPKERNEL = swap_thunderx2t99.S -CSWAPKERNEL = swap_thunderx2t99.S -ZSWAPKERNEL = swap_thunderx2t99.S - -ISAMAXKERNEL = iamax_thunderx2t99.c -IDAMAXKERNEL = iamax_thunderx2t99.c -ICAMAXKERNEL = izamax_thunderx2t99.c -IZAMAXKERNEL = izamax_thunderx2t99.c - -SNRM2KERNEL = nrm2.S -DNRM2KERNEL = nrm2.S -CNRM2KERNEL = znrm2.S -ZNRM2KERNEL = znrm2.S - -DDOTKERNEL = dot.c -SDOTKERNEL = dot.c -CDOTKERNEL = zdot_thunderx2t99.c -ZDOTKERNEL = zdot_thunderx2t99.c -DSDOTKERNEL = dot.S - -DGEMM_BETA = dgemm_beta.S -SGEMM_BETA = sgemm_beta.S - -SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S -STRMMKERNEL = strmm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S -ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) -ifeq ($(SGEMM_UNROLL_M), 16) -SGEMMITCOPY = sgemm_tcopy_$(SGEMM_UNROLL_M).S -else -SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c -endif -ifeq ($(SGEMM_UNROLL_M), 4) -SGEMMINCOPY = sgemm_ncopy_$(SGEMM_UNROLL_M).S -else -SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c -endif -SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) -SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -ifeq ($(SGEMM_UNROLL_N), 16) -SGEMMOTCOPY = sgemm_tcopy_$(SGEMM_UNROLL_N).S -else -SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c -endif -ifeq ($(SGEMM_UNROLL_N), 4) -SGEMMONCOPY = sgemm_ncopy_$(SGEMM_UNROLL_N).S -else -SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c -endif -SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) -SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) - -DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S -DTRMMKERNEL = dtrmm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S - -ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) - -ifeq ($(DGEMM_UNROLL_M), 8) -DGEMMINCOPY = dgemm_ncopy_$(DGEMM_UNROLL_M).S -DGEMMITCOPY = dgemm_tcopy_$(DGEMM_UNROLL_M).S -else -DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c -DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c -endif - -DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) -DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif - -ifeq ($(DGEMM_UNROLL_N), 4) -DGEMMONCOPY = dgemm_ncopy_$(DGEMM_UNROLL_N).S -DGEMMOTCOPY = dgemm_tcopy_$(DGEMM_UNROLL_N).S -else -DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c -DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c -endif - -DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) -DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) - -CGEMMKERNEL = cgemm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S -CTRMMKERNEL = ctrmm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N).S -ifneq ($(CGEMM_UNROLL_M), $(CGEMM_UNROLL_N)) -CGEMMINCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_M).c -CGEMMITCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_M).c -CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX) -CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -CGEMMONCOPY = ../generic/zgemm_ncopy_$(CGEMM_UNROLL_N).c -CGEMMOTCOPY = ../generic/zgemm_tcopy_$(CGEMM_UNROLL_N).c -CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX) -CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX) - -ZGEMMKERNEL = zgemm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S -ZTRMMKERNEL = ztrmm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N).S -ifneq ($(ZGEMM_UNROLL_M), $(ZGEMM_UNROLL_N)) -ZGEMMINCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_M).c -ZGEMMITCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_M).c -ZGEMMINCOPYOBJ = zgemm_incopy$(TSUFFIX).$(SUFFIX) -ZGEMMITCOPYOBJ = zgemm_itcopy$(TSUFFIX).$(SUFFIX) -endif -ZGEMMONCOPY = ../generic/zgemm_ncopy_$(ZGEMM_UNROLL_N).c -ZGEMMOTCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_N).c -ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX) -ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) +include $(KERNELDIR)/KERNEL.NEOVERSEN1 From 8dff37827ec794928dccfa007eccdc036ee32b59 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 19 Jun 2025 11:56:55 +0200 Subject: [PATCH 012/360] Update version to 0.3.30.dev --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ce583cc0b5..01b058b826 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ project(OpenBLAS C ASM) set(OpenBLAS_MAJOR_VERSION 0) set(OpenBLAS_MINOR_VERSION 3) -set(OpenBLAS_PATCH_VERSION 30) +set(OpenBLAS_PATCH_VERSION 30.dev) set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") From 4e6da5ed34e74f18d106097613e67272a0a9560a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 19 Jun 2025 11:57:35 +0200 Subject: [PATCH 013/360] Update version to 0.3.30.dev --- Makefile.rule | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.rule b/Makefile.rule index 1426b44702..036a6bd78c 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -3,7 +3,7 @@ # # This library's version -VERSION = 0.3.30 +VERSION = 0.3.30.dev # If you set this prefix, the library name will be lib$(LIBNAMESUFFIX)openblas.a # and lib$(LIBNAMESUFFIX)openblas.so, with a matching soname in the shared library From badef1d32efd5e8bf9cd052b5a57f866a9754308 Mon Sep 17 00:00:00 2001 From: Ian McInerney Date: Thu, 19 Jun 2025 14:26:16 +0100 Subject: [PATCH 014/360] Update sbgemm_tcopy_4_neoversev1 kernel to use standard C types --- kernel/arm64/sbgemm_tcopy_4_neoversev1.c | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/kernel/arm64/sbgemm_tcopy_4_neoversev1.c b/kernel/arm64/sbgemm_tcopy_4_neoversev1.c index 140e8f7edc..16c71559d8 100644 --- a/kernel/arm64/sbgemm_tcopy_4_neoversev1.c +++ b/kernel/arm64/sbgemm_tcopy_4_neoversev1.c @@ -52,16 +52,16 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { svbool_t pg16_first_8 = svwhilelt_b16(0, 8); svbool_t pg64_first_4 = svwhilelt_b64(0, 4); - - u_int32_t sizeof_u64 = 8; - u_int64_t _st_offsets_0[4] = { + + uint32_t sizeof_u64 = 8; + uint64_t _st_offsets_0[4] = { 0 * sizeof_u64, 1 * sizeof_u64, 4 * sizeof_u64, 5 * sizeof_u64, }; - u_int64_t _st_offsets_1[4] = { + uint64_t _st_offsets_1[4] = { 2 * sizeof_u64, 3 * sizeof_u64, 6 * sizeof_u64, @@ -108,13 +108,13 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); m11 = svzip2_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_1, svreinterpret_u64_u32(m01)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset1, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, st_offsets_0, svreinterpret_u64_u32(m10)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset1, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, st_offsets_1, svreinterpret_u64_u32(m11)); a_offset0 += 8 * lda; @@ -150,13 +150,13 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); m11 = svzip2_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_1, svreinterpret_u64_u32(m01)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset1, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, st_offsets_0, svreinterpret_u64_u32(m10)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset1, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, st_offsets_1, svreinterpret_u64_u32(m11)); } } @@ -194,9 +194,9 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_1, svreinterpret_u64_u32(m01)); a_offset0 += 8 * lda; @@ -229,9 +229,9 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (u_int64_t *)b_offset0, + svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, st_offsets_1, svreinterpret_u64_u32(m01)); } } From 721c80644beb4c1fa9980810e7385c8bef32a8e0 Mon Sep 17 00:00:00 2001 From: Ian McInerney Date: Fri, 20 Jun 2025 09:23:05 +0100 Subject: [PATCH 015/360] Switch power to use O3 instead of Ofast Ofast enables possibly unsafe optimizations in addition to O3. This appears to have been added and then just continually copied into later Power architectures, and it wasn't included in the CMake build system when that was introduced. Replace this with O3 so that the same level of optimization is done by the compiler. --- Makefile.power | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile.power b/Makefile.power index 3fa6d6faf8..2309c9d840 100644 --- a/Makefile.power +++ b/Makefile.power @@ -13,16 +13,16 @@ ifeq ($(CORE), POWER10) ifneq ($(C_COMPILER), PGI) ifeq ($(C_COMPILER), GCC) ifeq ($(GCCVERSIONGTEQ10), 1) -CCOMMON_OPT += -Ofast -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math else ifneq ($(GCCVERSIONGT4), 1) $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) -CCOMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math else $(warning your compiler is too old to fully support POWER10, getting a newer version of gcc is recommended) -CCOMMON_OPT += -Ofast -mcpu=power9 -mtune=power9 -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mcpu=power9 -mtune=power9 -mvsx -fno-fast-math endif else -CCOMMON_OPT += -Ofast -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math endif ifeq ($(F_COMPILER), IBM) FCOMMON_OPT += -O2 -qrecur -qnosave -qarch=pwr10 -qtune=pwr10 -qfloat=nomaf -qzerosize @@ -34,7 +34,7 @@ endif ifeq ($(CORE), POWER9) ifneq ($(C_COMPILER), PGI) -CCOMMON_OPT += -Ofast -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mvsx -fno-fast-math ifeq ($(C_COMPILER), GCC) ifneq ($(GCCVERSIONGT4), 1) $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) @@ -70,7 +70,7 @@ endif ifeq ($(CORE), POWER8) ifneq ($(C_COMPILER), PGI) -CCOMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math +CCOMMON_OPT += -O3 -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math else CCOMMON_OPT += -fast -Mvect=simd -Mcache_align endif From 83efceb3cd02397aafdc761719d5c6bd3fc24f78 Mon Sep 17 00:00:00 2001 From: "Igor S. Gerasimov" Date: Sat, 21 Jun 2025 11:24:42 +0200 Subject: [PATCH 016/360] Keep dgemm_snb_1thread.png in repo --- docs/dgemm_snb_1thread.png | Bin 0 -> 160187 bytes docs/faq.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/dgemm_snb_1thread.png diff --git a/docs/dgemm_snb_1thread.png b/docs/dgemm_snb_1thread.png new file mode 100644 index 0000000000000000000000000000000000000000..71211fc8e4b467be474420ef8be280bdff049066 GIT binary patch literal 160187 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

      (XfIb4BRHx`r@(^CNyMtwP{?-6mq2(t~TNWMP ziBGqF(LUKr%}hp0ACNu|DuG@i37vZsAm=MGGDR9!m#2-sVQOqA+oR;TdQZhEtj+Me z$QO9)rX{nSTKSbUZ1$+Q;}MZ(lT@z4ENx^?9*S6B*q}&)E-Efh!+{#q*ISTgVv8SI>VZdE*~)IUu#dCa3It_^&Ll!Ix+A*%~z5 z&joQi9ur80kmO6flt4T42QHAcwy45BMH`vM$sZwUx*0oA0#8G``pZ{i%f8awP}LQF zkOsp(JKyDSY-&AP&UmncY=aEzrr(IYr`OHbcU3)4iY2oTvv9MN%411j;0w`QtPbAA z+IwX=zBiCOB#4Ul?At=Fw%*c!*iuxHRZRisi!fTsFgj_eH8A?Ou+pP~TdC;Wb7W-y z5=*_1tMQxaznN*Be#ph=YNlDYpZ^d4`tk&5t|6mp8E z-puyW>CI!~yb}3TEqfmk$6p~G!8~F3F5jL%G`M`7PmrlD(n$&v_w4M;v&U<+FFO5D z`(NK@2EII}m#=yEIcRtwFTD#aUOhc0_0h&t7(x}%Ii(u9Q{T>Ki|}~eRt_S|6mx$y z_h$Lo2|ecX^YhMu+hpdG+5F)FvG(*=PK=Z`Y<-+?R;{^p#&0<1eJ8clJ6Hv_^{}0_ z=tUsjHwoFgCffI?WzXHs%taEr zyK+@~0lzNgr1q66+@CsOMvL1`Y&}}vI6f*?@#* z!SvF~4kOD`K>^+9DCc)ZZCiIn@hea!{poTzhQ@jFqrn9QG7FY6As11js_A?a)zQ~j;J^DHE0=erY93~sT&qG4^OX}%VmCdqLa=R3LSXg>HlAC))1qAbZYgMr z8nRh;qDYO`93=3odo~RFG2P!XB&v!sh#ukFl3;z2fcxH>hOypzb zu64I&WDGgIqwZpTev)k93Wr3#d_=l^mxgLIP9mYIx}+?=ig9GRn~hTrLY*`;rc7;Q zJffH}4!3lSDc!AzMbypCqWh$W)4nOh3OQR& zyTr?>&8MgxxbExJyL~4u)vL>*IvM3O-Njg+hnZ<+9IxL>@>It&5>KxgL<_NrN$^Wl zWb_o+aoc%0W5o>AyJkjoZ*4lG$OTnF;Z3)v3^^&uVYY-p_e)|^H!c{i!JZ*myouN=C%dfD%D8(y?SZgh!EQL^{Z zqCq8-(Ob^0PN_QC-m4ycI;0aEtqIOzg=r7QMd{)eI=NNDx#nz&mX&c5;RdvrfkhmL zn<)77HCw2@p@(m~3%NN9xA7;wRTTAA9wQ5Lo<^H^_&;E!$2ymMuPnUtbfm0^&7iMr zRax06=_WfCJAXSxt!Jf3Ei-#licBEM|Bm_fMx;)akDoxJaw`DwlKxt#Q@a-GgJ;ay zw{xdQdP@tlV+PkaPFT=rTF;+w?>^Pq+wG?KEbDW?S$)FCk9DwVno0{|UPt7w4Unve zveFNIs9mqLJinc()g?8_$gydV)@g%%AbkD(kW+7=r#DHOvdRa_~MXI@5?xbiVh5 zfV!vk5qTX6l9i#yhl4~-(F>v}oMez7j!=KS&*yU(BiXkN9eHqEYX2BDwOylTp?B|2 zah6^T3)zOIjZsqSU66Tj&`jFJy=>CP!8i0!;V3XxY^D<9xU&UVX~n#vPotzX*%gd8oE;g)=(y)Ey5M_=uJ<8gxN?cMu#7Wfmk z`@6E13o#+B7%Y+71TLJ%5%XV@v$%Q+csB*i|G?z~Zh&k)^z>3Y@&(clC! zUvkO899B{8u@-wb|E$j;44Y0?Lq&$GIEl&;kzRaHSAzHW`}kDT1syonAzw6)zrEz= z?9jiJClq--?U&}l)K7a0yXhrir*ea(jTWF@|CyLyE#TovVmgOLd6q=F$mV*~4<>Ar zq|)OG3xmUF0?phSlvk!Y`9D1%{T1WTJj75p-{?_<)k(XWBs}qpsEa<}Qf2lJ-K5I= z{@jHqGDmU#zz0JDlO}-ymlkHc($Now7+m3A0)O?pxLBV@g&AIbIv~21WT!qczo2fx zy6GaaFzh`v=f+Vc!B}eT(mSLzlw3W}u!(W6$eOSy3v-_7`x(Q9T2{s}ta&9v_VR$*{KS9yW&0$`y-n^7NYO`r#o- zzx>cJ3%#~nveJC$fP_xQ@@k$pX;+ifc8P*>=1^Z-wrFtdN#CSwbL_UTD)ZATdKz8} zI%j*mq-xs?0}3@zyy3Q}!|qML5_p{~LP2jR7ZkiS|dDAE@)Dc-M2BS$n&oeARmp3*(tmRCc9^(1kmB#B&U(R^{ z03nn>6A(Rg{N590Ye)rAGCj@l_)bTT6k%LUp{Xdz$>|8yj)QmK>ECjCC&kGm<#0q^ zPvo108F9H9x+ze2H07#r?~n6EYEx%xNPe1MOzUpbHsrDCrQUg2(C$K#nl~BbW&G~v zM{4z#RF;dXx_>(nQs@vU))}?9xw5H1Dq)XYvT`B!`~tp=k9j(TuJrQ_4g21i`mK`T zn6q>?V-ee)G(u*RgnF01Wn|O3#-}DwYYMpxy?M-^YDt8TroZXEk%mzw$m^v@i@)`K z;d2^{9uj_%l=MP=YQw+tRy2N!xkt2>c^Yn%Vv>=m3b&q!3{#b^T&{xNSgG4SvKDR05?oVX`)wpGhyS{ zo3O*5SI?p3r`v@-hyKsPr@ui}rJIR>*xr3zh?72msB^y@r0~kTXd#C)ZJp+s#lxWLmB88{1sUCRr z2WYi-n|$NnBn*|J-hJqjLo~Mo^5+4_>a}Gn03&=+EWt8GP2zv|KK3E)BuLFqCxba8 zjU}KZIoc4o`;8<=p7AlbPXWukij9qpvPaeR_c!QqVWFO*-rfryLuJJkb05Ew=q<00 zgjU@_s+W}G^u5ZC>t;}wFr%(QThtBIA7%bg#@aCa+uXcBpgvlcI99z6&o5@b~ zJsBBNP3r{(a1WGMDgRdJ{OM%yQwwLAx@8u>dK-&D`f)1Oe+Bv9aQIUOm;xF7%j1YZ zW^Fsirq&^4KiQ+MyKn`85`>qJ8-7Gy3^lJZ(9`R4n9ZrdW&AA=WQXV4xf`enTN`Sv zlt3!xnB|^z8`Sac!gmA_*N_g8s}r))YYlQXWb5(PEoTlr~~is3|!um60JLK}bP z3YE{;aK;Zmgwgh)5-=)e!4^+bQE7bcX5iUK{iat~F~HMYwkF!e{WN!+w(6P$#w4 z<-OfCRDpC}^b9(~$OrF*vZ3vHBQxRtpxw*vR#|Ez4~Lb90(S%Vsg$8|p-Zt+m9SOlFR$xN{e_4(Yi07597*bfL2e7}s`Id@SP{X7>T~qsQ4ojy@Fem0w zg}liE=Z&}DsgeSSi3ycI9AUqcc5^b`)T~lUc%iP*>o~`;hW%9&uhu4W`Re2A<6Rc| zOZXnNn|<=x=RYOTynF|GB)Kg;%m@=EzCopJHfCu_G#fYA=duv?m+}F*KS_--rNZ)d zQv&uGifb^XOHyA>&W{(XOCgH`nTZcvqK3v+aqaSyy^@Z-XIgiS0f5wRQJgy$|Ign< zoOXqpT=OULd(|7eAMg|wci2BXQkT3Zb$geAKYT=0{_ND>7vmov-7CKN`_k(NJbO8$ zzb_FulAQau?%AE!eVRT41NuLIT14Pp|GOX2!{mF|?B8EVPu%{u$qc(MPtyI@&HY`V z-M{?T%KbkrbJ8MY^z;Tcz{7*qEwZK8&(tk2KXBmjEVM{f*`iY$ji8Qfo%h_i)OYQs zd-ZpFd(v`>JMb->U7yf=Ff*-MsVcW3!@`VT4PAl~H47k6ioFD7Vm7^=5%1HU!UCv-$a zP&^13DTV?>IX_?Dk{@FZ*S!)$|3jVglLT(C9fsH)Zn;Ycp8@aCGuz_Qff{>#sAgmQ z0G=3KMaVN4!ngkW=e`upf9Nd&AJT`&1Gcv&$)hImz#Z|j!edQRvt;%PL93Y<(Zh6m}Cz(xA?R!;K7)A z6(4V-5kB_Mja}D3)GMK{zkk{2=;$PR2KvwNZyMbt+*gEU@y$PeTp}VRbvgfZ>7Se7 z$>H06h`{G9JjokcY$>#5G#A`z{`~nTD^`?)qXB86bD1hQb0l|t-IW%WVtxI|9rpA8 zcH`3Dsvq284H*%prHylasd7%ifWasC2&l>*uP2%lyY3kEb$3@=VIMJaMn(SQoB5DIC)$Jef1YnZ}|HwP6K7A_RrQb(1v zw`=G9;-dYx8vqt4`%h0m9@#lL8zWHLZ(PhZ5?g-bwmsrPx#|D$#!oe0kvA%2Xiw*4 z0~JDEK3q~{wfUb*(n5JG18Qbv&Fm&NQ25w6-lKf<=+VwYsE~pJr$?Kj#>U26 za7(%a``$9S;&BzhP;)MfT4ngd;5)M&iKI!4;{t0)pj=ibZ?S>EVfV9 z&aTupHqM>JZuS;fW#-@F78WiR*iM{qYlXx4;eT@FcZL<4Gtj~z(>n8lP2CG*c-BEp zO-=pXjZ7M?lVf}S)ZTZk-$cY-ZgmPhA-pYh=~Axk&6_b+m+Srg`~(9)AtYI#{&80X z28g3z+71K~&h=vslobg=b_qsa^?`3|o1tS?vf>6iMF|}8K7%i^|J?z*z4J{S*+x<@ zs`jkM)GE~2R&FiUFzT4=Iz!a+9w_7n{S8U!MIA%)@|H*1*!LRu_io^mzlMSV0m1tH z`e^RNQxp{KAq=cJz)Nu68yb%4q2VC`H~^;RptDC%%4J@E0_YVA-a1WpX3~~G$J10> z5-M@c-W_WnGGd9Y_(b3a=yy0at1dZfM zMSDs5KT9I}81!F+J+ivawI}((eIvFsXF?As9Cphv*D#7b8)`-BbcjGh{I@R=fvjK1&CfUp z#OEa?CFQk1f2MF9k3d1wiY>H^woxO5Bf2gwYglL}bA)R23$G?G#ICG3z8D?78&q5@ zjGdgEv|LUoV65k{!-(W6JbB4T1vwuoHIhca}$C>1w7iYa;|;kn*2 z2jOypKM6fetv!Al_t-n5>$t;poQBY$uhscqOz+*Jv8StnVDu%JhPu0#9*(pWEi%@LPR&OFicOw_wJL{3;c3=AHi@j@*s3I_D`Qay#WRU zaV2cPGib1Pqvv(}Ey4w=Vjk!=I$uemHo-3tR#$Jnh;R`SX4I!x{rdH5_Uo4~`XV7C zCr_UI030lgnqZo4A~r6gK2QbB7R8_T(Kx~Pq@=o-0Tnu3m=o(+WcL`k;U6j}2$wfN~p zFkF4W<9Hfac1(fNg&CT9-8(^v8p~$Uc7p1lKc^a-Kfb;=f)WlH5f>M?RY{aYy=)(A z6Id9kDys0tSC*-qBS-XdhG7LTjcR9{)XTV*;$p6hcSjZtVL6a=n$`||_Kau*cKtY5 zb?9d1#6!=$2Y5x1?WPelORlZRDpMZ39QEpz_1PnjKIj%$wnFFjQ96Gwk1JOmtpbNb zktWH6aEKnzMWNCK72TdXd@8Zlf$E9YEHXDDL))f`MWFTDD<@{IzJsuIlgKZ}dRhMQvBMk&gG)dQKjI1SQ4A zPl~L2mKLCSWn0na*pm5=k@4~I^NHTL4U19xQG1(j-@f(03}dTx=$-CESDJw@yR+MN zb_<`t@62+%f8X`IlZey4C1C=Jm+XN@4(<=LEBD;U{SK{|6TszlsPnxJ_Z6<_3213c zEiEbWRRdOsIgpz7iUx890r0#FR18cQgE0R1}I@{N?+&-4q>J+tk## zw!9oSGdsJL4$bDxZV9Jd6HXHm5#>T3pMwWFRn_FqojdPZmL8q?eJ%P{pvHyBKx7xg z>&Hs8<;9zigO5oK;7(P0vHggcy}iBjwdg#KYVcpNWu>K(`T6-O{5(9hcV=F^1=PsS zkA%KdZ#q|r8ZL+Qn{3vxCHB9&mZJ15)jd|i1M{V}R)I|yl#ntdtmE28`1mN?IT~I6 z6Yd=T<+-(PZve;O;@Knnt3attadB}O7g%<<%h@Ox8AHwo)urC=bJalozIoQ#&%s>*fo*UQ1d!3lkR{V$^qZdos1-UYqD-|t5EP}RWT9&)ONrFGr}q=jBK=ZkB* z3ubrkQYjj!8HA>%v)6ziEoj@>30QS{8iMyO1g*nU(;_xN%0ZsORYXB{;zUc&w{NT} z6=Lr>{*CL|FgoM%rxqa3tc*QU$+z7!ipj9j^Oi~XN8>W{{mDSKWeH!K7)mQNKY`pD z*tHu<%F29UrLV3Lg3|hRl~CiNE@M#P+GK0ecK1HlO>YF%x@&4mtpJY`Kq^9ZgDmub ztmY`vL-YZ-g0s7~K@V}j*tqi-UEnqAg~19VozYDZP?0WdY-tLGUi_;f;| zmGzc_!M%+AZu;0y)%lO0m7TV+ufWRX7RsBCk5BmxUdvX9pTFT1_^*N8-8Vff{jWt= zB)lZBXu-^Y!=7uP(6=vuYa9($L()t#%n@rVNI(1wss-2VKk! z=~`(`K=!IYw7^w=k^xnhgr6JbWluf;*UJUHAxchQ_3hDmqrnb+ zd}!z_#>Q-id`Le$)P4#xKY$e=CY%Q4QaiTP4~DTHv$`trNiFt`KE&wTzoGLrIJ$J} zS~Vd0sW9WVGD(zL(7HP-ARxefy8e2;eyBLkc#-!&I%Q_?)3>#p`o;GJo0qR3QRwFS zI-T*1HBcK~P2oyxU*u)`azWQ)X>DymS*Hcf+W-g9Y-FC&&4oG!bmo=Pxc{RK5G}+4bRMYoMC1CrZT-0?R+NG>U2!Z4cEJH&`{f}T^>^h z-$X`UzkrQ6gmBlQ4FaVZnx()Hl8QQm=VS2` z*?saXdOAA8XABbV%iGvB+IQL)dJr{x@X#SQL7Uzc#zJlZh%QX8*8Z=5Uj19_0Xue{rQo| zHM_?kOgShlhB%en3rSRr!^dP-(a@+obg@nP04*t_q@zvu$Db%?jd5rzoRi_T`z@QH zeSw5QT=*k+u{AyWt|d(PzJ7hCIq-g4M4>&&50(0E!Qi!39F9vXuc&CY5ItMvjmKT) zKdX4|MTV&Jtm{u`FN{p#^0qi!@DwN`=8kU;>gAiaatH|(Y0!C27^n_?xRn>DeHtL1 za_{+m5j)L>dLyNjYxXOXtzHO@ot`k${7M8}z@%cBBYLT zfEce&+dOA_UPE@I+TU;Vko1`orQ~&Wb>l!yK=NAc2^e$sK4Vj{JJ8)})q^-6`Lkff za5Z56tWyRFGwwht*9#mJpiyu;NkK7+P^&sw`!@^?Rb{uEa?ELDXy?NG&)GMkzd;v$ zk>q+P@h~zr*0MKMHSYav=67&!v(S9&KRoV2Jm5UtJ|#|kZnisTgw{R#ZDN0$Ah>j^ ziZ9No+G=4JS5}BhQCMek)l~(2XkefNow)07N!>K?v$^ZBd^3kG4>O9pw)kWvPq-Pz zfOS~_-@@$~Tgyq7w9_@*0C%C(G1WL1BxLiippy>PaRIrOwZ;3Xe- zK<>U%NjDzt>nlAw18Mp1u_2OtC7{4XhvXmZIP_XPE<#Fln36 zT*llA+0bHfHa2;6isj8)l*ZwPmwAD*X=B!=4tQKDBj$wOt?`k9?pJmpg5YejD|<*Y zqv%ckesHirL=MS=6GSN{R|H^QPHgYVZ*OIT?&X9A=H=wLAw)*JJv}{}*X)!n4lcRk z9*Sq7tow`YIm9yXJ$YsYlM<>mE|57jRH*Mlyxd*o#e5R253uX@u<%4CkO^T72yFP^wYHwzFR8o-GgzzDk59b$9m z&fApsG0sL;%Pr-QjiK<=R5zkhGe9+fpQ8CgMa>gT29DfEmUObxxgqLt-| zN0RhC!QQExmm!f7P*NnOzFo&-4P@)bEG#U}&8|xa(+C&>&bwyiE>*SZwmhziXq1J! z%Ua-6pfZZm`1iYQecexv=C47b9qQ(Z0mY`yP7J+7l#E2W4H8|?Lfk`z4Y*878ajgn zvrMan5!z=$Pt()UP=8k#-vt$c)L)ii?`XhM=hRL*JDjVpm#wWWX%$c&1jAV>mRUFi zmUR(KcywIcdx*w31~}Q>@?o&S+7PD*mmPiygCXJPXI9yjBtBM+6BlxxPGs!lz*{z!?Mq%alFGKQGj-awgbf0 z0IGOcSnC6!1x53~sH4@A`L01$AT7m_)wEIc66T?V9qp7NM17vyoHxeWFT z&*S^ZJ2Vjh0ZGwh=oQ&|w|O9W1^E!VsYLM2wM$dD=_BkwZhu}DDKjW@zI@}xji=Tm z&4Br6WT~sE6#{g7orR4}?<15lU18vk?eEwB2DpNMixo%%@l2Gvse+&**6^GaF-AiqS7|sle zR@zRVJh_DUfHZXgKfv!1=EUYU59^_LOaYJ~8P9 zyrz^7(+BC7IcHMVjE!aPJ3vT>fK4_bSeGjDgO|@8dGstQZR;CDeMF5{Swcd>B}vIa zKSLL=Bv(QiB-HHn2Qik@W^mc-S^689@$mz+n{JTJ&Phozy=D=qcL7d;JoePs8)W-o zFArtj%a{c_gCg>b!OdNny0xPSl58!A3{c_WTe(%1cZv-i5 zY4yJK_lwJ(ICu*%06XBbN{g_~NbwaXAz(ZX85W-r;Sdi5(t-5QJD`RWaVXK3WlIzw zKBG0kfh7N)K2_BD*@M}X1gB%;!>F?U zra8XUZTa4VkoxzBb#%ITLh5P7Z-D&6ktxy7Qc_aN?T6qZ0OoMu+QBD!A51G$*$0sK zYsC5!A3J6#ZxcpBbRiZ=TD5{r8$ohqYA-U6(cFDq+J#1IA<@Ll%*=#_nnQ+&U@;M6gWu7e3>Bn%D)Wut^jmODFQAbTj`d~=9KSE4Y3F)9aa_= z0P<+fVgRgh^YA#F%jSik6u#$5t{>z-au&`X;Bf3eh7PG-dEnsSehK{Mv6X?B2?@3i zOQUt%YVo2SNsdYe4*YYp5q90EP=^W-tZ;`4P&umV>Owsr$RBqe6glRIkwd1@xV5~# zTy>C;&>dZ=%dmEN)P9b#hQLym%KRP_MBFnoqfJgtjRi;dGUTRAAtpecHQ%NWV+r71 z2s#(RNx?w&WL=9Y${%%M;;5<%ntl2aNRM&2xuT)@*K3n9H-Rjl5|dX?4r<$Fg-0B3dCKA+c?=$Irhva!c6E0PgSX9)<_yX;7@`!Wnz13a*SJW3{~F?udMl&W*47Rr{!{i+ zPWBZybc~5fr7n1hr2l>um-o+1POi6uMSJs+&cwzho(D*#I*`CD*@+v1izz7Qn$!Dr zC|bdOVsYspcr2j)pM!p`t*dK=Qx#MSs*DZupuY_Xr;N{f<(=U4lv-Ja9I7#rFkGHZ3!H=TFO}~tf8Vmdx{iMP3xiQ7o?yWi2=+LnXlp- z21HG&3AsD~AQurV=`y@xx45}FGmW4mI|*fQ!|_S*uPO=DX1gZ(vzF{_K(5On{3<~b z^jD-VvU_WaH9$&N1>{ZhLZmxjTCWeJF9i}xPpu+)5s501yh~4iV^fR~U^eXtyno^P zyJ|1s>lPDHTfSSgq$1JP_2JgC@56_e3)urbL8mbggIt{O_+0_iT`xh>iYZqr5+Dar zYwu<=jyQt_xBMsEa)8%H$E-27AjVM2eIh|9|mb-=#0M*?sEpcI(G zRfAH;qhQUxrjRkqSy$cvd4)|^{m0z-cL;|Tf_);?S?Y9a_^~x`jCc{%@R*QzQ}*18 zqrR&7sW{4x3;?s?`LNU;DRypu4#S)oVlCCAj>A!-CnM7|Lf&6Mdibz^^sMl8IJc1x zCYqeQRwgwoPF~D^5-1iLEwF-09CBq_a%FI~7OoPlh1~|Xe9^$29^mhJWHZj|*!Nd$ zfWNs2IH|27Dj6WHL)Sr*?S$RHnb$a3=3|g1eud$%Pw4ftq7?*`1Mr+QrwUcn)Iubk zszEMca6kp(-2!lUSxcS+N#Y@O8Naz@zCzYg(IQ?mzrh`CNf>Ww^=Uz`*|MrggW({dii`F^}m_^@k7K z(Sz;>Wn{X4Vx;5fi}A@n;KTJGEU?VH^)FjpDY7sq@_!{xxkt=w7HSHmVW7;Ozc9P7 zkqUiHrbIcEeM&{;APa^3S)$a;Io=0t>O+*z6QP_XzX<+K{ZkB2AAm~tWG~*h;c)NMfQJWD2($=hx8G{K z4MCOysy!&FY)pY$T5)+m>2{?DZDKoBXRRC^xs>&&z}_tU>91OHdgjJ!ed)`S>=x)h zaggP4Oi!Nt^wPrG>A>#YvB7X1v=iDERJF5>s%lU{663a+*N7agvCoy1lv=;PEj~w3 zgax5b5x`6KiHqkU83z?$lco(Gk~EMYW}iKK_B?;|QQTW_f7zmt$8^*;{Rh+6G$UHp z*%&0}GjRNTp&&U(-9*;8xNvh2zI%UsV11MPBP@f4%At zMSVFrITqBgXE*<%m8wt(3lA3pMt?Q5^C@S6e6Kr6W~C?NJ~VH2x5y$(_%KM2LCZ?JM?TK!{SxzyE+E76j!@k0+B059~kqjhJbz435K z7-}B<2PJ2^D};nqvMm91nj(w{(j~Jy!}4YUXYN^F5I0U%oLnY(mr(9a32XrP#wD;{ z`CJ`q|8oK6tr#%Rvtu9{KIV)LrN&=xvo_3+|8;pC-=%oI|F+(CX2TiqWPq{wDi05j zH7**N^A|eiGStwGz+X9CY-VBc@BkR>hmnuEz<^gPmf48GC_??Ek%yl1_E;RGH}llsX$Py z+%tdw{{84+ejU--I>5$;L%@OnaujZdGD3X4^L~t4>x@)_Bv_1{hc10d0$BI?1_?y}YyK@?lGIkyT=hsM0b3KtnBO!r+dfUvvSu8?WRwkthGW{?P!j>Zx zHA2ai{+p^X1sm4>9cOa__+(NH15EeL$W{_Nh>Z8Yw+@<}nHfq@g~k?Q5Vf_~@I|*--LnFHro)2=G?@zS-@m^D z-u!!yu&~$~hsmA*>iOuuES&n7{9>*8^9K(e)J@C?e%GlDZd*h1DWr{zqN1e|i0Le9 zHQL>^(Nb-pwMQThe2wRG#^Z1pAfWC9WeXCegv<=}mhzmldrSxmD!|7nglf{ial}rB zj!n#Jm86)H#w-g;NHQRCmo|$S4V zYVIV{FUMC}DHlN$co4{q)V7(P{n{C()g>?RBDI&WA4`spr$EKdd@kd8Hn=DB_U+`W zgyfBX;-lX3Py%w#y!Y}V#|v4D^OyU|*P99mq)`-{i?M~=m|`ClyExjIPz4$6;eK6@ zB0`#JwcQk7lfD`o52g~9u{EE+YzXA!rp~Vz^(_?td=-kMDf%}Csq3eGfwCUq&so$K zbtpYOt{@5uYdw#i>%xl2lIw^{!wTtXf{6G!=ZG=u&#_?|unT<<1l6X~1fWvJvj@&V z@{m{#!9;kE%$Ba@>^SeSFjHflL}`Muf9xj4KW?O520IH zT;yzMNwO-#)lny|{EwJMxn-x56}Zs%FcuxNg52Q;meWboi(N@WLnP2k&E5t>{?bf~ zuYKR`>Se{)i9SwcrBD4-6!AZgPi@$}_4bcY+x6dQEAz)Za5d~#zGOi+x=vV|G!glJ#=NfGl1P4t& z*=LR|$&JQ<5fW-XOAiI~)ZJ%CbX{#u+3|kGE(v-xjzcY{DLKH;&wq)Nle5j*i|}WG z3|xh(#=HxyYtnG8L-(Qx8y{kdmmW^IB^j}deY$sWY|PF}vqhTfAPOj5=K|@+o2mT# z{EWIwy^5&EjYxu58-7IjiQA6)?{epMlnE!8p>CGBa=w0GZFRM zC~j&1q1nQptQ#}9i7<{j`8t`A^rc`4MOB%mORwO7&tD-m7?vaQKM>xIc&1ZC_iLRl zCco+2xo5`mqs@u3*w092CRhp;4tt-g;A}LB?$)>%5)z_G+)n?I*McQm=GRV2Pt2(X zSLt?O1O#kd%Y@jgHMJz7t^3=z<7@eV2r)X7B)Kk(Bd;6V^n#qInJGH0rlyV8Q>sl8 z8-Bqqq>+E0K*~H-_s%{@>;%A-gO-)EOVu`b7F*;Jw${6u&ZmkV&;%!MM5y6GS@NhbC08)-eA8^ z(i)b&RVVxW)xNHb>({S`3{Bn1VvwmI=CT8T-$J={dbsNK6p5v`Zczw`vn)XREN~k) zJmuC6-;UVoNLr@%d7qc4_Ge+poNIYAmpHsshl)N%XbEJ;w_|zVU?m}sg#>U-&OTK5 zZo{mKf*tHQos$TNQOp8oPjiS~{1ij@ZxfujTmM3g1++LVN0a$_T_fX*HBJkJOcn!N zL|ayAOhwtHwfMh)dGdee0`TYL`M3z;IPuA%xefg_-Qp1c^rj9%@p({F(^1aYy+j(b(vRptNB zJ%iOuIoDuGyh<)a@J}7INo82Xz#3BmS760_oYbh!!mf*_2 zDZNe}Vm|>>p1c<25OiiiJ4;C}q^prg*Q9t~GvS2&w#wCGPq)DuA0#8;?B?d3OT0T{ z%=JX6+U?4b{e5z>H=kG{TDp7}<$|K4jlUs#>1EBHj;;n|Tm6)A1%CGxr3FtC$0Ukm zId%>=rGG=hrzge&-Cm9MjXM$LKcR=xVPlsH3&qWsZrkAwd1~xPOiaX8FeNS0-qlqV zaO+lX>};|_M~LUilP782mWg&>O0q=CXcFHxl*pkR`ruES*Y9)%)ripELp zPypSwWh@;nj_j!#uLvJsJG506GYj-kbks~P>8s}F2P1pAaEgFD) zK!LKOdV19)B`#(Z8>QoJ^xr}BE?gk|P1(|> z!vSmW^2?Xg3TjK6-n<0=8Di0f;&bqKe8hJ|iH#kzAY%?`YA>s@LQ`U|Tj5CI0*w

      OivL)=25axTB@%1D7?w?6R8szkajZ(P!)sMmpex>>@Gceb0HdW^u1i z>qbzz1U9Wp1>5JFK_83%njgj1P|`;MWfQscJ-{qb;S+M8zYa_T`U^@*7N+|7y{AQF z2G(Crw=Mvpd<+1%_r+G_$2Q;7i%BE5Ju@SMOP3cETp>5f|JQHxu;{&T~at+@+4TVm5HKB@rFfI4;{F* zYE6{ZYNPXCoR7YDuXYKRhjSbU%*yxB(gt%sJ)IZKc@%f<**z+cXJ$gj%1 zEEtJy$K%Su^g;%X7^|~HOK$!X>mh7HOahYI5{8R1qz5mjCWJ0$m?spgpKczIs_*HM z6)&5V?xdgn6HeSLeARB7AuL^5vUi!^U_25&2r-g4Ac|nger7QlqP#p!mVrflTfh1A zUxIQUy^$skxiZqbsTw6U%)GDKnUj6-%qcEiy2MWyBXN@I;Y-h4fS^|sdayk!W{8#Jxxe3*TL)P$+_CTChCF-q8_X=V14G#+wB-6(WW5WY+SHrhdT8?Zy z`q@bMbG0JZ8jKvkj&x<3mL(7dMvUN-5j_^9ofl(70?iYGgNF#eh^b5bLT$u)p>))G z8!PLuqMjnbJ~plU^+y)tNR}pk%TxK(M-X9txSLo3lC%=51;n~rDGVnetJ=_Ve9N8% z4=vzG3^=*PD3N4DL^9=|$G=vBcom12z%;Y-CPB_|vqDg~u;_y`R4^h zs?RM&!_(qgo!1=$*p0X|I04_(jm;Y9Jnto5TLe_6K9KKH95NocrbH=hFyo!&CHF!+ z%6rAP7UF`4^HH-*fNi#`qx1s7<#2Yz?R`T%Te$dSeGB0GA!BwqItGT!%$|CfTVvC7 zI;1`~fP4JQnP@Zn|9l%a%b(`r^i8-4w~)ZLMpYVEJs}h;*6JL1L@SuA+vN&Co$@ zuchSOdzDWE{gC&Tsh!WO~9K)J)Hmef#)v zU>WZ3wv@risb^LEvY29|9mVg+*c`MZCBn^}xXE+RJ?JBL@KspI&sKjVM5F6)(=WkS zlW5R0?owuXcw!86%7J^@+4d)wiwg0nwndhvy{YY=Np7ABtAY)n$XE;EsgmeKDncAvIN(MZ>_Tqg9+&1!PY^u{_Mwnslf zQ$zv6*3lF7fiFGo!Zo}I`{Ja9R5TFTsDk~=tQ=_KQO)a1@#4|*&?m2%u|wdqJ{XV) z!n-ATjNq!@@8tZ)KRIG+$}}AlTo-dg9Hvk^Qu)lv`;$U$j+=Sc%-bjLc=i%Gvhj{l zOuZ+)%u;E_M;v8i$jsBn+HbNIjy&}i$K{3ol?52G?K)Q--1z9*xDu{gJ&0% z^6^SGH8r5!7&8)jIUrY-|HNM-eW-g5R%vb{*Fdp#{A1% zcBu#Egih@6&}4wdxfbcv3Sv6V&lkuF2-Mt&zBtm~eQh+!a)7MC`o5M@(dVYJ32fKt*xgHjU6rCMi?Rd^s z;@_n)Dl3km5~yR826Q190Ahr+%5&15cw#vYXJ9zccO0*h#55 z;mhP}iPuc6rqMqBn0P6sAdJsEb#Xqf$5UYygjz3+P!=y4XG#Bno15EZ)9ZgK9Z8i- zw8o=E6RV1`I}AfiLXpJ7HfeRu?Y*vc5rKEC_x*{kQqPEycAwf`*zU`r(U2$dA!HBI z_rCyPY1yF)KT5iGX(gX#T(oFHG`1hG6Mo_xY|KtcDr$LzpL8@K7R0=HjK7jWb^pu} zm?68U_P<8O!M@ZE>*>CwhN(22{RU^xK3Z?Y3pXLBs%x0(vL$TX1mmuM)ep}r_pd*v zF8j1)YjP4p>wRHvk#!qx@|DJh%tD^>9#|+IJi{gBmd?<{zc|yZv6>WK=kE_ng1DZt z>TjDr*M4Y9xer>^H$u&PT^M^^zY}0zP2=qB*2ew6wb|X+_`)H?J zDS-_YxZtDq!WvoM(Y5UT$$J2W>En`dTX=~Q-V8gQDM?33xZ#y8DUX(lnF_oyooBk; z?E=AvIL^&tdqS%pA~A_uHN-C4aRp}#Rf{-~dX0y^ae9Oh-pFa+-i^fcm@hFA7rXy* zU04XQ@+D0wlA2@e7K6>`nE9ixq$FDw=0RMWUb$cPMtJbD+8_AR+6V_`xpecfh^d3J z4{~9O1olcfNJ1_>u3}mmnyEzl&y&KOm4|Qar`llJxzvLqCAFF3)HPYh?R=ih`;AtJ z-T^f$d`uZ@ou!BJP>No-h zKXQi75j_Z}BV+tw`}6=J4`vijG?#<9@l!Wew)vMv_< zFvb(b0A_X5SFMk`ax7~23WrG73G)BAnA+C;$?B+LUh;jOESwTO_=>OBolruZ*9RNt z*3g&K!fjy1Ead}P&k@)&&gaIQ6Rt;0wzf|h5dhaW2}ef>$@j-Ye|cg}2;pf?GX5_tkqbkIMFF9A359<_ z>MdG#{;GG?(*X66{*DKL(4@NG1|3tcj-J~h+sS9AF6Jgt|BiM*NG8#L-1&4rW;#7tsU1fbv^ zR-J01(eja~N>Q9@^4U0FjblO`q!E+|MNfEcH>_VGjR~pwwf{zfh4hFF0sqnH=sVq% zg-xEp?f?j_=HOYQ`3AaILQ90QGBYP{{`l7oNTQ)#SYn2_)Jv*Qo+6PfpBmDHgK|y; zEc8Hxe&_|@fq;_C* zjiFGR*j`zzyruD{95@TyhdeJl?or^g>aE~b{sCJjjz9rG+g;BgtjO17FWj6s{$aZK zH(_>2&k=ue41qE%g8Byn)rYh*NY%W@zB6z)m9$hlF$UZRc4FjrF2P47S{SL;v;2&S z9v7)zoHc%X;-AuN1CEg`X_*kJo)i%P9`VjwBWbfj9nD7tAo}I1MTzTm6fwIag_Jq} zQtk5fuEH_4MKfs?i|e}9`g%v`%10hEjqNx(3mLASsHAT>g8z)6kg4A7Wk1Y!4tG*Bs4n&Hf z+UOf-8JSIWY6LnbjL&n}A6beXgz`TZR~98ZNniqBDET01y>~Rcv^oh2Y`#_1L^|?F z8+=0e0g^BX!#(1oC;m8e=fMlRyy}VbWP)^8GUtgzv`W`Kdcj>fTHX91H*B%ae2KtO z;|kdg$>8xVX`|Mi8ij;k*98q$39+gZWXd^Ga;BUWvn$bAdV4hqUdZ*MB_Y5zK!QS#VcS&R4g0WuA|A$ye7X+yZ zA{!b=GYWCzgM$($Y>eCi2kh?A}t z9(qrL++k^|pfRRa;n+QE6hwUN#D7KlmyxagSkke-1;cwdD$dooioI~Ye96;W;v$++kFK@Dw#c-!Pyc5hiSo+5&h*LCu5rZj%y)9 z@qak2r=*K(Z2WghZPuvI$p-II66<)v1W^xZ%ce?yCjb~jbBe%9q}qs)~(Me!HrM`nXI>5Oe+o=t7{bc}6M z+_s7TKdQ4j9*!z?3oCtHqjgcHH+HM2-=0pN6+ET>l(ets%#X>>GIZAB$tkJlykH*U z;2GMw?IS$J6InMhomqphE@nJ<>U7M%=DW_xz}n%ksp{72do z1CK8^nknnsWuDTD4B}vcT#-cWp`&YGl~Z0u+~kdW51-5#xF+D_LA8tVw(a^idFAXX zS@H45Swqrqx^KL=kUUDY4%0i}p5S`_J>qn$_j2n@vPpcu^kWpT>cRcH`Ws@&OFLvhm==k3a(o| zdfACby?pg5nz)0CJ`M>+PIY0l&e8p*GrM5&%{2yTumjD3GoVHtYp@H=j%PNg?ZT@F z{ajPiye&!NOc^xynSjxw?DQ;jsu}mx8bcByTuj?qHa36g7^KeF7du5Fm!;T73YD)H zId9MjyzANMaUHERB5##-b>HNcy2mB%WMpjS7!QUI&TIX6u#N3i#8#6{^KW5;i({Ro zu-MPw_N=Nu`~0gr+$z;beAJy~eI7R@+Ac=La|DVyqK9Bp`zcdXQ=iC{-ovK3-%wR_ zo)dn&vHxY^*MRQ}Xq9TG5&Z){Zk$2-1kE%U%tWrcBJtX`oPhV8?#0dG>4uH1b66mdFkrvs^UjjSXiX~Chxr!{|j>M=2gM(2*Q+6 ztm_>9T}&+;)w&A)hWAlFINc$*BlyDWj(=!qAdbj7cwMN+AZ6sD044pu&()*E$MsL2 zzPmBBs(&km{O^V9;-79~SVnSkvJU=Z4xU{j^d>G_kuUyOS?TI0>N3`T@DED1z3B0n z0CxWp3(3vcw-=q(&(xpG%9s>tEtG+`3tR#BCbdnmcD}8#@iQ-#?+wX>8;%R8l`_c3 zV5bip1Wl)HU{J9Ar|&z2*f})QX4+U;F`=J9M^8^+0s?|H4DNLDTPak+a{FZ9E4;az z>IZ)8D|q`_Ckk2i&NgZJ)F!y-uNDh| zB|)0(mfw2VKB)H6baQiaElSLnD5yGiX5hmu1yeKfJZoxgt^M`q8av)}&#Auu5=j(e3LlM3+ z$+zSR`R=|=&moxz`EJS?akFf@;=MXMuvtRiR?{Tc%@dNbV)dwm#0Ne;J||`-rnkHM zp+j%sIO1^bHVU^$5Z;{9oT1^7k)87Tp7$x*?ZjapJI&mA6EZCU@T~jxz1WY-DDk|? zU34nAaJV@!EKG~o6AWEl-~1=v(tg3!b#{C11YaL3v~sbVw$(K?QCNT0uV=+|1}~VK zkIP*`^Vw+~9i8+YQCr#8CqsCQ+kqvtwY6n|FnGNUYr=tE;=`B;Lh+WglKC+2*kRK; zpPrh!e;@hjm=cPKLV3@Q`K-u7njK6Q#${^TIGkh7%#|?yQRpSmqly*7ahqUfp-Q(B2DV%6U!A2Ry-*@l06M)YMdqrrcSw zd+_FA;{1qite|Mq zGpO~f-i=qU#)(kyoG_d}rWbI+Y6qPQXpmYsPHjCrZkjb=RfN%O&d2Rb@D7+6^J3!p z9;K$*u(osI2?)^=2Jnyp?BAWe z+dug9W3J`YC8t+8InKXOQOt~n?YrA`3I~Te{)8jhZP#U=8@GA=xP>oxfq)<=zx7sR zq~UNc+KhV|8~+@YZy5^Ca=y`>{rYvVf1%I9RAn-dhx@yp^^y-T_)dN6;aM^|vkjv| z@}ZGjy)_Dl(|r$c6bDg1@49Gi9!^mIbJzuIGu!`+CQ-*FM zTdWPLLJM-@Nhdxg9tcxppc`#$CliyHcKac-FQ4#UFroxKm%`hAcOi~#ekSeitYvMT z!X{6}rBQzMQ%#MniJ@WY2~DOnY>^VMTD>2Pj2ba*!qovbt+v=uv@VU}pM#UEw|~^6 z(9~vW@eYcgkM)6vELHl*Tt1FyU>8_l&klvhg?B;QXSlyCV&`Ed_uI2&Yu z=b%%)1`yJkp=WiXKksk+w4L=$?B#Y^?0C`@hlb9DWZCs*^!TbOMFoZTf>;|!tHsu! zXWWhJd2c6KS81M1%~a?DPU+|4=hww};3Hz7%{oD{Rd;nQZAte-#C;+rF8*}_d&3+g z7w5ZG^x6M~(wg@$am$FW#FDhJare0j+ctFcV#}Bww-tXiXxQaxT ziioR1-a89R+cdb;rFN(OvofU->XsWND?1~8` ztYETllKOeF=|xQx=&57TxEY=_4bPou3)u9WVeZLps{i)vsYr^Al`G0{2Gywh3+gp- z+A=EM`?oYR%!pYMXZJg>wot0fxlUcEI(Xo~&dtr+n1K&}Sa^Gv=3yAMU~uIR7#;r7 zM^>}SC`2Hfph@7oY40>#OTR_FHODCgUcE1#D@@V~nQ6x{VU%<6Gd<7MAO)sjg2v=; z4H78WG_!i5b#ZBFX=G$%z{=X1Ikxe|@2iM88!(;8*0)0lDMQrww_$8XhC@i!p}!PY zXW0PwwjZ_)NF>91zFPeph0Y-S-ZA-^TnzG_RR=!mnRbISMn7fGJx9~pofBE%7i$Z~ zvtGZrG})9o9P1F3uUZ&Pj~7gPl!5rgM6@0L?@^c+hD1DOoG(nL}@>424@-c86ULkbNL^k-8!J4b6AWoVIMY z(0+VxV0t0FxL7(Gnw`w1?hT&A>fDE8Juq96pVEFg0%apBrRzA{XI+JENpVHL(EQ&Q zFz1K)2!Gyv%obB)91?DWP2@V$=_P@?D7ihr1Alhv#jsI^Q&MS$AZ#W;*f?ka2`0yG z8TkPkE|5<^K#vdU#@g0)kQaTZZAn+emdjXmDXRYZinDk2L9^|QvvdyUR-u+sc%t%7 z-SY1W;O+DC`KB1ZKo@CoTv?e{Bf@(Kxg^@m!C{3nI*t99_jS=vIpQ1!5DwhlR*|Wt zEsp%uWJAy|*Ey*lilFX3XkucLF@?Yo0+DiLuCHQaJ~+x?Gd(#+>!4Y4tVr^=$!P zWRit?(RRadF1S-3l^bz9y9m{T$a<6fi;?BKG3IfNfNiYrM04o30KrS~5$}6@dmnS# zikin@D{1KPyyFvbW0(1OlAM4LS2+tej16l9yADhTG(yMY;A0IygRoknjtMU^$|TFka(eN$fa_*(1Cp_ zVTN$=b6qsr`iOrosBtnE!LrW-V9rW&Kp`wvY*ErZs~?f@%Y#1~%r0CAdQ8fq!9Q@l zE>rzGhABe`O3HGn*TcB^Nd%h}dP~lNhKt$v!NGhsHEmuA1ag(^oxqX0E_-M*EF)p_ zQ^CY?V33DsI1PHl%J*c1M(Ys-q;EGOn#7E+42YkjZF7=fp8!=vA2;0AXnth>{{0c? z=sZB_y7_qIr6m1x=h9`}#@e^;Oh(IaS>W^+isl(z;0W^g(SR~{fWv;FZzvR*#Pd6e zzl8be_orn!p>Shk>R$Ah;z%gQ>_jP=h4$SL49xFUE{P-1vfv|gWC z=H$*>sDfA%)VZECz%w%vZ^qV34ka+;F-2Z=OoHME>uA64?>AUDFA=!fK;rSW0SwQ% zdPwMHfR@v7T8}H}xM9d0hXg3T@#k!sJRN4gdBu*SEhX{yHEA~x0-sSG9U(&{6ByUV z%u?|@5O0h<2k~0c866i-xjRH}(oj-tdO1R#g7qp`B;e$tGFn{)e+Zt7#@{U+YM89FY(2y`weAYdE7X?qEs zwYOJH+LoQTX$vJdsVSf$xh-0CB%)Pg|B1w#SH8w=DXy(xW5F@KAML&hci~2%vE@z zT4u~eNyp}blNoZ;&l|Jm48Nno4R6ftK4e)ZeXcD(b~tI2iZL;fUE0Y--W06UZ+<4kw-rsc_GaiKxpfg>tKNwFD-8J#wgkkI4VNW3+)s5 zdeGe5+}?lFi+ei{{+L2s>pJk_)LM$i>*PHX15&no6D5O<(fNOHZFPZ_S>B-%rUSFF zY|B}oM<-^)8j|QqG4#BcTfLZh zbEqAKjHZf8%Jw&DR$kvH(VW^Ij`M8TR&=o=B-lCqRY}P*ZACT>3Q8{mihwrLW3Ss7 z?Q*+v#d9lW;tBlyck9+I^`UFZJ9qdwL`~LVBHo`VSPf2)_Xjixk7KbHBFZMeoA6AJqU+k}h~&B((M5<>d+q+n z0u}FYwG)H+Zk}xJO_Vbz!P)Rl!_w$@NErHW3So4hQS3FX!2zpCa2w~Je5!qRblQo$ zQoyFb5dxRwTJa(5$b3g+k|Jp|Q%(M;4Bl9gLjMd1RNhGfB#$*I^XdLU37%V5>s`_R zr~TdLc!16wkO8URvvy8$LSF^wbfp;|1>Yc zzw|l=@3HFAYj^an9(^<3BX4l#Oss#*ELE@^j>7XT_7caAnJz(RqemGX*$P}m@wN`w z>_y&{nx_NUKA8X|B+*Zx=2~nxG3xvqJl3PEbuWT~XnsL=SuCGL>h#`VKq;rExochT zUZ@o=7;~IY2wTO^L;tB9Uud{;PzLix<)XX@<(Q>GLqpRFzK|K;?oDjf-Qd_gDe^Yk z<;TZgcvx0e<_OM&M{RZTg6Z+&$9bVq+0A&Mttt@};-*`Om}D#;T30RpLLA-k#<5qH zx%v=vbSVP^gUzSAJT#x8g*RAu@fuh`VId)1=GhfOsARo)bI;%Zpp`a?8z~YY5Cz%? z;J|o~q?e7R10K$dVFLWHpcy~XYckvakPnGQ4NIY@+JTCz83Ly^wTDBUnDr|pEdVSw zK2RS#wzTR++M^8j+}ll zbLaqb>;4Ss(Q6)ALBhTr-`N_#A`_WFe7TpI^xayu3Mw6=OdUM z-sYKAj!bPPB~qE$04)J;oP~jX;tL52X!#hLz!0I;qh5=-M<{O5lo~x6dwbyPfMCQ~ zQ{J?j)+9!=?$|NF#?0K>PXgIQPl*&&ba>lYAC)=xWNE^m$4zqrx6(lK&LuGv0qXk% z@xVz-mcc2|9f%TqHbN(gQR(HGub1EfTO~*z-4NZGv9V`fL37x-b!*lbuzNp{RMrX} zCkC_f#`W9g@9&dZNn0dS2MVkfM2ri?oIz*r+BDjV!@32(PYiQfPCv=KX|IjEgnpda zOk2h~>Fs|4s;NgdRD_`ZK87jSKIc~$ckX<<^JgQ78!mz)nSh0PQN#>@HeQC0@C~as zC7Lq#?G%+i?uo&*I^cX71nup|ufNTJmB7LWgTia!g+1-DF!iDvACd>(V{?e&8qOur zN6?h`HTbhQ@4Zs>v*QvxJeQhx_irly@PSF>%9Sfo7+2!+AJAx?oxwVsCvJX>=4Xyh zc0sc=9UJS)k4oAl0&0AH9zS}NiuLu3>zgQeuvgh+alY4w_rr$|E_e%nFA@&_)0XwY zf9`KKI4c3WfZu`a348z@JG*rIix(3aBMNXdkL_-Ky&K)oN4Bc@zkqnbpspL4L9Gt$ z^}{bfA@y6U1g?m<@`k5``aeLAD73EC_;6zmj_6_>r(!#%9O$s9jVR_!UvpimXEBPW48pOhH1Dk$+cJvDUfrsMSPwuXuW4eqP z%0TQl7-S6hwtsC{Y?|>2=OMoc_LMI-qc`@g^RrBtC+I7-s`SPeG>zuG$<3vq`1P~D z|FyPL_9?bCxkgE;G8GfaqUA;#^?ju=@Sre3ez&2a;U=i!6UUopEkABOA-4Av#%g-w z|K&-boyA`}by0Nv=Wz5e&rrgiMTQXBu=LA6gFQ^qc=`)@QlUZV`i|gAT%t3*i_Aj; zf#VUh`7LUnhMOmD@f-ijx;`O}$Xi#u)E959iI*L)PD5GP$L{v1e4bY&%-PvFh-s{fkPpYOcFR`xF~rHB zlSEGHW=v+wr1x8QKn|((3>)?>}$u z&CPQ@U{Q6m?8kxYXuop=ZAO%VekX}<2qUA8EyL$_`H!ojdWs}CW#{|%QWodezX4+i zPXAiag4=(h^)~W%2TImewuR3zYkG=5{0nm_AQYkT`&MvuD`f_$;TGNAbQu zilKfDPzN_wCBN+|hl%!VeB*B{dfAjf{leUM)Oo~1*>^w03YQ$!>j0n+mVLa`pyAFI!)&j{4mv1<`?`rblX zRdHHx+ECGtL6)@D>lvM?ru<5oqRkFjjQZ%RJCR1UkFm6T7}lYU(Q}=&i_;`eE3!P_ z6xv8;h`6-SgF`DJQyGr`x;27($r6O$J=p$k=5t-$#0!XaHk#U#qH!AUs6>yF#CSh2 zFVC$st0lqJi=hw0dGq2c;(XD8dKZmpMnZKuP4}|5`2K7J7&8{ zK{K==6}_6Gxl%JSr-frVWv^dD51@77qeo}gFB+f8vuPbk!&_0mT+GngUFeb|E-GWf z@_1upJfEnDhz4ay*=5`@#MlxH#mZPria}*1KOq;$%8QV;R=>H}Zhy$#o1X0)mg`5^ z^AtGHi-_dHg=p`bgvsI|DHiha$O0bUxS{;-maC_J z%&gp=DM9<9wXHFCj3NoGP_q() zrW_Qm8{Zrx;+WhdnY@3_J_oZGWnbaDqq$eF(lJQj>pg)#jY2N*nx)pNq-7>pcVrW) zO)c~;%Q_5vybkVzY&T!|DnbF#773$_%>&&OYUUINRgI?Z?9RJuj8~r*u3CJ%g`Rrn z?YNDixckBgoof1Ffa~SCg154Xl|-%9(b9502j&+Im7I@94ULUo?G}8+{0Z0fUBE3@ zo_#Bb8-r+Cy{nYT=<-v{0$!se($qI#kG|ty@cOyI+#++MP$N=om|`)yQQnjISQ6cN zKSvG?kchOKrRBV-j!xn>%&Qb7i;2p5!HSSVdU{7*0<4B2sSk%kqTo-PBJ)ipD~zk5 zTha@{isF~NN}|FHR7KkHHHXFqOAN{x-q<(_=5EE8e&FVTSctCA&|k`k38$?jy*!JK z-itmm(`z0cCQ|4l`~WxNA?xat++3YmG@QOZe^6guK90@qHaHl%x9Xr~x~o5ZvI?G9 z*N03_3R=pA+l$47V|L*^c)f^d3a5^rZQ8P!oRM)h84z~_Z;ri~L3GRQDIvLD3^ptT zz;=-;)Timtd-m+ve`F3ZD74Ds&kVFb2=U^$qVehM4dabu9`exSZiHp;Tu`vH%Cqa$ z)aYoL-pzzjceUsrjWaN7a65oFG1@nTxpJwu61LckGU7JRhFC#B#WAv=Z%Q(;SA{U< za0$L)4dkMvDEuMm6l*2(92)i#4>z|qN zdwP0aVmQGu`B)va#&K30O@lTc4VQBBcasL*^Rz}ydHv-dCAP$Iu5D!#445uB7+?Av zN8mRDWX>AQ2tx4W{m*i{IJfy6mGd~@ce$-7h zOy2rO7WyrQlSr24|B?}(Ln@3fB$FVt?FT})j(Gey?N&g*9P1H>Z>%$mM3nKr>?bJk zj;&u1b|qdxxu`qkxj0^~3Wt;`@`o`JtQmEODX|IfWoCZpoJ)_6JvzdLTYZt*)jUW& z@|Drj&<%_@HR((j16bE>9dKf<}3Q zyUErdNCh#$YlxH;;&f13%so(tU?YA8DQ!S*2~#`+RW+{rgL;|nJ4 zvnncg4B<4J#f3P&LPA2}=oK=RkdTn(!t{f2V&15$t+f}PaO0(y68>DOe*ZM(PE;e} zLjTL!L6Iy`$>BNNNh-v~8J~^9F87@fkB^I;zU1B*1Xtzxv++8{X7sS zt>|H4dzK0j)+zjr@r>`!KiBL&iS7ABP=%QB((x@@MoPVxJ83rm1p|Qq+#6i2Z^BA^ zVOpQ#X{C{X_Kp2}Ltu)IIyw?1x$TbMsD1@%Ab}h*NFR5H7lYn~g>64f<#aQh89#*d zXTel;2iKrwb1#^Vcta@qvF7*FvE`DzZbez739Ym5Em|VE?JjUnM1Pspbh;{D7`!w3 zXI6(Dr=n@F?S%~xocVj|Q>Uum0DbON7{W4j5zwn=J@vkSZbSjP8+#z^GXbiLOpna zChZrp0gPu*oozn#!|32XUaMV%Bvcrsd3y9?2*)n1w%4(>1cz_*SS1#cuWmo-Iyr+; zs@2rg=`=T-Koqh zYe%Ybn2DT!c?Jo(;MD`0b@+==er3(_03Q>Pyjg!6jVtssv6q(3hlrcxlYVT+7 zr6hi*V$6S*_`Ppix{tj4&96j}$FPptLwtNzC!k-dLA&rU|MkJ8OMxQ|JHRQ=O(BLE zd#JmoXJu0-Z;RVZg5U_F^fV!PcK_uXe-CJMg?_`FTv^{FVaV={#1|HN{6UAnz=3fp z+w|94g#sa=@#q^Eq=3pOI0$OSbJLaU7^y4>V@q?^(e)qS5$rB?;lu5kGn8No{+S*P z)BWZZBj%U0kK^xy=;&8R&>tv(s~r}IQL`P1v#@i64BGHmjG!Ntdx8rW{eDD;vni)P z?CVQHsgsflBTwt$byKr8ytdzGcWyll__+$>MWi$(If=I~Z@ ztO#x7KkRE3^#vN{iPy{;gzQ-cZWJ?qJ%HLpS?S0_ao*3R^f0YX>wUVm9+N{W2^G%Z zzn*XG3$t|5Uj(D^-G|l}-mo_}XXHX(Iz?OS;jMlxb75?^Rf34><}|>O7(l@cd0nQjDD@kfw0sI(7rA{pE{0eqe^1F@*En%`yUd>=#9cHd0AdHddAe zwkwtWdie(%j*is!$;#V|&i4G1{V2FNf4tX-o+d&n(#H$HyV4$Cw7=EnYN zlq5wW2IXWWD1pWO^BT?tE_6|svB+cu;BG%)X=e1ixbMvH&z*QvVx;B9-YRfea*O;4 zWW7Uh_Ww}PIfm=Yq>t;A2trxG6jxcgc`}ku$b;U&UXnXyQw!M`ejN4()NkFeIdAa< zN{Z}^)pn;XM-+SIMR?UBT{aLc=GjJ9uTv^-_9e}zv`c}gaoH2jnah>+E7<{O)G-#x z_iDvDSu~an&PJ;US}Q+E{KZX2$xv+6)bGmE$@!b`_C!;HSfc?<=0T+CktQ|yjs}-| z)1M)XyCNo6+tlpmPg~?pk0Hv;mWr|adp1??7W_**>+5Q7i4&R<5;oJO=R$N+!s?cL z7`>v!z?0M-Ygq6k1tZPo(%9ZHQo?SvQV%Q3V@=|pb8n*hcf$i_ljL5sw0%veD*3Z; z9nQ}C;DH}}T&p~*G~~n&oEHrb;CP%X3xk#*;}<@Gpwo@B>V&zg*m9sLw?8aGTT$`W zp+f3Aph%#B>N$C(2phz)UdJVyWy~xrX{WR-Z4$UUpNTC=;zWK4xc@(TdEmRcN_tw_ zD@v3!Fkja0z-=Q&PB&Sp=(*fwi-JI%KNd8|*~oM7Ks&)6>;6ICgl2V!FqgYuV;XQj zkL39<<({{f-*0?oOhB(u1_rT4@=d@UUQG3UZJvRL?am~evC*V6BiPJ_} zO3KI)oKRJRoF8V!q$`eg>HD4oXLn?)TQmGc8B+lCtW7Spiu4(wAX-RABaKAeP;x$ znlGGOPQ$voAw1kc<>+%CXolo&jU~;%V=7@SkOgbSCbMncDS=j^S9a~vY&bYYIGKeDkvu8WhBgR z8CN{xTD~UprJMFW@l%t1=c1^8LX6Y`Wuhx~Hpn*{j*WE5h>RIlm`$L|e$32fT#0RQ zCM}9B1SIY~7-Gm?BVibZtLB0{Pj36FeS3KCpCWocq^V^ywVgeO))MV7*S}IkvUS&x z|Gkcr6Z^D*-#WJ-sizI|Osg4KMb-hiUMqk{c%d(y+>OTfca_lH@+^xgIRkd)B#sQN zRv0)>eIdo!$@5fxXZP++s6UXEYQL2-*wczBqi;j(|7q__!)jdLzDtutgEBN1p-3f3 zvqo84b8TCQ+C_>c4P;9i$&j?9G*2Ru29cBoQ$m_F845+?Mgxg>e&=dG`+43E@BiET z?Oh%F*!!?k_geRLU)Op5rc-Ah>8{i7&{HvxBoUSjv1Bo?!^D;0Lt6r!ptyoEG|?WQ ze>3f)CSX~!a%&nFuhm~qf5Xu!Q})CaGmxr{Vt3p~cxGf|^u5Xp`{7U*;K8;}x8eJl zpM6N=sI5TCrwOFbXMLHyG)2u}b#A1jBB7G{`Avx`tLBXn%L}pR<=tib+fPN;36^+K zrGqJT4iP5JYyCB?MNE*pw#BHbh9oI>z4|<7pQS<|!eXeRqQY{uq@$dhrUPntc||k* zU>3kIbSP*Xv)z7e^LrDnpsmbTz3I~G*Dx+bF)DITpy!g2HsBGT^eWKp+aE6S-mJuc zp)tGB*_cYa8qi)UyLKR=;Qi!Ym6s&Y2>V+loXfBT<^>J(k%a7ZzrqKE z7lFqbf_0wm?uk-RV3uTj3`V_axnUIUT z^44j=OX`!-E0L*ai8)G74TiJ33x%mjd>Fnrd*w1WjRSIwoEK6Om1 zQmAmUN!wkv>*k7+8OFL|ki#~S0t&)P{fi{6RQ3>M)Y!{g21(Z81Q&1vN5%vEaunOf z(UkU@=;z^HW^fw$ez1@(xGA{zwUzn>z00@f1WNue|<1?rHV{@5FbvN2zzyFk9J zNzEM8nUij9Es#@YHpjDs7~z-V;Ow#pQ`s<5`P7r-1m3efgZA9L^tuyI^6HF@P42$t zx31m2ckit7KP`+Pw*@p8Ta07nE@WjfFRiE)1&fAokn z8bcGq)J3){C|}Dn=iyu+s=uCelLfUo4+`gI#E*XK?3$kus-VmD|DIk5=Br*3_!t6;(42rm)kK^#CezR=W zGi7=C24Ej;i=YEAMkr7*oTaTzt&81i74RUg)F^^IZdEQexen~q$m&`*gk7_S6oewM z2-JhbR-P1ZK5;QNR`~jh%*;inNOKu-pO=d(!ksoO*3*7XSZ)Zh#-m&31W@y$2N3dT z)X$hl0l@E0Y$4N49d>#&>s}xnI)oBSo!pEZz)HhezD*3q&1PplBayy$E-vP;nb zfMncKZ>V1=&l%J~CuM0RfmUv1yN)iryaQO{7R(koAuE24#&;kD|B6n(Fl%jw=tmG6 z-RyTt*laUf7fBJMwfuI^KbTqy`=SO@`{0HCOI`!~QcF8iWg5MD;SSvn^|Hdo+bb_* zSbjPQtnumMM~PWNglAcq+IW0ScS~%i166(pRYix_IInk>cXQ3q!5$tOI^!zF6z&xR z`|7{&T~y{M>kyIKQ&efNi_7|9oq6FiXVp(xdgtQe*7#zqC%^B4+FfI}`52;L> zCJzg#Nh)u?E&7MLB^?u=f747QN9t{{MeG;cM$&9vA*S~!0>yI%W!>hZJPONmtfs-< zE48#b&*c2tm=wX!20_*!9k$hT zkEIX{0Yt7@n^9uk$|dTPUI~IRJ;A1dY7tclP(bX|xGS<$q0d5$26Xt<%moq|x_yNb zl(s>+85wWZ9$0Yj{Yq~{jV>6_dbioeWqBV*ieinBVW{?dWMpc%6V*U-47xj!zOZuc z60W_r%x2(^FJ;r&bpzNgUAdCP;p#F2%R=|w%a=cNw~_MgfnVZ2#v|TTCOp)by>RJ- zoV{@OL!9nJm(DWfXn7vcs8;Xo$1H!uu+z*8x&UWLKX%nqoR4K!oSml~y^o4vN9(6} z<`ethY034fa0U?oxtX>EJ7t{hzdqq8cX0oUryWLg%fIesUI9*4Pd_7}p_qgMSVBSN zq)!PQ7hXRx3{_GVD3Hr^Vv_*0ZJzv!4Gnx_LtO~@_Yf)PpDd#%{m5r|#?SZ&{q1AC zaf5i+b>6fWvQ z36Km+m;2_N=5Vx0L(10F8zO8Uz%XF{{Od}Pd8`iEua4eaRB_vqVa2mY@9-~?@ReVV zA$-Z0RQDOAxjUhDVv~1r+CMzX%#wO=jkHd5^^WC%IGSZEnR?IHkA24kksE8()qirT zc2Z5Ybf+9c)1ZO~Pt3O{>PC zZ+1-z&Dx%L=;x1HVX*Kls-2m9*-YE}UNwHRvT;hUV4gwqsU1B){W*Ey`-@wo@k)kE zrMwyZ60DTj!nUe0H;M)S7N;lwfRf8;_Vqw*6X15>C54CD)K9X}^}K(t9=}X8B(;LJ z{g7cs>;CmvqjM zsZZ4%Try#1V7joJ<8P;Zc?u|(b;kWe^E~SL*{yIwlfFlj=s5nPcL75_dI3i02f=Z~ zVw4d867=~(l-=VAiJjq624zZtH!BN5G0oG0oSYukxn ztt6;-1MlJN`vYafh3YlB2gi;XKI=Z~y2;K?K8v}|+Y^5Er^54PC|?^BPm@_CL$yFa zK!Eb#@t1M?XGyKC?%k(JUaw<0IpTVUCgufdL~{(l!?9C^fSKJ%T6CNydTy)Y9`Jht zr>{K(PoC8gG&bx5VaZNg=8s#ytT%)@oPOcjzd+c8*RO*Cx1(4z{?-?lUEZPP_~DG$ul zs;2Eo)?~GL+YlQn0f(d1$WlU?X{qP^%kx|9XYtfRM@D?U^Epzt<`Q&)C@-`QaLs|F* zsa+lz=%IQDoYCXPTPMh0#rb@-`M--jN$;N)@zIA-d-y<8EMw)?xYWkH=+k#-7v0j= z?LnPi1N)j z9-Qg+oydRRnY8W(4+mk$zR6IPEYpx@xB>Ma3m1NGK#birJmcbF1DCs3>jx7yPhI$&fcD4B zmtEZ2XxS>-zG-F#S}(^ zqQb%``1ne|^V*#zp$!~8O|@9X${;vAxOIZz$cv{VV`pH7=n~HAgJkN^dVku5j%dz!iK+(EEIt8wuEteJYP^{+N^d430D-~XGOb# z-v{Mpml|tjWw;mAZwx>G5@dC>p1|Q%4wgA%3ItdoEjXmFJe$gP2-MbcyQD#0OC6pw zd?2H=&30?S%zQv?G$XIDu-Ahn#dlb@MpC(rSjhm@Af25-BJq;(9|&FlS3#6UIRv}Q z`~f(-y8|zULjMBG`J36n<@jdS&(~xOAbG;X?bL6WD%-goQu>8G8Q?Zg)$x!##}(CM z8ejD3t~h$=s6e@HE!bz1gaj49(~3v6sNWJVZY0 z8KR`L*?asQ7o+2IOH0ca$TzgC_jr8DX2>79Ssf@vh%ga9rhp3a5Rl z_I}UV5+_2X#3_^F8m7XpEIpz{@O9B0LFJP;VSkG;KL*^Cn#8<}XZj0X5q`@OW|x?o z=Ux-OsYmSCUGi8O70lnZqfI9Ua4QTp<_Y=5cnhr#pMLe+uU@>t=eq7$GS!ifIDHs% zT-CF2`s45+1_rq-w`cjfOcbLz^P%q`70SKVR`vNM?@03S1cP;*%U+KcuBtbTdGWEK z4ZXr;@x%%*s=@lurGN>`Em#XHnBh;N3Y4bG`?=ZnkH)9Go+`t~A1sW_r>y912 zv=!4cA6l%rf5&3(WO!$9my?t{ziCCe=7I3SLJ!M@-^T~P9z!()b5Cph51pQ6 z;lqBUY?4fptNXF54gmCP;N1;i$QUiCJmu5v^;k zusWx7JeSN*VB?u(0mEVx%?bEtTS)!_@OW=tkv=GB;!}oXv%jm2Mfz4?a7>*3Z$T|~ zLc$t?l@(5gAo2(jewY9gZL8h;>bJXn`*h5urdQc?UlygX!Z<}#CFUt~1oeKmT+U!S zA3lH%%nj9^#5@TJ9j>P{L%&IbBKbC(dyFV(I_T$uZIly;7Pl@vJT*C|&xZ$o{B_S8 zT+>~rPD!u(c^1lR-emJGI|WZyr|sKQ`ORz^eG8~80hQmL)<0QyJh>+hEDw0$O*G;V zV0@&s?m@p!>bQHMfn95IYom>YcNf*oqG%Y`+;_avDbKIXKN9$3!e<9H6_|2ti4y+{ zF3sLDuiCsm-hlOgT6B?n!rU0D8=9}Y9egi(%uHluiLYOXD2a6-6USS zhLP&xc5Bn0>L;P-XtpN^Vr*hg?ZL==#v|vnWu7Srz{n$?2Q42`c+~=KX0bP?Aw3)+ z+avn%*U9~5tFKxT;oH|J4kjI)M;hXd%P1JVBC)fuEH;+eU0HpHg5*^lKJ3WQc#&NG zg}QU|6Rbu@*mi!0osIaPbxWPPF+TCHQF8oZYd!fC`HxeQ0d<@%v-BOaNx?9bC! zHZyY8jQIngNP6h^%Edmd=REXCc$7Ii+HZWlZS`_k300&PB;j?WE~Pqe1a0HNwIx1r z*OMbg8rpcd_s+a>Q3jQip2*(Qp`nK309}6xm9Kw2sl({E!&t&xLNtKV=(fNj>H9Qs zO%j#vYHPHW6oRN(c#Y3xF6knmOAC~QM??{y2?Ys7^=mzjP3G(n;rPb2Q;t{LqIsl| z=ofX}X&4*3`bM42_f@B*W1u4jl?yajCBr9iiFmeOKgar+pFb`#^3mc`IKBuF)gYnW zYoYa(3GDo=nA^QDaPc|eb4essvay$I;&FC{ z09gvEsdoh+@P@%(e1t^(a<;XATly*wfqbX@v8Iqx_ywdJ&hF$168xdCdB2F&Goa;> z%aLTn8!7`AAkW`dH}a3Pwh4uMi?XNRf%58Ve*X3u&R2+z&Z-Q1(v$m)nQejG=Kda> zkq<%l_>3VZ{WQe3yL>bxQeF1QNggvwV?z^z5o;FK6nhn`xLR27Vsa1HKX=yAQBAk| z2si82&YoQemmyfTLO*|hUzmvN&ttY_wHLKXvw|^#a+rq4T&FS$=tpAek|R{AF_cINqXd6d+d0Vb`e^;$E4tYtll?Kn&rw@RtKe=y06=miHX1{|EpX`? z_POIwd8`61Z7Xsgrlnnlo9#S3^Ybe)BN21cBx&R@FaBZYS=`4gSJKL=nv@e06PM#? ztGg0rx(#c7w=bvc`G94XMR)5BKeKiAlAjb(&i1Nb+L*{`3I(ol-Qs(>wpazOo}Q`P z(d}JanFGxq`4umUZK#WWT%1yaoG}BHltnWj#=*;0k2iN1a(7o!Hseljl&$EZ!=E5D z!)J<1r+xliAN|&=We?&5Nu;4Zs$YVZ~7 z@u&9owFb*ba=!Eb;%k2Kd(cO(_^N8Cb-6wEAWD>|Jkbax^?S%ZWY+lpY*(7AI ztp%^Qpdu1gbbYesYMQwwK&Y>9zBAG`jvbrnnlpH0oN?n=ubi0Ai@TF@9-@(;YXEUz zDJa3;jKg?E^G@cxOoc9NL?|8(NsL`39W&u)2})UtLW6d%?oEdG%6Yz3KN=O)VK*&J z0))J(H@>^&w+$QmTBsH3GgKI0^F`}@fFQ``-Z=HbV!_9}_+qqT6C1wAZ`8=jSRrl~ z^cZ^FI!sFQ=)Orlb1@Qr(g81M4CZeQ?7WLv)Ly*gAah6vYvt{YqvMR&d-XMuj}X`M zmQ*MZqw%q6c7RBnJ`?xV%__8rQj$)5K$pAS{tfGTMgG_IGW$H=|M+oem{=ODES5Bw z5ld6`Fco!k&f_|{f3JBHu6gPn|J}(z5|&{LGX+LNqK?FzD8wtRAS)akKQ3yQYCAeK z7ePCIu3yzT2)9!+YW>SE1$vCoc6<56lUACaK>?8#Rf%|Dzf;(EVRIEH^Tbom5$(By zBCX35m-RoMHMQ2$mrm%2=@Xik-5q%iO<>AfU!i1Ft(JVo>Ke`BxvgdsU!59U<|eUArclCu-xC|2EOkHIjUdBC4XGy43nKG^IRii!rQBUHg?+zqYV z;CZFR&8!v1OE)>UkZ$rQ-C&aRue$994e`vGr8MAaaYJHxizpyr+_yg+PKoCywimt=+gmHacULfG7&;bw0 zuBiQJ_J93!^a4o{j3=%%pH<2f)h_yX-P5!Biq^fojZLOH2~J9%KDVTM|5ncPuS}sq z+bOy~KE$f+_3&^eY=W{tgoA%fG{!zU2>yGlX_6!AOIcV=y{`-}E8t}~z zm{vQTaF+-J`rRzvbW;ensDfl;j&s71rB+BCy8-Y^(llD)dI6L-xodo@5AivPRC>| z9E0$k77O2UwqBeJNr_namb+D9_U!%{H#Ko$2D0(*hDGl`y<#*A5|r2=u=-E0NEvT^ zj{o!x+}x2**m=|(|MRO>;{WN7dGKpbTQnCNUfkcdS~{EhaI&!t&74DjfLB#?!}Ndr h|394m9RBwQ!r78qc0xcvLxBDl!^FZk-_SAizW{DYRWkqp literal 0 HcmV?d00001 diff --git a/docs/faq.md b/docs/faq.md index 93d76c67fb..cf174aae8d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -91,7 +91,7 @@ like Intel Haswell. There once was an effort to build an OpenCL implementation t We obtained a performance comparable with Intel MKL that actually outperformed Intel MKL in some cases. Here is the result of the DGEMM subroutine's performance on Intel Core i5-2500K Windows 7 SP1 64-bit: -![Single Thread DGEMM Performance on Intel Desktop Sandy Bridge](http://xianyi.github.com/OpenBLAS/dgemm_snb_1thread.png) +![Single Thread DGEMM Performance on Intel Desktop Sandy Bridge](dgemm_snb_1thread.png)


      From 46b0dfef8ff4dc0f71885d7d6ae07811a68def4b Mon Sep 17 00:00:00 2001 From: "Igor S. Gerasimov" Date: Sat, 21 Jun 2025 11:35:02 +0200 Subject: [PATCH 017/360] Use links to issues --- docs/faq.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index cf174aae8d..de2f54bc38 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -220,8 +220,8 @@ lead to compiler error messages about an "ABI change" when compiling AVX512 code ### Building OpenBLAS on POWER fails with IBM XL Trying to compile OpenBLAS with IBM XL ends with error messages about unknown register names -like "vs32". Working around these by using known alternate names for the vector registers only leads to another assembler error about unsupported constraints. This is a known deficiency in the IBM compiler at least up to and including 16.1.0 (and in the POWER version of clang, from which it is derived) - use gcc instead. (See issues #1078 -and #1699 for related discussions) +like "vs32". Working around these by using known alternate names for the vector registers only leads to another assembler error about unsupported constraints. This is a known deficiency in the IBM compiler at least up to and including 16.1.0 (and in the POWER version of clang, from which it is derived) - use gcc instead. (See issues [#1078](https://github.com/OpenMathLib/OpenBLAS/issues/1078) +and [#1699](https://github.com/OpenMathLib/OpenBLAS/issues/1699) for related discussions) ### Replacing system BLAS/updating APT OpenBLAS in Mint/Ubuntu/Debian @@ -268,7 +268,7 @@ path (usually either /usr/local/include, /opt/OpenBLAS/include or whatever you s This is due to different interpretations of the (informal) standard for passing characters as arguments between C and FORTRAN functions. As the method for storing text differs in the two languages, when C calls Fortran the text length is passed as an "invisible" additional parameter. Historically, this has not been required when the text is just a single character, so older code like the Reference-LAPACK bundled with OpenBLAS -does not do it. Recently gcc's checking has changed to require it, but there is no consensus yet if and how the existing LAPACK (and many other codebases) should adapt. (And for actual compilation, gcc has mostly backtracked and provided compatibility options - hence the default build settings in the OpenBLAS Makefiles add -fno-optimize-sibling-calls to the gfortran options to prevent miscompilation with "affected" versions. See ticket 2154 in the issue tracker for more details and links) +does not do it. Recently gcc's checking has changed to require it, but there is no consensus yet if and how the existing LAPACK (and many other codebases) should adapt. (And for actual compilation, gcc has mostly backtracked and provided compatibility options - hence the default build settings in the OpenBLAS Makefiles add -fno-optimize-sibling-calls to the gfortran options to prevent miscompilation with "affected" versions. See ticket [#2154](https://github.com/OpenMathLib/OpenBLAS/issues/2154) in the issue tracker for more details and links)
      ### Build fails with lots of errors about undefined ?GEMM_UNROLL_M From aa90ab4142728146247a32898ddb840a6788b7cb Mon Sep 17 00:00:00 2001 From: davidz-ampere <> Date: Tue, 24 Jun 2025 00:12:34 -0400 Subject: [PATCH 018/360] Add support for Ampere AmpereOne processors --- Makefile.arm64 | 16 +++------------- cpuid_arm64.c | 9 ++------- getarch.c | 19 +------------------ kernel/arm64/KERNEL.AMPERE1A | 1 - param.h | 2 +- 5 files changed, 7 insertions(+), 40 deletions(-) delete mode 100644 kernel/arm64/KERNEL.AMPERE1A diff --git a/Makefile.arm64 b/Makefile.arm64 index 7bf178a29c..b278526917 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -191,22 +191,12 @@ endif endif endif -# Detect Ampere AmpereOne(ampere1) processors. +# Detect Ampere AmpereOne(ampere1,ampere1a) processors. ifeq ($(CORE), AMPERE1) ifeq (1, $(filter 1,$(GCCVERSIONGTEQ12) $(ISCLANG))) -CCOMMON_OPT += -march=armv8.6-a -mtune=ampere1 +CCOMMON_OPT += -march=armv8.6-a+crypto+crc+fp16+sha3+rng ifneq ($(F_COMPILER), NAG) -FCOMMON_OPT += -march=armv8.6-a -mtune=ampere1 -endif -endif -endif - -# Detect Ampere AmpereOne(ampere1a) processors. -ifeq ($(CORE), AMPERE1A) -ifeq (1, $(filter 1,$(GCCVERSIONGTEQ13) $(ISCLANG))) -CCOMMON_OPT += -march=armv8.6-a -mtune=ampere1a -ifneq ($(F_COMPILER), NAG) -FCOMMON_OPT += -march=armv8.6-a -mtune=ampere1a +FCOMMON_OPT += -march=armv8.6-a+crypto+crc+fp16+sha3+rng endif endif endif diff --git a/cpuid_arm64.c b/cpuid_arm64.c index ec16923af8..061a3d8f25 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -80,7 +80,6 @@ size_t length64=sizeof(value64); // Ampere #define CPU_EMAG8180 10 #define CPU_AMPERE1 25 -#define CPU_AMPERE1A 26 // Apple #define CPU_VORTEX 13 // Fujitsu @@ -114,8 +113,7 @@ static char *cpuname[] = { "FT2000", "CORTEXA76", "NEOVERSEV2", - "AMPERE1", - "AMPERE1A" + "AMPERE1" }; static char *cpuname_lower[] = { @@ -341,10 +339,8 @@ int detect(void) else if (strstr(cpu_implementer, "0x50") && strstr(cpu_part, "0x000")) return CPU_EMAG8180; else if (strstr(cpu_implementer, "0xc0")) { - if (strstr(cpu_part, "0xac3")) + if (strstr(cpu_part, "0xac3") || strstr(cpu_part, "0xac4")) return CPU_AMPERE1; - else if (strstr(cpu_part, "0xac4")) - return CPU_AMPERE1A; } // Fujitsu else if (strstr(cpu_implementer, "0x46") && strstr(cpu_part, "0x001")) @@ -697,7 +693,6 @@ void get_cpuconfig(void) break; case CPU_AMPERE1: - case CPU_AMPERE1A: printf("#define %s\n", cpuname[d]); printf("#define L1_CODE_SIZE 16384\n"); printf("#define L1_CODE_LINESIZE 64\n"); diff --git a/getarch.c b/getarch.c index 3bec705789..cb0b3cd7ca 100644 --- a/getarch.c +++ b/getarch.c @@ -159,7 +159,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* #define FORCE_CK860FV */ /* #define FORCE_GENERIC */ /* #define FORCE_AMPERE1 */ -/* #define FORCE_AMPERE1A */ #ifdef FORCE_P2 #define FORCE @@ -1603,27 +1602,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. "-DL2_SIZE=2097152 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DARMV8 " \ - "-march=armv8.6-a -mtune=ampere1" + "-march=armv8.6-a+crypto+crc+fp16+sha3+rng" #define LIBNAME "ampere1" #define CORENAME "AMPERE1" #endif -#ifdef FORCE_AMPERE1A -#define FORCE -#define ARCHITECTURE "ARM64" -#define SUBARCHITECTURE "AMPERE1A" -#define SUBDIRNAME "arm64" -#define ARCHCONFIG "-DAMPERE1A " \ - "-DL1_CODE_SIZE=16384 -DL1_CODE_LINESIZE=64 -DL1_CODE_ASSOCIATIVE=4 " \ - "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 -DL1_DATA_ASSOCIATIVE=4 " \ - "-DL2_SIZE=2097152 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ - "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ - "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DARMV8 " \ - "-march=armv8.6-a -mtune=ampere1a" -#define LIBNAME "ampere1a" -#define CORENAME "AMPERE1A" -#endif - #ifdef FORCE_THUNDERX3T110 #define ARMV8 #define FORCE diff --git a/kernel/arm64/KERNEL.AMPERE1A b/kernel/arm64/KERNEL.AMPERE1A deleted file mode 100644 index 46a34469c3..0000000000 --- a/kernel/arm64/KERNEL.AMPERE1A +++ /dev/null @@ -1 +0,0 @@ -include $(KERNELDIR)/KERNEL.NEOVERSEN1 diff --git a/param.h b/param.h index 6917cd2456..d5537d2ada 100644 --- a/param.h +++ b/param.h @@ -3635,7 +3635,7 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #define CGEMM_DEFAULT_R 4096 #define ZGEMM_DEFAULT_R 4096 -#elif defined(AMPERE1) || defined(AMPERE1A) +#elif defined(AMPERE1) #if defined(XDOUBLE) || defined(DOUBLE) #define SWITCH_RATIO 8 From 8953ba9c2f584c43c777518cbb0eba059666661a Mon Sep 17 00:00:00 2001 From: azuresky01 <167838430+azuresky01@users.noreply.github.com> Date: Tue, 24 Jun 2025 14:27:15 +0800 Subject: [PATCH 019/360] Fix INTERFACE64 builds on Loongarch64 with LLVM fix https://github.com/OpenMathLib/OpenBLAS/issues/5331 --- Makefile.system | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile.system b/Makefile.system index 38646c3c6b..072e4b1409 100644 --- a/Makefile.system +++ b/Makefile.system @@ -1191,6 +1191,13 @@ endif else ifeq ($(ARCH), $(filter $(ARCH),mips)) FCOMMON_OPT += -mabi=32 endif +ifeq ($(ARCH), $(filter $(ARCH),loongarch64)) +ifdef INTERFACE64 +ifneq ($(INTERFACE64), 0) +FCOMMON_OPT += -fdefault-integer-8 +endif +endif +endif else ifdef BINARY64 ifneq ($(OSNAME), AIX) From 3bba35b8f7f4958a1af5aef5a29d637564521f14 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 24 Jun 2025 09:01:47 +0200 Subject: [PATCH 020/360] Remove non-portable option from objcopy calls --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01b058b826..115ee6a3e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -541,13 +541,13 @@ message(STATUS "adding postbuild instruction to rename syms") if (NOT USE_PERL) add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD COMMAND sh ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def - COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/${OpenBLAS_LIBNAME}.so + COMMAND objcopy --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/${OpenBLAS_LIBNAME}.so COMMENT "renaming symbols" ) else() add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def - COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so + COMMAND objcopy --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so COMMENT "renaming symbols" ) endif() From 5aa483e16cfda07ca2df0b6ef88696f757bba3a4 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 24 Jun 2025 17:37:34 +0200 Subject: [PATCH 021/360] Use response files on old PPC/Intel Macs in single-target builds too --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 115ee6a3e9..905295bc52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -305,8 +305,8 @@ if (USE_OPENMP) endif() endif() -# Fix "Argument list too long" for macOS with Intel CPUs and DYNAMIC_ARCH turned on -if(APPLE AND DYNAMIC_ARCH AND (NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64")) +# Fix "Argument list too long" for macOS with POWERPC or Intel CPUs +if(APPLE AND (NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64")) # Use response files set(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) # Always build static library first From 134b21ae60bc7a639795e58ad17f90fe6809097a Mon Sep 17 00:00:00 2001 From: zhoupeng Date: Mon, 26 May 2025 10:57:25 +0800 Subject: [PATCH 022/360] Fix some hyperthreading errors. When there are multiple NUMA nodes and hyper-threading causes adjacent logical cores to share a physical core (e.g., common -> avail[i] = 0x5555555555555555UL), the numa_mapping function should not use a bitmask for filtering, as this would lead to redundant masking with the subsequent local_cpu_map function. --- driver/others/init.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/driver/others/init.c b/driver/others/init.c index cd10e8d369..f27955184b 100644 --- a/driver/others/init.c +++ b/driver/others/init.c @@ -391,7 +391,15 @@ static void numa_mapping(void) { core = 0; for (cpu = 0; cpu < common -> num_procs; cpu ++) { bitmask_idx = CPUELT(cpu); +/* + * When common->avail[i] = 0x5555555555555555UL (indicating that adjacent logical cores share a physical core), + * using it as a mask may overlap with the local_cpu_map function's role, leading to only half of the real physical cores being detected. + */ +#ifdef ARCH_LOONGARCH64 + if (common -> node_info[node][bitmask_idx]) { +#else if (common -> node_info[node][bitmask_idx] & common -> avail[bitmask_idx] & CPUMASK(cpu)) { +#endif common -> cpu_info[count] = WRITE_CORE(core) | WRITE_NODE(node) | WRITE_CPU(cpu); count ++; core ++; @@ -930,8 +938,12 @@ void gotoblas_affinity_init(void) { if (common -> num_nodes > 1) numa_mapping(); +#ifdef ARCH_LOONGARCH64 + common -> final_num_procs = common -> num_procs; +#else common -> final_num_procs = 0; for(i = 0; i < common -> avail_count; i++) common -> final_num_procs += rcount(common -> avail[i]) + 1; //Make the max cpu number. +#endif for (cpu = 0; cpu < common -> final_num_procs; cpu ++) common -> cpu_use[cpu] = 0; From 0904a42fa4be7fdf1ef15e135ff0fd6d3abd5d4b Mon Sep 17 00:00:00 2001 From: Maarten Baert Date: Wed, 25 Jun 2025 15:47:48 +0200 Subject: [PATCH 023/360] Fix documentation error and ordering bug in DLASD7 --- lapack-netlib/SRC/dlasd7.f | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lapack-netlib/SRC/dlasd7.f b/lapack-netlib/SRC/dlasd7.f index ff9ba4c36a..ce3deed63e 100644 --- a/lapack-netlib/SRC/dlasd7.f +++ b/lapack-netlib/SRC/dlasd7.f @@ -101,7 +101,7 @@ *> On entry D contains the singular values of the two submatrices *> to be combined. On exit D contains the trailing (N-K) updated *> singular values (those which were deflated) sorted into -*> increasing order. +*> decreasing order. *> \endverbatim *> *> \param[out] Z @@ -454,7 +454,7 @@ SUBROUTINE DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, * * Check if singular values are close enough to allow deflation. * - IF( ABS( D( J )-D( JPREV ) ).LE.TOL ) THEN + IF( ( D( J )-D( JPREV ) ).LE.TOL ) THEN * * Deflation is possible. * @@ -490,7 +490,14 @@ SUBROUTINE DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, CALL DROT( 1, VF( JPREV ), 1, VF( J ), 1, C, S ) CALL DROT( 1, VL( JPREV ), 1, VL( J ), 1, C, S ) K2 = K2 - 1 - IDXP( K2 ) = JPREV +* +* Insert the deflated index in the correct position in IDXP. +* If J - JPREV is greater than 1, the indices in between +* must be shifted to preserve the correct output order. +* + DO 130 JP = JPREV, J - 1 + IDXP( K2 + J - 1 - JP ) = JP + 130 CONTINUE JPREV = J ELSE K = K + 1 From 1dde4a13c0d5749ac9befaacab6f5ec9a4df6c35 Mon Sep 17 00:00:00 2001 From: pratiklp00 Date: Thu, 26 Jun 2025 00:03:38 -0500 Subject: [PATCH 024/360] p11 changes --- TargetList.txt | 1 + cpuid_power.c | 4 ++++ driver/others/dynamic_power.c | 10 ++++++++++ getarch.c | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/TargetList.txt b/TargetList.txt index 232e12ffa6..0c94869e7a 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -52,6 +52,7 @@ POWER7 POWER8 POWER9 POWER10 +POWER11 PPCG4 PPC970 PPC970MP diff --git a/cpuid_power.c b/cpuid_power.c index 1ced8930a5..2b2c32eeab 100644 --- a/cpuid_power.c +++ b/cpuid_power.c @@ -131,6 +131,7 @@ int detect(void){ if (!strncasecmp(p, "POWER8", 6)) return CPUTYPE_POWER8; if (!strncasecmp(p, "POWER9", 6)) return CPUTYPE_POWER9; if (!strncasecmp(p, "POWER10", 7)) return CPUTYPE_POWER10; + if (!strncasecmp(p, "POWER11", 7)) return CPUTYPE_POWER10; if (!strncasecmp(p, "Cell", 4)) return CPUTYPE_CELL; if (!strncasecmp(p, "7447", 4)) return CPUTYPE_PPCG4; @@ -171,6 +172,9 @@ int detect(void){ int id; __asm __volatile("mfpvr %0" : "=r"(id)); switch ( id >> 16 ) { + case 0x82: // POWER11 + return CPUTYPE_POWER10; + break; case 0x80: // POWER10 return CPUTYPE_POWER10; break; diff --git a/driver/others/dynamic_power.c b/driver/others/dynamic_power.c index 4c1f4a26e0..f0afe3eb6c 100644 --- a/driver/others/dynamic_power.c +++ b/driver/others/dynamic_power.c @@ -70,6 +70,9 @@ static int cpuid(void) #endif #ifdef POWER_10 else if (arch >= POWER_10) return CPU_POWER10; +#endif +#ifdef POWER_11 + else if (arch >= POWER_11) return CPU_POWER10; #endif return CPU_UNKNOWN; } @@ -173,6 +176,13 @@ static struct { .cpu_type = CPU_POWER10, }, + { /* Power11 */ + .pvr_mask = 0xffff0000, + .pvr_value = 0x00820000, + .cpu_name = "POWER11 (raw)", + .cpu_type = CPU_POWER10, + }, + { /* End of table, pvr_mask and pvr_value must be zero */ .pvr_mask = 0x0, .pvr_value = 0x0, diff --git a/getarch.c b/getarch.c index cb0b3cd7ca..76c1aaff8d 100644 --- a/getarch.c +++ b/getarch.c @@ -836,7 +836,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "POWER9" #endif -#if defined(FORCE_POWER10) +#if defined(FORCE_POWER10) || (FORCE_POWER11) #define FORCE #define ARCHITECTURE "POWER" #define SUBARCHITECTURE "POWER10" From 55bb5ef86743efa8378dc5bf3643468578dd65aa Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 26 Jun 2025 10:50:44 +0200 Subject: [PATCH 025/360] Add compiler options for Ampere One --- cmake/cc.cmake | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 66b316f7f0..91037e8511 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -236,6 +236,18 @@ if (${CORE} STREQUAL NEOVERSEN1) endif () endif () +if (${CORE} STREQUAL AMPEREONE) + if (NOT DYNAMIC_ARCH) + if (${CMAKE_C_COMPILER_ID} STREQUAL "NVC") + set (CCOMMON_OPT "${CCOMMON_OPT} -tp=neoverse-n1") + elseif (${GCC_VERSION} VERSION_GREATER 12.1) + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.6-a+crypto+crc+fp16+sha3+rng -mtune=ampereone") + else () + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.6-a+fp16") + endif() + endif () +endif () + if (${CORE} STREQUAL ARMV8SVE) if (NOT DYNAMIC_ARCH) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) From 560fa88c962d769849f7794e5d5562f420a278ae Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 26 Jun 2025 10:57:30 +0200 Subject: [PATCH 026/360] Add cross-build parameters for Ampere One --- cmake/prebuild.cmake | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index 4c100a770a..8afe8b3878 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1195,6 +1195,33 @@ endif () set(ZGEMM_UNROLL_M 4) set(ZGEMM_UNROLL_N 4) set(SYMV_P 16) + elseif ("${TCORE}" STREQUAL "AMPEREONE") + file(APPEND ${TARGET_CONF_TEMP} + "#define L1_CODE_SIZE\t16384\n" + "#define L1_CODE_LINESIZE\t64\n" + "#define L1_CODE_ASSOCIATIVE\t4\n" + "#define L1_DATA_SIZE\t65536\n" + "#define L1_DATA_LINESIZE\t64\n" + "#define L1_DATA_ASSOCIATIVE\t4\n" + "#define L2_SIZE\t2097152\n\n" + "#define L2_LINESIZE\t64\n" + "#define L2_ASSOCIATIVE\t8\n" + "#define DTB_DEFAULT_ENTRIES\t64\n" + "#define DTB_SIZE\t4096\n" + "#define HAVE_VFPV4\n" + "#define HAVE_VFPV3\n" + "#define HAVE_VFP\n" + "#define HAVE_NEON\n" + "#define ARMV8\n") + set(SGEMM_UNROLL_M 16) + set(SGEMM_UNROLL_N 4) + set(DGEMM_UNROLL_M 8) + set(DGEMM_UNROLL_N 4) + set(CGEMM_UNROLL_M 8) + set(CGEMM_UNROLL_N 4) + set(ZGEMM_UNROLL_M 4) + set(ZGEMM_UNROLL_N 4) + set(SYMV_P 16) elseif ("${TCORE}" STREQUAL "VORTEX") file(APPEND ${TARGET_CONF_TEMP} "#define ARMV8\n" From 83a01d29ca3abaccf47ac3e5017d091518fa3e86 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 26 Jun 2025 17:47:20 +0200 Subject: [PATCH 027/360] Revert "Fix out-of-bounds accesses in ?/SCAL/?GEEV triggered by preceding errrors/invalid inputs" --- lapack-netlib/SRC/cgeev.f | 6 +++--- lapack-netlib/SRC/dgeev.f | 6 +++--- lapack-netlib/SRC/sgeev.f | 6 +++--- lapack-netlib/SRC/zgeev.f | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lapack-netlib/SRC/cgeev.f b/lapack-netlib/SRC/cgeev.f index af14aa73ac..bb41599d1d 100644 --- a/lapack-netlib/SRC/cgeev.f +++ b/lapack-netlib/SRC/cgeev.f @@ -485,12 +485,12 @@ SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA .AND. INFO.GT.0 ) THEN + IF( SCALEA ) THEN CALL CLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, W( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) - + IF( INFO.GT.0 ) THEN CALL CLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, W, N, IERR ) - + END IF END IF * WORK( 1 ) = SROUNDUP_LWORK(MAXWRK) diff --git a/lapack-netlib/SRC/dgeev.f b/lapack-netlib/SRC/dgeev.f index fc73bb226b..4677b9f520 100644 --- a/lapack-netlib/SRC/dgeev.f +++ b/lapack-netlib/SRC/dgeev.f @@ -506,17 +506,17 @@ SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA .AND. INFO.GT.0) THEN + IF( SCALEA ) THEN CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WR( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WI( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) - + IF( INFO.GT.0 ) THEN CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WR, N, $ IERR ) CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WI, N, $ IERR ) - + END IF END IF * WORK( 1 ) = MAXWRK diff --git a/lapack-netlib/SRC/sgeev.f b/lapack-netlib/SRC/sgeev.f index adf1a1a9de..93f9932651 100644 --- a/lapack-netlib/SRC/sgeev.f +++ b/lapack-netlib/SRC/sgeev.f @@ -504,17 +504,17 @@ SUBROUTINE SGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA .AND. INFO.GT.0) THEN + IF( SCALEA ) THEN CALL SLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WR( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) CALL SLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, WI( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) - + IF( INFO.GT.0 ) THEN CALL SLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WR, N, $ IERR ) CALL SLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, WI, N, $ IERR ) - + END IF END IF * WORK( 1 ) = SROUNDUP_LWORK(MAXWRK) diff --git a/lapack-netlib/SRC/zgeev.f b/lapack-netlib/SRC/zgeev.f index 6cf5c669cf..b968900e2f 100644 --- a/lapack-netlib/SRC/zgeev.f +++ b/lapack-netlib/SRC/zgeev.f @@ -485,12 +485,12 @@ SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA .AND. INFO.GT.0) THEN + IF( SCALEA ) THEN CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, W( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) - + IF( INFO.GT.0 ) THEN CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, ILO-1, 1, W, N, IERR ) - + END IF END IF * WORK( 1 ) = MAXWRK From bba75d5e45887a2e553fa134d41f5cb89efd8c49 Mon Sep 17 00:00:00 2001 From: h-motoki Date: Fri, 27 Jun 2025 19:37:36 +0900 Subject: [PATCH 028/360] GEMM_PREFERED_SIZE parameter has been changed for A64FX. --- param.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/param.h b/param.h index a75ba6fafa..97a666b10a 100644 --- a/param.h +++ b/param.h @@ -3701,6 +3701,12 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #elif defined(A64FX) // 512-bit SVE +#if defined(XDOUBLE) || defined(DOUBLE) +#define GEMM_PREFERED_SIZE 8 +#else +#define GEMM_PREFERED_SIZE 16 +#endif + /* When all BLAS3 routines are implemeted with SVE, SGEMM_DEFAULT_UNROLL_M should be "sve_vl". Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy routines in both directions seperated. */ #define SGEMM_DEFAULT_UNROLL_M 4 From 9bcffbd6556c78c7ad6fa72ae14fa0a22d492f82 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 29 Jun 2025 15:42:43 +0200 Subject: [PATCH 029/360] Declare the server_lock mutex volatile in addition to static --- driver/others/blas_server.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/driver/others/blas_server.c b/driver/others/blas_server.c index 4b79136ec7..3d89803a60 100644 --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -119,11 +119,11 @@ static void * blas_thread_buffer[MAX_CPU_NUMBER]; /* Local Variables */ #if defined(USE_PTHREAD_LOCK) -static pthread_mutex_t server_lock = PTHREAD_MUTEX_INITIALIZER; +volatile static pthread_mutex_t server_lock = PTHREAD_MUTEX_INITIALIZER; #elif defined(USE_PTHREAD_SPINLOCK) -static pthread_spinlock_t server_lock = 0; +volatile static pthread_spinlock_t server_lock = 0; #else -static unsigned long server_lock = 0; +volatile static unsigned long server_lock = 0; #endif #define THREAD_STATUS_SLEEP 2 From 5aeca597fe0d918b6c2f6e758f70504b06ee637c Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 29 Jun 2025 17:42:15 +0200 Subject: [PATCH 030/360] Fix documentation error and ordering bug (Reference-LAPACK PR 1140) --- lapack-netlib/SRC/dlaed2.f | 2 +- lapack-netlib/SRC/dlaed8.f | 2 +- lapack-netlib/SRC/dlasd2.f | 15 +++++++++++---- lapack-netlib/SRC/dlasd7.f | 4 ++-- lapack-netlib/SRC/slaed2.f | 2 +- lapack-netlib/SRC/slaed8.f | 2 +- lapack-netlib/SRC/slasd2.f | 15 +++++++++++---- lapack-netlib/SRC/slasd7.f | 13 ++++++++++--- 8 files changed, 38 insertions(+), 17 deletions(-) diff --git a/lapack-netlib/SRC/dlaed2.f b/lapack-netlib/SRC/dlaed2.f index 1a53650e8d..42f771087d 100644 --- a/lapack-netlib/SRC/dlaed2.f +++ b/lapack-netlib/SRC/dlaed2.f @@ -75,7 +75,7 @@ *> On entry, D contains the eigenvalues of the two submatrices to *> be combined. *> On exit, D contains the trailing (N-K) updated eigenvalues -*> (those which were deflated) sorted into increasing order. +*> (those which were deflated) sorted into decreasing order. *> \endverbatim *> *> \param[in,out] Q diff --git a/lapack-netlib/SRC/dlaed8.f b/lapack-netlib/SRC/dlaed8.f index 5d1d9144d1..6a0e7ec7fe 100644 --- a/lapack-netlib/SRC/dlaed8.f +++ b/lapack-netlib/SRC/dlaed8.f @@ -85,7 +85,7 @@ *> D is DOUBLE PRECISION array, dimension (N) *> On entry, the eigenvalues of the two submatrices to be *> combined. On exit, the trailing (N-K) updated eigenvalues -*> (those which were deflated) sorted into increasing order. +*> (those which were deflated) sorted into decreasing order. *> \endverbatim *> *> \param[in,out] Q diff --git a/lapack-netlib/SRC/dlasd2.f b/lapack-netlib/SRC/dlasd2.f index 378faa6813..33724164f3 100644 --- a/lapack-netlib/SRC/dlasd2.f +++ b/lapack-netlib/SRC/dlasd2.f @@ -88,7 +88,7 @@ *> On entry D contains the singular values of the two submatrices *> to be combined. On exit D contains the trailing (N-K) updated *> singular values (those which were deflated) sorted into -*> increasing order. +*> decreasing order. *> \endverbatim *> *> \param[out] Z @@ -219,7 +219,7 @@ *> IDXQ is INTEGER array, dimension(N) *> This contains the permutation which separately sorts the two *> sub-problems in D into ascending order. Note that entries in -*> the first hlaf of this permutation must first be moved one +*> the first half of this permutation must first be moved one *> position backward; and entries in the second half *> must first have NL+1 added to their values. *> \endverbatim @@ -451,7 +451,7 @@ SUBROUTINE DLASD2( NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, * * Check if singular values are close enough to allow deflation. * - IF( ABS( D( J )-D( JPREV ) ).LE.TOL ) THEN + IF( ( D( J )-D( JPREV ) ).LE.TOL ) THEN * * Deflation is possible. * @@ -486,7 +486,14 @@ SUBROUTINE DLASD2( NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, END IF COLTYP( JPREV ) = 4 K2 = K2 - 1 - IDXP( K2 ) = JPREV +* +* Insert the deflated index in the correct position in IDXP. +* If J - JPREV is greater than 1, the indices in between +* must be shifted to preserve the correct output order. +* + DO 105 JP = JPREV, J - 1 + IDXP( K2 + J - 1 - JP ) = JP + 105 CONTINUE JPREV = J ELSE K = K + 1 diff --git a/lapack-netlib/SRC/dlasd7.f b/lapack-netlib/SRC/dlasd7.f index ce3deed63e..84dc419594 100644 --- a/lapack-netlib/SRC/dlasd7.f +++ b/lapack-netlib/SRC/dlasd7.f @@ -495,9 +495,9 @@ SUBROUTINE DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, * If J - JPREV is greater than 1, the indices in between * must be shifted to preserve the correct output order. * - DO 130 JP = JPREV, J - 1 + DO 85 JP = JPREV, J - 1 IDXP( K2 + J - 1 - JP ) = JP - 130 CONTINUE + 85 CONTINUE JPREV = J ELSE K = K + 1 diff --git a/lapack-netlib/SRC/slaed2.f b/lapack-netlib/SRC/slaed2.f index cadf535555..b6be3b9c78 100644 --- a/lapack-netlib/SRC/slaed2.f +++ b/lapack-netlib/SRC/slaed2.f @@ -75,7 +75,7 @@ *> On entry, D contains the eigenvalues of the two submatrices to *> be combined. *> On exit, D contains the trailing (N-K) updated eigenvalues -*> (those which were deflated) sorted into increasing order. +*> (those which were deflated) sorted into decreasing order. *> \endverbatim *> *> \param[in,out] Q diff --git a/lapack-netlib/SRC/slaed8.f b/lapack-netlib/SRC/slaed8.f index 9dd8a15f60..2749f9bf41 100644 --- a/lapack-netlib/SRC/slaed8.f +++ b/lapack-netlib/SRC/slaed8.f @@ -85,7 +85,7 @@ *> D is REAL array, dimension (N) *> On entry, the eigenvalues of the two submatrices to be *> combined. On exit, the trailing (N-K) updated eigenvalues -*> (those which were deflated) sorted into increasing order. +*> (those which were deflated) sorted into decreasing order. *> \endverbatim *> *> \param[in,out] Q diff --git a/lapack-netlib/SRC/slasd2.f b/lapack-netlib/SRC/slasd2.f index 1902242c77..d6cd24c1f3 100644 --- a/lapack-netlib/SRC/slasd2.f +++ b/lapack-netlib/SRC/slasd2.f @@ -88,7 +88,7 @@ *> On entry D contains the singular values of the two submatrices *> to be combined. On exit D contains the trailing (N-K) updated *> singular values (those which were deflated) sorted into -*> increasing order. +*> decreasing order. *> \endverbatim *> *> \param[out] Z @@ -219,7 +219,7 @@ *> IDXQ is INTEGER array, dimension (N) *> This contains the permutation which separately sorts the two *> sub-problems in D into ascending order. Note that entries in -*> the first hlaf of this permutation must first be moved one +*> the first half of this permutation must first be moved one *> position backward; and entries in the second half *> must first have NL+1 added to their values. *> \endverbatim @@ -451,7 +451,7 @@ SUBROUTINE SLASD2( NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, * * Check if singular values are close enough to allow deflation. * - IF( ABS( D( J )-D( JPREV ) ).LE.TOL ) THEN + IF( ( D( J )-D( JPREV ) ).LE.TOL ) THEN * * Deflation is possible. * @@ -486,7 +486,14 @@ SUBROUTINE SLASD2( NL, NR, SQRE, K, D, Z, ALPHA, BETA, U, LDU, VT, END IF COLTYP( JPREV ) = 4 K2 = K2 - 1 - IDXP( K2 ) = JPREV +* +* Insert the deflated index in the correct position in IDXP. +* If J - JPREV is greater than 1, the indices in between +* must be shifted to preserve the correct output order. +* + DO 105 JP = JPREV, J - 1 + IDXP( K2 + J - 1 - JP ) = JP + 105 CONTINUE JPREV = J ELSE K = K + 1 diff --git a/lapack-netlib/SRC/slasd7.f b/lapack-netlib/SRC/slasd7.f index efd1f59d08..ee37f7373b 100644 --- a/lapack-netlib/SRC/slasd7.f +++ b/lapack-netlib/SRC/slasd7.f @@ -101,7 +101,7 @@ *> On entry D contains the singular values of the two submatrices *> to be combined. On exit D contains the trailing (N-K) updated *> singular values (those which were deflated) sorted into -*> increasing order. +*> decreasing order. *> \endverbatim *> *> \param[out] Z @@ -454,7 +454,7 @@ SUBROUTINE SLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, * * Check if singular values are close enough to allow deflation. * - IF( ABS( D( J )-D( JPREV ) ).LE.TOL ) THEN + IF( ( D( J )-D( JPREV ) ).LE.TOL ) THEN * * Deflation is possible. * @@ -490,7 +490,14 @@ SUBROUTINE SLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW, VF, VFW, VL, CALL SROT( 1, VF( JPREV ), 1, VF( J ), 1, C, S ) CALL SROT( 1, VL( JPREV ), 1, VL( J ), 1, C, S ) K2 = K2 - 1 - IDXP( K2 ) = JPREV +* +* Insert the deflated index in the correct position in IDXP. +* If J - JPREV is greater than 1, the indices in between +* must be shifted to preserve the correct output order. +* + DO 85 JP = JPREV, J - 1 + IDXP( K2 + J - 1 - JP ) = JP + 85 CONTINUE JPREV = J ELSE K = K + 1 From 5253c8f1658ab9688b871feb2d143fc6730cf98b Mon Sep 17 00:00:00 2001 From: Masato Nakagawa Date: Mon, 30 Jun 2025 21:35:16 +0900 Subject: [PATCH 031/360] Multi-thread Performance Improvement of GEMM with DIVIDE_RATE=1 for A64FX. --- driver/level3/gemm.c | 4 ++++ param.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/driver/level3/gemm.c b/driver/level3/gemm.c index 2b13da7d70..a20d6c59ad 100644 --- a/driver/level3/gemm.c +++ b/driver/level3/gemm.c @@ -59,6 +59,10 @@ #define GEMM_Q 128 #endif +#ifdef GEMM_DIVIDE_RATE +#define DIVIDE_RATE GEMM_DIVIDE_RATE +#endif + #ifdef THREADED_LEVEL3 #include "level3_thread.c" #else diff --git a/param.h b/param.h index 97a666b10a..885a0b6372 100644 --- a/param.h +++ b/param.h @@ -3701,6 +3701,8 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #elif defined(A64FX) // 512-bit SVE +#define GEMM_DIVIDE_RATE 1 + #if defined(XDOUBLE) || defined(DOUBLE) #define GEMM_PREFERED_SIZE 8 #else From 14107e37d95d45acd3a002ca6c833d460723c9bd Mon Sep 17 00:00:00 2001 From: "Usui, Tetsuzo" Date: Tue, 1 Jul 2025 22:12:27 +0900 Subject: [PATCH 032/360] Add parallel laed3 --- cmake/lapack.cmake | 8 +- common_lapack.h | 5 + common_macro.h | 4 + interface/CMakeLists.txt | 1 + interface/Makefile | 13 +- interface/lapack/laed3.c | 87 ++++++++++++ lapack-netlib/SRC/Makefile | 8 +- lapack/CMakeLists.txt | 2 + lapack/Makefile | 2 +- lapack/laed3/Makefile | 36 +++++ lapack/laed3/laed3_parallel.c | 243 ++++++++++++++++++++++++++++++++++ lapack/laed3/laed3_single.c | 166 +++++++++++++++++++++++ 12 files changed, 564 insertions(+), 11 deletions(-) create mode 100644 interface/lapack/laed3.c create mode 100644 lapack/laed3/Makefile create mode 100644 lapack/laed3/laed3_parallel.c create mode 100644 lapack/laed3/laed3_single.c diff --git a/cmake/lapack.cmake b/cmake/lapack.cmake index 6a74fb7640..a8d1c601c8 100644 --- a/cmake/lapack.cmake +++ b/cmake/lapack.cmake @@ -11,7 +11,7 @@ set(SCLAUX la_constants.f90 sbdsdc.f sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f - slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f + slaed0.f slaed1.f slaed2.f slaed4.f slaed5.f slaed6.f slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f slagts.f slamrg.f slanst.f slapy2.f slapy3.f slarnv.f @@ -31,7 +31,7 @@ set(DZLAUX dbdsdc.f dbdsvdx.f dstevx.f dstein.f dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f - dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f + dlaed0.f dlaed1.f dlaed2.f dlaed4.f dlaed5.f dlaed6.f dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f dlagts.f dlamrg.f dlanst.f dlapy2.f dlapy3.f dlarnv.f @@ -517,7 +517,7 @@ set(SCLAUX scombssq.c sbdsvdx.c sstevx.c sstein.c sbdsdc.c sbdsqr.c sdisna.c slabad.c slacpy.c sladiv.c slae2.c slaebz.c - slaed0.c slaed1.c slaed2.c slaed3.c slaed4.c slaed5.c slaed6.c + slaed0.c slaed1.c slaed2.c slaed4.c slaed5.c slaed6.c slaed7.c slaed8.c slaed9.c slaeda.c slaev2.c slagtf.c slagts.c slamrg.c slanst.c slapy2.c slapy3.c slarnv.c @@ -536,7 +536,7 @@ set(DZLAUX dbdsdc.c dbdsvdx.c dstevx.c dstein.c dbdsqr.c ddisna.c dlabad.c dlacpy.c dladiv.c dlae2.c dlaebz.c - dlaed0.c dlaed1.c dlaed2.c dlaed3.c dlaed4.c dlaed5.c dlaed6.c + dlaed0.c dlaed1.c dlaed2.c dlaed4.c dlaed5.c dlaed6.c dlaed7.c dlaed8.c dlaed9.c dlaeda.c dlaev2.c dlagtf.c dlagts.c dlamrg.c dlanst.c dlapy2.c dlapy3.c dlarnv.c diff --git a/common_lapack.h b/common_lapack.h index f9c36646ad..2151b88ac0 100644 --- a/common_lapack.h +++ b/common_lapack.h @@ -439,4 +439,9 @@ blasint xtrtrs_LRN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdo blasint xtrtrs_LCU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG); blasint xtrtrs_LCN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG); +blasint slaed3_single(blasint *, blasint *, blasint *, float *, float *, blasint *, float *, float *, float *, blasint *, blasint *, float *, float *, blasint *); +blasint dlaed3_single(blasint *, blasint *, blasint *, double *, double *, blasint *, double *, double *, double *, blasint *, blasint *, double *, double *, blasint *); +blasint slaed3_parallel(blasint *, blasint *, blasint *, float *, float *, blasint *, float *, float *, float *, blasint *, blasint *, float *, float *, blasint *); +blasint dlaed3_parallel(blasint *, blasint *, blasint *, double *, double *, blasint *, double *, double *, double *, blasint *, blasint *, double *, double *, blasint *); + #endif diff --git a/common_macro.h b/common_macro.h index b967c2e603..b29a9c08df 100644 --- a/common_macro.h +++ b/common_macro.h @@ -3035,6 +3035,8 @@ typedef struct { #define NEG_TCOPY DNEG_TCOPY #define LARF_L DLARF_L #define LARF_R DLARF_R +#define LAED3_SINGLE dlaed3_single +#define LAED3_PARALLEL dlaed3_parallel #else #define GETF2 SGETF2 #define GETRF SGETRF @@ -3056,6 +3058,8 @@ typedef struct { #define NEG_TCOPY SNEG_TCOPY #define LARF_L SLARF_L #define LARF_R SLARF_R +#define LAED3_SINGLE slaed3_single +#define LAED3_PARALLEL slaed3_parallel #endif #else #ifdef XDOUBLE diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index a8fb5196a5..c4306d8eea 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -221,6 +221,7 @@ if (NOT NO_LAPACK) GenerateNamedObjects("lapack/lauu2.c" "" "" 0 "" "" 0 3) GenerateNamedObjects("lapack/trti2.c" "" "" 0 "" "" 0 3) endif() + GenerateNamedObjects("lapack/laed3.c" "" "" 0 "" "" 0 1) endif () if ( BUILD_COMPLEX AND NOT BUILD_SINGLE) diff --git a/interface/Makefile b/interface/Makefile index 3ac54628f6..dc154a3c4e 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -429,8 +429,8 @@ XBLASOBJS = $(XBLAS1OBJS) $(XBLAS2OBJS) $(XBLAS3OBJS) SLAPACKOBJS = \ sgetrf.$(SUFFIX) sgetrs.$(SUFFIX) spotrf.$(SUFFIX) sgetf2.$(SUFFIX) \ spotf2.$(SUFFIX) slaswp.$(SUFFIX) sgesv.$(SUFFIX) slauu2.$(SUFFIX) \ - slauum.$(SUFFIX) strti2.$(SUFFIX) strtri.$(SUFFIX) strtrs.$(SUFFIX) - + slauum.$(SUFFIX) strti2.$(SUFFIX) strtri.$(SUFFIX) strtrs.$(SUFFIX) \ + slaed3.$(SUFFIX) #DLAPACKOBJS = \ # dgetrf.$(SUFFIX) dgetrs.$(SUFFIX) dpotrf.$(SUFFIX) dgetf2.$(SUFFIX) \ @@ -440,8 +440,8 @@ SLAPACKOBJS = \ DLAPACKOBJS = \ dgetrf.$(SUFFIX) dgetrs.$(SUFFIX) dpotrf.$(SUFFIX) dgetf2.$(SUFFIX) \ dpotf2.$(SUFFIX) dlaswp.$(SUFFIX) dgesv.$(SUFFIX) dlauu2.$(SUFFIX) \ - dlauum.$(SUFFIX) dtrti2.$(SUFFIX) dtrtri.$(SUFFIX) dtrtrs.$(SUFFIX) - + dlauum.$(SUFFIX) dtrti2.$(SUFFIX) dtrtri.$(SUFFIX) dtrtrs.$(SUFFIX) \ + dlaed3.$(SUFFIX) QLAPACKOBJS = \ qgetf2.$(SUFFIX) qgetrf.$(SUFFIX) qlauu2.$(SUFFIX) qlauum.$(SUFFIX) \ @@ -2365,6 +2365,11 @@ zlarf.$(SUFFIX) zlarf.$(PSUFFIX) : larf.c xlarf.$(SUFFIX) xlarf.$(PSUFFIX) : larf.c $(CC) -c $(CFLAGS) $< -o $(@F) +slaed3.$(SUFFIX) slaed3.$(PSUFFIX) : lapack/laed3.c + $(CC) -c $(CFLAGS) $< -o $(@F) + +dlaed3.$(SUFFIX) dlaed3.$(PSUFFIX) : lapack/laed3.c + $(CC) -c $(CFLAGS) $< -o $(@F) ############# BLAS EXTENSIONS ##################################### diff --git a/interface/lapack/laed3.c b/interface/lapack/laed3.c new file mode 100644 index 0000000000..4e5215fcf7 --- /dev/null +++ b/interface/lapack/laed3.c @@ -0,0 +1,87 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include +#include "common.h" + +#if defined(DOUBLE) +#define ERROR_NAME "DLAED3" +#else +#define ERROR_NAME "SLAED3" +#endif + +/* ===================================================================== */ +int NAME(blasint *k, blasint *n, blasint *n1, FLOAT *d, + FLOAT *q, blasint *ldq, FLOAT *rho, FLOAT *dlamda, + FLOAT *q2, blasint *indx, blasint *ctot, FLOAT *w, + FLOAT *s, blasint *Info) +{ + blasint kval, nval, qdim, info; + + qdim = *ldq; + kval = *k; + nval = *n; + +/* Test the input parameters. */ + info = 0; + if (kval < 0) { + info = 1; + } else if (nval < kval) { + info = 2; + } else if (qdim < nval || qdim < 1) { + info = 6; + } + if (info) { + BLASFUNC(xerbla)(ERROR_NAME, &info, sizeof(ERROR_NAME) - 1); + *Info = - info; + return 0; + } + +/* Quick return if possible */ + + *Info = 0; + if (kval == 0) return 0; + +#ifdef SMP + int nthreads = num_cpu_avail(4); + + if (nthreads == 1) { +#endif + LAED3_SINGLE(k, n, n1, d, q, ldq, rho, dlamda, q2, indx, ctot, w, s, Info); +#ifdef SMP + } else { + LAED3_PARALLEL(k, n, n1, d, q, ldq, rho, dlamda, q2, indx, ctot, w, s, Info); + } +#endif + + return 0; +} diff --git a/lapack-netlib/SRC/Makefile b/lapack-netlib/SRC/Makefile index 2a20fcdab4..0f547dd0c4 100644 --- a/lapack-netlib/SRC/Makefile +++ b/lapack-netlib/SRC/Makefile @@ -85,7 +85,7 @@ ALLAUX_O = ilaenv.o ilaenv2stage.o ieeeck.o lsamen.o xerbla.o xerbla_array.o \ ../INSTALL/ilaver.o ../INSTALL/lsame.o ../INSTALL/slamch.o ifneq "$(or $(BUILD_SINGLE),$(BUILD_COMPLEX))" "" -SCLAUX = la_constants.o \ +SCLAUX_O = la_constants.o \ sbdsvdx.o sstevx.o sstein.o \ sbdsdc.o \ sbdsqr.o sdisna.o slabad.o slacpy.o sladiv.o slae2.o slaebz.o \ @@ -106,7 +106,7 @@ SCLAUX = la_constants.o \ endif ifneq "$(or $(BUILD_DOUBLE),$(BUILD_COMPLEX16))" "" -DZLAUX = la_constants.o\ +DZLAUX_O = la_constants.o\ dcombssq.o \ dbdsvdx.o dstevx.o dstein.o \ dbdsdc.o \ @@ -572,6 +572,8 @@ endif # filter out optimized codes from OpenBLAS ALL_AUX_OBJS = xerbla.o ../INSTALL/lsame.o +SCL_AUX_OBJS = slaed3.o +DZL_AUX_OBJS = dlaed3.o SLAPACKOBJS = \ sgetrf.o sgetrs.o spotrf.o sgetf2.o \ @@ -598,6 +600,8 @@ ZLAPACKOBJS = \ zsymv.o zsyr.o zspmv.o zspr.o ALLAUX = $(filter-out $(ALL_AUX_OBJS),$(ALLAUX_O)) +SCLAUX = $(filter-out $(SCL_AUX_OBJS),$(SCLAUX_O)) +DZLAUX = $(filter-out $(DZL_AUX_OBJS),$(DZLAUX_O)) SLASRC = $(filter-out $(SLAPACKOBJS),$(SLASRC_O)) DLASRC = $(filter-out $(DLAPACKOBJS),$(DLASRC_O)) CLASRC = $(filter-out $(CLAPACKOBJS),$(CLASRC_O)) diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt index 880fb01b24..71df986af5 100644 --- a/lapack/CMakeLists.txt +++ b/lapack/CMakeLists.txt @@ -10,6 +10,7 @@ set(LAPACK_SOURCES potrf/potrf_L_single.c lauum/lauum_U_single.c lauum/lauum_L_single.c + laed3/laed3_single.c ) # add a 'z' to filename for complex version @@ -79,6 +80,7 @@ if (USE_THREAD) lauum/lauum_L_parallel.c potrf/potrf_U_parallel.c potrf/potrf_L_parallel.c + laed3/laed3_parallel.c ) # this has a z version diff --git a/lapack/Makefile b/lapack/Makefile index 2bbb4603fc..6079812884 100644 --- a/lapack/Makefile +++ b/lapack/Makefile @@ -2,7 +2,7 @@ TOPDIR = .. include ../Makefile.system #SUBDIRS = laswp getf2 getrf potf2 potrf lauu2 lauum trti2 trtri getrs -SUBDIRS = getrf getf2 laswp getrs potrf potf2 lauu2 lauum trti2 trtri trtrs +SUBDIRS = getrf getf2 laswp getrs potrf potf2 lauu2 lauum trti2 trtri trtrs laed3 FLAMEDIRS = laswp getf2 potf2 lauu2 trti2 diff --git a/lapack/laed3/Makefile b/lapack/laed3/Makefile new file mode 100644 index 0000000000..9fa75613a7 --- /dev/null +++ b/lapack/laed3/Makefile @@ -0,0 +1,36 @@ +TOPDIR = ../.. +include ../../Makefile.system + +SBLASOBJS = slaed3_single.$(SUFFIX) +DBLASOBJS = dlaed3_single.$(SUFFIX) + +ifdef SMP +SBLASOBJS += slaed3_parallel.$(SUFFIX) +DBLASOBJS += dlaed3_parallel.$(SUFFIX) +endif + +ifeq "$(or $(BUILD_SINGLE),$(BUILD_DOUBLE))" "" +SBLASOBJS= +endif +ifneq ($(BUILD_DOUBLE),1) +DBLASOBJS= +endif + +slaed3_single.$(SUFFIX) : laed3_single.c + $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $(@F) +dlaed3_single.$(SUFFIX) : laed3_single.c + $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $(@F) +slaed3_parallel.$(SUFFIX) : laed3_parallel.c + $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $(@F) +dlaed3_parallel.$(SUFFIX) : laed3_parallel.c + $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $(@F) +slaed3_single.$(PSUFFIX) : laed3_single.c + $(CC) -c $(PFLAGS) -UCOMPLEX -UDOUBLE $< -o $(@F) +dlaed3_single.$(PSUFFIX) : laed3_single.c + $(CC) -c $(PFLAGS) -UCOMPLEX -DDOUBLE $< -o $(@F) +slaed3_parallel.$(PSUFFIX) : laed3_parallel.c + $(CC) -c $(PFLAGS) -UCOMPLEX -UDOUBLE $< -o $(@F) +dlaed3_parallel.$(PSUFFIX) : laed3_parallel.c + $(CC) -c $(PFLAGS) -UCOMPLEX -DDOUBLE $< -o $(@F) + +include ../../Makefile.tail diff --git a/lapack/laed3/laed3_parallel.c b/lapack/laed3/laed3_parallel.c new file mode 100644 index 0000000000..e02567b699 --- /dev/null +++ b/lapack/laed3/laed3_parallel.c @@ -0,0 +1,243 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include +#include "common.h" + +#define max(a,b) ((a) > (b) ? (a) : (b)) +#define copysign(x,y) ((y) < 0 ? ((x) < 0 ? (x) : -(x)) : ((x) < 0 ? -(x) : (x))) + +#if defined(DOUBLE) +#define LAMC3 BLASFUNC(dlamc3) +#define LAED4 BLASFUNC(dlaed4) +#define GEMM BLASFUNC(dgemm) +#define NRM2 BLASFUNC(dnrm2) +#define COPY BLASFUNC(dcopy) +#define LACPY BLASFUNC(dlacpy) +#define LASET BLASFUNC(dlaset) +#else +#define LAMC3 BLASFUNC(slamc3) +#define LAED4 BLASFUNC(slaed4) +#define GEMM BLASFUNC(sgemm) +#define NRM2 BLASFUNC(snrm2) +#define COPY BLASFUNC(scopy) +#define LACPY BLASFUNC(slacpy) +#define LASET BLASFUNC(slaset) +#endif + +FLOAT LAMC3(FLOAT *, FLOAT *); +void LAED4(blasint *, blasint *, FLOAT *, FLOAT *, FLOAT *, FLOAT *, FLOAT *, blasint *); +void LACPY(char *, blasint *, blasint *, FLOAT *, blasint *, FLOAT *, blasint *); +void LASET(char *, blasint *, blasint *, FLOAT *, FLOAT *, FLOAT *, blasint *); + +/* Table of constant values */ +static blasint c1 = 1; +static FLOAT c1f = 1.; +static FLOAT c0f = 0.; + +static void inner_laed4_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){ + blasint kval = args -> m; + blasint j, j_from, j_to; + FLOAT *dlamda = (FLOAT *)args -> a; + FLOAT *w = (FLOAT *)args -> b; + FLOAT *q = (FLOAT *)args -> c; + BLASLONG qdim = args -> ldc; + FLOAT *d = (FLOAT *)args -> d; + FLOAT rho = *(FLOAT *)args -> alpha; + blasint *info = &((blasint*)args -> beta)[mypos]; + + j_from = range_m[0] + 1; + j_to = range_m[1]; + + for (j = j_from; j <= j_to; j++) { + LAED4(&kval, &j, dlamda, w, &q[(j - 1) * qdim], &rho, &d[j - 1], info); + if(*info != 0) break; + } +} + +static void inner_wloop_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){ + blasint kval = args -> m; + blasint i, j, i_from, i_to; + FLOAT *dlamda = (FLOAT *)args -> a; + FLOAT *w = (FLOAT *)args -> b; + FLOAT *q = (FLOAT *)args -> c; + BLASLONG qdim = args -> ldc; + i_from = range_m[0]; + i_to = range_m[1]; + for (j = 0; j < kval; j++) { + for (i = i_from; i < i_to; i++) { + if (i != j) w[i] *= q[j * qdim + i] / (dlamda[i] - dlamda[j]); + } + } +} + +/* ===================================================================== */ +blasint CNAME(blasint *k, blasint *n, blasint *n1, FLOAT *d, + FLOAT *q, blasint *ldq, FLOAT *rho, FLOAT *dlamda, + FLOAT *q2, blasint *indx, blasint *ctot, FLOAT *w, + FLOAT *s, blasint *info) +{ + FLOAT temp; + blasint kval, qdim; + blasint i, j, itmp; + blasint n2, n12, ii, n23, iq2; + blas_queue_t queue[MAX_CPU_NUMBER]; + blas_arg_t args; + BLASLONG range[MAX_CPU_NUMBER + 1]; + blasint infoarray[MAX_CPU_NUMBER]; + int width, num_cpu, mode, nthreads; + + qdim = *ldq; + kval = *k; + +/* Modify values DLAMDA(i) to make sure all DLAMDA(i)-DLAMDA(j) can */ +/* be computed with high relative accuracy (barring over/underflow). */ + + for (i = 0; i < kval; i++) { + dlamda[i] = LAMC3(&dlamda[i], &dlamda[i]) - dlamda[i]; + } + + nthreads = num_cpu_avail(4); + +#if defined(DOUBLE) + mode = BLAS_DOUBLE | BLAS_REAL; +#else + mode = BLAS_SINGLE | BLAS_REAL; +#endif + args.m = kval; + args.a = (void *)dlamda; + args.b = (void *)w; + args.c = (void *)q; + args.ldc = qdim; + args.d = (void *)d; + args.alpha = (void *)rho; + args.beta = (void *)infoarray; + num_cpu = 0; + range[0] = 0; + i = kval; + while (i > 0) { + width = blas_quickdivide(i + nthreads - num_cpu - 1, nthreads - num_cpu); + range[num_cpu + 1] = range[num_cpu] + width; + queue[num_cpu].range_m = &range[num_cpu]; + queue[num_cpu].range_n = NULL; + queue[num_cpu].routine = inner_laed4_thread; + queue[num_cpu].args = &args; + queue[num_cpu].sa = NULL; + queue[num_cpu].sb = NULL; + queue[num_cpu].mode = mode; + queue[num_cpu].next = &queue[num_cpu + 1]; + infoarray[num_cpu] = 0; + num_cpu ++; + i -= width; + } + if (num_cpu) { + queue[num_cpu - 1].next = NULL; + exec_blas(num_cpu, queue); + } + for (i = 0; i < num_cpu; i++) { + *info = max(infoarray[i], *info); + } + +/* If the zero finder fails, the computation is terminated. */ + + if (*info != 0) { + return 0; + } + + if (kval == 2) { + for (j = 0; j < kval; j++) { + w[0] = q[j * qdim]; + w[1] = q[j * qdim + 1]; + ii = indx[0] - 1; + q[j * qdim] = w[ii]; + ii = indx[1] - 1; + q[j * qdim + 1] = w[ii]; + } + } else if (kval != 1) { + +/* Compute updated W. */ + + COPY(k, w, &c1, s, &c1); + +/* Initialize W(I) = Q(I,I) */ + + itmp = qdim + 1; + COPY(k, q, &itmp, w, &c1); + + for (i = 0; i < num_cpu; i++) { + queue[i].routine = inner_wloop_thread; + } + if (num_cpu) { + exec_blas(num_cpu, queue); + } + for (i = 0; i < kval; i++) { + temp = sqrt(-w[i]); + w[i] = copysign(temp, s[i]); + } + +/* Compute eigenvectors of the modified rank-1 modification. */ + + for (j = 0; j < kval; j++) { + for (i = 0; i < kval; i++) { + s[i] = w[i] / q[j * qdim + i]; + } + temp = NRM2(k, s, &c1); + for (i = 0; i < kval; i++) { + ii = indx[i] - 1; + q[j * qdim + i] = s[ii] / temp; + } + } + } + +/* Compute the updated eigenvectors. */ + + n2 = *n - *n1; + n12 = ctot[0] + ctot[1]; + n23 = ctot[1] + ctot[2]; + + LACPY("A", &n23, k, &q[ctot[0]], ldq, s, &n23); + iq2 = *n1 * n12; + if (n23 != 0) { + GEMM("N", "N", &n2, k, &n23, &c1f, &q2[iq2], &n2, s, &n23, &c0f, &q[*n1], ldq); + } else { + LASET("A", &n2, k, &c0f, &c0f, &q[*n1], ldq); + } + + LACPY("A", &n12, k, q, ldq, s, &n12); + if (n12 != 0) { + GEMM("N", "N", n1, k, &n12, &c1f, q2, n1, s, &n12, &c0f, q, ldq); + } else { + LASET("A", n1, k, &c0f, &c0f, q, ldq); + } + + return 0; +} diff --git a/lapack/laed3/laed3_single.c b/lapack/laed3/laed3_single.c new file mode 100644 index 0000000000..b21bb99300 --- /dev/null +++ b/lapack/laed3/laed3_single.c @@ -0,0 +1,166 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include +#include "common.h" + +#define copysign(x,y) ((y) < 0 ? ((x) < 0 ? (x) : -(x)) : ((x) < 0 ? -(x) : (x))) + +#if defined(DOUBLE) +#define LAMC3 BLASFUNC(dlamc3) +#define LAED4 BLASFUNC(dlaed4) +#define GEMM BLASFUNC(dgemm) +#define NRM2 BLASFUNC(dnrm2) +#define COPY BLASFUNC(dcopy) +#define LACPY BLASFUNC(dlacpy) +#define LASET BLASFUNC(dlaset) +#else +#define LAMC3 BLASFUNC(slamc3) +#define LAED4 BLASFUNC(slaed4) +#define GEMM BLASFUNC(sgemm) +#define NRM2 BLASFUNC(snrm2) +#define COPY BLASFUNC(scopy) +#define LACPY BLASFUNC(slacpy) +#define LASET BLASFUNC(slaset) +#endif + +FLOAT LAMC3(FLOAT *, FLOAT *); +void LAED4(blasint *, blasint *, FLOAT *, FLOAT *, FLOAT *, FLOAT *, FLOAT *, blasint *); +void LACPY(char *, blasint *, blasint *, FLOAT *, blasint *, FLOAT *, blasint *); +void LASET(char *, blasint *, blasint *, FLOAT *, FLOAT *, FLOAT *, blasint *); + +/* Table of constant values */ +static blasint c1 = 1; +static FLOAT c1f = 1.; +static FLOAT c0f = 0.; + +/* ===================================================================== */ +blasint CNAME(blasint *k, blasint *n, blasint *n1, FLOAT *d, + FLOAT *q, blasint *ldq, FLOAT *rho, FLOAT *dlamda, + FLOAT *q2, blasint *indx, blasint *ctot, FLOAT *w, + FLOAT *s, blasint *info) +{ + FLOAT temp; + blasint kval, qdim; + blasint i, j, itmp; + blasint n2, n12, ii, n23, iq2; + + qdim = *ldq; + kval = *k; + +/* Modify values DLAMDA(i) to make sure all DLAMDA(i)-DLAMDA(j) can */ +/* be computed with high relative accuracy (barring over/underflow). */ + + for (i = 0; i < kval; i++) { + dlamda[i] = LAMC3(&dlamda[i], &dlamda[i]) - dlamda[i]; + } + + for (j = 1; j <= kval; j++) { + LAED4(k, &j, dlamda, w, &q[(j - 1) * qdim], rho, &d[j - 1], info); + if(*info != 0) break; + } + +/* If the zero finder fails, the computation is terminated. */ + + if (*info != 0) { + return 0; + } + + if (kval == 2) { + for (j = 0; j < kval; j++) { + w[0] = q[j * qdim]; + w[1] = q[j * qdim + 1]; + ii = indx[0] - 1; + q[j * qdim] = w[ii]; + ii = indx[1] - 1; + q[j * qdim + 1] = w[ii]; + } + } else if (kval != 1) { + +/* Compute updated W. */ + + COPY(k, w, &c1, s, &c1); + +/* Initialize W(I) = Q(I,I) */ + + itmp = qdim + 1; + COPY(k, q, &itmp, w, &c1); + for (j = 0; j < kval; j++) { + for (i = 0; i < j; i++) { + w[i] *= q[j * qdim + i] / (dlamda[i] - dlamda[j]); + } + for (i = j + 1; i < kval; i++) { + w[i] *= q[j * qdim + i] / (dlamda[i] - dlamda[j]); + } + } + for (i = 0; i < kval; i++) { + temp = sqrt(-w[i]); + w[i] = copysign(temp, s[i]); + } + +/* Compute eigenvectors of the modified rank-1 modification. */ + + for (j = 0; j < kval; j++) { + for (i = 0; i < kval; i++) { + s[i] = w[i] / q[j * qdim + i]; + } + temp = NRM2(k, s, &c1); + for (i = 0; i < kval; i++) { + ii = indx[i] - 1; + q[j * qdim + i] = s[ii] / temp; + } + } + } + +/* Compute the updated eigenvectors. */ + + n2 = *n - *n1; + n12 = ctot[0] + ctot[1]; + n23 = ctot[1] + ctot[2]; + + LACPY("A", &n23, k, &q[ctot[0]], ldq, s, &n23); + iq2 = *n1 * n12; + if (n23 != 0) { + GEMM("N", "N", &n2, k, &n23, &c1f, &q2[iq2], &n2, s, &n23, &c0f, &q[*n1], ldq); + } else { + LASET("A", &n2, k, &c0f, &c0f, &q[*n1], ldq); + } + + LACPY("A", &n12, k, q, ldq, s, &n12); + if (n12 != 0) { + GEMM("N", "N", n1, k, &n12, &c1f, q2, n1, s, &n12, &c0f, q, ldq); + } else { + LASET("A", n1, k, &c0f, &c0f, q, ldq); + } + + return 0; +} From 7f360001f9261350be0d69c5fbe5c7d5b8aaf768 Mon Sep 17 00:00:00 2001 From: Lina Iyer <140435362+ilina-linaro@users.noreply.github.com> Date: Thu, 3 Jul 2025 07:15:20 -0600 Subject: [PATCH 033/360] Update README.md to include Windows on Arm64 Update README.md to indicate that binaries are available for Windows on ARM64 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cc9325d39d..6a4fc6a7f2 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ For a general introduction to the BLAS routines, please refer to the extensive d We provide official binary packages for the following platform: * Windows x86/x86_64 + * Windows arm64 (woa) You can download them from [file hosting on sourceforge.net](https://sourceforge.net/projects/openblas/files/) or from the [Releases section of the GitHub project page](https://github.com/OpenMathLib/OpenBLAS/releases). From f7ad906b49c23efaa712991eacc4ce368161c0ca Mon Sep 17 00:00:00 2001 From: "Iha, Taisei" Date: Fri, 4 Jul 2025 22:57:44 +0900 Subject: [PATCH 034/360] Performance improvements of [SD]DOT with loop-unrolling on A64FX --- kernel/arm64/KERNEL.A64FX | 3 + kernel/arm64/dot.c | 4 + kernel/arm64/dot_kernel_sve_v8.c | 146 +++++++++++++++++++++++++++++++ kernel/arm64/dot_sve_v8.c | 34 +++++++ 4 files changed, 187 insertions(+) create mode 100644 kernel/arm64/dot_kernel_sve_v8.c create mode 100644 kernel/arm64/dot_sve_v8.c diff --git a/kernel/arm64/KERNEL.A64FX b/kernel/arm64/KERNEL.A64FX index 3d68271da4..e5e6a9d697 100644 --- a/kernel/arm64/KERNEL.A64FX +++ b/kernel/arm64/KERNEL.A64FX @@ -4,3 +4,6 @@ SGEMVNKERNEL = gemv_n_sve_v4x3.c DGEMVNKERNEL = gemv_n_sve_v4x3.c SGEMVTKERNEL = gemv_t_sve_v4x3.c DGEMVTKERNEL = gemv_t_sve_v4x3.c + +DDOTKERNEL = dot_sve_v8.c +SDOTKERNEL = dot_sve_v8.c diff --git a/kernel/arm64/dot.c b/kernel/arm64/dot.c index ece31bccdf..56a8a36dc7 100644 --- a/kernel/arm64/dot.c +++ b/kernel/arm64/dot.c @@ -40,8 +40,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #ifdef USE_SVE +#ifdef DOT_KERNEL_SVE +#include DOT_KERNEL_SVE +#else #include "dot_kernel_sve.c" #endif +#endif #include "dot_kernel_asimd.c" #if defined(SMP) diff --git a/kernel/arm64/dot_kernel_sve_v8.c b/kernel/arm64/dot_kernel_sve_v8.c new file mode 100644 index 0000000000..fa18553b11 --- /dev/null +++ b/kernel/arm64/dot_kernel_sve_v8.c @@ -0,0 +1,146 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include +#include "common.h" + +#ifdef DOUBLE +#define SV_COUNT svcntd +#define SV_TYPE svfloat64_t +#define SV_TRUE svptrue_b64 +#define SV_WHILE svwhilelt_b64_s64 +#define SV_DUP svdup_f64 +#else +#define SV_COUNT svcntw +#define SV_TYPE svfloat32_t +#define SV_TRUE svptrue_b32 +#define SV_WHILE svwhilelt_b32_s64 +#define SV_DUP svdup_f32 +#endif + +static FLOAT dot_kernel_sve(BLASLONG n, FLOAT* x, FLOAT* y) +{ + SV_TYPE temp0_vec = SV_DUP(0.0); + SV_TYPE temp1_vec = SV_DUP(0.0); + SV_TYPE temp2_vec = SV_DUP(0.0); + SV_TYPE temp3_vec = SV_DUP(0.0); + SV_TYPE temp4_vec = SV_DUP(0.0); + SV_TYPE temp5_vec = SV_DUP(0.0); + SV_TYPE temp6_vec = SV_DUP(0.0); + SV_TYPE temp7_vec = SV_DUP(0.0); + + BLASLONG i = 0; + BLASLONG sve_size = SV_COUNT(); + + while ((i + sve_size * 8 - 1) < n) { + FLOAT *x0_ptr = x + i; + SV_TYPE x0_vec = svld1_vnum(SV_TRUE(), x0_ptr, 0); + SV_TYPE x1_vec = svld1_vnum(SV_TRUE(), x0_ptr, 1); + SV_TYPE x2_vec = svld1_vnum(SV_TRUE(), x0_ptr, 2); + SV_TYPE x3_vec = svld1_vnum(SV_TRUE(), x0_ptr, 3); + SV_TYPE x4_vec = svld1_vnum(SV_TRUE(), x0_ptr, 4); + SV_TYPE x5_vec = svld1_vnum(SV_TRUE(), x0_ptr, 5); + SV_TYPE x6_vec = svld1_vnum(SV_TRUE(), x0_ptr, 6); + SV_TYPE x7_vec = svld1_vnum(SV_TRUE(), x0_ptr, 7); + + FLOAT *y0_ptr = y + i; + SV_TYPE y0_vec = svld1_vnum(SV_TRUE(), y0_ptr, 0); + SV_TYPE y1_vec = svld1_vnum(SV_TRUE(), y0_ptr, 1); + SV_TYPE y2_vec = svld1_vnum(SV_TRUE(), y0_ptr, 2); + SV_TYPE y3_vec = svld1_vnum(SV_TRUE(), y0_ptr, 3); + SV_TYPE y4_vec = svld1_vnum(SV_TRUE(), y0_ptr, 4); + SV_TYPE y5_vec = svld1_vnum(SV_TRUE(), y0_ptr, 5); + SV_TYPE y6_vec = svld1_vnum(SV_TRUE(), y0_ptr, 6); + SV_TYPE y7_vec = svld1_vnum(SV_TRUE(), y0_ptr, 7); + + temp0_vec = svmla_x(SV_TRUE(), temp0_vec, x0_vec, y0_vec); + temp1_vec = svmla_x(SV_TRUE(), temp1_vec, x1_vec, y1_vec); + temp2_vec = svmla_x(SV_TRUE(), temp2_vec, x2_vec, y2_vec); + temp3_vec = svmla_x(SV_TRUE(), temp3_vec, x3_vec, y3_vec); + temp4_vec = svmla_x(SV_TRUE(), temp4_vec, x4_vec, y4_vec); + temp5_vec = svmla_x(SV_TRUE(), temp5_vec, x5_vec, y5_vec); + temp6_vec = svmla_x(SV_TRUE(), temp6_vec, x6_vec, y6_vec); + temp7_vec = svmla_x(SV_TRUE(), temp7_vec, x7_vec, y7_vec); + + i += sve_size * 8; + } + + if (i < n) { + svbool_t pg0 = SV_WHILE(i + sve_size * 0, n); + svbool_t pg1 = SV_WHILE(i + sve_size * 1, n); + svbool_t pg2 = SV_WHILE(i + sve_size * 2, n); + svbool_t pg3 = SV_WHILE(i + sve_size * 3, n); + svbool_t pg4 = SV_WHILE(i + sve_size * 4, n); + svbool_t pg5 = SV_WHILE(i + sve_size * 5, n); + svbool_t pg6 = SV_WHILE(i + sve_size * 6, n); + svbool_t pg7 = SV_WHILE(i + sve_size * 7, n); + + FLOAT *x0_ptr = x + i; + SV_TYPE x0_vec = svld1_vnum(pg0, x0_ptr, 0); + SV_TYPE x1_vec = svld1_vnum(pg1, x0_ptr, 1); + SV_TYPE x2_vec = svld1_vnum(pg2, x0_ptr, 2); + SV_TYPE x3_vec = svld1_vnum(pg3, x0_ptr, 3); + SV_TYPE x4_vec = svld1_vnum(pg4, x0_ptr, 4); + SV_TYPE x5_vec = svld1_vnum(pg5, x0_ptr, 5); + SV_TYPE x6_vec = svld1_vnum(pg6, x0_ptr, 6); + SV_TYPE x7_vec = svld1_vnum(pg7, x0_ptr, 7); + + FLOAT *y0_ptr = y + i; + SV_TYPE y0_vec = svld1_vnum(pg0, y0_ptr, 0); + SV_TYPE y1_vec = svld1_vnum(pg1, y0_ptr, 1); + SV_TYPE y2_vec = svld1_vnum(pg2, y0_ptr, 2); + SV_TYPE y3_vec = svld1_vnum(pg3, y0_ptr, 3); + SV_TYPE y4_vec = svld1_vnum(pg4, y0_ptr, 4); + SV_TYPE y5_vec = svld1_vnum(pg5, y0_ptr, 5); + SV_TYPE y6_vec = svld1_vnum(pg6, y0_ptr, 6); + SV_TYPE y7_vec = svld1_vnum(pg7, y0_ptr, 7); + + temp0_vec = svmla_m(pg0, temp0_vec, x0_vec, y0_vec); + temp1_vec = svmla_m(pg1, temp1_vec, x1_vec, y1_vec); + temp2_vec = svmla_m(pg2, temp2_vec, x2_vec, y2_vec); + temp3_vec = svmla_m(pg3, temp3_vec, x3_vec, y3_vec); + temp4_vec = svmla_m(pg4, temp4_vec, x4_vec, y4_vec); + temp5_vec = svmla_m(pg5, temp5_vec, x5_vec, y5_vec); + temp6_vec = svmla_m(pg6, temp6_vec, x6_vec, y6_vec); + temp7_vec = svmla_m(pg7, temp7_vec, x7_vec, y7_vec); + } + + temp0_vec = svadd_x(SV_TRUE(), temp0_vec, temp1_vec); + temp2_vec = svadd_x(SV_TRUE(), temp2_vec, temp3_vec); + temp4_vec = svadd_x(SV_TRUE(), temp4_vec, temp5_vec); + temp6_vec = svadd_x(SV_TRUE(), temp6_vec, temp7_vec); + temp0_vec = svadd_x(SV_TRUE(), temp0_vec, temp2_vec); + temp4_vec = svadd_x(SV_TRUE(), temp4_vec, temp6_vec); + temp0_vec = svadd_x(SV_TRUE(), temp0_vec, temp4_vec); + + return svaddv(SV_TRUE(), temp0_vec); +} diff --git a/kernel/arm64/dot_sve_v8.c b/kernel/arm64/dot_sve_v8.c new file mode 100644 index 0000000000..ace47b4e75 --- /dev/null +++ b/kernel/arm64/dot_sve_v8.c @@ -0,0 +1,34 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#define DOT_KERNEL_SVE "dot_kernel_sve_v8.c" +#include "dot.c" From 901de8f33aa14efc5ae836c9b04b38d0e2e5a0c1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 5 Jul 2025 20:35:16 +0200 Subject: [PATCH 035/360] remove lapacke_mangling.h and add la_xisnan.mod --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8294da4d44..d14d438a25 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,8 @@ lapack-3.4.1.tgz lapack-3.4.2 lapack-3.4.2.tgz lapack-netlib/make.inc -lapack-netlib/lapacke/include/lapacke_mangling.h lapack-netlib/SRC/la_constants.mod +lapack-netlib/SRC/la_xisnan.mod lapack-netlib/TESTING/testing_results.txt lapack-netlib/INSTALL/test* lapack-netlib/TESTING/xeigtstc From 8d11e4630c1e92437636d016f35ad48395b62b4f Mon Sep 17 00:00:00 2001 From: Sertonix Date: Sun, 6 Jul 2025 23:48:10 +0200 Subject: [PATCH 036/360] Fix cpuid.S on arm The ARM assembly syntax differs a bit Fixes 61b9339d3a1f getarch/cpuid.S: Fix warning about executable stack Signed-off-by: Sertonix --- cpuid.S | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cpuid.S b/cpuid.S index 295917bdbe..a8f5f8b573 100644 --- a/cpuid.S +++ b/cpuid.S @@ -66,5 +66,9 @@ _cpuid: #endif #if defined(__ELF__) && defined(__linux__) +#if defined(__arm__) + .section .note.GNU-stack,"",%progbits +#else .section .note.GNU-stack,"",@progbits #endif +#endif From 7a97c4ca9770b92f9e8186f520d2a156d53036d5 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 10:03:26 +0000 Subject: [PATCH 037/360] Rename HALF -> BFLOAT16 in some more places --- driver/level3/level3.c | 3 ++- driver/level3/level3_thread.c | 4 ++-- lapack/CMakeLists.txt | 2 +- lapack/potrf/potrf_parallel.c | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/driver/level3/level3.c b/driver/level3/level3.c index b7328876b4..5d3438450b 100644 --- a/driver/level3/level3.c +++ b/driver/level3/level3.c @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -305,7 +306,7 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, } BLASLONG pad_min_l = min_l; -#if defined(HALF) +#if defined(BFLOAT16) #if defined(DYNAMIC_ARCH) pad_min_l = (min_l + gotoblas->sbgemm_align_k - 1) & ~(gotoblas->sbgemm_align_k-1); #else diff --git a/driver/level3/level3_thread.c b/driver/level3/level3_thread.c index db3bffc10a..5ede6153ef 100644 --- a/driver/level3/level3_thread.c +++ b/driver/level3/level3_thread.c @@ -1,6 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ -/* Copyright 2023 The OpenBLAS Project. */ +/* Copyright 2023, 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -324,7 +324,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, BLASLONG pad_min_l = min_l; -#if defined(HALF) +#if defined(BFLOAT16) #if defined(DYNAMIC_ARCH) pad_min_l = (min_l + gotoblas->sbgemm_align_k - 1) & ~(gotoblas->sbgemm_align_k-1); #else diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt index 71df986af5..f4a4ee5be1 100644 --- a/lapack/CMakeLists.txt +++ b/lapack/CMakeLists.txt @@ -52,7 +52,7 @@ GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" fa GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3) foreach (float_type ${FLOAT_TYPES}) -if (${float_type} STREQUAL "HALF") +if (${float_type} STREQUAL "BFLOAT16") continue() endif() GenerateNamedObjects("getrf/getrf_single.c" "UNIT" "getrf_single" false "" "" false ${float_type}) diff --git a/lapack/potrf/potrf_parallel.c b/lapack/potrf/potrf_parallel.c index c38a2632d5..2bbbc7bb3e 100644 --- a/lapack/potrf/potrf_parallel.c +++ b/lapack/potrf/potrf_parallel.c @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -405,7 +406,7 @@ static int thread_driver(blas_arg_t *args, FLOAT *sa, FLOAT *sb){ #elif defined(DOUBLE) mode = BLAS_DOUBLE | BLAS_REAL; mask = MAX(DGEMM_UNROLL_M, DGEMM_UNROLL_N) - 1; -#elif defined(HALF) +#elif defined(BFLOAT16) mode = BLAS_HALF | BLAS_REAL; mask = MAX(SBGEMM_UNROLL_M, SBGEMM_UNROLL_N) - 1; #else From eaaa628af26902ccde17c1b8a84e1df905b50b85 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 10:20:17 +0000 Subject: [PATCH 038/360] Enable BUILD_BFLOAT16 in cirun --- .github/workflows/arm64_graviton.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/arm64_graviton.yml b/.github/workflows/arm64_graviton.yml index 6928312b56..b4b1897636 100644 --- a/.github/workflows/arm64_graviton.yml +++ b/.github/workflows/arm64_graviton.yml @@ -95,6 +95,7 @@ jobs: cmake -DDYNAMIC_ARCH=1 \ -DNOFORTRAN=0 \ -DBUILD_WITHOUT_LAPACK=0 \ + -DBUILD_BFLOAT16=1 \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ From 46b9b7a08075e0a701aa5d8940b834d246d3ef70 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 10:41:12 +0000 Subject: [PATCH 039/360] Also enable BFLOAT16 for make cirun --- .github/workflows/arm64_graviton.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/arm64_graviton.yml b/.github/workflows/arm64_graviton.yml index b4b1897636..4b4e151672 100644 --- a/.github/workflows/arm64_graviton.yml +++ b/.github/workflows/arm64_graviton.yml @@ -88,7 +88,7 @@ jobs: run: | case "${{ matrix.build }}" in "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" + make -j$(nproc) DYNAMIC_ARCH=1 BUILD_BFLOAT16=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" ;; "cmake") mkdir build && cd build From 552e1c7a7aff6163dbb19c5375d2d966e7f66a2a Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 11:26:36 +0000 Subject: [PATCH 040/360] Correct compiler flags for NEOVERSEV1 target --- cmake/cc.cmake | 6 +++--- cmake/system.cmake | 4 ++-- getarch.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 91037e8511..3679278b05 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -211,14 +211,14 @@ endif () if (${CORE} STREQUAL NEOVERSEV1) if (NOT DYNAMIC_ARCH) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) - set (CCOMMON_OPT "${CCOMMON_OPT} -Msve_intrinsics -march=armv8.4-a+sve -mtune=neoverse-v1") + set (CCOMMON_OPT "${CCOMMON_OPT} -Msve_intrinsics -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") elseif (${CMAKE_C_COMPILER_ID} STREQUAL "NVC" AND NOT NO_SVE) set (CCOMMON_OPT "${CCOMMON_OPT} -tp=neoverse-v1") else () if (${GCC_VERSION} VERSION_GREATER 10.4 OR ${GCC_VERSION} VERSION_EQUAL 10.4) - set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.4-a+sve -mtune=neoverse-v1") + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") else () - set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.2-a+sve") + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.2-a+sve+bf16") endif() endif() endif () diff --git a/cmake/system.cmake b/cmake/system.cmake index bac756901f..6ad73525a6 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -291,10 +291,10 @@ if (DEFINED TARGET) if (${TARGET} STREQUAL NEOVERSEV1) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) - set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve_intrinsics -march=armv8.4-a+sve -mtune=neoverse-v1") + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve_intrinsics -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") else () if (CMAKE_C_COMPILER_VERSION VERSION_GREATER 10.4 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 10.4) - set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv8.4-a+sve -mtune=neoverse-v1") + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") else () message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION} does not support Neoverse V1.") endif() diff --git a/getarch.c b/getarch.c index cb0b3cd7ca..3fdbc9799e 100644 --- a/getarch.c +++ b/getarch.c @@ -1,5 +1,5 @@ /***************************************************************************** -Copyright (c) 2011-2014, The OpenBLAS Project +Copyright (c) 2011-2014, 2025 The OpenBLAS Project All rights reserved. Redistribution and use in source and binary forms, with or without @@ -1476,7 +1476,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. "-DL2_SIZE=1048576 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DHAVE_SVE -DARMV8 " \ - "-march=armv8.4-a+sve -mtune=neoverse-v1" + "-march=armv8.4-a+sve+bf16 -mtune=neoverse-v1" #define LIBNAME "neoversev1" #define CORENAME "NEOVERSEV1" #endif From 309c48e3270a3e318d779337270f86f73ba6025f Mon Sep 17 00:00:00 2001 From: guoyuanplct Date: Tue, 8 Jul 2025 17:13:27 +0800 Subject: [PATCH 041/360] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d8f57ef60a..9ced02b303 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -250,7 +250,14 @@ In chronological order: * Ye Tao * [2025-02-03] Optimize SBGEMM kernel on NEOVERSEV1 - * [2025-02-27] Add sbgemv_n_neon kernel + * [2025-02-27] Add sbgemv_n_neon kernel2 * Abhishek Kumar - * [2025-04-22] Optimise dot kernel for NEOVERSE V1 \ No newline at end of file + * [2025-04-22] Optimise dot kernel for NEOVERSE V1 + +* Guoyuan Li + * [2025-04-11] Optimise gemv kernel for RISCV64_ZVL256B + * [2025-05-01] Optimise zgemv kernel for RISCV64_ZVL256B + * [2025-05-17] Optimise omatcopy/zomatcopy kernel for RISCV64_ZVL256B + * [2025-05-29] Optimise axpby kernel for RISCV64_ZVL256B + * [2025-06-05] Optimise hbmv kernel for RISCV64_ZVL256B From 4ff549a450cf5955a3053b43a1542f19c9e8ab69 Mon Sep 17 00:00:00 2001 From: guoyuanplct Date: Tue, 8 Jul 2025 17:16:51 +0800 Subject: [PATCH 042/360] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 9ced02b303..d26c3d534e 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -250,7 +250,7 @@ In chronological order: * Ye Tao * [2025-02-03] Optimize SBGEMM kernel on NEOVERSEV1 - * [2025-02-27] Add sbgemv_n_neon kernel2 + * [2025-02-27] Add sbgemv_n_neon kernel * Abhishek Kumar * [2025-04-22] Optimise dot kernel for NEOVERSE V1 From 04bb5acd7971d8a47558932e5610d672f35ef7ce Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 8 Jul 2025 14:40:22 +0200 Subject: [PATCH 043/360] change BLAS_HALF to BLAS_BFLOAT16 (another missed rename) --- lapack/potrf/potrf_parallel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lapack/potrf/potrf_parallel.c b/lapack/potrf/potrf_parallel.c index 2bbbc7bb3e..1e512848b8 100644 --- a/lapack/potrf/potrf_parallel.c +++ b/lapack/potrf/potrf_parallel.c @@ -407,7 +407,7 @@ static int thread_driver(blas_arg_t *args, FLOAT *sa, FLOAT *sb){ mode = BLAS_DOUBLE | BLAS_REAL; mask = MAX(DGEMM_UNROLL_M, DGEMM_UNROLL_N) - 1; #elif defined(BFLOAT16) - mode = BLAS_HALF | BLAS_REAL; + mode = BLAS_BFLOAT16 | BLAS_REAL; mask = MAX(SBGEMM_UNROLL_M, SBGEMM_UNROLL_N) - 1; #else mode = BLAS_SINGLE | BLAS_REAL; From f95e7b0e3279b0ca443b8ca4850b612df19343bb Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Thu, 3 Jul 2025 17:47:08 +0000 Subject: [PATCH 044/360] Add infrastructure for BGEMM Setting up all the infrastructure for BGEMM support in OpenBLAS, hopefully I found all the right places. Derived mostly from the previous work done in https://github.com/OpenMathLib/OpenBLAS/pull/5287 Co-authored-by: Ye Tao --- .gitignore | 2 + CONTRIBUTORS.md | 1 + Makefile.system | 10 +- Makefile.tail | 7 +- cblas.h | 30 +++++ cmake/system.cmake | 4 +- common.h | 7 +- common_b.h | 85 ++++++++++++ common_interface.h | 3 + common_level3.h | 17 +++ common_macro.h | 51 +++++++- common_param.h | 44 ++++++- driver/level3/Makefile | 55 ++++++++ getarch_2nd.c | 32 +++++ interface/Makefile | 10 +- interface/gemm.c | 7 +- kernel/Makefile.L3 | 68 +++++++++- kernel/generic/gemm_beta.c | 69 +++++++--- kernel/generic/gemmkernel_2x2.c | 60 ++++++--- kernel/setparam-ref.c | 15 ++- param.h | 10 +- test/Makefile | 42 +++++- test/compare_sgemm_bgemm.c | 224 ++++++++++++++++++++++++++++++++ 23 files changed, 797 insertions(+), 56 deletions(-) create mode 100644 common_b.h create mode 100644 test/compare_sgemm_bgemm.c diff --git a/.gitignore b/.gitignore index d14d438a25..c0885d4662 100644 --- a/.gitignore +++ b/.gitignore @@ -82,6 +82,7 @@ test/ZBLAT3.SUMM test/ZBLAT3_3M.SUMM test/SHBLAT3.SUMM test/SBBLAT3.SUMM +test/BBLAT3.SUMM test/cblat1 test/cblat2 test/cblat3 @@ -96,6 +97,7 @@ test/sblat3 test/sblat3_3m test/test_shgemm test/test_sbgemm +test/test_bgemm test/zblat1 test/zblat2 test/zblat3 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d26c3d534e..8391862b11 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -251,6 +251,7 @@ In chronological order: * Ye Tao * [2025-02-03] Optimize SBGEMM kernel on NEOVERSEV1 * [2025-02-27] Add sbgemv_n_neon kernel + * [2025-05-17] Impl prototype of BGEMM inferface * Abhishek Kumar * [2025-04-22] Optimise dot kernel for NEOVERSE V1 diff --git a/Makefile.system b/Makefile.system index bde3014cc4..9e20c132ce 100644 --- a/Makefile.system +++ b/Makefile.system @@ -276,14 +276,14 @@ SMALL_MATRIX_OPT = 1 endif ifeq ($(ARCH), arm64) GEMM_GEMV_FORWARD = 1 -GEMM_GEMV_FORWARD_BF16 = 1 +SBGEMM_GEMV_FORWARD = 1 endif ifeq ($(ARCH), riscv) GEMM_GEMV_FORWARD = 1 endif ifeq ($(ARCH), power) GEMM_GEMV_FORWARD = 1 -GEMM_GEMV_FORWARD_BF16 = 1 +SBGEMM_GEMV_FORWARD = 1 endif ifeq ($(SMALL_MATRIX_OPT), 1) @@ -293,8 +293,8 @@ ifneq ($(ONLY_CBLAS), 1) ifeq ($(GEMM_GEMV_FORWARD), 1) CCOMMON_OPT += -DGEMM_GEMV_FORWARD endif -ifeq ($(GEMM_GEMV_FORWARD_BF16), 1) -CCOMMON_OPT += -DGEMM_GEMV_FORWARD_BF16 +ifeq ($(SBGEMM_GEMV_FORWARD), 1) +CCOMMON_OPT += -DSBGEMM_GEMV_FORWARD endif endif @@ -1905,6 +1905,8 @@ export BUILD_HFLOAT16 export NO_LSX export NO_LASX +export BGEMM_UNROLL_M +export BGEMM_UNROLL_N export SBGEMM_UNROLL_M export SBGEMM_UNROLL_N export SHGEMM_UNROLL_M diff --git a/Makefile.tail b/Makefile.tail index ed2c0e5073..ddd74dcad6 100644 --- a/Makefile.tail +++ b/Makefile.tail @@ -1,3 +1,4 @@ +BBLASOBJS_P = $(BBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SBBLASOBJS_P = $(SBBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SHBLASPBJS_P = $(SHBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SBLASOBJS_P = $(SBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) @@ -12,8 +13,8 @@ COMMONOBJS_P = $(COMMONOBJS:.$(SUFFIX)=.$(PSUFFIX)) HPLOBJS_P = $(HPLOBJS:.$(SUFFIX)=.$(PSUFFIX)) -BLASOBJS = $(SHBLASOBJS) $(SBEXTOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(CBAUXOBJS) -BLASOBJS_P = $(SHBLASPBJS_P) $(SBEXTOBJS_P) $(SBBLASOBJS_P) $(SBLASOBJS_P) $(DBLASOBJS_P) $(CBLASOBJS_P) $(ZBLASOBJS_P) $(CBAUXOBJS_P) +BLASOBJS = $(SHBLASOBJS) $(BBLASOBJS) $(SBEXTOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(CBAUXOBJS) +BLASOBJS_P = $(SHBLASPBJS_P) $(BBLASOBJS_P) $(SBEXTOBJS_P) $(SBBLASOBJS_P) $(SBLASOBJS_P) $(DBLASOBJS_P) $(CBLASOBJS_P) $(ZBLASOBJS_P) $(CBAUXOBJS_P) ifdef EXPRECISION BLASOBJS += $(QBLASOBJS) $(XBLASOBJS) @@ -26,6 +27,7 @@ BLASOBJS_P += $(QBLASOBJS_P) $(XBLASOBJS_P) endif $(SHBLASOBJS) $(SHBLASOBJS_P) : override CFLAGS += -DHFLOAT16 -UDOUBLE -UCOMPLEX +$(BBLASOBJS) $(BBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -USMALL_MATRIX_OPT $(SBBLASOBJS) $(SBBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -UDOUBLE -UCOMPLEX $(SBLASOBJS) $(SBLASOBJS_P) : override CFLAGS += -UDOUBLE -UCOMPLEX $(DBLASOBJS) $(DBLASOBJS_P) : override CFLAGS += -DDOUBLE -UCOMPLEX @@ -36,6 +38,7 @@ $(XBLASOBJS) $(XBLASOBJS_P) : override CFLAGS += -DXDOUBLE -DCOMPLEX $(SBEXTOBJS) $(SBEXTOBJS_P) : override CFLAGS += -DBFLOAT16 -UDOUBLE -UCOMPLEX $(SHBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) +$(BBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(SBBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(SBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) $(DBLASOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF) diff --git a/cblas.h b/cblas.h index 0364b216fc..f48d5da1e8 100644 --- a/cblas.h +++ b/cblas.h @@ -1,3 +1,31 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + #ifndef CBLAS_H #define CBLAS_H @@ -441,6 +469,8 @@ void cblas_dbf16tod(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPE float cblas_sbdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST bfloat16 *y, OPENBLAS_CONST blasint incy); void cblas_sbgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); +void cblas_bgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, + OPENBLAS_CONST bfloat16 alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST bfloat16 beta, bfloat16 *C, OPENBLAS_CONST blasint ldc); void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, diff --git a/cmake/system.cmake b/cmake/system.cmake index 6ad73525a6..81f1a67ad3 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -425,8 +425,8 @@ endif () if (GEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) set(CCOMMON_OPT "${CCOMMON_OPT} -DGEMM_GEMV_FORWARD") endif () -if (GEMM_GEMV_FORWARD_BF16 AND NOT ONLY_CBLAS) - set(CCOMMON_OPT "${CCOMMON_OPT} -DGEMM_GEMV_FORWARD_BF16") +if (SBGEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) + set(CCOMMON_OPT "${CCOMMON_OPT} -DSBGEMM_GEMV_FORWARD") endif () if (SMALL_MATRIX_OPT) set(CCOMMON_OPT "${CCOMMON_OPT} -DSMALL_MATRIX_OPT") diff --git a/common.h b/common.h index 23a08aaa98..4984d727cd 100644 --- a/common.h +++ b/common.h @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -317,7 +318,11 @@ typedef int blasint; #elif defined(BFLOAT16) #define IFLOAT bfloat16 #define XFLOAT IFLOAT -#define FLOAT float +#ifdef BGEMM +#define FLOAT bfloat16 +#else +#define FLOAT float +#endif #define SIZE 2 #define BASE_SHIFT 1 #define ZBASE_SHIFT 2 diff --git a/common_b.h b/common_b.h new file mode 100644 index 0000000000..e03f6800da --- /dev/null +++ b/common_b.h @@ -0,0 +1,85 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#ifndef COMMON_B_H +#define COMMON_B_H + +#ifndef DYNAMIC_ARCH +#define BGEMM_ONCOPY bgemm_oncopy +#define BGEMM_OTCOPY bgemm_otcopy +#define BGEMM_INCOPY bgemm_incopy +#define BGEMM_ITCOPY bgemm_itcopy + +#define BGEMM_BETA bgemm_beta +#define BGEMM_KERNEL bgemm_kernel + +#else + +#define BGEMM_ONCOPY gotoblas->bgemm_oncopy +#define BGEMM_OTCOPY gotoblas->bgemm_otcopy +#define BGEMM_INCOPY gotoblas->bgemm_incopy +#define BGEMM_ITCOPY gotoblas->bgemm_itcopy +#define BGEMM_BETA gotoblas->bgemm_beta +#define BGEMM_KERNEL gotoblas->bgemm_kernel + +#endif + +#define BGEMM_NN bgemm_nn +#define BGEMM_CN bgemm_tn +#define BGEMM_TN bgemm_tn +#define BGEMM_NC bgemm_nt +#define BGEMM_NT bgemm_nt +#define BGEMM_CC bgemm_tt +#define BGEMM_CT bgemm_tt +#define BGEMM_TC bgemm_tt +#define BGEMM_TT bgemm_tt +#define BGEMM_NR bgemm_nn +#define BGEMM_TR bgemm_tn +#define BGEMM_CR bgemm_tn +#define BGEMM_RN bgemm_nn +#define BGEMM_RT bgemm_nt +#define BGEMM_RC bgemm_nt +#define BGEMM_RR bgemm_nn + +#define BGEMM_THREAD_NN bgemm_thread_nn +#define BGEMM_THREAD_CN bgemm_thread_tn +#define BGEMM_THREAD_TN bgemm_thread_tn +#define BGEMM_THREAD_NC bgemm_thread_nt +#define BGEMM_THREAD_NT bgemm_thread_nt +#define BGEMM_THREAD_CC bgemm_thread_tt +#define BGEMM_THREAD_CT bgemm_thread_tt +#define BGEMM_THREAD_TC bgemm_thread_tt +#define BGEMM_THREAD_TT bgemm_thread_tt +#define BGEMM_THREAD_NR bgemm_thread_nn +#define BGEMM_THREAD_TR bgemm_thread_tn +#define BGEMM_THREAD_CR bgemm_thread_tn +#define BGEMM_THREAD_RN bgemm_thread_nn +#define BGEMM_THREAD_RT bgemm_thread_nt +#define BGEMM_THREAD_RC bgemm_thread_nt +#define BGEMM_THREAD_RR bgemm_thread_nn +#endif diff --git a/common_interface.h b/common_interface.h index 23d86871fc..f69baab1ca 100644 --- a/common_interface.h +++ b/common_interface.h @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -483,6 +484,8 @@ void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint void BLASFUNC(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, hfloat16 *, blasint *, hfloat16 *, blasint *, float *, float *, blasint *); +void BLASFUNC(bgemm)(char *, char *, blasint *, blasint *, blasint *, bfloat16 *, + bfloat16 *, blasint *, bfloat16 *, blasint *, bfloat16 *, bfloat16 *, blasint *); void BLASFUNC(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, diff --git a/common_level3.h b/common_level3.h index 1838b4bf6a..607eaf9402 100644 --- a/common_level3.h +++ b/common_level3.h @@ -56,6 +56,8 @@ int sgemm_direct_performant(BLASLONG M, BLASLONG N, BLASLONG K); int shgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, hfloat16 *, BLASLONG, hfloat16 *, BLASLONG, float *, BLASLONG); +int bgemm_beta(BLASLONG, BLASLONG, BLASLONG, bfloat16, + bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG); int sbgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float *, BLASLONG); int sgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, @@ -83,6 +85,10 @@ int shgemm_incopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b int shgemm_itcopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); int shgemm_oncopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); int shgemm_otcopy(BLASLONG m, BLASLONG n, hfloat16 *a, BLASLONG lda, hfloat16 *b); +int bgemm_incopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); +int bgemm_itcopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); +int bgemm_oncopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); +int bgemm_otcopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); int sbgemm_incopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); int sbgemm_itcopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); int sbgemm_oncopy(BLASLONG m, BLASLONG n, bfloat16 *a, BLASLONG lda, bfloat16 *b); @@ -511,6 +517,7 @@ int xher2k_kernel_LN(BLASLONG m, BLASLONG n, BLASLONG k, xdouble alpha_r, xdoubl int xher2k_kernel_LC(BLASLONG m, BLASLONG n, BLASLONG k, xdouble alpha_r, xdouble alpha_i, xdouble *a, xdouble *b, xdouble *c, BLASLONG ldc, BLASLONG offset, int flag); int shgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, hfloat16 *, hfloat16 *, float *, BLASLONG); +int bgemm_kernel(BLASLONG, BLASLONG, BLASLONG, bfloat16, bfloat16 *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, bfloat16 *, float *, BLASLONG); int sgemm_kernel(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG); int dgemm_kernel(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG); @@ -668,6 +675,11 @@ int shgemm_nt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLAS int shgemm_tn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); int shgemm_tt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int bgemm_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_tt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); + int sbgemm_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); @@ -770,6 +782,11 @@ int shgemm_thread_nt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 int shgemm_thread_tn(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); int shgemm_thread_tt(blas_arg_t *, BLASLONG *, BLASLONG *, hfloat16 *, hfloat16 *, BLASLONG); +int bgemm_thread_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_thread_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_thread_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); +int bgemm_thread_tt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); + int sbgemm_thread_nn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_thread_nt(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); int sbgemm_thread_tn(blas_arg_t *, BLASLONG *, BLASLONG *, bfloat16 *, bfloat16 *, BLASLONG); diff --git a/common_macro.h b/common_macro.h index b29a9c08df..22c1e14a20 100644 --- a/common_macro.h +++ b/common_macro.h @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -40,6 +41,7 @@ #define COMMON_MACRO #include "common_sh.h" +#include "common_b.h" #include "common_sb.h" #include "common_s.h" #include "common_d.h" @@ -702,8 +704,52 @@ #define GEMM_THREAD_RR SHGEMM_THREAD_NN -#elif defined(BFLOAT16) +#elif defined(BFLOAT16) && defined(BGEMM) +#define GEMM_BETA BGEMM_BETA +#define GEMM_KERNEL_N BGEMM_KERNEL +#define GEMM_KERNEL_L BGEMM_KERNEL +#define GEMM_KERNEL_R BGEMM_KERNEL +#define GEMM_KERNEL_B BGEMM_KERNEL + +#define GEMM_NN BGEMM_NN +#define GEMM_CN BGEMM_TN +#define GEMM_TN BGEMM_TN +#define GEMM_NC BGEMM_NT +#define GEMM_NT BGEMM_NT +#define GEMM_CC BGEMM_TT +#define GEMM_CT BGEMM_TT +#define GEMM_TC BGEMM_TT +#define GEMM_TT BGEMM_TT +#define GEMM_NR BGEMM_NN +#define GEMM_TR BGEMM_TN +#define GEMM_CR BGEMM_TN +#define GEMM_RN BGEMM_NN +#define GEMM_RT BGEMM_NT +#define GEMM_RC BGEMM_NT +#define GEMM_RR BGEMM_NN +#define GEMM_ONCOPY BGEMM_ONCOPY +#define GEMM_OTCOPY BGEMM_OTCOPY +#define GEMM_INCOPY BGEMM_INCOPY +#define GEMM_ITCOPY BGEMM_ITCOPY + +#define GEMM_THREAD_NN BGEMM_THREAD_NN +#define GEMM_THREAD_CN BGEMM_THREAD_TN +#define GEMM_THREAD_TN BGEMM_THREAD_TN +#define GEMM_THREAD_NC BGEMM_THREAD_NT +#define GEMM_THREAD_NT BGEMM_THREAD_NT +#define GEMM_THREAD_CC BGEMM_THREAD_TT +#define GEMM_THREAD_CT BGEMM_THREAD_TT +#define GEMM_THREAD_TC BGEMM_THREAD_TT +#define GEMM_THREAD_TT BGEMM_THREAD_TT +#define GEMM_THREAD_NR BGEMM_THREAD_NN +#define GEMM_THREAD_TR BGEMM_THREAD_TN +#define GEMM_THREAD_CR BGEMM_THREAD_TN +#define GEMM_THREAD_RN BGEMM_THREAD_NN +#define GEMM_THREAD_RT BGEMM_THREAD_NT +#define GEMM_THREAD_RC BGEMM_THREAD_NT +#define GEMM_THREAD_RR BGEMM_THREAD_NN +#elif defined(BFLOAT16) #define D_TO_BF16_K SBDTOBF16_K #define D_BF16_TO_K DBF16TOD_K #define S_TO_BF16_K SBSTOBF16_K @@ -2663,6 +2709,9 @@ || defined(ARCH_LOONGARCH64) || defined(ARCH_E2K) || defined(ARCH_ALPHA)) extern BLASLONG gemm_offset_a; extern BLASLONG gemm_offset_b; +extern BLASLONG bgemm_p; +extern BLASLONG bgemm_q; +extern BLASLONG bgemm_r; extern BLASLONG sbgemm_p; extern BLASLONG sbgemm_q; extern BLASLONG sbgemm_r; diff --git a/common_param.h b/common_param.h index f82b73a72b..503525dd2a 100644 --- a/common_param.h +++ b/common_param.h @@ -1,6 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ -/* Copyright 2023 The OpenBLAS Project. */ +/* Copyright 2023, 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -65,6 +65,10 @@ int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); #if BUILD_BFLOAT16 == 1 + int bgemm_p, bgemm_q, bgemm_r; + int bgemm_unroll_m, bgemm_unroll_n, bgemm_unroll_mn; + int bgemm_align_k; + int sbgemm_p, sbgemm_q, sbgemm_r; int sbgemm_unroll_m, sbgemm_unroll_n, sbgemm_unroll_mn; int sbgemm_align_k; @@ -105,6 +109,14 @@ int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); int (*sbsymv_L) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *); int (*sbsymv_U) (BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *); + int (*bgemm_kernel )(BLASLONG, BLASLONG, BLASLONG, bfloat16, bfloat16 *, bfloat16 *, bfloat16 *, BLASLONG); + int (*bgemm_beta )(BLASLONG, BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG); + + int (*bgemm_incopy )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *); + int (*bgemm_itcopy )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *); + int (*bgemm_oncopy )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *); + int (*bgemm_otcopy )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *); + int (*sbgemm_kernel )(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, bfloat16 *, float *, BLASLONG); int (*sbgemm_beta )(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float *, BLASLONG); @@ -1254,6 +1266,13 @@ extern gotoblas_t *gotoblas; #endif #if (BUILD_BFLOAT16==1) +#define BGEMM_P gotoblas -> bgemm_p +#define BGEMM_Q gotoblas -> bgemm_q +#define BGEMM_R gotoblas -> bgemm_r +#define BGEMM_UNROLL_M gotoblas -> bgemm_unroll_m +#define BGEMM_UNROLL_N gotoblas -> bgemm_unroll_n +#define BGEMM_UNROLL_MN gotoblas -> bgemm_unroll_mn + #define SBGEMM_P gotoblas -> sbgemm_p #define SBGEMM_Q gotoblas -> sbgemm_q #define SBGEMM_R gotoblas -> sbgemm_r @@ -1395,6 +1414,17 @@ extern gotoblas_t *gotoblas; #endif #if (BUILD_BFLOAT16 == 1) +#define BGEMM_P BGEMM_DEFAULT_P +#define BGEMM_Q BGEMM_DEFAULT_Q +#define BGEMM_R BGEMM_DEFAULT_R +#define BGEMM_UNROLL_M BGEMM_DEFAULT_UNROLL_M +#define BGEMM_UNROLL_N BGEMM_DEFAULT_UNROLL_N +#ifdef BGEMM_DEFAULT_UNROLL_MN +#define BGEMM_UNROLL_MN BGEMM_DEFAULT_UNROLL_MN +#else +#define BGEMM_UNROLL_MN MAX((BGEMM_UNROLL_M), (BGEMM_UNROLL_N)) +#endif + #define SBGEMM_P SBGEMM_DEFAULT_P #define SBGEMM_Q SBGEMM_DEFAULT_Q #define SBGEMM_R SBGEMM_DEFAULT_R @@ -1555,6 +1585,18 @@ extern gotoblas_t *gotoblas; #define GEMM_DEFAULT_R SHGEMM_DEFAULT_R #define GEMM_DEFAULT_UNROLL_M SHGEMM_DEFAULT_UNROLL_M #define GEMM_DEFAULT_UNROLL_N SHGEMM_DEFAULT_UNROLL_N +#elif defined(BFLOAT16) && defined(BGEMM) +#define GEMM_P BGEMM_P +#define GEMM_Q BGEMM_Q +#define GEMM_R BGEMM_R +#define GEMM_UNROLL_M BGEMM_UNROLL_M +#define GEMM_UNROLL_N BGEMM_UNROLL_N +#define GEMM_UNROLL_MN BGEMM_UNROLL_MN +#define GEMM_DEFAULT_P BGEMM_DEFAULT_P +#define GEMM_DEFAULT_Q BGEMM_DEFAULT_Q +#define GEMM_DEFAULT_R BGEMM_DEFAULT_R +#define GEMM_DEFAULT_UNROLL_M BGEMM_DEFAULT_UNROLL_M +#define GEMM_DEFAULT_UNROLL_N BGEMM_DEFAULT_UNROLL_N #elif defined(BFLOAT16) #define GEMM_P SBGEMM_P #define GEMM_Q SBGEMM_Q diff --git a/driver/level3/Makefile b/driver/level3/Makefile index 132645a871..622996c3b8 100644 --- a/driver/level3/Makefile +++ b/driver/level3/Makefile @@ -1,3 +1,32 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + TOPDIR = ../.. include ../../Makefile.system @@ -20,6 +49,7 @@ USE_GEMM3M = 1 endif ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += bgemm_nn.$(SUFFIX) bgemm_nt.$(SUFFIX) bgemm_tn.$(SUFFIX) bgemm_tt.$(SUFFIX) SBBLASOBJS += sbgemm_nn.$(SUFFIX) sbgemm_nt.$(SUFFIX) sbgemm_tn.$(SUFFIX) sbgemm_tt.$(SUFFIX) endif @@ -212,6 +242,7 @@ COMMONOBJS += syrk_thread.$(SUFFIX) ifneq ($(USE_SIMPLE_THREADED_LEVEL3), 1) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += bgemm_thread_nn.$(SUFFIX) bgemm_thread_nt.$(SUFFIX) bgemm_thread_tn.$(SUFFIX) bgemm_thread_tt.$(SUFFIX) SBBLASOBJS += sbgemm_thread_nn.$(SUFFIX) sbgemm_thread_nt.$(SUFFIX) sbgemm_thread_tn.$(SUFFIX) sbgemm_thread_tt.$(SUFFIX) endif ifeq ($(BUILD_HFLOAT16),1) @@ -350,6 +381,18 @@ endif all :: +bgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +bgemm_nt.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +bgemm_tn.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +bgemm_tt.$(SUFFIX) : gemm.c level3.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sbgemm_nn.$(SUFFIX) : gemm.c level3.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) @@ -569,6 +612,18 @@ gemm_thread_variable.$(SUFFIX) : gemm_thread_variable.c ../../common.h beta_thread.$(SUFFIX) : beta_thread.c ../../common.h $(CC) -c $(CFLAGS) $< -o $(@F) +bgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) + +bgemm_thread_nt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DNT $< -o $(@F) + +bgemm_thread_tn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DTN $< -o $(@F) + +bgemm_thread_tt.$(SUFFIX) : gemm.c level3_thread.c ../../param.h + $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -DTT $< -o $(@F) + sbgemm_thread_nn.$(SUFFIX) : gemm.c level3_thread.c ../../param.h $(CC) $(CFLAGS) $(BLOCKS) -c -DTHREADED_LEVEL3 -DBFLOAT16 -UDOUBLE -UCOMPLEX -DNN $< -o $(@F) diff --git a/getarch_2nd.c b/getarch_2nd.c index 8170e9cf33..2085556bd6 100644 --- a/getarch_2nd.c +++ b/getarch_2nd.c @@ -1,3 +1,31 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + #include #ifndef BUILD_KERNEL #include "config.h" @@ -17,6 +45,10 @@ typedef unsigned long BLASULONG; int main(int argc, char **argv) { if ( (argc <= 1) || ((argc >= 2) && (*argv[1] == '0'))) { + printf("BGEMM_UNROLL_M=%d\n", BGEMM_DEFAULT_UNROLL_M); + printf("BGEMM_UNROLL_N=%d\n", BGEMM_DEFAULT_UNROLL_N); + printf("BGEMM_UNROLL_M=%d\n", BGEMM_DEFAULT_UNROLL_M); + printf("BGEMM_UNROLL_N=%d\n", BGEMM_DEFAULT_UNROLL_N); printf("SBGEMM_UNROLL_M=%d\n", SBGEMM_DEFAULT_UNROLL_M); printf("SBGEMM_UNROLL_N=%d\n", SBGEMM_DEFAULT_UNROLL_N); printf("SHGEMM_UNROLL_M=%d\n", SHGEMM_DEFAULT_UNROLL_M); diff --git a/interface/Makefile b/interface/Makefile index dc154a3c4e..e14796cbbd 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -47,6 +47,7 @@ SBLAS3OBJS = \ sgeadd.$(SUFFIX) sgemmt.$(SUFFIX) sgemmtr.$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) +BBLAS3OBJ = bgemm.$(SUFFIX) SBBLAS1OBJS = sbdot.$(SUFFIX) SBBLAS2OBJS = sbgemv.$(SUFFIX) SBBLAS3OBJS = sbgemm.$(SUFFIX) sbgemmt.$(SUFFIX) sbgemmtr.$(SUFFIX) @@ -289,6 +290,7 @@ CSBLAS3OBJS = \ cblas_sgeadd.$(SUFFIX) cblas_sgemmt.$(SUFFIX) cblas_sgemmtr.$(SUFFIX) cblas_sgemm_batch.$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) +CBBLAS3OBJS = cblas_bgemm.$(SUFFIX) CSBBLAS1OBJS = cblas_sbdot.$(SUFFIX) CSBBLAS2OBJS = cblas_sbgemv.$(SUFFIX) CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX) cblas_sbgemmt.$(SUFFIX) cblas_sbgemmtr.$(SUFFIX) cblas_sbgemm_batch.$(SUFFIX) @@ -393,6 +395,7 @@ override CFLAGS += -I. SBLAS1OBJS += $(CSBLAS1OBJS) SBLAS2OBJS += $(CSBLAS2OBJS) SBLAS3OBJS += $(CSBLAS3OBJS) +BBLAS3OBJ += $(CBBLAS3OBJS) SBBLAS1OBJS += $(CSBBLAS1OBJS) SBBLAS2OBJS += $(CSBBLAS2OBJS) SBBLAS3OBJS += $(CSBBLAS3OBJS) @@ -412,6 +415,7 @@ SBEXTOBJS += $(CSBEXTOBJS) CBAUXOBJS += $(CXERBLAOBJ) endif +BBLASOBJS = $(BBLAS3OBJ) SBLASOBJS = $(SBLAS1OBJS) $(SBLAS2OBJS) $(SBLAS3OBJS) SBBLASOBJS = $(SBBLAS1OBJS) $(SBBLAS2OBJS) $(SBBLAS3OBJS) SHBLASOBJS = $(SHBLAS3OBJS) @@ -560,7 +564,7 @@ level1 : $(SBEXTOBJS) $(SBBLAS1OBJS) $(SBLAS1OBJS) $(DBLAS1OBJS) $(QBLAS1OBJS) $ level2 : $(SBBLAS2OBJS) $(SBLAS2OBJS) $(DBLAS2OBJS) $(QBLAS2OBJS) $(CBLAS2OBJS) $(ZBLAS2OBJS) $(XBLAS2OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ -level3 : $(SBBLAS3OBJS) $(SBLAS3OBJS) $(DBLAS3OBJS) $(QBLAS3OBJS) $(CBLAS3OBJS) $(ZBLAS3OBJS) $(XBLAS3OBJS) $(SHBLAS3OBJS) +level3 : $(SBBLAS3OBJS) $(BBLAS3OBJ) $(SBLAS3OBJS) $(DBLAS3OBJS) $(QBLAS3OBJS) $(CBLAS3OBJS) $(ZBLAS3OBJS) $(XBLAS3OBJS) $(SHBLAS3OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ aux : $(CBAUXOBJS) @@ -1311,6 +1315,8 @@ xhpr2.$(SUFFIX) xhpr2.$(PSUFFIX) : zhpr2.c $(CC) -c $(CFLAGS) $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +bgemm.$(SUFFIX) bgemm.$(PSUFFIX) : gemm.c ../param.h + $(CC) -c $(CFLAGS) $< -o $(@F) sbgemm.$(SUFFIX) sbgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -c $(CFLAGS) $< -o $(@F) sbgemmt.$(SUFFIX) sbgemmt.$(PSUFFIX) : sbgemmt.c ../param.h @@ -1979,6 +1985,8 @@ cblas_sgemm.$(SUFFIX) cblas_sgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +cblas_bgemm.$(SUFFIX) cblas_bgemm.$(PSUFFIX) : gemm.c ../param.h + $(CC) -DCBLAS -DBGEMM -c $(CFLAGS) $< -o $(@F) cblas_sbgemm.$(SUFFIX) cblas_sbgemm.$(PSUFFIX) : gemm.c ../param.h $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) endif diff --git a/interface/gemm.c b/interface/gemm.c index d79282e13f..c21fd988bd 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -54,8 +54,13 @@ #define ERROR_NAME "DGEMM " #define GEMV BLASFUNC(dgemv) #elif defined(BFLOAT16) +#ifdef BGEMM +#define ERROR_NAME "BGEMM " +#define GEMV BLASFUNC(bgemv) +#else #define ERROR_NAME "SBGEMM " #define GEMV BLASFUNC(sbgemv) +#endif #elif defined(HFLOAT16) #define ERROR_NAME "SHGEMM " #else @@ -579,7 +584,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS args.m, args.n, args.k, args.lda, args.ldb, args.ldc); #endif -#if defined(GEMM_GEMV_FORWARD) && !defined(GEMM3M) && !defined(COMPLEX) && !defined(HFLOAT16) && (!defined(BFLOAT16) || defined(GEMM_GEMV_FORWARD_BF16)) +#if defined(GEMM_GEMV_FORWARD) && !defined(GEMM3M) && !defined(COMPLEX) && !defined(HFLOAT16) && (!defined(BFLOAT16) || (!defined(BGEMM) && defined(SBGEMM_GEMV_FORWARD)) || (defined(BGEMM) && defined(BGEMM_GEMV_FORWARD))) #if defined(ARCH_ARM64) // The gemv kernels in arm64/{gemv_n.S,gemv_n_sve.c,gemv_t.S,gemv_t_sve.c} // perform poorly in certain circumstances. We use the following boolean diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 6afb49a779..06f18e6be2 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -1,3 +1,30 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### USE_GEMM3M = 0 OS := $(shell uname) @@ -110,6 +137,23 @@ endif endif ifeq ($(BUILD_BFLOAT16), 1) +ifndef BGEMMKERNEL +BGEMM_BETA = ../generic/gemm_beta.c +BGEMMKERNEL = ../generic/gemmkernel_2x2.c +BGEMMINCOPY = ../generic/gemm_ncopy_2.c +BGEMMITCOPY = ../generic/gemm_tcopy_2.c +BGEMMONCOPY = ../generic/gemm_ncopy_2.c +BGEMMOTCOPY = ../generic/gemm_tcopy_2.c +BGEMMINCOPYOBJ = bgemm_incopy$(TSUFFIX).$(SUFFIX) +BGEMMITCOPYOBJ = bgemm_itcopy$(TSUFFIX).$(SUFFIX) +BGEMMONCOPYOBJ = bgemm_oncopy$(TSUFFIX).$(SUFFIX) +BGEMMOTCOPYOBJ = bgemm_otcopy$(TSUFFIX).$(SUFFIX) +endif +BKERNELOBJS += \ + bgemm_kernel$(TSUFFIX).$(SUFFIX) \ + $(BGEMMINCOPYOBJ) $(BGEMMITCOPYOBJ) \ + $(BGEMMONCOPYOBJ) $(BGEMMOTCOPYOBJ) + ifndef SBGEMMKERNEL SBGEMM_BETA = ../generic/gemm_beta.c SBGEMMKERNEL = ../generic/gemmkernel_2x2.c @@ -210,6 +254,7 @@ XKERNELOBJS += \ $(XGEMMONCOPYOBJ) $(XGEMMOTCOPYOBJ) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += $(BKERNELOBJS) SBBLASOBJS += $(SBKERNELOBJS) endif ifeq ($(BUILD_HFLOAT16),1) @@ -223,6 +268,7 @@ ZBLASOBJS += $(ZKERNELOBJS) XBLASOBJS += $(XKERNELOBJS) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += bgemm_beta$(TSUFFIX).$(SUFFIX) SBBLASOBJS += sbgemm_beta$(TSUFFIX).$(SUFFIX) endif ifeq ($(BUILD_HFLOAT16),1) @@ -667,6 +713,8 @@ XGEMMONCOPYOBJ_P = $(XGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) XGEMMOTCOPYOBJ_P = $(XGEMMOTCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) ifeq ($(BUILD_BFLOAT16),1) +$(KDIR)bgemm_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(BGEMM_BETA) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sbgemm_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SBGEMM_BETA) $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif @@ -698,9 +746,22 @@ ifeq ($(ARCH), E2K) USE_TRMM = 1 endif - ifeq ($(BUILD_BFLOAT16), 1) +$(KDIR)$(BGEMMONCOPYOBJ) : $(KERNELDIR)/$(BGEMMONCOPY) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)$(BGEMMOTCOPYOBJ) : $(KERNELDIR)/$(BGEMMOTCOPY) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +ifneq ($(BGEMM_UNROLL_M), $(BGEMM_UNROLL_N)) +$(KDIR)$(BGEMMINCOPYOBJ) : $(KERNELDIR)/$(BGEMMINCOPY) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +$(KDIR)$(BGEMMITCOPYOBJ) : $(KERNELDIR)/$(BGEMMITCOPY) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(KDIR)$(SBGEMMONCOPYOBJ) : $(KERNELDIR)/$(SBGEMMONCOPY) $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ @@ -914,7 +975,8 @@ endif endif ifeq ($(BUILD_BFLOAT16), 1) - +$(KDIR)bgemm_kernel$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(BGEMMKERNEL) + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sbgemm_kernel$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SBGEMMKERNEL) $(SBGEMMDEPEND) $(CC) $(CFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif @@ -2908,6 +2970,8 @@ $(KDIR)sgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SGEMM_BETA) $(CC) $(PFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ ifeq ($(BUILD_BFLOAT16),1) +$(KDIR)bgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(BGEMM_BETA) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sbgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBGEMM_BETA) $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif diff --git a/kernel/generic/gemm_beta.c b/kernel/generic/gemm_beta.c index ccb772cc7d..74e9bf9a97 100644 --- a/kernel/generic/gemm_beta.c +++ b/kernel/generic/gemm_beta.c @@ -1,5 +1,6 @@ /*********************************************************************/ /* Copyright 2009, 2010 The University of Texas at Austin. */ +/* Copyright 2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -38,11 +39,41 @@ #include "common.h" +#if defined(BFLOAT16) && defined(BGEMM) && defined(BFLOAT16CONVERSION) +static float +bfloat16tof32 (bfloat16 f16) +{ + float result = 0; + unsigned short* q = (unsigned short*)(&result); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + q[0] = f16; +#else + q[1] = f16; +#endif + return result; +} +static bfloat16 +f32tobfloat16(float f32) +{ + unsigned short* q = (unsigned short*)(&f32); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return q[0]; +#else + return q[1]; +#endif +} + +#define BF16TOF32(x) (bfloat16tof32(x)) +#define F32TOBF16(x) (f32tobfloat16(x)) +#else +#define BF16TOF32(x) x +#define F32TOBF16(x) x +#endif + int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT beta, IFLOAT *dummy2, BLASLONG dummy3, IFLOAT *dummy4, BLASLONG dummy5, FLOAT *c, BLASLONG ldc){ - BLASLONG i, j; BLASLONG chunk, remain; FLOAT *c_offset1, *c_offset; @@ -54,18 +85,18 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT beta, c_offset1 = c_offset; c_offset += ldc; for(i=chunk; i>0; i--){ - *(c_offset1 + 0) = ZERO; - *(c_offset1 + 1) = ZERO; - *(c_offset1 + 2) = ZERO; - *(c_offset1 + 3) = ZERO; - *(c_offset1 + 4) = ZERO; - *(c_offset1 + 5) = ZERO; - *(c_offset1 + 6) = ZERO; - *(c_offset1 + 7) = ZERO; + *(c_offset1 + 0) = F32TOBF16(ZERO); + *(c_offset1 + 1) = F32TOBF16(ZERO); + *(c_offset1 + 2) = F32TOBF16(ZERO); + *(c_offset1 + 3) = F32TOBF16(ZERO); + *(c_offset1 + 4) = F32TOBF16(ZERO); + *(c_offset1 + 5) = F32TOBF16(ZERO); + *(c_offset1 + 6) = F32TOBF16(ZERO); + *(c_offset1 + 7) = F32TOBF16(ZERO); c_offset1 += 8; } for(i=remain; i>0; i--){ - *c_offset1 = ZERO; + *c_offset1 = F32TOBF16(ZERO); c_offset1 ++; } } @@ -74,18 +105,18 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT beta, c_offset1 = c_offset; c_offset += ldc; for(i=chunk; i>0; i--){ - *(c_offset1 + 0) *= beta; - *(c_offset1 + 1) *= beta; - *(c_offset1 + 2) *= beta; - *(c_offset1 + 3) *= beta; - *(c_offset1 + 4) *= beta; - *(c_offset1 + 5) *= beta; - *(c_offset1 + 6) *= beta; - *(c_offset1 + 7) *= beta; + *(c_offset1 + 0) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[0])); + *(c_offset1 + 1) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[1])); + *(c_offset1 + 2) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[2])); + *(c_offset1 + 3) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[3])); + *(c_offset1 + 4) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[4])); + *(c_offset1 + 5) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[5])); + *(c_offset1 + 6) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[6])); + *(c_offset1 + 7) = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[7])); c_offset1 += 8; } for(i=remain; i>0; i--){ - *c_offset1 *= beta; + *c_offset1 = F32TOBF16(BF16TOF32(beta) * BF16TOF32(c_offset1[0])); c_offset1 ++; } } diff --git a/kernel/generic/gemmkernel_2x2.c b/kernel/generic/gemmkernel_2x2.c index bf1c3ae381..add84f0431 100644 --- a/kernel/generic/gemmkernel_2x2.c +++ b/kernel/generic/gemmkernel_2x2.c @@ -12,9 +12,29 @@ bfloat16tof32 (bfloat16 f16) #endif return result; } + +static bfloat16 f32tobfloat16(float f32) { + unsigned short *q = (unsigned short *)(&f32); +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return q[0]; +#else + return q[1]; +#endif +} + +#ifdef BGEMM +#define ALPHA bfloat16tof32(alpha) #define BF16TOF32(x) (bfloat16tof32(x)) +#define F32TOBF16(x) (f32tobfloat16(x)) #else +#define ALPHA alpha +#define BF16TOF32(x) (bfloat16tof32(x)) +#define F32TOBF16(x) x +#endif +#else +#define ALPHA alpha #define BF16TOF32(x) x +#define F32TOBF16(x) x #endif int CNAME(BLASLONG bm,BLASLONG bn,BLASLONG bk,FLOAT alpha,IFLOAT* ba,IFLOAT* bb,FLOAT* C,BLASLONG ldc #ifdef TRMMKERNEL @@ -25,7 +45,11 @@ int CNAME(BLASLONG bm,BLASLONG bn,BLASLONG bk,FLOAT alpha,IFLOAT* ba,IFLOAT* bb, BLASLONG i,j,k; FLOAT *C0,*C1; IFLOAT *ptrba,*ptrbb; +#ifdef BGEMM + float res0,res1,res2,res3; +#else FLOAT res0,res1,res2,res3; +#endif IFLOAT load0,load1,load2,load3,load4,load5,load6,load7; for (j=0; j SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 + OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat3 < ./sblat3.dat @@ -223,6 +254,8 @@ ifeq ($(USE_OPENMP), 1) ifeq ($(BUILD_BFLOAT16),1) OMP_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 + OMP_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OMP_NUM_THREADS=2 ./sblat3 < ./sblat3.dat @@ -244,6 +277,8 @@ else ifeq ($(BUILD_BFLOAT16),1) OPENBLAS_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 + OPENBLAS_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=2 ./sblat3 < ./sblat3.dat @@ -367,6 +402,9 @@ zblat3 : zblat3.$(SUFFIX) ../$(LIBNAME) endif ifeq ($(BUILD_BFLOAT16),1) +test_bgemm : compare_sgemm_bgemm.c ../$(LIBNAME) + $(CC) $(CLDFLAGS) -o test_bgemm compare_sgemm_bgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + test_sbgemm : compare_sgemm_sbgemm.c ../$(LIBNAME) $(CC) $(CLDFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) endif @@ -387,7 +425,7 @@ clean: @rm -f *.$(SUFFIX) *.$(PSUFFIX) gmon.$(SUFFIX)ut *.SUMM *.cxml *.exe *.pdb *.dwf \ sblat1 dblat1 cblat1 zblat1 \ sblat2 dblat2 cblat2 zblat2 \ - test_sbgemm sblat3 dblat3 cblat3 zblat3 \ + test_bgemm test_sbgemm sblat3 dblat3 cblat3 zblat3 \ sblat1p dblat1p cblat1p zblat1p \ sblat2p dblat2p cblat2p zblat2p \ sblat3p dblat3p cblat3p zblat3p \ diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c new file mode 100644 index 0000000000..2858b782d1 --- /dev/null +++ b/test/compare_sgemm_bgemm.c @@ -0,0 +1,224 @@ +/*************************************************************************** +Copyright (c) 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ +#include "../common.h" +#include +#include + +#include + +#define SGEMM BLASFUNC(sgemm) +#define BGEMM BLASFUNC(bgemm) +#define BGEMM_LARGEST 256 + +typedef union +{ + unsigned short v; +#if defined(_AIX) + struct __attribute__((packed)) +#else + struct +#endif + { +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + unsigned short s:1; + unsigned short e:8; + unsigned short m:7; +#else + unsigned short m:7; + unsigned short e:8; + unsigned short s:1; +#endif + } bits; +} bfloat16_bits; + +typedef union +{ + float v; +#if defined(_AIX) + struct __attribute__((packed)) +#else + struct +#endif + { +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + uint32_t s:1; + uint32_t e:8; + uint32_t m:23; +#else + uint32_t m:23; + uint32_t e:8; + uint32_t s:1; +#endif + } bits; +} float32_bits; + +float +float16to32 (bfloat16_bits f16) +{ + float32_bits f32; + f32.bits.s = f16.bits.s; + f32.bits.e = f16.bits.e; + f32.bits.m = (uint32_t) f16.bits.m << 16; + return f32.v; +} + +bfloat16 +float32to16 (float32_bits f32) +{ + bfloat16_bits f16; + f16.bits.s = f32.bits.s; + f16.bits.e = f32.bits.e; + f16.bits.m = (f32.bits.m >> 16) & 0x7f; + return f16.v; +} + +static float truncate_float(float value) { + bfloat16_bits f16 = (bfloat16_bits)float32to16((float32_bits)value); + return float16to32(f16); +} + +void *malloc_safe(size_t size) { + if (size == 0) + return malloc(1); + else + return malloc(size); +} + +int +main (int argc, char *argv[]) +{ + blasint m, n, k; + int i, j, l; + blasint x, y; + int ret = 0; + int loop = BGEMM_LARGEST; + char transA = 'N', transB = 'N'; + float alpha = 1.0, beta = 0.0; + bfloat16 alpha_bf16 = float32to16((float32_bits)alpha); + bfloat16 beta_bf16 = float32to16((float32_bits)beta); + + for (x = 0; x <= loop; x++) + { + if ((x > 100) && (x != BGEMM_LARGEST)) continue; + m = k = n = x; + float *A = (float *)malloc_safe(m * k * sizeof(FLOAT)); + float *B = (float *)malloc_safe(k * n * sizeof(FLOAT)); + float *C = (float *)malloc_safe(m * n * sizeof(FLOAT)); + bfloat16_bits *AA = (bfloat16_bits *)malloc_safe(m * k * sizeof(bfloat16_bits)); + bfloat16_bits *BB = (bfloat16_bits *)malloc_safe(k * n * sizeof(bfloat16_bits)); + bfloat16_bits *CC = (bfloat16_bits *)malloc_safe(k * n * sizeof(bfloat16_bits)); + FLOAT *DD = (FLOAT *)malloc_safe(m * n * sizeof(FLOAT)); + if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || + (DD == NULL) || (CC == NULL)) + return 1; + bfloat16 atmp,btmp; + blasint one=1; + + for (j = 0; j < m; j++) + { + for (i = 0; i < k; i++) + { + A[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; + sbstobf16_(&one, &A[j*k+i], &one, &atmp, &one); + AA[j * k + i].v = atmp; + } + } + for (j = 0; j < n; j++) + { + for (i = 0; i < k; i++) + { + B[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; + sbstobf16_(&one, &B[j*k+i], &one, &btmp, &one); + BB[j * k + i].v = btmp; + } + } + for (y = 0; y < 4; y++) + { + if ((y == 0) || (y == 2)) { + transA = 'N'; + } else { + transA = 'T'; + } + if ((y == 0) || (y == 1)) { + transB = 'N'; + } else { + transB = 'T'; + } + + memset(CC, 0, m * n * sizeof(bfloat16_bits)); + memset(DD, 0, m * n * sizeof(FLOAT)); + memset(C, 0, m * n * sizeof(FLOAT)); + + SGEMM (&transA, &transB, &m, &n, &k, &alpha, A, + &m, B, &k, &beta, C, &m); + BGEMM (&transA, &transB, &m, &n, &k, &alpha_bf16, (bfloat16*) AA, + &m, (bfloat16*)BB, &k, &beta_bf16, (bfloat16*)CC, &m); + + for (i = 0; i < n; i++) + for (j = 0; j < m; j++) + { + for (l = 0; l < k; l++) + if (transA == 'N' && transB == 'N') + { + DD[i * m + j] += + float16to32 (AA[l * m + j]) * float16to32 (BB[l + k * i]); + } else if (transA == 'T' && transB == 'N') + { + DD[i * m + j] += + float16to32 (AA[k * j + l]) * float16to32 (BB[l + k * i]); + } else if (transA == 'N' && transB == 'T') + { + DD[i * m + j] += + float16to32 (AA[l * m + j]) * float16to32 (BB[i + l * n]); + } else if (transA == 'T' && transB == 'T') + { + DD[i * m + j] += + float16to32 (AA[k * j + l]) * float16to32 (BB[i + l * n]); + } + if (fabs(float16to32(CC[i * m + j]) - truncate_float(C[i * m + j])) > 2.0) { + ret++; + } + if (fabs(float16to32(CC[i * m + j]) - truncate_float(DD[i * m + j])) > 1.0) { + ret++; + } + + } + } + free(A); + free(B); + free(C); + free(AA); + free(BB); + free(CC); + free(DD); + } + + if (ret != 0) { + fprintf (stderr, "FATAL ERROR BGEMM - Return code: %d\n", ret); + return ret; + } +} From 73bf0b941a8a3ccd6cceb8fca70b1f7b15595d9f Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 10:40:33 +0000 Subject: [PATCH 045/360] Add bgemm to gensymbol --- exports/gensymbol | 2 +- exports/gensymbol.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exports/gensymbol b/exports/gensymbol index 3719574ea6..17fbd2877f 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -51,7 +51,7 @@ blasobjsz=" zgeadd dzsum zgemmt zgemmtr" blasobjs="lsame xerbla" -bfblasobjs="sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" +bfblasobjs="bgemm sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" hfblasobjs="shgemm" cblasobjsc=" cblas_caxpy cblas_ccopy cblas_cdotc cblas_cdotu cblas_cgbmv cblas_cgemm cblas_cgemv diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index 5a8423697b..01f68fbb33 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -51,7 +51,7 @@ zgeadd, dzsum, zgemmt,zgemmtr); @blasobjs = (lsame, xerbla); -@bfblasobjs = (sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); +@bfblasobjs = (bgemm, sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); @hfblasobjs = (shgemm); @cblasobjsc = ( cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv, From 48394384ef3bcd1eb6ca96ea5b690bc75d459a49 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 7 Jul 2025 11:09:26 +0000 Subject: [PATCH 046/360] Use correct constants for per-target BGEMM/SBGEMM This fixes the build and tests on `NEOVERSEV1` target, which was failing with specific constants for `SBGEMM` Co-authored-by: Ye Tao --- driver/level3/level3.c | 22 +++++++++++++++++----- driver/level3/level3_thread.c | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/driver/level3/level3.c b/driver/level3/level3.c index 5d3438450b..78bc6aa527 100644 --- a/driver/level3/level3.c +++ b/driver/level3/level3.c @@ -170,6 +170,22 @@ #define STOP_RPCC(COUNTER) #endif +#if defined(BUILD_BFLOAT16) +#if defined(DYNAMIC_ARCH) + #if defined(BGEMM) + #define BFLOAT16_ALIGN_K gotoblas->bgemm_align_k + #else + #define BFLOAT16_ALIGN_K gotoblas->sbgemm_align_k + #endif +#else + #if defined(BGEMM) + #define BFLOAT16_ALIGN_K BGEMM_ALIGN_K + #else + #define BFLOAT16_ALIGN_K SBGEMM_ALIGN_K + #endif +#endif +#endif + int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, XFLOAT *sa, XFLOAT *sb, BLASLONG dummy){ BLASLONG k, lda, ldb, ldc; @@ -307,11 +323,7 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, BLASLONG pad_min_l = min_l; #if defined(BFLOAT16) -#if defined(DYNAMIC_ARCH) - pad_min_l = (min_l + gotoblas->sbgemm_align_k - 1) & ~(gotoblas->sbgemm_align_k-1); -#else - pad_min_l = (min_l + SBGEMM_ALIGN_K - 1) & ~(SBGEMM_ALIGN_K - 1);; -#endif + pad_min_l = (min_l + BFLOAT16_ALIGN_K - 1) & ~(BFLOAT16_ALIGN_K - 1); #endif /* First, we have to move data A to L2 cache */ diff --git a/driver/level3/level3_thread.c b/driver/level3/level3_thread.c index 5ede6153ef..cb93591ab0 100644 --- a/driver/level3/level3_thread.c +++ b/driver/level3/level3_thread.c @@ -216,6 +216,22 @@ typedef struct { #define STOP_RPCC(COUNTER) #endif +#if defined(BUILD_BFLOAT16) +#if defined(DYNAMIC_ARCH) + #if defined(BGEMM) + #define BFLOAT16_ALIGN_K gotoblas->bgemm_align_k + #else + #define BFLOAT16_ALIGN_K gotoblas->sbgemm_align_k + #endif +#else + #if defined(BGEMM) + #define BFLOAT16_ALIGN_K BGEMM_ALIGN_K + #else + #define BFLOAT16_ALIGN_K SBGEMM_ALIGN_K + #endif +#endif +#endif + static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, IFLOAT *sa, IFLOAT *sb, BLASLONG mypos){ IFLOAT *buffer[DIVIDE_RATE]; @@ -325,11 +341,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, BLASLONG pad_min_l = min_l; #if defined(BFLOAT16) -#if defined(DYNAMIC_ARCH) - pad_min_l = (min_l + gotoblas->sbgemm_align_k - 1) & ~(gotoblas->sbgemm_align_k-1); -#else - pad_min_l = (min_l + SBGEMM_ALIGN_K - 1) & ~(SBGEMM_ALIGN_K - 1);; -#endif + pad_min_l = (min_l + BFLOAT16_ALIGN_K - 1) & ~(BFLOAT16_ALIGN_K - 1); #endif /* Determine step size in m From 66d9185ebe80cb65935f098865651b9743efebc7 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Tue, 8 Jul 2025 22:47:20 +0000 Subject: [PATCH 047/360] Fix CMake support --- Makefile.tail | 30 ++++++++++++++++++++++++++++- cmake/kernel.cmake | 38 +++++++++++++++++++++++++++++++++++++ cmake/prebuild.cmake | 30 +++++++++++++++++++++++++++++ cmake/utils.cmake | 30 ++++++++++++++++++++++++++++- interface/CMakeLists.txt | 28 +++++++++++++++++++++++++++ interface/gemm.c | 2 +- kernel/CMakeLists.txt | 41 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 196 insertions(+), 3 deletions(-) diff --git a/Makefile.tail b/Makefile.tail index ddd74dcad6..4a12f531e2 100644 --- a/Makefile.tail +++ b/Makefile.tail @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + BBLASOBJS_P = $(BBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SBBLASOBJS_P = $(SBBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) SHBLASPBJS_P = $(SHBLASOBJS:.$(SUFFIX)=.$(PSUFFIX)) @@ -27,7 +55,7 @@ BLASOBJS_P += $(QBLASOBJS_P) $(XBLASOBJS_P) endif $(SHBLASOBJS) $(SHBLASOBJS_P) : override CFLAGS += -DHFLOAT16 -UDOUBLE -UCOMPLEX -$(BBLASOBJS) $(BBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX -USMALL_MATRIX_OPT +$(BBLASOBJS) $(BBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $(SBBLASOBJS) $(SBBLASOBJS_P) : override CFLAGS += -DBFLOAT16 -UDOUBLE -UCOMPLEX $(SBLASOBJS) $(SBLASOBJS_P) : override CFLAGS += -UDOUBLE -UCOMPLEX $(DBLASOBJS) $(DBLASOBJS_P) : override CFLAGS += -DDOUBLE -UCOMPLEX diff --git a/cmake/kernel.cmake b/cmake/kernel.cmake index 2cea6d9e6e..c0dd32ca07 100644 --- a/cmake/kernel.cmake +++ b/cmake/kernel.cmake @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + # helper functions for the kernel CMakeLists.txt function(SetFallback KERNEL SOURCE_PATH) @@ -206,6 +234,16 @@ macro(SetDefaultL3) SetFallback(ZGEADD_KERNEL ../generic/zgeadd.c) if (BUILD_BFLOAT16) SetFallback(SHGEADD_KERNEL ../generic/geadd.c) + SetFallback(BGEMMKERNEL ../generic/gemmkernel_2x2.c) + SetFallback(BGEMM_BETA ../generic/gemm_beta.c) + SetFallback(BGEMMINCOPY ../generic/gemm_ncopy_2.c) + SetFallback(BGEMMITCOPY ../generic/gemm_tcopy_2.c) + SetFallback(BGEMMONCOPY ../generic/gemm_ncopy_2.c) + SetFallback(BGEMMOTCOPY ../generic/gemm_tcopy_2.c) + SetFallback(BGEMMINCOPYOBJ bgemm_incopy.o) + SetFallback(BGEMMITCOPYOBJ bgemm_itcopy.o) + SetFallback(BGEMMONCOPYOBJ bgemm_oncopy.o) + SetFallback(BGEMMOTCOPYOBJ bgemm_otcopy.o) SetFallback(SBGEMMKERNEL ../generic/gemmkernel_2x2.c) SetFallback(SBGEMM_BETA ../generic/gemm_beta.c) SetFallback(SBGEMMINCOPY ../generic/gemm_ncopy_2.c) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index 8afe8b3878..fe592ed73a 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + ## ## Author: Hank Anderson ## Description: Ported from OpenBLAS/Makefile.prebuild @@ -131,6 +159,8 @@ if (DEFINED CORE AND CMAKE_CROSSCOMPILING AND NOT (${HOST_OS} STREQUAL "WINDOWSS set(HAVE_SSE2 1) set(HAVE_SSE3 1) set(HAVE_SSSE3 1) + set(BGEMM_UNROLL_M 8) + set(BGEMM_UNROLL_N 4) set(SBGEMM_UNROLL_M 8) set(SBGEMM_UNROLL_N 4) set(SGEMM_UNROLL_M 8) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index a93f21686f..1b19f41bc9 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + # Functions to help with the OpenBLAS build # Reads string from getarch into CMake vars. Format of getarch vars is VARNAME=VALUE @@ -347,7 +375,7 @@ function(GenerateNamedObjects sources_in) if (NOT no_float_type) string(SUBSTRING ${float_type} 0 1 float_char) string(TOLOWER ${float_char} float_char) - if (${float_type} STREQUAL "BFLOAT16") + if (${float_type} STREQUAL "BFLOAT16" AND NOT "${defines_in}" MATCHES "BGEMM") set (float_char "sb") endif () endif () diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index c4306d8eea..995bebec37 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -1,3 +1,30 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### include_directories(${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_BINARY_DIR}) @@ -124,6 +151,7 @@ endif () if (BUILD_BFLOAT16) GenerateNamedObjects("bf16dot.c" "" "sbdot" ${CBLAS_FLAG} "" "" true "BFLOAT16") + GenerateNamedObjects("gemm.c" "BGEMM" "bgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("gemm.c" "" "sbgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "" "sbgemmt" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "RNAME" "sbgemmtr" ${CBLAS_FLAG} "" "" true "BFLOAT16") diff --git a/interface/gemm.c b/interface/gemm.c index c21fd988bd..a64d78d974 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -118,7 +118,7 @@ static int (*gemm[])(blas_arg_t *, BLASLONG *, BLASLONG *, IFLOAT *, IFLOAT *, B #endif }; -#if defined(SMALL_MATRIX_OPT) && !defined(GEMM3M) && !defined(XDOUBLE) &&!defined(HFLOAT16) +#if defined(SMALL_MATRIX_OPT) && !defined(GEMM3M) && !defined(XDOUBLE) && !defined(HFLOAT16) && !defined(BGEMM) #define USE_SMALL_MATRIX_OPT 1 #else #define USE_SMALL_MATRIX_OPT 0 diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 9434f114ea..1a5d32e071 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,3 +1,30 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### include_directories(${PROJECT_SOURCE_DIR}) @@ -336,6 +363,20 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) endif () if (BUILD_BFLOAT16) + if (BGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMINCOPY}" "BGEMM" "${BGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMITCOPY}" "BGEMM" "${BGEMMITCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMONCOPY}" "BGEMM" "${BGEMMONCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMOTCOPY}" "BGEMM" "${BGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + GenerateNamedObjects("${KERNELDIR}/${BGEMMKERNEL}" "BGEMM" "gemm_kernel" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BGEMM_BETA}" "BGEMM" "gemm_beta" false "" "" false "BFLOAT16") if (SBGEMMINCOPY) GenerateNamedObjects("${KERNELDIR}/${SBGEMMINCOPY}" "" "${SBGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") endif () From 8cd4be8d47a797f7912ffbe6d377732c859a6501 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Wed, 9 Jul 2025 08:27:18 +0100 Subject: [PATCH 048/360] Temporarily disable test_bgemm --- test/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Makefile b/test/Makefile index 7ac87f7f67..cb7efea203 100644 --- a/test/Makefile +++ b/test/Makefile @@ -229,8 +229,8 @@ ifneq ($(CROSS), 1) ifeq ($(BUILD_BFLOAT16),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemm > BBLAT3.SUMM - @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + # OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemm > BBLAT3.SUMM + # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat3 < ./sblat3.dat @@ -254,8 +254,8 @@ ifeq ($(USE_OPENMP), 1) ifeq ($(BUILD_BFLOAT16),1) OMP_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - OMP_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM - @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + # OMP_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OMP_NUM_THREADS=2 ./sblat3 < ./sblat3.dat @@ -277,8 +277,8 @@ else ifeq ($(BUILD_BFLOAT16),1) OPENBLAS_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - OPENBLAS_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM - @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + # OPENBLAS_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=2 ./sblat3 < ./sblat3.dat From ff614575c96a6850948ff69f33d66e8f013a6318 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 9 Jul 2025 14:44:25 +0200 Subject: [PATCH 049/360] Fix arm64 HAVE_SME setting for DYNAMIC_ARCH builds --- kernel/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 1a5d32e071..0ec08827d7 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -238,6 +238,9 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) if (X86_64 OR ARM64) set(USE_DIRECT_SGEMM true) endif() + if (UC_TARGET_CORE MATCHES ARMV9SME) + set (HAVE_SME true) + endif () if (USE_DIRECT_SGEMM) # if (NOT DEFINED SGEMMDIRECTKERNEL) From b746f0eda300cba8cd2ead42fd5911064b9a0693 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 10 Jul 2025 08:58:16 +0200 Subject: [PATCH 050/360] Allocate IWORK to hold at least the one element for workspace queries --- lapack-netlib/LAPACKE/src/lapacke_dtrsen.c | 6 ++++++ lapack-netlib/LAPACKE/src/lapacke_strsen.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/lapack-netlib/LAPACKE/src/lapacke_dtrsen.c b/lapack-netlib/LAPACKE/src/lapacke_dtrsen.c index 255ea34ea6..9e00865df7 100644 --- a/lapack-netlib/LAPACKE/src/lapacke_dtrsen.c +++ b/lapack-netlib/LAPACKE/src/lapacke_dtrsen.c @@ -78,6 +78,12 @@ lapack_int LAPACKE_dtrsen( int matrix_layout, char job, char compq, info = LAPACK_WORK_MEMORY_ERROR; goto exit_level_0; } + } else { + iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) ); + if( iwork == NULL ) { + info = LAPACK_WORK_MEMORY_ERROR; + goto exit_level_0; + } } work = (double*)LAPACKE_malloc( sizeof(double) * lwork ); if( work == NULL ) { diff --git a/lapack-netlib/LAPACKE/src/lapacke_strsen.c b/lapack-netlib/LAPACKE/src/lapacke_strsen.c index c9a5b845cc..8f984ad0ee 100644 --- a/lapack-netlib/LAPACKE/src/lapacke_strsen.c +++ b/lapack-netlib/LAPACKE/src/lapacke_strsen.c @@ -77,7 +77,14 @@ lapack_int LAPACKE_strsen( int matrix_layout, char job, char compq, info = LAPACK_WORK_MEMORY_ERROR; goto exit_level_0; } + } else { + iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) ); + if( iwork == NULL ) { + info = LAPACK_WORK_MEMORY_ERROR; + goto exit_level_0; + } } + work = (float*)LAPACKE_malloc( sizeof(float) * lwork ); if( work == NULL ) { info = LAPACK_WORK_MEMORY_ERROR; From b37516add6e1d39ddeeb7139e6288e5259794e17 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 10 Jul 2025 14:59:01 +0200 Subject: [PATCH 051/360] Add BGEMM parameters --- driver/others/parameter.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/driver/others/parameter.c b/driver/others/parameter.c index 3bcb0d4343..9a1ff57358 100644 --- a/driver/others/parameter.c +++ b/driver/others/parameter.c @@ -72,6 +72,11 @@ BLASLONG shgemm_p = DEFAULT_GEMM_P; #else BLASLONG shgemm_p = SHGEMM_P; #endif +#if BGEMM_P == bgemm_p +BLASLONG bgemm_p = DEFAULT_GEMM_P; +#else +BLASLONG bgemm_p = BGEMM_P; +#endif #if SGEMM_P == sgemm_p BLASLONG sgemm_p = DEFAULT_GEMM_P; #else @@ -103,6 +108,11 @@ BLASLONG shgemm_q = DEFAULT_GEMM_Q; #else BLASLONG shgemm_q = SHGEMM_Q; #endif +#if BGEMM_Q == bgemm_q +BLASLONG bgemm_q = DEFAULT_GEMM_Q; +#else +BLASLONG bgemm_q = BGEMM_Q; +#endif #if SGEMM_Q == sgemm_q BLASLONG sgemm_q = DEFAULT_GEMM_Q; #else @@ -134,6 +144,11 @@ BLASLONG shgemm_r = DEFAULT_GEMM_R; #else BLASLONG shgemm_r = SHGEMM_R; #endif +#if BGEMM_R == bgemm_r +BLASLONG bgemm_r = DEFAULT_GEMM_R; +#else +BLASLONG bgemm_r = BGEMM_R; +#endif #if SGEMM_R == sgemm_r BLASLONG sgemm_r = DEFAULT_GEMM_R; #else @@ -541,6 +556,7 @@ void blas_set_parameter(void){ #ifdef BUILD_BFLOAT16 sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15; + bgemm_r = (((BUFFER_SIZE - ((BGEMM_P * BGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (BGEMM_Q * 4)) - 15) & ~15; #endif #ifdef BUILD_HFLOAT16 shgemm_r = (((BUFFER_SIZE - ((SHGEMM_P * SHGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SHGEMM_Q * 4)) - 15) & ~15; @@ -653,6 +669,7 @@ void blas_set_parameter(void){ #ifdef BUILD_BFLOAT16 sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15; + bgemm_r = (((BUFFER_SIZE - ((BGEMM_P * BGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (BGEMM_Q * 4)) - 15) & ~15; #endif #ifdef BUILD_HFLOAT16 shgemm_r = (((BUFFER_SIZE - ((SHGEMM_P * SHGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SHGEMM_Q * 4)) - 15) & ~15; From 343830c26f70c169c0b6064ffca611609929d531 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 10 Jul 2025 14:59:46 +0200 Subject: [PATCH 052/360] Add BGEMM parameter tables --- kernel/setparam-ref.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index 3b2fd42cc6..9eb5959dc1 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -926,6 +926,7 @@ gotoblas_t TABLE_NAME = { static void init_parameter(void) { #if (BUILD_BFLOAT16) TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; #endif #if (BUILD_SINGLE==1) || (BUILD_COMPLEX==1) TABLE_NAME.sgemm_p = SGEMM_DEFAULT_P; @@ -942,6 +943,7 @@ static void init_parameter(void) { #if (BUILD_BFLOAT16) TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif #if BUILD_SINGLE == 1 || (BUILD_COMPLEX==1) TABLE_NAME.sgemm_q = SGEMM_DEFAULT_Q; @@ -958,6 +960,7 @@ static void init_parameter(void) { #if (BUILD_BFLOAT16) TABLE_NAME.sbgemm_r = SBGEMM_DEFAULT_R; + TABLE_NAME.bgemm_r = BGEMM_DEFAULT_R; #endif #if BUILD_SINGLE == 1 || (BUILD_COMPLEX==1) TABLE_NAME.sgemm_r = SGEMM_DEFAULT_R; @@ -1113,10 +1116,12 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; #endif #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_r = SBGEMM_DEFAULT_R; + TABLE_NAME.bgemm_r = BGEMM_DEFAULT_R; #endif #if defined(LA464) @@ -1215,6 +1220,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif } #else // (ARCH_LOONGARCH64) @@ -1223,6 +1229,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; #endif TABLE_NAME.sgemm_p = SGEMM_DEFAULT_P; TABLE_NAME.dgemm_p = DGEMM_DEFAULT_P; @@ -1231,6 +1238,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_r = SBGEMM_DEFAULT_R; + TABLE_NAME.bgemm_r = BGEMM_DEFAULT_R; #endif TABLE_NAME.sgemm_r = SGEMM_DEFAULT_R; TABLE_NAME.dgemm_r = DGEMM_DEFAULT_R; @@ -1240,6 +1248,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif TABLE_NAME.sgemm_q = SGEMM_DEFAULT_Q; TABLE_NAME.dgemm_q = DGEMM_DEFAULT_Q; @@ -1252,6 +1261,7 @@ static void init_parameter(void) { static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; #endif TABLE_NAME.sgemm_p = SGEMM_DEFAULT_P; TABLE_NAME.dgemm_p = DGEMM_DEFAULT_P; @@ -1260,6 +1270,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_r = SBGEMM_DEFAULT_R; + TABLE_NAME.bgemm_r = BGEMM_DEFAULT_R; #endif TABLE_NAME.sgemm_r = SGEMM_DEFAULT_R; TABLE_NAME.dgemm_r = DGEMM_DEFAULT_R; @@ -1269,6 +1280,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif TABLE_NAME.sgemm_q = SGEMM_DEFAULT_Q; TABLE_NAME.dgemm_q = DGEMM_DEFAULT_Q; @@ -1282,6 +1294,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; #endif #ifdef BUILD_HFLOAT16 TABLE_NAME.shgemm_p = SHGEMM_DEFAULT_P; @@ -1293,6 +1306,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_r = SBGEMM_DEFAULT_R; + TABLE_NAME.bgemm_r = BGEMM_DEFAULT_R; #endif #ifdef BUILD_HFLOAT16 TABLE_NAME.shgemm_r = SHGEMM_DEFAULT_R; @@ -1305,6 +1319,7 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif #ifdef BUILD_HFLOAT16 TABLE_NAME.shgemm_q = SHGEMM_DEFAULT_Q; @@ -1455,6 +1470,8 @@ static void init_parameter(void) { #ifdef BUILD_BFLOAT16 TABLE_NAME.sbgemm_p = SBGEMM_DEFAULT_P; TABLE_NAME.sbgemm_q = SBGEMM_DEFAULT_Q; + TABLE_NAME.bgemm_p = BGEMM_DEFAULT_P; + TABLE_NAME.bgemm_q = BGEMM_DEFAULT_Q; #endif #ifdef BUILD_HFLOAT16 TABLE_NAME.shgemm_p = SHGEMM_DEFAULT_P; @@ -2053,6 +2070,10 @@ static void init_parameter(void) { ((TABLE_NAME.sbgemm_p * TABLE_NAME.sbgemm_q * 4 + TABLE_NAME.offsetA + TABLE_NAME.align) & ~TABLE_NAME.align) ) / (TABLE_NAME.sbgemm_q * 4) - 15) & ~15); + TABLE_NAME.bgemm_r = (((BUFFER_SIZE - + ((TABLE_NAME.bgemm_p * TABLE_NAME.bgemm_q * 4 + TABLE_NAME.offsetA + + TABLE_NAME.align) & ~TABLE_NAME.align) + ) / (TABLE_NAME.bgemm_q * 4) - 15) & ~15); #endif #if BUILD_HFLOAT16==1 From b54aec804ebc7c9bedfa29bdb45f4065516494c8 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 10 Jul 2025 15:00:30 +0200 Subject: [PATCH 053/360] remove spurious include --- test/compare_sgemm_bgemm.c | 1 - 1 file changed, 1 deletion(-) diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 2858b782d1..8cddcba97e 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -28,7 +28,6 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include #define SGEMM BLASFUNC(sgemm) #define BGEMM BLASFUNC(bgemm) From 9a272fece67d6bf865943b4e3505ef0cad0e7d47 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 10 Jul 2025 15:02:59 +0200 Subject: [PATCH 054/360] Re-enable the BGEMM tests --- test/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Makefile b/test/Makefile index cb7efea203..7ac87f7f67 100644 --- a/test/Makefile +++ b/test/Makefile @@ -229,8 +229,8 @@ ifneq ($(CROSS), 1) ifeq ($(BUILD_BFLOAT16),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - # OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemm > BBLAT3.SUMM - # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat3 < ./sblat3.dat @@ -254,8 +254,8 @@ ifeq ($(USE_OPENMP), 1) ifeq ($(BUILD_BFLOAT16),1) OMP_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - # OMP_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM - # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + OMP_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OMP_NUM_THREADS=2 ./sblat3 < ./sblat3.dat @@ -277,8 +277,8 @@ else ifeq ($(BUILD_BFLOAT16),1) OPENBLAS_NUM_THREADS=2 ./test_sbgemm > SBBLAT3.SUMM @$(GREP) -q FATAL SBBLAT3.SUMM && cat SBBLAT3.SUMM || exit 0 - # OPENBLAS_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM - # @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 + OPENBLAS_NUM_THREADS=2 ./test_bgemm > BBLAT3.SUMM + @$(GREP) -q FATAL BBLAT3.SUMM && cat BBLAT3.SUMM || exit 0 endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=2 ./sblat3 < ./sblat3.dat From 740efd71c4ad0f6f56371cabd23f086b985e0602 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Thu, 10 Jul 2025 23:23:27 +0000 Subject: [PATCH 055/360] Add optimized BGEMM kernel for NEOVERSEV1 target This also improves the testing and generic kernel by re-using the BF16 conversion functions. Built on top of https://github.com/OpenMathLib/OpenBLAS/pull/5357 and derived from https://github.com/OpenMathLib/OpenBLAS/pull/5287 Co-authored-by: Ye Tao --- benchmark/Makefile | 34 +- benchmark/gemm.c | 12 + common_b.h | 14 +- interface/Makefile | 30 +- kernel/Makefile.L3 | 21 +- kernel/arm64/KERNEL.NEOVERSEV1 | 43 +- kernel/arm64/bgemm_beta_neon.c | 107 +++++ kernel/arm64/bgemm_kernel_4x4_neoversev1.c | 50 ++ .../arm64/bgemm_kernel_4x4_neoversev1_impl.c | 429 ++++++++++++++++++ kernel/generic/gemmkernel_2x2.c | 54 ++- kernel/setparam-ref.c | 4 + param.h | 7 + test/compare_sgemm_bgemm.c | 110 ++--- 13 files changed, 816 insertions(+), 99 deletions(-) create mode 100644 kernel/arm64/bgemm_beta_neon.c create mode 100644 kernel/arm64/bgemm_kernel_4x4_neoversev1.c create mode 100644 kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c diff --git a/benchmark/Makefile b/benchmark/Makefile index 9316921e1b..cdf87c0ab6 100644 --- a/benchmark/Makefile +++ b/benchmark/Makefile @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + TOPDIR = .. include $(TOPDIR)/Makefile.system @@ -56,7 +84,7 @@ GOTO_LAPACK_TARGETS= endif ifeq ($(BUILD_BFLOAT16),1) -GOTO_BFLOAT_TARGETS=sbgemm.goto +GOTO_BFLOAT_TARGETS=bgemm.goto sbgemm.goto else GOTO_BFLOAT_TARGETS= endif @@ -635,6 +663,8 @@ zcholesky.essl : zcholesky.$(SUFFIX) ##################################### Sgemm #################################################### ifeq ($(BUILD_BFLOAT16),1) +bgemm.goto : bgemm.$(SUFFIX) ../$(LIBNAME) + $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm sbgemm.goto : sbgemm.$(SUFFIX) ../$(LIBNAME) $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm endif @@ -2970,6 +3000,8 @@ zcholesky.$(SUFFIX) : cholesky.c $(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^ ifeq ($(BUILD_BFLOAT16),1) +bgemm.$(SUFFIX) : gemm.c + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UCOMPLEX -UDOUBLE -o $(@F) $^ sbgemm.$(SUFFIX) : gemm.c $(CC) $(CFLAGS) -c -DBFLOAT16 -UCOMPLEX -UDOUBLE -o $(@F) $^ endif diff --git a/benchmark/gemm.c b/benchmark/gemm.c index a138bfe1ef..704e332251 100644 --- a/benchmark/gemm.c +++ b/benchmark/gemm.c @@ -33,6 +33,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef DOUBLE #define GEMM BLASFUNC(dgemm) +#elif defined(BFLOAT16) && defined(BGEMM) +#define GEMM BLASFUNC(bgemm) #elif defined(BFLOAT16) #define GEMM BLASFUNC(sbgemm) #undef IFLOAT @@ -60,8 +62,18 @@ int main(int argc, char *argv[]){ IFLOAT *a, *b; FLOAT *c; +#ifdef BGEMM + blasint one=1; + blasint two=2; + float alpha_in[] = {1.0, 0.0}; + float beta_in[] = {0.0, 0.0}; + FLOAT alpha[2], beta[2]; + sbstobf16_(&two, alpha_in, &one, alpha, &one); + sbstobf16_(&two, beta_in, &one, beta, &one); +#else FLOAT alpha[] = {1.0, 0.0}; FLOAT beta [] = {0.0, 0.0}; +#endif char transa = 'N'; char transb = 'N'; blasint m, n, k, i, j, lda, ldb, ldc; diff --git a/common_b.h b/common_b.h index e03f6800da..4d77ec4faf 100644 --- a/common_b.h +++ b/common_b.h @@ -30,10 +30,16 @@ #define COMMON_B_H #ifndef DYNAMIC_ARCH -#define BGEMM_ONCOPY bgemm_oncopy -#define BGEMM_OTCOPY bgemm_otcopy -#define BGEMM_INCOPY bgemm_incopy -#define BGEMM_ITCOPY bgemm_itcopy +#define BGEMM_ONCOPY bgemm_oncopy +#define BGEMM_OTCOPY bgemm_otcopy + +#if BGEMM_DEFAULT_UNROLL_M == BGEMM_DEFAULT_UNROLL_N +#define BGEMM_INCOPY bgemm_oncopy +#define BGEMM_ITCOPY bgemm_otcopy +#else +#define BGEMM_INCOPY bgemm_incopy +#define BGEMM_ITCOPY bgemm_itcopy +#endif #define BGEMM_BETA bgemm_beta #define BGEMM_KERNEL bgemm_kernel diff --git a/interface/Makefile b/interface/Makefile index e14796cbbd..3af12748fa 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + TOPDIR = .. include $(TOPDIR)/Makefile.system @@ -526,7 +554,7 @@ ifneq ($(BUILD_COMPLEX16),1) ZBLASOBJS= endif -FUNCOBJS = $(SBEXTOBJS) $(CXERBLAOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(SHBLASOBJS) +FUNCOBJS = $(SBEXTOBJS) $(CXERBLAOBJS) $(BBLASOBJS) $(SBBLASOBJS) $(SBLASOBJS) $(DBLASOBJS) $(CBLASOBJS) $(ZBLASOBJS) $(SHBLASOBJS) ifeq ($(EXPRECISION), 1) FUNCOBJS += $(QBLASOBJS) $(XBLASOBJS) diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 06f18e6be2..f45ccc42d2 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -674,6 +674,10 @@ ZBLASOBJS += \ endif ifeq ($(BUILD_BFLOAT16), 1) +BGEMMINCOPYOBJ_P = $(BGEMMINCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +BGEMMITCOPYOBJ_P = $(BGEMMITCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +BGEMMONCOPYOBJ_P = $(BGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) +BGEMMOTCOPYOBJ_P = $(BGEMMOTCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SBGEMMINCOPYOBJ_P = $(SBGEMMINCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SBGEMMITCOPYOBJ_P = $(SBGEMMITCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) SBGEMMONCOPYOBJ_P = $(SBGEMMONCOPYOBJ:.$(SUFFIX)=.$(PSUFFIX)) @@ -2998,6 +3002,20 @@ $(KDIR)xgemm_beta$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XGEMM_BETA) ifeq ($(BUILD_BFLOAT16), 1) +$(BGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(BGEMMONCOPY) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +$(BGEMMOTCOPYOBJ_P) : $(KERNELDIR)/$(BGEMMOTCOPY) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +ifneq ($(BGEMM_UNROLL_M), $(BGEMM_UNROLL_N)) +$(BGEMMINCOPYOBJ_P) : $(KERNELDIR)/$(BGEMMINCOPY) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ + +$(BGEMMITCOPYOBJ_P) : $(KERNELDIR)/$(BGEMMITCOPY) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ +endif + $(SBGEMMONCOPYOBJ_P) : $(KERNELDIR)/$(SBGEMMONCOPY) $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ @@ -3010,7 +3028,6 @@ $(SBGEMMINCOPYOBJ_P) : $(KERNELDIR)/$(SBGEMMINCOPY) $(SBGEMMITCOPYOBJ_P) : $(KERNELDIR)/$(SBGEMMITCOPY) $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ - endif endif @@ -3137,6 +3154,8 @@ endif ifeq ($(BUILD_BFLOAT16), 1) +$(KDIR)bgemm_kernel$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(BGEMMKERNEL) $(BGEMMDEPEND) + $(CC) $(PFLAGS) -c -DBFLOAT16 -DBGEMM -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sbgemm_kernel$(TSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBGEMMKERNEL) $(SBGEMMDEPEND) $(CC) $(PFLAGS) -c -DBFLOAT16 -UDOUBLE -UCOMPLEX $< -o $@ endif diff --git a/kernel/arm64/KERNEL.NEOVERSEV1 b/kernel/arm64/KERNEL.NEOVERSEV1 index 3e622bcbfb..8bc0f35e5c 100644 --- a/kernel/arm64/KERNEL.NEOVERSEV1 +++ b/kernel/arm64/KERNEL.NEOVERSEV1 @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + include $(KERNELDIR)/KERNEL.ARMV8SVE SGEMVNKERNEL = gemv_n_sve_v1x3.c @@ -5,6 +33,19 @@ DGEMVNKERNEL = gemv_n_sve_v1x3.c SGEMVTKERNEL = gemv_t_sve_v1x3.c DGEMVTKERNEL = gemv_t_sve_v1x3.c ifeq ($(BUILD_BFLOAT16), 1) +BGEMM_BETA = bgemm_beta_neon.c +BGEMMKERNEL = bgemm_kernel_$(BGEMM_UNROLL_M)x$(BGEMM_UNROLL_N)_neoversev1.c +ifneq ($(BGEMM_UNROLL_M), $(BGEMM_UNROLL_N)) +BGEMMINCOPY = sbgemm_ncopy_$(SBGEMM_UNROLL_M)_neoversev1.c +BGEMMITCOPY = sbgemm_tcopy_$(SBGEMM_UNROLL_M)_neoversev1.c +BGEMMINCOPYOBJ = bgemm_incopy$(TSUFFIX).$(SUFFIX) +BGEMMITCOPYOBJ = bgemm_itcopy$(TSUFFIX).$(SUFFIX) +endif +BGEMMONCOPY = sbgemm_ncopy_$(BGEMM_UNROLL_N)_neoversev1.c +BGEMMOTCOPY = sbgemm_tcopy_$(BGEMM_UNROLL_N)_neoversev1.c +BGEMMONCOPYOBJ = bgemm_oncopy$(TSUFFIX).$(SUFFIX) +BGEMMOTCOPYOBJ = bgemm_otcopy$(TSUFFIX).$(SUFFIX) + SBGEMM_BETA = sbgemm_beta_neoversev1.c SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_neoversev1.c ifneq ($(SBGEMM_UNROLL_M), $(SBGEMM_UNROLL_N)) @@ -21,4 +62,4 @@ SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX) SBGEMVNKERNEL = sbgemv_n_neon.c SBGEMVTKERNEL = sbgemv_t_bfdot.c -endif \ No newline at end of file +endif diff --git a/kernel/arm64/bgemm_beta_neon.c b/kernel/arm64/bgemm_beta_neon.c new file mode 100644 index 0000000000..603377f8f0 --- /dev/null +++ b/kernel/arm64/bgemm_beta_neon.c @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include "common.h" + +#include + +int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT beta_in, IFLOAT *dummy2, + BLASLONG dummy3, IFLOAT *dummy4, BLASLONG dummy5, FLOAT *c, + BLASLONG ldc) { + BLASLONG i, j; + BLASLONG chunk, remain; + + bfloat16_t *ptr_c, *ptr_c0; + + bfloat16x8_t x0, z0; + float32x4_t y0, y1; + + float x; + bfloat16_t z; + + bfloat16_t zero_bf16 = vcvth_bf16_f32(0.0f); + bfloat16x8_t zeros = vdupq_n_bf16(zero_bf16); + + bfloat16_t beta_bf16; + memcpy(&beta_bf16, &beta_in, sizeof(bfloat16_t)); + float beta = vcvtah_f32_bf16(beta_bf16); + float32x4_t beta_neon = vdupq_n_f32(beta); + + ptr_c = (bfloat16_t *)c; + + chunk = m >> 3; + remain = m & 7; + + if (beta == 0.0f){ + for (j = 0; j < n; j ++){ + ptr_c0 = ptr_c; + ptr_c += ldc; + + for (i = 0; i < chunk; i ++){ + vst1q_bf16(ptr_c0, zeros); + ptr_c0 += 8; + } + + for (i = 0; i < remain; i ++){ + ptr_c0[0] = zero_bf16; + ptr_c0 ++; + } + } + } else { + for (j = 0; j < n; j ++){ + ptr_c0 = ptr_c; + ptr_c += ldc; + + for (i = 0; i < chunk; i ++){ + x0 = vld1q_bf16(ptr_c0); + + y0 = vcvtq_low_f32_bf16(x0); + y1 = vcvtq_high_f32_bf16(x0); + + y0 = vmulq_f32(y0, beta_neon); + y1 = vmulq_f32(y1, beta_neon); + + z0 = vcvtq_low_bf16_f32(y0); + z0 = vcvtq_high_bf16_f32(z0, y1); + + vst1q_bf16(ptr_c0, z0); + + ptr_c0 += 8; + } + + for (i = 0; i < remain; i ++){ + x = vcvtah_f32_bf16(ptr_c0[0]); + z = vcvth_bf16_f32(x * beta); + + ptr_c0[0] = z; + ptr_c0 ++; + } + } + } + return 0; +}; diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1.c new file mode 100644 index 0000000000..7af31bb2ca --- /dev/null +++ b/kernel/arm64/bgemm_kernel_4x4_neoversev1.c @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include + +#include "common.h" + +#define ALPHA_ONE +#include "bgemm_kernel_4x4_neoversev1_impl.c" +#undef ALPHA_ONE +#undef UPDATE_C +#include "bgemm_kernel_4x4_neoversev1_impl.c" + +int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, + FLOAT *C, BLASLONG ldc) { + bfloat16_t alpha_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); + + if (alpha_f32 == 1.0f) + return bgemm_kernel_neoversev1_alpha_one(m, n, k, alpha, A, B, C, ldc); + else + return bgemm_kernel_neoversev1_alpha(m, n, k, alpha, A, B, C, ldc); + return 0; +} diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c new file mode 100644 index 0000000000..2477da9c07 --- /dev/null +++ b/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c @@ -0,0 +1,429 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include + +#include "common.h" + +#define INIT_C(M, N) mc##M##N = svdup_f32(0); + +#define MATMUL(M, N) mc##M##N = svbfmmla(mc##M##N, ma##M, mb##N); + +#define INIT_C_4x4 \ + do { \ + INIT_C(0, 0); \ + INIT_C(0, 1); \ + INIT_C(1, 0); \ + INIT_C(1, 1); \ + } while (0); + +#ifdef ALPHA_ONE +#define UPDATE_C(PG16, PG32, PTR, TMP32, TMP16, SRC32) \ + do { \ + TMP32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ + TMP32 = svadd_z((PG32), SRC32, TMP32); \ + TMP16 = svcvt_bf16_f32_z((PG32), TMP32); \ + TMP16 = svuzp1_bf16(TMP16, TMP16); \ + svst1_bf16((PG16), (PTR), TMP16); \ + } while (0) +#else +#define UPDATE_C(PG16, PG32, PTR, TMP32, TMP16, SRC32) \ + do { \ + TMP32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ + TMP32 = svmad_z((PG32), svalpha, SRC32, TMP32); \ + TMP16 = svcvt_bf16_f32_z((PG32), TMP32); \ + TMP16 = svuzp1_bf16(TMP16, TMP16); \ + svst1_bf16((PG16), (PTR), TMP16); \ + } while (0) +#endif + +#define ZIP_EVEN_ELEMENTS(PG, mc0, mc1, tmp, vc) \ + do { \ + (tmp) = svuzp1_f32((mc0), (mc1)); \ + (vc) = svcompact_f32((PG), (tmp)); \ + } while (0) + +#define ZIP_ODD_ELEMENTS(PG, mc0, mc1, tmp, vc) \ + do { \ + (tmp) = svuzp2_f32((mc0), (mc1)); \ + (vc) = svcompact_f32((PG), (tmp)); \ + } while (0) + +#define ACCUMULATE_LAST4_TO_FIRST4(M, N, TMP) \ + do { \ + TMP = svext_f32(mc##M##N, mc##M##N, 4); \ + mc##M##N = svadd_f32_z(svptrue_b32(), mc##M##N, (TMP)); \ + } while (0) + +#ifdef ALPHA_ONE +int bgemm_kernel_neoversev1_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, + FLOAT alpha, IFLOAT *A, IFLOAT *B, + FLOAT *C, BLASLONG ldc) +#else +int bgemm_kernel_neoversev1_alpha(BLASLONG m, BLASLONG n, BLASLONG k, + FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, + BLASLONG ldc) +#endif +{ + BLASLONG pad_k = (k + 7) & ~7; + svbfloat16_t ma0, ma1, mb0, mb1; + svfloat32_t mc00, mc01, mc10, mc11, vc0, vc1, vc2, vc3; + svfloat32_t tmp; +#ifndef ALPHA_ONE + bfloat16_t alpha_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + svfloat32_t svalpha = svdup_f32(vcvtah_f32_bf16(alpha_bf16)); +#endif + + svbool_t pg16_all = svptrue_b16(); + + svbool_t pg32_first_1 = svwhilelt_b32(0, 1); + svbool_t pg32_first_2 = svwhilelt_b32(0, 2); + svbool_t pg32_first_4 = svwhilelt_b32(0, 4); + + svbool_t pg16_first_1 = svwhilelt_b16(0, 1); + svbool_t pg16_first_2 = svwhilelt_b16(0, 2); + svbool_t pg16_first_4 = svwhilelt_b16(0, 4); + + svbool_t pg32_select_first_2_per_quadword = svdupq_b32(1, 1, 0, 0); + + bfloat16_t *ptr_a = (bfloat16_t *)A; + bfloat16_t *ptr_b = (bfloat16_t *)B; + bfloat16_t *ptr_c = (bfloat16_t *)C; + + bfloat16_t *ptr_a0; + bfloat16_t *ptr_b0; + bfloat16_t *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; + + svfloat32_t tmp32; + svbfloat16_t tmp16; + + for (BLASLONG j = 0; j < n / 4; j++) { + ptr_c0 = ptr_c; + ptr_c1 = ptr_c0 + ldc; + ptr_c2 = ptr_c1 + ldc; + ptr_c3 = ptr_c2 + ldc; + ptr_c += 4 * ldc; + ptr_a = (bfloat16_t *)A; + + for (BLASLONG i = 0; i < m / 4; i++) { + ptr_a0 = ptr_a; + ptr_a += 4 * pad_k; + + ptr_b0 = ptr_b; + + INIT_C_4x4; + + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); + + mb0 = svld1_bf16(pg16_all, ptr_b0); + mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); + + MATMUL(0, 0); + MATMUL(0, 1); + MATMUL(1, 0); + MATMUL(1, 1); + + ptr_a0 += 32; + ptr_b0 += 32; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); + ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(1, 1, tmp); + + ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); + ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc1); + + ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc2); + ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc3); + + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, tmp32, tmp16, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c2, tmp32, tmp16, vc2); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c3, tmp32, tmp16, vc3); + + ptr_c0 += 4; + ptr_c1 += 4; + ptr_c2 += 4; + ptr_c3 += 4; + } + + if (m & 2) { + ptr_a0 = ptr_a; + ptr_a += 2 * pad_k; + + ptr_b0 = ptr_b; + INIT_C(0, 0); + INIT_C(0, 1); + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); + + MATMUL(0, 0); + MATMUL(0, 1); + + ptr_a0 += 16; + ptr_b0 += 32; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); + + vc0 = svuzp1(mc00, mc00); + vc1 = svuzp2(mc00, mc00); + vc2 = svuzp1(mc01, mc01); + vc3 = svuzp2(mc01, mc01); + + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, tmp32, tmp16, vc1); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c2, tmp32, tmp16, vc2); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c3, tmp32, tmp16, vc3); + + ptr_c0 += 2; + ptr_c1 += 2; + ptr_c2 += 2; + ptr_c3 += 2; + } + + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + + INIT_C(0, 0); + INIT_C(0, 1); + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); + + MATMUL(0, 0); + MATMUL(0, 1); + + ptr_a0 += 16; + ptr_b0 += 32; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); + + // use compact is more straightforward + vc1 = svuzp2(mc00, mc00); + vc3 = svuzp2(mc01, mc01); + + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, tmp32, tmp16, vc1); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c2, tmp32, tmp16, mc01); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c3, tmp32, tmp16, vc3); + } + + ptr_b += 4 * pad_k; + } + + if (n & 2) { + ptr_c0 = ptr_c; + ptr_c1 = ptr_c0 + ldc; + ptr_c += 2 * ldc; + ptr_a = (bfloat16_t *)A; + + for (BLASLONG i = 0; i < m / 4; i++) { + ptr_a0 = ptr_a; + ptr_a += 4 * pad_k; + + ptr_b0 = ptr_b; + + INIT_C(0, 0); + INIT_C(1, 0); + + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); + + mb0 = svld1_bf16(pg16_all, ptr_b0); + + MATMUL(0, 0); + MATMUL(1, 0); + + ptr_a0 += 32; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); + + ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); + ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc2); + + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, tmp32, tmp16, vc2); + + ptr_c0 += 4; + ptr_c1 += 4; + } + + if (m & 2) { + ptr_a0 = ptr_a; + ptr_a += 2 * pad_k; + ptr_b0 = ptr_b; + + INIT_C(0, 0); + + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + + MATMUL(0, 0); + + ptr_a0 += 16; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + vc0 = svuzp1(mc00, mc00); + vc1 = svuzp2(mc00, mc00); + + + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, tmp32, tmp16, vc1); + + ptr_c0 += 2; + ptr_c1 += 2; + } + + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + INIT_C(0, 0); + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + MATMUL(0, 0); + ptr_a0 += 16; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + vc1 = svuzp2(mc00, mc00); + + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, tmp32, tmp16, vc1); + } + + ptr_b += 2 * pad_k; + } + + if (n & 1) { // TODO: this case seems a overhead. find out whether it's in our + // case. + ptr_c0 = ptr_c; + ptr_a = (bfloat16_t *)A; + + for (BLASLONG i = 0; i < m / 4; i++) { + ptr_a0 = ptr_a; + ptr_a += 4 * pad_k; + + ptr_b0 = ptr_b; + + INIT_C(0, 0); + INIT_C(1, 0); + + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); + + mb0 = svld1_bf16(pg16_all, ptr_b0); + + MATMUL(0, 0); + MATMUL(1, 0); + + ptr_a0 += 32; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); + + ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); + + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); + + ptr_c0 += 4; + } + + if (m & 2) { + ptr_a0 = ptr_a; + ptr_a += 2 * pad_k; + ptr_b0 = ptr_b; + + INIT_C(0, 0); + + for (BLASLONG p = 0; p < pad_k; p += 8) { + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + + MATMUL(0, 0); + + ptr_a0 += 16; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + + vc0 = svuzp1(mc00, mc00); + + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); + + ptr_c0 += 2; + } + + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + + INIT_C(0, 0); + for (BLASLONG p = 0; p < pad_k; p += 8) { + + ma0 = svld1_bf16(pg16_all, ptr_a0); + mb0 = svld1_bf16(pg16_all, ptr_b0); + + MATMUL(0, 0); + ptr_a0 += 16; + ptr_b0 += 16; + } + + ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); + + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); + } + } + + return 0; +} diff --git a/kernel/generic/gemmkernel_2x2.c b/kernel/generic/gemmkernel_2x2.c index add84f0431..8872f2f56f 100644 --- a/kernel/generic/gemmkernel_2x2.c +++ b/kernel/generic/gemmkernel_2x2.c @@ -1,26 +1,50 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + #include "common.h" #if defined(BFLOAT16) && defined(BFLOAT16CONVERSION) static float -bfloat16tof32 (bfloat16 f16) +bfloat16tof32 (bfloat16 value) { - float result = 0; - unsigned short* q = (unsigned short*)(&result); -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - q[0] = f16; -#else - q[1] = f16; -#endif + blasint one = 1; + float result; + sbf16tos_(&one, &value, &one, &result, &one); return result; } -static bfloat16 f32tobfloat16(float f32) { - unsigned short *q = (unsigned short *)(&f32); -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - return q[0]; -#else - return q[1]; -#endif +#ifdef BGEMM +static bfloat16 f32tobfloat16(float value) { + blasint one = 1; + bfloat16 result; + sbstobf16_(&one, &value, &one, &result, &one); + return result; } +#endif #ifdef BGEMM #define ALPHA bfloat16tof32(alpha) diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index 9eb5959dc1..886895accc 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -88,7 +88,11 @@ gotoblas_t TABLE_NAME = { ssymv_LTS, ssymv_UTS, bgemm_kernelTS, bgemm_betaTS, +#if BGEMM_DEFAULT_UNROLL_M != BGEMM_DEFAULT_UNROLL_N bgemm_incopyTS, bgemm_itcopyTS, +#else + bgemm_oncopyTS, bgemm_otcopyTS, +#endif bgemm_oncopyTS, bgemm_otcopyTS, sbgemm_kernelTS, sbgemm_betaTS, diff --git a/param.h b/param.h index 681ff598e8..662d084496 100644 --- a/param.h +++ b/param.h @@ -3593,6 +3593,13 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #define GEMM_PREFERED_SIZE 8 #endif +#undef BGEMM_ALIGN_K +#undef BGEMM_DEFAULT_UNROLL_M +#undef BGEMM_DEFAULT_UNROLL_N +#define BGEMM_ALIGN_K 8 +#define BGEMM_DEFAULT_UNROLL_N 4 +#define BGEMM_DEFAULT_UNROLL_M 4 + #undef SBGEMM_ALIGN_K #undef SBGEMM_DEFAULT_UNROLL_M #undef SBGEMM_DEFAULT_UNROLL_N diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 8cddcba97e..51d26adbcd 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -33,92 +33,49 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define BGEMM BLASFUNC(bgemm) #define BGEMM_LARGEST 256 -typedef union +static float float16to32(bfloat16 value) { - unsigned short v; -#if defined(_AIX) - struct __attribute__((packed)) -#else - struct -#endif - { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - unsigned short s:1; - unsigned short e:8; - unsigned short m:7; -#else - unsigned short m:7; - unsigned short e:8; - unsigned short s:1; -#endif - } bits; -} bfloat16_bits; - -typedef union -{ - float v; -#if defined(_AIX) - struct __attribute__((packed)) -#else - struct -#endif - { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - uint32_t s:1; - uint32_t e:8; - uint32_t m:23; -#else - uint32_t m:23; - uint32_t e:8; - uint32_t s:1; -#endif - } bits; -} float32_bits; - -float -float16to32 (bfloat16_bits f16) -{ - float32_bits f32; - f32.bits.s = f16.bits.s; - f32.bits.e = f16.bits.e; - f32.bits.m = (uint32_t) f16.bits.m << 16; - return f32.v; -} - -bfloat16 -float32to16 (float32_bits f32) -{ - bfloat16_bits f16; - f16.bits.s = f32.bits.s; - f16.bits.e = f32.bits.e; - f16.bits.m = (f32.bits.m >> 16) & 0x7f; - return f16.v; + blasint one = 1; + float result; + sbf16tos_(&one, &value, &one, &result, &one); + return result; } static float truncate_float(float value) { - bfloat16_bits f16 = (bfloat16_bits)float32to16((float32_bits)value); - return float16to32(f16); + blasint one = 1; + bfloat16 tmp; + float result; + sbstobf16_(&one, &value, &one, &tmp, &one); + sbf16tos_(&one, &tmp, &one, &result, &one); + return result; } -void *malloc_safe(size_t size) { +static void *malloc_safe(size_t size) { if (size == 0) return malloc(1); else return malloc(size); } +static is_close(float a, float b, float rtol, float atol) { + return fabs(a - b) <= (atol + rtol*fabs(b)); +} + int main (int argc, char *argv[]) { blasint m, n, k; int i, j, l; blasint x, y; + blasint one = 1; int ret = 0; int loop = BGEMM_LARGEST; char transA = 'N', transB = 'N'; float alpha = 1.0, beta = 0.0; - bfloat16 alpha_bf16 = float32to16((float32_bits)alpha); - bfloat16 beta_bf16 = float32to16((float32_bits)beta); + bfloat16 alpha_bf16; + sbstobf16_(&one, &alpha, &one, &alpha_bf16, &one); + bfloat16 beta_bf16; + sbstobf16_(&one, &beta, &one, &beta_bf16, &one); for (x = 0; x <= loop; x++) { @@ -127,23 +84,20 @@ main (int argc, char *argv[]) float *A = (float *)malloc_safe(m * k * sizeof(FLOAT)); float *B = (float *)malloc_safe(k * n * sizeof(FLOAT)); float *C = (float *)malloc_safe(m * n * sizeof(FLOAT)); - bfloat16_bits *AA = (bfloat16_bits *)malloc_safe(m * k * sizeof(bfloat16_bits)); - bfloat16_bits *BB = (bfloat16_bits *)malloc_safe(k * n * sizeof(bfloat16_bits)); - bfloat16_bits *CC = (bfloat16_bits *)malloc_safe(k * n * sizeof(bfloat16_bits)); + bfloat16 *AA = (bfloat16 *)malloc_safe(m * k * sizeof(bfloat16)); + bfloat16 *BB = (bfloat16 *)malloc_safe(k * n * sizeof(bfloat16)); + bfloat16 *CC = (bfloat16 *)malloc_safe(k * n * sizeof(bfloat16)); FLOAT *DD = (FLOAT *)malloc_safe(m * n * sizeof(FLOAT)); if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || (DD == NULL) || (CC == NULL)) return 1; - bfloat16 atmp,btmp; - blasint one=1; for (j = 0; j < m; j++) { for (i = 0; i < k; i++) { A[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &A[j*k+i], &one, &atmp, &one); - AA[j * k + i].v = atmp; + sbstobf16_(&one, &A[j*k+i], &one, &AA[j * k + i], &one); } } for (j = 0; j < n; j++) @@ -151,8 +105,7 @@ main (int argc, char *argv[]) for (i = 0; i < k; i++) { B[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &B[j*k+i], &one, &btmp, &one); - BB[j * k + i].v = btmp; + sbstobf16_(&one, &B[j*k+i], &one, &BB[j * k + i], &one); } } for (y = 0; y < 4; y++) @@ -168,7 +121,7 @@ main (int argc, char *argv[]) transB = 'T'; } - memset(CC, 0, m * n * sizeof(bfloat16_bits)); + memset(CC, 0, m * n * sizeof(bfloat16)); memset(DD, 0, m * n * sizeof(FLOAT)); memset(C, 0, m * n * sizeof(FLOAT)); @@ -198,10 +151,15 @@ main (int argc, char *argv[]) DD[i * m + j] += float16to32 (AA[k * j + l]) * float16to32 (BB[i + l * n]); } - if (fabs(float16to32(CC[i * m + j]) - truncate_float(C[i * m + j])) > 2.0) { + if (!is_close(float16to32(CC[i * m + j]), truncate_float(C[i * m + j]), 0.01, 0.001)) { + printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", + i, j, k, float16to32(CC[i * m + j]), truncate_float(C[i * m + j])); ret++; } - if (fabs(float16to32(CC[i * m + j]) - truncate_float(DD[i * m + j])) > 1.0) { + + if (!is_close(float16to32(CC[i * m + j]), truncate_float(DD[i * m + j]), 0.0001, 0.00001)) { + printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, DD=%.6f\n", + i, j, k, float16to32(CC[i * m + j]), truncate_float(DD[i * m + j])); ret++; } From aad97c7763e35c83b1cf3d3c4fc1610e6b061388 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 11 Jul 2025 15:32:41 +0200 Subject: [PATCH 056/360] Fix return type declaration --- test/compare_sgemm_bgemm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 51d26adbcd..69210b98e2 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -57,7 +57,7 @@ static void *malloc_safe(size_t size) { return malloc(size); } -static is_close(float a, float b, float rtol, float atol) { +static float is_close(float a, float b, float rtol, float atol) { return fabs(a - b) <= (atol + rtol*fabs(b)); } From c8d41e4a32fdc55751e18242ba8c45cd406b73e3 Mon Sep 17 00:00:00 2001 From: newyork_loki <137760120+lowkeyrossi@users.noreply.github.com> Date: Sat, 12 Jul 2025 14:34:29 +0530 Subject: [PATCH 057/360] Add CI support for OpenBLAS on WoA --- .github/workflows/windows_arm64.yml | 82 +++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/windows_arm64.yml diff --git a/.github/workflows/windows_arm64.yml b/.github/workflows/windows_arm64.yml new file mode 100644 index 0000000000..bd23f955be --- /dev/null +++ b/.github/workflows/windows_arm64.yml @@ -0,0 +1,82 @@ +name: Windows ARM64 CI + +on: + push: + branches: + - develop + - release-** + pull_request: + branches: + - develop + - release-** + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read # to fetch code (actions/checkout) + +jobs: + build: + # if: "github.repository == 'OpenMathLib/OpenBLAS'" + runs-on: windows-11-arm + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install LLVM for Win-ARM64 + shell: pwsh + run: | + Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.6/LLVM-20.1.6-woa64.exe -UseBasicParsing -OutFile LLVM-woa64.exe + Start-Process -FilePath ".\LLVM-woa64.exe" -ArgumentList "/S" -Wait + echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Install CMake and Ninja for Win-ARM64 + shell: pwsh + run: | + Invoke-WebRequest https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-windows-arm64.msi -OutFile cmake-arm64.msi + Start-Process msiexec.exe -ArgumentList "/i cmake-arm64.msi /quiet /norestart" -Wait + echo "C:\Program Files\CMake\bin" >> $env:GITHUB_PATH + + Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.13.1/ninja-winarm64.zip -OutFile ninja-winarm64.zip + Expand-Archive ninja-winarm64.zip -DestinationPath ninja + Copy-Item ninja\ninja.exe -Destination "C:\Windows\System32" + + - name: Configure OpenBLAS + shell: cmd + run: | + CALL "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" + mkdir build + cd build + cmake .. -G Ninja ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DTARGET=ARMV8 ^ + -DBINARY=64 ^ + -DCMAKE_C_COMPILER=clang-cl ^ + -DCMAKE_Fortran_COMPILER=flang-new ^ + -DBUILD_SHARED_LIBS=ON ^ + -DCMAKE_SYSTEM_PROCESSOR=arm64 ^ + -DCMAKE_SYSTEM_NAME=Windows ^ + -DCMAKE_INSTALL_PREFIX=C:/opt + + - name: Build OpenBLAS + shell: cmd + run: | + cd build + ninja -j16 + + - name: Install OpenBLAS + shell: cmd + run: | + cd build + cmake --install . + + - name: Run ctests + shell: pwsh + run: | + $env:PATH = "C:\opt\bin;$env:PATH" + cd build + ctest + + From cb2c726716be1931426fbbf7c8ceaa33adcc37a1 Mon Sep 17 00:00:00 2001 From: newyork_loki <137760120+lowkeyrossi@users.noreply.github.com> Date: Sat, 12 Jul 2025 14:37:30 +0530 Subject: [PATCH 058/360] Add CI support for OpenBLAS on WoA --- .github/workflows/windows_arm64.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows_arm64.yml b/.github/workflows/windows_arm64.yml index bd23f955be..d1b5f94e0e 100644 --- a/.github/workflows/windows_arm64.yml +++ b/.github/workflows/windows_arm64.yml @@ -19,7 +19,7 @@ permissions: jobs: build: - # if: "github.repository == 'OpenMathLib/OpenBLAS'" + if: "github.repository == 'OpenMathLib/OpenBLAS'" runs-on: windows-11-arm steps: - name: Checkout repository From 3f110c827294b54ba7438b1763584c7c01b1ee64 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Sun, 13 Jul 2025 12:48:09 +0000 Subject: [PATCH 059/360] Improve bgemm and sbgemm testing - Fixes wrong return type for `is_close` - Adds stricter compiler flags for test files so we don't see the above issue again - Re-uses test helper functions between compare_sgemm_sbgemm/bgemm.c --- test/Makefile | 7 +-- test/compare_sgemm_bgemm.c | 30 +++--------- test/compare_sgemm_sbgemm.c | 97 ++++++++----------------------------- test/test_helpers.h | 55 +++++++++++++++++++++ 4 files changed, 84 insertions(+), 105 deletions(-) create mode 100644 test/test_helpers.h diff --git a/test/Makefile b/test/Makefile index 7ac87f7f67..cd8006c044 100644 --- a/test/Makefile +++ b/test/Makefile @@ -13,7 +13,7 @@ # 3. Neither the name of the OpenBLAS project nor the names of # its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -34,6 +34,7 @@ ifneq (, $(filter $(CORE),LOONGSON3R3 LOONGSON3R4)) endif override FFLAGS += -fno-tree-vectorize endif +override CFLAGS += -std=c11 -Wall -Werror SUPPORT_GEMM3M = 0 @@ -402,10 +403,10 @@ zblat3 : zblat3.$(SUFFIX) ../$(LIBNAME) endif ifeq ($(BUILD_BFLOAT16),1) -test_bgemm : compare_sgemm_bgemm.c ../$(LIBNAME) +test_bgemm : compare_sgemm_bgemm.c test_helpers.h ../$(LIBNAME) $(CC) $(CLDFLAGS) -o test_bgemm compare_sgemm_bgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) -test_sbgemm : compare_sgemm_sbgemm.c ../$(LIBNAME) +test_sbgemm : compare_sgemm_sbgemm.c test_helpers.h ../$(LIBNAME) $(CC) $(CLDFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) endif diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 69210b98e2..8ece638414 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -28,20 +28,13 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include "test_helpers.h" #define SGEMM BLASFUNC(sgemm) #define BGEMM BLASFUNC(bgemm) #define BGEMM_LARGEST 256 -static float float16to32(bfloat16 value) -{ - blasint one = 1; - float result; - sbf16tos_(&one, &value, &one, &result, &one); - return result; -} - -static float truncate_float(float value) { +static float truncate_float32_to_bfloat16(float value) { blasint one = 1; bfloat16 tmp; float result; @@ -50,17 +43,6 @@ static float truncate_float(float value) { return result; } -static void *malloc_safe(size_t size) { - if (size == 0) - return malloc(1); - else - return malloc(size); -} - -static float is_close(float a, float b, float rtol, float atol) { - return fabs(a - b) <= (atol + rtol*fabs(b)); -} - int main (int argc, char *argv[]) { @@ -151,15 +133,15 @@ main (int argc, char *argv[]) DD[i * m + j] += float16to32 (AA[k * j + l]) * float16to32 (BB[i + l * n]); } - if (!is_close(float16to32(CC[i * m + j]), truncate_float(C[i * m + j]), 0.01, 0.001)) { + if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j]), 0.01, 0.001)) { printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", - i, j, k, float16to32(CC[i * m + j]), truncate_float(C[i * m + j])); + i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j])); ret++; } - if (!is_close(float16to32(CC[i * m + j]), truncate_float(DD[i * m + j]), 0.0001, 0.00001)) { + if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j]), 0.0001, 0.00001)) { printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, DD=%.6f\n", - i, j, k, float16to32(CC[i * m + j]), truncate_float(DD[i * m + j])); + i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j])); ret++; } diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c index ae109c1a56..4fa24b9ce0 100644 --- a/test/compare_sgemm_sbgemm.c +++ b/test/compare_sgemm_sbgemm.c @@ -27,72 +27,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "../common.h" + +#include "test_helpers.h" + #define SGEMM BLASFUNC(sgemm) #define SBGEMM BLASFUNC(sbgemm) #define SGEMV BLASFUNC(sgemv) #define SBGEMV BLASFUNC(sbgemv) -typedef union -{ - unsigned short v; -#if defined(_AIX) - struct __attribute__((packed)) -#else - struct -#endif - { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - unsigned short s:1; - unsigned short e:8; - unsigned short m:7; -#else - unsigned short m:7; - unsigned short e:8; - unsigned short s:1; -#endif - } bits; -} bfloat16_bits; - -typedef union -{ - float v; -#if defined(_AIX) - struct __attribute__((packed)) -#else - struct -#endif - { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - uint32_t s:1; - uint32_t e:8; - uint32_t m:23; -#else - uint32_t m:23; - uint32_t e:8; - uint32_t s:1; -#endif - } bits; -} float32_bits; - -float -float16to32 (bfloat16_bits f16) -{ - float32_bits f32; - f32.bits.s = f16.bits.s; - f32.bits.e = f16.bits.e; - f32.bits.m = (uint32_t) f16.bits.m << 16; - return f32.v; -} - #define SBGEMM_LARGEST 256 -void *malloc_safe(size_t size) -{ - if (size == 0) - return malloc(1); - else - return malloc(size); -} - int main (int argc, char *argv[]) { @@ -111,14 +54,13 @@ main (int argc, char *argv[]) float *A = (float *)malloc_safe(m * k * sizeof(FLOAT)); float *B = (float *)malloc_safe(k * n * sizeof(FLOAT)); float *C = (float *)malloc_safe(m * n * sizeof(FLOAT)); - bfloat16_bits *AA = (bfloat16_bits *)malloc_safe(m * k * sizeof(bfloat16_bits)); - bfloat16_bits *BB = (bfloat16_bits *)malloc_safe(k * n * sizeof(bfloat16_bits)); + bfloat16 *AA = (bfloat16 *)malloc_safe(m * k * sizeof(bfloat16)); + bfloat16 *BB = (bfloat16 *)malloc_safe(k * n * sizeof(bfloat16)); float *DD = (float *)malloc_safe(m * n * sizeof(FLOAT)); float *CC = (float *)malloc_safe(m * n * sizeof(FLOAT)); if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || (DD == NULL) || (CC == NULL)) return 1; - bfloat16 atmp,btmp; blasint one=1; for (j = 0; j < m; j++) @@ -126,8 +68,7 @@ main (int argc, char *argv[]) for (i = 0; i < k; i++) { A[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &A[j*k+i], &one, &atmp, &one); - AA[j * k + i].v = atmp; + sbstobf16_(&one, &A[j*k+i], &one, &AA[j * k + i], &one); } } for (j = 0; j < n; j++) @@ -135,8 +76,7 @@ main (int argc, char *argv[]) for (i = 0; i < k; i++) { B[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &B[j*k+i], &one, &btmp, &one); - BB[j * k + i].v = btmp; + sbstobf16_(&one, &B[j*k+i], &one, &BB[j * k + i], &one); } } for (y = 0; y < 4; y++) @@ -182,10 +122,12 @@ main (int argc, char *argv[]) DD[i * m + j] += float16to32 (AA[k * j + l]) * float16to32 (BB[i + l * n]); } - if (fabs (CC[i * m + j] - C[i * m + j]) > 1.0) + if (!is_close(CC[i * m + j], C[i * m + j], 0.01, 0.001)) { ret++; - if (fabs (CC[i * m + j] - DD[i * m + j]) > 1.0) + } + if (!is_close(CC[i * m + j], DD[i * m + j], 0.001, 0.0001)) { ret++; + } } } free(A); @@ -211,14 +153,13 @@ main (int argc, char *argv[]) float *A = (float *)malloc_safe(x * x * sizeof(FLOAT)); float *B = (float *)malloc_safe(x * sizeof(FLOAT) << l); float *C = (float *)malloc_safe(x * sizeof(FLOAT) << l); - bfloat16_bits *AA = (bfloat16_bits *)malloc_safe(x * x * sizeof(bfloat16_bits)); - bfloat16_bits *BB = (bfloat16_bits *)malloc_safe(x * sizeof(bfloat16_bits) << l); + bfloat16 *AA = (bfloat16 *)malloc_safe(x * x * sizeof(bfloat16)); + bfloat16 *BB = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); float *CC = (float *)malloc_safe(x * sizeof(FLOAT) << l); if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || (DD == NULL) || (CC == NULL)) return 1; - bfloat16 atmp, btmp; blasint one = 1; for (j = 0; j < x; j++) @@ -226,12 +167,10 @@ main (int argc, char *argv[]) for (i = 0; i < x; i++) { A[j * x + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &A[j*x+i], &one, &atmp, &one); - AA[j * x + i].v = atmp; + sbstobf16_(&one, &A[j*x+i], &one, &AA[j * x + i], &one); } B[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &B[j << l], &one, &btmp, &one); - BB[j << l].v = btmp; + sbstobf16_(&one, &B[j << l], &one, &BB[j << l], &one); CC[j << l] = C[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; } @@ -262,10 +201,12 @@ main (int argc, char *argv[]) } for (j = 0; j < x; j++) { - if (fabs (CC[j << l] - C[j << l]) > 1.0) + if (!is_close(CC[j << l], C[j << l], 0.01, 0.001)) { ret++; - if (fabs (CC[j << l] - DD[j]) > 1.0) + } + if (!is_close(CC[j << l], DD[j], 0.001, 0.0001)) { ret++; + } } } free(A); diff --git a/test/test_helpers.h b/test/test_helpers.h new file mode 100644 index 0000000000..2bb3f7acd6 --- /dev/null +++ b/test/test_helpers.h @@ -0,0 +1,55 @@ +/*************************************************************************** +Copyright (c) 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#ifndef TEST_HELPERS_H +#define TEST_HELPERS_H +#include + +#include "../common.h" + +#if IFLOAT == bfloat16 +static float float16to32(bfloat16 value) +{ + blasint one = 1; + float result; + sbf16tos_(&one, &value, &one, &result, &one); + return result; +} +#endif + +static void *malloc_safe(size_t size) { + if (size == 0) + return malloc(1); + else + return malloc(size); +} + +static bool is_close(float a, float b, float rtol, float atol) { + return fabs(a - b) <= (atol + rtol*fabs(b)); +} + +#endif From 09a016fdf69828a26f18757bd99f60011a27ee5b Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Sun, 13 Jul 2025 13:01:27 +0000 Subject: [PATCH 060/360] Split sbgemv test from sbgemm test --- .gitignore | 2 + test/Makefile | 24 ++++++- test/compare_sgemm_bgemm.c | 3 +- test/compare_sgemm_sbgemm.c | 80 ---------------------- test/compare_sgemv_sbgemv.c | 128 ++++++++++++++++++++++++++++++++++++ 5 files changed, 153 insertions(+), 84 deletions(-) create mode 100644 test/compare_sgemv_sbgemv.c diff --git a/.gitignore b/.gitignore index c0885d4662..1807d44962 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,7 @@ test/ZBLAT2.SUMM test/ZBLAT3.SUMM test/ZBLAT3_3M.SUMM test/SHBLAT3.SUMM +test/SBBLAT2.SUMM test/SBBLAT3.SUMM test/BBLAT3.SUMM test/cblat1 @@ -97,6 +98,7 @@ test/sblat3 test/sblat3_3m test/test_shgemm test/test_sbgemm +test/test_sbgemv test/test_bgemm test/zblat1 test/zblat2 diff --git a/test/Makefile b/test/Makefile index cd8006c044..144738eb26 100644 --- a/test/Makefile +++ b/test/Makefile @@ -119,6 +119,9 @@ endif endif endif +ifeq ($(BUILD_BFLOAT16), 1) +B2 = test_sbgemv +endif ifeq ($(BUILD_SINGLE),1) S2=sblat2 endif @@ -132,11 +135,15 @@ ifeq ($(BUILD_COMPLEX16),1) Z2=zblat2 endif -level2: $(S2) $(D2) $(C2) $(Z2) +level2: $(B2) $(S2) $(D2) $(C2) $(Z2) ifneq ($(CROSS), 1) rm -f ?BLAT2.SUMM +ifeq ($(BUILD_BFLOAT16),1) + OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_sbgemv > SBBLAT2.SUMM + @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 +endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat2 < ./sblat2.dat @$(GREP) -q FATAL SBLAT2.SUMM && cat SBLAT2.SUMM || exit 0 @@ -156,6 +163,10 @@ endif ifdef SMP rm -f ?BLAT2.SUMM ifeq ($(USE_OPENMP), 1) +ifeq ($(BUILD_BFLOAT16),1) + OMP_NUM_THREADS=2 ./test_sbgemv > SBBLAT2.SUMM + @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 +endif ifeq ($(BUILD_SINGLE),1) OMP_NUM_THREADS=2 ./sblat2 < ./sblat2.dat @$(GREP) -q FATAL SBLAT2.SUMM && cat SBLAT2.SUMM || exit 0 @@ -173,6 +184,10 @@ ifeq ($(BUILD_COMPLEX16),1) @$(GREP) -q FATAL ZBLAT2.SUMM && cat ZBLAT2.SUMM || exit 0 endif else +ifeq ($(BUILD_BFLOAT16),1) + OMP_NUM_THREADS=2 ./test_sbgemv > SBBLAT2.SUMM + @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 +endif ifeq ($(BUILD_SINGLE),1) OPENBLAS_NUM_THREADS=2 ./sblat2 < ./sblat2.dat @$(GREP) -q FATAL SBLAT2.SUMM && cat SBLAT2.SUMM || exit 0 @@ -195,7 +210,7 @@ endif ifeq ($(BUILD_BFLOAT16),1) BF3= test_bgemm -B3= test_sbgemm +B3 = test_sbgemm endif ifeq ($(BUILD_SINGLE),1) S3=sblat3 @@ -408,6 +423,9 @@ test_bgemm : compare_sgemm_bgemm.c test_helpers.h ../$(LIBNAME) test_sbgemm : compare_sgemm_sbgemm.c test_helpers.h ../$(LIBNAME) $(CC) $(CLDFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + +test_sbgemv : compare_sgemv_sbgemv.c ../$(LIBNAME) + $(CC) $(CLDFLAGS) -o test_sbgemv compare_sgemv_sbgemv.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) endif ifeq ($(BUILD_COMPLEX),1) @@ -426,7 +444,7 @@ clean: @rm -f *.$(SUFFIX) *.$(PSUFFIX) gmon.$(SUFFIX)ut *.SUMM *.cxml *.exe *.pdb *.dwf \ sblat1 dblat1 cblat1 zblat1 \ sblat2 dblat2 cblat2 zblat2 \ - test_bgemm test_sbgemm sblat3 dblat3 cblat3 zblat3 \ + test_bgemm test_sbgemm test_sbgemv sblat3 dblat3 cblat3 zblat3 \ sblat1p dblat1p cblat1p zblat1p \ sblat2p dblat2p cblat2p zblat2p \ sblat3p dblat3p cblat3p zblat3p \ diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 8ece638414..bc8a0b468a 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -158,6 +158,7 @@ main (int argc, char *argv[]) if (ret != 0) { fprintf (stderr, "FATAL ERROR BGEMM - Return code: %d\n", ret); - return ret; } + + return ret; } diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c index 4fa24b9ce0..4892225168 100644 --- a/test/compare_sgemm_sbgemm.c +++ b/test/compare_sgemm_sbgemm.c @@ -141,87 +141,7 @@ main (int argc, char *argv[]) if (ret != 0) { fprintf (stderr, "FATAL ERROR SBGEMM - Return code: %d\n", ret); - return ret; } - for (beta = 0; beta < 3; beta += 1) { - for (alpha = 0; alpha < 3; alpha += 1) { - for (l = 0; l < 2; l++) { // l = 1 to test inc_x & inc_y not equal to one. - for (x = 1; x <= loop; x++) - { - k = (x == 0) ? 0 : l + 1; - float *A = (float *)malloc_safe(x * x * sizeof(FLOAT)); - float *B = (float *)malloc_safe(x * sizeof(FLOAT) << l); - float *C = (float *)malloc_safe(x * sizeof(FLOAT) << l); - bfloat16 *AA = (bfloat16 *)malloc_safe(x * x * sizeof(bfloat16)); - bfloat16 *BB = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); - float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); - float *CC = (float *)malloc_safe(x * sizeof(FLOAT) << l); - if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || - (DD == NULL) || (CC == NULL)) - return 1; - blasint one = 1; - - for (j = 0; j < x; j++) - { - for (i = 0; i < x; i++) - { - A[j * x + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &A[j*x+i], &one, &AA[j * x + i], &one); - } - B[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - sbstobf16_(&one, &B[j << l], &one, &BB[j << l], &one); - - CC[j << l] = C[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; - } - - for (y = 0; y < 2; y++) - { - if (y == 0) { - transA = 'N'; - } else { - transA = 'T'; - } - - memset(CC, 0, x * sizeof(FLOAT) << l); - memset(DD, 0, x * sizeof(FLOAT)); - memset(C, 0, x * sizeof(FLOAT) << l); - - SGEMV (&transA, &x, &x, &alpha, A, &x, B, &k, &beta, C, &k); - SBGEMV (&transA, &x, &x, &alpha, (bfloat16*) AA, &x, (bfloat16*) BB, &k, &beta, CC, &k); - - for (int i = 0; i < x; i ++) DD[i] *= beta; - - for (j = 0; j < x; j++) - for (i = 0; i < x; i++) - if (transA == 'N') { - DD[i] += alpha * float16to32 (AA[j * x + i]) * float16to32 (BB[j << l]); - } else if (transA == 'T') { - DD[j] += alpha * float16to32 (AA[j * x + i]) * float16to32 (BB[i << l]); - } - - for (j = 0; j < x; j++) { - if (!is_close(CC[j << l], C[j << l], 0.01, 0.001)) { - ret++; - } - if (!is_close(CC[j << l], DD[j], 0.001, 0.0001)) { - ret++; - } - } - } - free(A); - free(B); - free(C); - free(AA); - free(BB); - free(DD); - free(CC); - } // x - } // l - } // alpha - } // beta - - if (ret != 0) - fprintf (stderr, "FATAL ERROR SBGEMV - Return code: %d\n", ret); return ret; } diff --git a/test/compare_sgemv_sbgemv.c b/test/compare_sgemv_sbgemv.c new file mode 100644 index 0000000000..5fa2d5f667 --- /dev/null +++ b/test/compare_sgemv_sbgemv.c @@ -0,0 +1,128 @@ +/*************************************************************************** +Copyright (c) 2020,2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ +#include +#include +#include "../common.h" + +#include "test_helpers.h" + +#define SGEMV BLASFUNC(sgemv) +#define SBGEMV BLASFUNC(sbgemv) +#define SBGEMV_LARGEST 256 + +int +main (int argc, char *argv[]) +{ + blasint k; + int i, j, l; + blasint x, y; + int ret = 0; + int loop = SBGEMV_LARGEST; + char transA = 'N'; + float alpha = 1.0, beta = 0.0; + + for (beta = 0; beta < 3; beta += 1) { + for (alpha = 0; alpha < 3; alpha += 1) { + for (l = 0; l < 2; l++) { // l = 1 to test inc_x & inc_y not equal to one. + for (x = 1; x <= loop; x++) + { + k = (x == 0) ? 0 : l + 1; + float *A = (float *)malloc_safe(x * x * sizeof(FLOAT)); + float *B = (float *)malloc_safe(x * sizeof(FLOAT) << l); + float *C = (float *)malloc_safe(x * sizeof(FLOAT) << l); + bfloat16 *AA = (bfloat16 *)malloc_safe(x * x * sizeof(bfloat16)); + bfloat16 *BB = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); + float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); + float *CC = (float *)malloc_safe(x * sizeof(FLOAT) << l); + if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || + (DD == NULL) || (CC == NULL)) + return 1; + blasint one = 1; + + for (j = 0; j < x; j++) + { + for (i = 0; i < x; i++) + { + A[j * x + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; + sbstobf16_(&one, &A[j*x+i], &one, &AA[j * x + i], &one); + } + B[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; + sbstobf16_(&one, &B[j << l], &one, &BB[j << l], &one); + + CC[j << l] = C[j << l] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5; + } + + for (y = 0; y < 2; y++) + { + if (y == 0) { + transA = 'N'; + } else { + transA = 'T'; + } + + memset(CC, 0, x * sizeof(FLOAT) << l); + memset(DD, 0, x * sizeof(FLOAT)); + memset(C, 0, x * sizeof(FLOAT) << l); + + SGEMV (&transA, &x, &x, &alpha, A, &x, B, &k, &beta, C, &k); + SBGEMV (&transA, &x, &x, &alpha, (bfloat16*) AA, &x, (bfloat16*) BB, &k, &beta, CC, &k); + + for (int i = 0; i < x; i ++) DD[i] *= beta; + + for (j = 0; j < x; j++) + for (i = 0; i < x; i++) + if (transA == 'N') { + DD[i] += alpha * float16to32 (AA[j * x + i]) * float16to32 (BB[j << l]); + } else if (transA == 'T') { + DD[j] += alpha * float16to32 (AA[j * x + i]) * float16to32 (BB[i << l]); + } + + for (j = 0; j < x; j++) { + if (!is_close(CC[j << l], C[j << l], 0.01, 0.001)) { + ret++; + } + if (!is_close(CC[j << l], DD[j], 0.001, 0.0001)) { + ret++; + } + } + } + free(A); + free(B); + free(C); + free(AA); + free(BB); + free(DD); + free(CC); + } // x + } // l + } // alpha + } // beta + + if (ret != 0) + fprintf (stderr, "FATAL ERROR SBGEMV - Return code: %d\n", ret); + return ret; +} From 848e9e6ba7c7eed58070b243867e328402b85443 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 13 Jul 2025 20:34:19 +0200 Subject: [PATCH 061/360] Add ID data for Intel Lunar Lake ("Core Ultra 200V series") --- cpuid_x86.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpuid_x86.c b/cpuid_x86.c index 1b09c7217c..8e1438e500 100644 --- a/cpuid_x86.c +++ b/cpuid_x86.c @@ -1567,6 +1567,7 @@ int get_cpuname(void){ case 10: case 15: case 14: // Alder Lake N + case 13: // Lunar Lake if(support_avx2()) return CPUTYPE_HASWELL; if(support_avx()) @@ -2412,7 +2413,8 @@ int get_coretype(void){ case 7: // Raptor Lake case 10: case 15: - case 14: // Alder Lake N + case 14: // Alder Lake N + case 13: // Lunar Lake #ifndef NO_AVX2 if(support_avx2()) return CORE_HASWELL; From e1054114601c972634ef692ed0ba150d7d5ede5d Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Sun, 13 Jul 2025 15:25:07 +0000 Subject: [PATCH 062/360] Add infrastructure for bgemv/bscal - Sets up all the various entrypoints for `bgemv` - Adds `bscal` for use in the `bgemv` interface - Adds test cases for comparing `sgemv` and `bgemv` - Adds generic kernels for `bgemv_n` and `bgemv_t` which are accurate enough to pass above tests --- .gitignore | 2 + cblas.h | 1 + cmake/kernel.cmake | 4 +- cmake/utils.cmake | 2 +- common_b.h | 9 ++ common_interface.h | 3 + common_level1.h | 4 + common_level2.h | 6 ++ common_macro.h | 11 ++- common_param.h | 4 + driver/level2/Makefile | 35 ++++++++ driver/level2/sbgemv_thread.c | 19 ++-- exports/gensymbol | 30 ++++++- exports/gensymbol.pl | 30 ++++++- interface/CMakeLists.txt | 1 + interface/Makefile | 22 ++++- interface/sbgemmt.c | 4 +- interface/sbgemv.c | 46 +++++++--- interface/scal.c | 10 ++- kernel/Makefile.L1 | 36 ++++++++ kernel/Makefile.L2 | 43 +++++++++ kernel/generic/bf16_macros.h | 64 ++++++++++++++ kernel/generic/gemmkernel_2x2.c | 33 +------ kernel/generic/gemv_n.c | 70 +++++++++++++++ kernel/generic/gemv_t.c | 60 +++++++++++++ kernel/generic/scal.c | 106 +++++++++++++++++++++++ kernel/setparam-ref.c | 4 +- test/Makefile | 20 +++-- test/compare_sgemm_bgemm.c | 9 -- test/compare_sgemv_bgemv.c | 149 ++++++++++++++++++++++++++++++++ test/compare_sgemv_sbgemv.c | 2 +- test/test_helpers.h | 13 ++- 32 files changed, 763 insertions(+), 89 deletions(-) create mode 100644 kernel/generic/bf16_macros.h create mode 100644 kernel/generic/gemv_n.c create mode 100644 kernel/generic/gemv_t.c create mode 100644 kernel/generic/scal.c create mode 100644 test/compare_sgemv_bgemv.c diff --git a/.gitignore b/.gitignore index 1807d44962..dcbc73dc85 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,7 @@ test/ZBLAT3_3M.SUMM test/SHBLAT3.SUMM test/SBBLAT2.SUMM test/SBBLAT3.SUMM +test/BBLAT2.SUMM test/BBLAT3.SUMM test/cblat1 test/cblat2 @@ -100,6 +101,7 @@ test/test_shgemm test/test_sbgemm test/test_sbgemv test/test_bgemm +test/test_bgemv test/zblat1 test/zblat2 test/zblat3 diff --git a/cblas.h b/cblas.h index f48d5da1e8..7503e43f7a 100644 --- a/cblas.h +++ b/cblas.h @@ -465,6 +465,7 @@ void cblas_sbdtobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *in, OPEN void cblas_sbf16tos(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, float *out, OPENBLAS_CONST blasint incout); /* convert BFLOAT16 array to double array */ void cblas_dbf16tod(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, double *out, OPENBLAS_CONST blasint incout); +void cblas_bgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 alpha, OPENBLAS_CONST bfloat16 *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST bfloat16 beta, bfloat16 *y, OPENBLAS_CONST blasint incy); /* dot production of BFLOAT16 input arrays, and output as float */ float cblas_sbdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST bfloat16 *y, OPENBLAS_CONST blasint incy); void cblas_sbgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); diff --git a/cmake/kernel.cmake b/cmake/kernel.cmake index c0dd32ca07..ab548cfb0b 100644 --- a/cmake/kernel.cmake +++ b/cmake/kernel.cmake @@ -169,8 +169,6 @@ if (BUILD_BFLOAT16) SetFallback(SHSWAPKERNEL ../arm/swap.c) SetFallback(TOBF16KERNEL ../x86_64/tobf16.c) SetFallback(BF16TOKERNEL ../x86_64/bf16to.c) - SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c) - SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c) endif () endmacro () @@ -221,6 +219,8 @@ macro(SetDefaultL2) SetFallback(XHEMV_V_KERNEL ../generic/zhemv_k.c) SetFallback(XHEMV_M_KERNEL ../generic/zhemv_k.c) if (BUILD_BFLOAT16) + SetFallback(BGEMVNKERNEL ../generic/gemv_n.c) + SetFallback(BGEMVTKERNEL ../generic/gemv_t.c) SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c) SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c) SetFallback(SHGERKERNEL ../generic/ger.c) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 1b19f41bc9..52e5b5ee33 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -375,7 +375,7 @@ function(GenerateNamedObjects sources_in) if (NOT no_float_type) string(SUBSTRING ${float_type} 0 1 float_char) string(TOLOWER ${float_char} float_char) - if (${float_type} STREQUAL "BFLOAT16" AND NOT "${defines_in}" MATCHES "BGEMM") + if (${float_type} STREQUAL "BFLOAT16" AND NOT "${defines_in}" MATCHES "BGEM") set (float_char "sb") endif () endif () diff --git a/common_b.h b/common_b.h index 4d77ec4faf..1921c3a69d 100644 --- a/common_b.h +++ b/common_b.h @@ -30,6 +30,11 @@ #define COMMON_B_H #ifndef DYNAMIC_ARCH +#define BGEMV_N_K bgemv_n +#define BGEMV_T_K bgemv_t + +#define BSCAL_K bscal_k + #define BGEMM_ONCOPY bgemm_oncopy #define BGEMM_OTCOPY bgemm_otcopy @@ -45,6 +50,10 @@ #define BGEMM_KERNEL bgemm_kernel #else +#define BGEMV_N_K gotoblas->bgemv_n +#define BGEMV_T_K gotoblas->bgemv_t + +#define BSCAL_K gotoblas->bscal_k #define BGEMM_ONCOPY gotoblas->bgemm_oncopy #define BGEMM_OTCOPY gotoblas->bgemm_otcopy diff --git a/common_interface.h b/common_interface.h index f69baab1ca..945b6c8a1a 100644 --- a/common_interface.h +++ b/common_interface.h @@ -60,6 +60,7 @@ double BLASFUNC(dsdot) (blasint *, float *, blasint *, float *, blasint *); double BLASFUNC(ddot) (blasint *, double *, blasint *, double *, blasint *); xdouble BLASFUNC(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(bscal) (blasint *, bfloat16 *, bfloat16 *, blasint *); float BLASFUNC(sbdot) (blasint *, bfloat16 *, blasint *, bfloat16 *, blasint *); void BLASFUNC(sbstobf16) (blasint *, float *, blasint *, bfloat16 *, blasint *); void BLASFUNC(sbdtobf16) (blasint *, double *, blasint *, bfloat16 *, blasint *); @@ -256,6 +257,8 @@ void BLASFUNC(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *, void BLASFUNC(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); +void BLASFUNC(bgemv)(char *, blasint *, blasint *, bfloat16 *, bfloat16 *, blasint *, + bfloat16 *, blasint *, bfloat16 *, bfloat16 *, blasint *); void BLASFUNC(sbgemv)(char *, blasint *, blasint *, float *, bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); void BLASFUNC(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *, diff --git a/common_level1.h b/common_level1.h index 85b39f7a7c..7ab45a472b 100644 --- a/common_level1.h +++ b/common_level1.h @@ -1,4 +1,5 @@ /*********************************************************************/ +/* Copyright 2025 The OpenBLAS Project. */ /* Copyright 2009, 2010 The University of Texas at Austin. */ /* All rights reserved. */ /* */ @@ -169,6 +170,9 @@ BLASLONG icmin_k(BLASLONG, float *, BLASLONG); BLASLONG izmin_k(BLASLONG, double *, BLASLONG); BLASLONG ixmin_k(BLASLONG, xdouble *, BLASLONG); + +int bscal_k(BLASLONG, BLASLONG, BLASLONG, bfloat16, + bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG); int sscal_k(BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG); int dscal_k(BLASLONG, BLASLONG, BLASLONG, double, diff --git a/common_level2.h b/common_level2.h index 9a5ebb4d9b..eea5e43f3c 100644 --- a/common_level2.h +++ b/common_level2.h @@ -1,4 +1,5 @@ /*********************************************************************/ +/* Copyright 2025 The OpenBLAS Project */ /* Copyright 2009, 2010 The University of Texas at Austin. */ /* All rights reserved. */ /* */ @@ -44,6 +45,11 @@ extern "C" { #endif + +int bgemv_n(BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG); +int bgemv_t(BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG); +int bgemv_thread_n(BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG, int); +int bgemv_thread_t(BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG, int); int sbgemv_n(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float, float *, BLASLONG); int sbgemv_t(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float, float *, BLASLONG); int sbgemv_thread_n(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float, float *, BLASLONG, int); diff --git a/common_macro.h b/common_macro.h index 22c1e14a20..f9c22089b3 100644 --- a/common_macro.h +++ b/common_macro.h @@ -705,6 +705,11 @@ #elif defined(BFLOAT16) && defined(BGEMM) +#define SCAL_K BSCAL_K + +#define GEMV_N BGEMV_N_K +#define GEMV_T BGEMV_T_K + #define GEMM_BETA BGEMM_BETA #define GEMM_KERNEL_N BGEMM_KERNEL #define GEMM_KERNEL_L BGEMM_KERNEL @@ -754,8 +759,8 @@ #define D_BF16_TO_K DBF16TOD_K #define S_TO_BF16_K SBSTOBF16_K #define S_BF16_TO_K SBF16TOS_K -#define SBGEMV_N SBGEMV_N_K -#define SBGEMV_T SBGEMV_T_K +#define GEMV_N SBGEMV_N_K +#define GEMV_T SBGEMV_T_K #define AMAX_K SAMAX_K #define AMIN_K SAMIN_K @@ -773,8 +778,6 @@ #define AXPYC_K SAXPYC_K #define AXPBY_K SAXPBY_K #define SCAL_K SSCAL_K -#define GEMV_N SGEMV_N -#define GEMV_T SGEMV_T #define SYMV_U SSYMV_U #define SYMV_L SSYMV_L #define GERU_K SGERU_K diff --git a/common_param.h b/common_param.h index 503525dd2a..d6b8d9bad2 100644 --- a/common_param.h +++ b/common_param.h @@ -98,10 +98,14 @@ int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); int (*sbrot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG, float, float); int (*sbrotm_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG, float *); + int (*bscal_k) (BLASLONG, BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG); int (*sbaxpy_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG); int (*sbscal_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG); int (*sbswap_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG); + int (*bgemv_n) (BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG); + int (*bgemv_t) (BLASLONG, BLASLONG, bfloat16, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, bfloat16, bfloat16 *, BLASLONG); + int (*sbgemv_n) (BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float, float *, BLASLONG); int (*sbgemv_t) (BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float, float *, BLASLONG); int (*sbger_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *); diff --git a/driver/level2/Makefile b/driver/level2/Makefile index 5f8c712a8e..3f3731d3f9 100644 --- a/driver/level2/Makefile +++ b/driver/level2/Makefile @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025 The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + TOPDIR = ../.. include ../../Makefile.system @@ -423,6 +451,9 @@ XBLASOBJS += \ xtbmv_thread_CLU.$(SUFFIX) xtbmv_thread_CLN.$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += \ + bgemv_thread_n$(TSUFFIX).$(SUFFIX) \ + bgemv_thread_t$(TSUFFIX).$(SUFFIX) SBBLASOBJS += \ sbgemv_thread_n$(TSUFFIX).$(SUFFIX) \ sbgemv_thread_t$(TSUFFIX).$(SUFFIX) @@ -3707,6 +3738,10 @@ xtrsv_CUN.$(SUFFIX) xtrsv_CUN.$(PSUFFIX) : ztrsv_L.c ../../param.h $(CC) -c $(CFLAGS) -DXDOUBLE -DCOMPLEX -DTRANSA=4 -UUNIT $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +bgemv_thread_n.$(SUFFIX) bgemv_thread_n.$(PSUFFIX) : sbgemv_thread.c ../../common.h + $(CC) -c $(CFLAGS) -DBGEMM -UCOMPLEX -UDOUBLE -UTRANSA -UCONJ -UXCONJ $< -o $(@F) +bgemv_thread_t.$(SUFFIX) bgemv_thread_t.$(PSUFFIX) : sbgemv_thread.c ../../common.h + $(CC) -c $(CFLAGS) -DBGEMM -UCOMPLEX -UDOUBLE -DTRANSA -UCONJ -UXCONJ $< -o $(@F) sbgemv_thread_n.$(SUFFIX) sbgemv_thread_n.$(PSUFFIX) : sbgemv_thread.c ../../common.h $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -UTRANSA -UCONJ -UXCONJ $< -o $(@F) sbgemv_thread_t.$(SUFFIX) sbgemv_thread_t.$(PSUFFIX) : sbgemv_thread.c ../../common.h diff --git a/driver/level2/sbgemv_thread.c b/driver/level2/sbgemv_thread.c index 534c60f95b..c7fc90a350 100644 --- a/driver/level2/sbgemv_thread.c +++ b/driver/level2/sbgemv_thread.c @@ -1,4 +1,5 @@ /*********************************************************************/ +/* Copyright 2025 The OpenBLAS Project. */ /* Copyright 2009, 2010 The University of Texas at Austin. */ /* All rights reserved. */ /* */ @@ -41,21 +42,21 @@ #include "common.h" #ifndef TRANSA -#define SBGEMV SBGEMV_N +#define GEMV GEMV_N #else -#define SBGEMV SBGEMV_T +#define GEMV GEMV_T #endif static int sbgemv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *dummy1, FLOAT *dummy2, BLASLONG dummy3){ - bfloat16 *a, *x; - float *y; + IFLOAT *a, *x; + FLOAT *y; BLASLONG lda, incx, incy; BLASLONG m_from, m_to, n_from, n_to; - a = (bfloat16 *)args->a; - x = (bfloat16 *)args->b; - y = (float *)args->c; + a = (IFLOAT *)args->a; + x = (IFLOAT *)args->b; + y = (FLOAT *)args->c; lda = args->lda; incx = args->ldb; @@ -77,12 +78,12 @@ static int sbgemv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, y += n_from * incy; #endif - SBGEMV(m_to - m_from, n_to - n_from, *((FLOAT *)(args->alpha)), a, lda, x, incx, *((FLOAT *)(args->beta)), y, incy); + GEMV(m_to - m_from, n_to - n_from, *((FLOAT *)(args->alpha)), a, lda, x, incx, *((FLOAT *)(args->beta)), y, incy); return 0; } -int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat16 *x, BLASLONG incx, float beta, float *y, BLASLONG incy, int threads) +int CNAME(BLASLONG m, BLASLONG n, FLOAT alpha, IFLOAT *a, BLASLONG lda, IFLOAT *x, BLASLONG incx, FLOAT beta, FLOAT *y, BLASLONG incy, int threads) { blas_arg_t args; blas_queue_t queue[MAX_CPU_NUMBER]; diff --git a/exports/gensymbol b/exports/gensymbol index 17fbd2877f..40e13e623f 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -1,5 +1,33 @@ #!/bin/sh +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + # Changelog # 2017/09/03 staticfloat # Added zsymv and csymv into @lapackobjs2 so they are properly renamed @@ -51,7 +79,7 @@ blasobjsz=" zgeadd dzsum zgemmt zgemmtr" blasobjs="lsame xerbla" -bfblasobjs="bgemm sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" +bfblasobjs="bgemm bgemv sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" hfblasobjs="shgemm" cblasobjsc=" cblas_caxpy cblas_ccopy cblas_cdotc cblas_cdotu cblas_cgbmv cblas_cgemm cblas_cgemv diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index 01f68fbb33..3447a4e515 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -1,5 +1,33 @@ #!/usr/bin/env perl +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + # Changelog # 2017/09/03 staticfloat # Added zsymv and csymv into @lapackobjs2 so they are properly renamed @@ -51,7 +79,7 @@ zgeadd, dzsum, zgemmt,zgemmtr); @blasobjs = (lsame, xerbla); -@bfblasobjs = (bgemm, sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); +@bfblasobjs = (bgemm, bgemv, sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); @hfblasobjs = (shgemm); @cblasobjsc = ( cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv, diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 995bebec37..0fcc79bfca 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -155,6 +155,7 @@ if (BUILD_BFLOAT16) GenerateNamedObjects("gemm.c" "" "sbgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "" "sbgemmt" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "RNAME" "sbgemmtr" ${CBLAS_FLAG} "" "" true "BFLOAT16") + GenerateNamedObjects("bgemv.c" "BGEMV" "bgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemv.c" "" "sbgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("tobf16.c" "SINGLE_PREC" "sbstobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("tobf16.c" "DOUBLE_PREC" "sbdtobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16") diff --git a/interface/Makefile b/interface/Makefile index 3af12748fa..999d23e9a7 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -75,7 +75,9 @@ SBLAS3OBJS = \ sgeadd.$(SUFFIX) sgemmt.$(SUFFIX) sgemmtr.$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) -BBLAS3OBJ = bgemm.$(SUFFIX) +BBLAS3OBJS = bgemm.$(SUFFIX) +BBLAS2OBJS = bgemv.$(SUFFIX) +BBLAS1OBJS = bscal.$(SUFFIX) SBBLAS1OBJS = sbdot.$(SUFFIX) SBBLAS2OBJS = sbgemv.$(SUFFIX) SBBLAS3OBJS = sbgemm.$(SUFFIX) sbgemmt.$(SUFFIX) sbgemmtr.$(SUFFIX) @@ -319,6 +321,8 @@ CSBLAS3OBJS = \ ifeq ($(BUILD_BFLOAT16),1) CBBLAS3OBJS = cblas_bgemm.$(SUFFIX) +CBBLAS2OBJS = cblas_bgemv.$(SUFFIX) +CBBLAS1OBJS = cblas_bscal.$(SUFFIX) CSBBLAS1OBJS = cblas_sbdot.$(SUFFIX) CSBBLAS2OBJS = cblas_sbgemv.$(SUFFIX) CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX) cblas_sbgemmt.$(SUFFIX) cblas_sbgemmtr.$(SUFFIX) cblas_sbgemm_batch.$(SUFFIX) @@ -423,7 +427,9 @@ override CFLAGS += -I. SBLAS1OBJS += $(CSBLAS1OBJS) SBLAS2OBJS += $(CSBLAS2OBJS) SBLAS3OBJS += $(CSBLAS3OBJS) -BBLAS3OBJ += $(CBBLAS3OBJS) +BBLAS3OBJS += $(CBBLAS3OBJS) +BBLAS2OBJS += $(CBBLAS2OBJS) +BBLAS1OBJS += $(CBBLAS1OBJS) SBBLAS1OBJS += $(CSBBLAS1OBJS) SBBLAS2OBJS += $(CSBBLAS2OBJS) SBBLAS3OBJS += $(CSBBLAS3OBJS) @@ -443,7 +449,7 @@ SBEXTOBJS += $(CSBEXTOBJS) CBAUXOBJS += $(CXERBLAOBJ) endif -BBLASOBJS = $(BBLAS3OBJ) +BBLASOBJS = $(BBLAS3OBJS) $(BBLAS2OBJS) $(BBLAS1OBJS) SBLASOBJS = $(SBLAS1OBJS) $(SBLAS2OBJS) $(SBLAS3OBJS) SBBLASOBJS = $(SBBLAS1OBJS) $(SBBLAS2OBJS) $(SBBLAS3OBJS) SHBLASOBJS = $(SHBLAS3OBJS) @@ -589,7 +595,7 @@ clean :: level1 : $(SBEXTOBJS) $(SBBLAS1OBJS) $(SBLAS1OBJS) $(DBLAS1OBJS) $(QBLAS1OBJS) $(CBLAS1OBJS) $(ZBLAS1OBJS) $(XBLAS1OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ -level2 : $(SBBLAS2OBJS) $(SBLAS2OBJS) $(DBLAS2OBJS) $(QBLAS2OBJS) $(CBLAS2OBJS) $(ZBLAS2OBJS) $(XBLAS2OBJS) +level2 : $(SBBLAS2OBJS) $(BBLAS2OBJS) $(SBLAS2OBJS) $(DBLAS2OBJS) $(QBLAS2OBJS) $(CBLAS2OBJS) $(ZBLAS2OBJS) $(XBLAS2OBJS) $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^ level3 : $(SBBLAS3OBJS) $(BBLAS3OBJ) $(SBLAS3OBJS) $(DBLAS3OBJS) $(QBLAS3OBJS) $(CBLAS3OBJS) $(ZBLAS3OBJS) $(XBLAS3OBJS) $(SHBLAS3OBJS) @@ -824,6 +830,8 @@ dsdot.$(SUFFIX) dsdot.$(PSUFFIX) : dsdot.c $(CC) $(CFLAGS) -c $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +bscal.$(SUFFIX) bscal.$(PSUFFIX) : scal.c + $(CC) $(CFLAGS) -DBGEMM -c $< -o $(@F) sbdot.$(SUFFIX) sbdot.$(PSUFFIX) : bf16dot.c $(CC) $(CFLAGS) -c $< -o $(@F) sbstobf16.$(SUFFIX) sbstobf16.$(PSUFFIX) : tobf16.c @@ -981,6 +989,8 @@ xgerc.$(SUFFIX) xgerc.$(PSUFFIX) : zger.c $(CC) -c $(CFLAGS) -DCONJ $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +bgemv.$(SUFFIX) bgemv.$(PSUFFIX) : sbgemv.c + $(CC) $(CFLAGS) -DBGEMM -c $< -o $(@F) sbgemv.$(SUFFIX) sbgemv.$(PSUFFIX) : sbgemv.c $(CC) $(CFLAGS) -c $< -o $(@F) endif @@ -1653,6 +1663,8 @@ cblas_dsdot.$(SUFFIX) cblas_dsdot.$(PSUFFIX) : dsdot.c $(CC) $(CFLAGS) -DCBLAS -c $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +cblas_bscal.$(SUFFIX) cblas_bscal.$(PSUFFIX) : scal.c + $(CC) $(CFLAGS) -DCBLAS -c $< -o $(@F) cblas_sbdot.$(SUFFIX) cblas_sbdot.$(PSUFFIX) : bf16dot.c $(CC) $(CFLAGS) -DCBLAS -c $< -o $(@F) cblas_sbstobf16.$(SUFFIX) cblas_sbstobf16.$(PSUFFIX) : tobf16.c @@ -1807,6 +1819,8 @@ cblas_zdrot.$(SUFFIX) cblas_zdrot.$(PSUFFIX) : zrot.c $(CC) $(CFLAGS) -DCBLAS -c $< -o $(@F) ifeq ($(BUILD_BFLOAT16),1) +cblas_bgemv.$(SUFFIX) cblas_bgemv.$(PSUFFIX) : sbgemv.c + $(CC) -DCBLAS -DBGEMM -c $(CFLAGS) $< -o $(@F) cblas_sbgemv.$(SUFFIX) cblas_sbgemv.$(PSUFFIX) : sbgemv.c $(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F) endif diff --git a/interface/sbgemmt.c b/interface/sbgemmt.c index 759af4bfb2..67914fe65f 100644 --- a/interface/sbgemmt.c +++ b/interface/sbgemmt.c @@ -1,5 +1,5 @@ /*********************************************************************/ -/* Copyright 2024, The OpenBLAS Project. */ +/* Copyright 2024-2025 The OpenBLAS Project. */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or */ @@ -305,7 +305,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, #endif int (*gemv[]) (BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG, IFLOAT *, BLASLONG, FLOAT, FLOAT *, BLASLONG) = { - SBGEMV_N, SBGEMV_T,}; + GEMV_N, GEMV_T,}; if (m == 0) diff --git a/interface/sbgemv.c b/interface/sbgemv.c index fce86f8e46..cee3e80fcf 100644 --- a/interface/sbgemv.c +++ b/interface/sbgemv.c @@ -1,4 +1,5 @@ /*********************************************************************/ +/* Copyright 2025 The OpenBLAS Project. */ /* Copyright 2009, 2010 The University of Texas at Austin. */ /* All rights reserved. */ /* */ @@ -43,17 +44,25 @@ #include "functable.h" #endif +#ifdef BGEMM +#define GEMV_THREAD_N bgemv_thread_n +#define GEMV_THREAD_T bgemv_thread_t +#define ERROR_NAME "BGEMV " +#else +#define GEMV_THREAD_N sbgemv_thread_n +#define GEMV_THREAD_T sbgemv_thread_t #define ERROR_NAME "SBGEMV " +#endif #ifdef SMP -static int (*sbgemv_thread[])(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 * , BLASLONG, float, float *, BLASLONG, int) = { - sbgemv_thread_n, sbgemv_thread_t, +static int (*gemv_thread[])(BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG, IFLOAT * , BLASLONG, FLOAT, FLOAT *, BLASLONG, int) = { + GEMV_THREAD_N, GEMV_THREAD_T, }; #endif #ifndef CBLAS -void NAME(char *TRANS, blasint *M, blasint *N, float *ALPHA, bfloat16 *a, blasint *LDA, bfloat16 *x, blasint *INCX, float *BETA, float *y, blasint *INCY) +void NAME(char *TRANS, blasint *M, blasint *N, FLOAT *ALPHA, IFLOAT *a, blasint *LDA, IFLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT *y, blasint *INCY) { char trans = *TRANS; blasint m = *M; @@ -61,14 +70,14 @@ void NAME(char *TRANS, blasint *M, blasint *N, float *ALPHA, bfloat16 *a, blasin blasint lda = *LDA; blasint incx = *INCX; blasint incy = *INCY; - float alpha = *ALPHA; - float beta = *BETA; + FLOAT alpha = *ALPHA; + FLOAT beta = *BETA; #ifdef SMP int nthreads; #endif - int (*sbgemv[])(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 * , BLASLONG, float, float *, BLASLONG) = { - SBGEMV_N, SBGEMV_T, + int (*gemv[])(BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG, IFLOAT * , BLASLONG, FLOAT, FLOAT *, BLASLONG) = { + GEMV_N, GEMV_T, }; blasint info; @@ -104,7 +113,7 @@ void NAME(char *TRANS, blasint *M, blasint *N, float *ALPHA, bfloat16 *a, blasin #else -void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint m, blasint n, float alpha, bfloat16 *a, blasint lda, bfloat16 *x, blasint incx, float beta, float *y, blasint incy) +void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint m, blasint n, FLOAT alpha, IFLOAT *a, blasint lda, IFLOAT *x, blasint incx, FLOAT beta, FLOAT *y, blasint incy) { blasint lenx, leny; int trans; @@ -113,8 +122,8 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint m, blasi int nthreads; #endif - int (*sbgemv[])(BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 * , BLASLONG, float, float *, BLASLONG) = { - SBGEMV_N, SBGEMV_T, + int (*gemv[])(BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG, IFLOAT * , BLASLONG, FLOAT, FLOAT *, BLASLONG) = { + GEMV_N, GEMV_T, }; PRINT_DEBUG_CNAME; @@ -166,8 +175,17 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint m, blasi leny = m; } - if (alpha == ZERO) { - if (beta != ONE) SCAL_K(leny, 0, 0, beta, y, blasabs(incy), NULL, 0, NULL, 0); +#ifdef BGEMM + float alpha_float, beta_float; + SBF16TOS_K(1, &alpha, 1, &alpha_float, 1); + SBF16TOS_K(1, &beta, 1, &beta_float, 1); +#else + float alpha_float = alpha; + float beta_float = beta; +#endif + + if (alpha_float == ZERO) { + if (beta_float != ONE) SCAL_K(leny, 0, 0, beta, y, blasabs(incy), NULL, 0, NULL, 0); return; } @@ -185,10 +203,10 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint m, blasi if (nthreads == 1) { #endif - (sbgemv[(int)trans])(m, n, alpha, a, lda, x, incx, beta, y, incy); + (gemv[(int)trans])(m, n, alpha, a, lda, x, incx, beta, y, incy); #ifdef SMP } else { - (sbgemv_thread[(int)trans])(m, n, alpha, a, lda, x, incx, beta, y, incy, nthreads); + (gemv_thread[(int)trans])(m, n, alpha, a, lda, x, incx, beta, y, incy, nthreads); } #endif diff --git a/interface/scal.c b/interface/scal.c index c6638a62d5..4f12df7c0d 100644 --- a/interface/scal.c +++ b/interface/scal.c @@ -1,4 +1,5 @@ /*********************************************************************/ +/* Copyright 2025 The OpenBLAS Project. */ /* Copyright 2009, 2010 The University of Texas at Austin. */ /* All rights reserved. */ /* */ @@ -68,7 +69,14 @@ void CNAME(blasint n, FLOAT alpha, FLOAT *x, blasint incx){ if (incx <= 0 || n <= 0) return; - if (alpha == ONE) return; +#ifdef BGEMM + float alpha_float; + SBF16TOS_K(1, &alpha, 1, &alpha_float, 1); +#else + float alpha_float = alpha; +#endif + + if (alpha_float == ONE) return; IDEBUG_START; diff --git a/kernel/Makefile.L1 b/kernel/Makefile.L1 index 0fc6720944..221cc51273 100644 --- a/kernel/Makefile.L1 +++ b/kernel/Makefile.L1 @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025 The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + FMAFLAG= ifndef OLDGCC ifdef HAVE_FMA3 @@ -271,6 +299,10 @@ XDOTKERNEL = zdot.S endif ifeq ($(BUILD_BFLOAT16),1) +ifndef BSCALKERNEL +BSCALKERNEL = ../generic/scal.c +endif + ifndef SBDOTKERNEL SBDOTKERNEL = ../x86_64/sbdot.c endif @@ -551,6 +583,8 @@ XBLASOBJS += \ xscal_k$(TSUFFIX).$(SUFFIX) xswap_k$(TSUFFIX).$(SUFFIX) xsum_k$(TSUFFIX).$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += \ + bscal_k$(TSUFFIX).$(SUFFIX) SBBLASOBJS += \ sbdot_k$(TSUFFIX).$(SUFFIX) SBEXTOBJS += \ @@ -778,6 +812,8 @@ $(KDIR)qdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)qdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNEL $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@ ifeq ($(BUILD_BFLOAT16),1) +$(KDIR)bscal_k$(TSUFFIX).$(SUFFIX) $(KDIR)bscal_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(BSCALKERNEL) + $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@ $(KDIR)sbdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sbdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBDOTKERNEL) $(CC) -c $(CFLAGS) -UCOMPLEX $< -o $@ $(KDIR)sbstobf16_k$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(TOBF16KERNEL) diff --git a/kernel/Makefile.L2 b/kernel/Makefile.L2 index 0332ba722e..a9fcf92250 100644 --- a/kernel/Makefile.L2 +++ b/kernel/Makefile.L2 @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025 The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + FMAFLAG= ifndef OLDGCC ifdef HAVE_FMA3 @@ -56,6 +84,14 @@ XGEMVTKERNEL = zgemv_t.S endif ifeq ($(BUILD_BFLOAT16),1) +ifndef BGEMVNKERNEL +BGEMVNKERNEL = ../generic/gemv_n.c +endif + +ifndef BGEMVTKERNEL +BGEMVTKERNEL = ../generic/gemv_t.c +endif + ifndef SBGEMVNKERNEL SBGEMVNKERNEL = ../x86_64/sbgemv_n.c endif @@ -255,6 +291,9 @@ XBLASOBJS += \ xgeru_k$(TSUFFIX).$(SUFFIX) xgerc_k$(TSUFFIX).$(SUFFIX) xgerv_k$(TSUFFIX).$(SUFFIX) xgerd_k$(TSUFFIX).$(SUFFIX) ifeq ($(BUILD_BFLOAT16),1) +BBLASOBJS += \ + bgemv_n$(TSUFFIX).$(SUFFIX) \ + bgemv_t$(TSUFFIX).$(SUFFIX) SBBLASOBJS += \ sbgemv_n$(TSUFFIX).$(SUFFIX) \ sbgemv_t$(TSUFFIX).$(SUFFIX) @@ -513,5 +552,9 @@ $(KDIR)sbgemv_n$(TSUFFIX).$(SUFFIX) $(KDIR)sbgemv_n$(TPSUFFIX).$(PSUFFIX) : $(KE $(CC) -c $(CFLAGS) -UCOMPLEX $< -o $@ $(KDIR)sbgemv_t$(TSUFFIX).$(SUFFIX) $(KDIR)sbgemv_t$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SBGEMVTKERNEL) $(CC) -c $(CFLAGS) -UCOMPLEX $< -o $@ +$(KDIR)bgemv_n$(TSUFFIX).$(SUFFIX) $(KDIR)bgemv_n$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(BGEMVNKERNEL) + $(CC) -c $(CFLAGS) -DBGEMM -UCOMPLEX $< -o $@ +$(KDIR)bgemv_t$(TSUFFIX).$(SUFFIX) $(KDIR)bgemv_t$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(BGEMVTKERNEL) + $(CC) -c $(CFLAGS) -DBGEMM -UCOMPLEX $< -o $@ endif diff --git a/kernel/generic/bf16_macros.h b/kernel/generic/bf16_macros.h new file mode 100644 index 0000000000..f1b02cea4a --- /dev/null +++ b/kernel/generic/bf16_macros.h @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#if defined(BFLOAT16) && defined(BFLOAT16CONVERSION) +static float +bfloat16tof32 (bfloat16 value) +{ + blasint one = 1; + float result; + sbf16tos_(&one, &value, &one, &result, &one); + return result; +} + +#ifdef BGEMM +static bfloat16 f32tobfloat16(float value) { + blasint one = 1; + bfloat16 result; + sbstobf16_(&one, &value, &one, &result, &one); + return result; +} +#endif + +#ifdef BGEMM +#define ALPHA bfloat16tof32(alpha) +#define BETA bfloat16tof32(beta) +#define BF16TOF32(x) (bfloat16tof32(x)) +#define F32TOBF16(x) (f32tobfloat16(x)) +#else +#define ALPHA alpha +#define BETA beta +#define BF16TOF32(x) (bfloat16tof32(x)) +#define F32TOBF16(x) x +#endif +#else +#define ALPHA alpha +#define BETA beta +#define BF16TOF32(x) x +#define F32TOBF16(x) x +#endif diff --git a/kernel/generic/gemmkernel_2x2.c b/kernel/generic/gemmkernel_2x2.c index 8872f2f56f..c24370c890 100644 --- a/kernel/generic/gemmkernel_2x2.c +++ b/kernel/generic/gemmkernel_2x2.c @@ -27,39 +27,8 @@ * *****************************************************************************/ #include "common.h" -#if defined(BFLOAT16) && defined(BFLOAT16CONVERSION) -static float -bfloat16tof32 (bfloat16 value) -{ - blasint one = 1; - float result; - sbf16tos_(&one, &value, &one, &result, &one); - return result; -} - -#ifdef BGEMM -static bfloat16 f32tobfloat16(float value) { - blasint one = 1; - bfloat16 result; - sbstobf16_(&one, &value, &one, &result, &one); - return result; -} -#endif +#include "bf16_macros.h" -#ifdef BGEMM -#define ALPHA bfloat16tof32(alpha) -#define BF16TOF32(x) (bfloat16tof32(x)) -#define F32TOBF16(x) (f32tobfloat16(x)) -#else -#define ALPHA alpha -#define BF16TOF32(x) (bfloat16tof32(x)) -#define F32TOBF16(x) x -#endif -#else -#define ALPHA alpha -#define BF16TOF32(x) x -#define F32TOBF16(x) x -#endif int CNAME(BLASLONG bm,BLASLONG bn,BLASLONG bk,FLOAT alpha,IFLOAT* ba,IFLOAT* bb,FLOAT* C,BLASLONG ldc #ifdef TRMMKERNEL ,BLASLONG offset diff --git a/kernel/generic/gemv_n.c b/kernel/generic/gemv_n.c new file mode 100644 index 0000000000..1c72b07af5 --- /dev/null +++ b/kernel/generic/gemv_n.c @@ -0,0 +1,70 @@ +/*************************************************************************** +Copyright (c) 2013-2014, 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" +#include "bf16_macros.h" + +int CNAME(BLASLONG m, BLASLONG n, FLOAT alpha, IFLOAT *a, BLASLONG lda, IFLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *y, BLASLONG inc_y) +{ + BLASLONG i; + BLASLONG ix, iy; + BLASLONG j; + FLOAT *a_ptr; +#ifdef BGEMM + float temp; +#else + FLOAT temp; +#endif + + iy = 0; + for (BLASLONG i = 0; i < m; i++) + { + temp = 0.0; + + ix = 0; + a_ptr = a; + for (BLASLONG j = 0; j < n; j++) + { + temp += BF16TOF32(a_ptr[i]) * BF16TOF32(x[ix]); + ix += inc_x; + a_ptr += lda; + } + + if (BETA == ZERO) + { + y[iy] = F32TOBF16(ALPHA * temp); + } + else + { + y[iy] = F32TOBF16(ALPHA * temp + BETA * BF16TOF32(y[iy])); + } + + iy += inc_y; + } + + return (0); +} diff --git a/kernel/generic/gemv_t.c b/kernel/generic/gemv_t.c new file mode 100644 index 0000000000..3b651b5c1b --- /dev/null +++ b/kernel/generic/gemv_t.c @@ -0,0 +1,60 @@ +/*************************************************************************** +Copyright (c) 2013, 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" +#include "bf16_macros.h" + +int CNAME(BLASLONG m, BLASLONG n, FLOAT alpha, IFLOAT *a, BLASLONG lda, IFLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *y, BLASLONG inc_y) +{ + BLASLONG i; + BLASLONG ix, iy; + BLASLONG j; + FLOAT *a_ptr; +#ifdef BGEMM + float temp; +#else + FLOAT temp; +#endif + + iy = 0; + a_ptr = a; + + for (j = 0; j < n; j++) + { + temp = 0.0; + ix = 0; + for (i = 0; i < m; i++) + { + temp += BF16TOF32(a_ptr[i]) * BF16TOF32(x[ix]); + ix += inc_x; + } + y[iy] += F32TOBF16(ALPHA * temp); + iy += inc_y; + a_ptr += lda; + } + return (0); +} diff --git a/kernel/generic/scal.c b/kernel/generic/scal.c new file mode 100644 index 0000000000..fef0c7bf9e --- /dev/null +++ b/kernel/generic/scal.c @@ -0,0 +1,106 @@ +/*************************************************************************** +Copyright (c) 2013, 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) +{ + BLASLONG i = 0, j = 0; +#if defined(BFLOAT16) + float x_float, da_float; + SBF16TOS_K(1, &da, 1, &da_float, 1); +#else + float x_float; + float da_float = da; +#endif + + if ((n <= 0) || (inc_x <= 0)) + return (0); + + if (dummy2 == 0) + { + while (j < n) + { + + if (da_float == 0.0) + x_float = 0.0; + else + { +#if defined(BFLOAT16) + SBF16TOS_K(1, &x[i], 1, &x_float, 1); +#else + float x_float = x[i]; +#endif + x_float = da_float * x_float; + } + +#if defined(BFLOAT16) + SBSTOBF16_K(1, &x_float, 1, &x[i], 1); +#else + x[i] = x_float; +#endif + + i += inc_x; + j++; + } + } + else + { + + while (j < n) + { +#if defined(BFLOAT16) + SBF16TOS_K(1, &x[i], 1, &x_float, 1); +#else + float x_float = x[i]; +#endif + if (da == 0.0) + if (!isnan(x_float) && !isinf(x_float)) + { + x_float = 0.0; + } + else + { + x_float = NAN; + } + else + { + x_float = da_float * x_float; + } + +#if defined(BFLOAT16) + SBSTOBF16_K(1, &x_float, 1, &x[i], 1); +#else + x[i] = x_float; +#endif + + i += inc_x; + j++; + } + } + return 0; +} diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index 886895accc..c09472e768 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -83,8 +83,8 @@ gotoblas_t TABLE_NAME = { isamax_kTS, isamin_kTS, ismax_kTS, ismin_kTS, snrm2_kTS, sasum_kTS, ssum_kTS, scopy_kTS, sbdot_kTS, dsdot_kTS, - srot_kTS, srotm_kTS, saxpy_kTS, sscal_kTS, sswap_kTS, - sbgemv_nTS, sbgemv_tTS, sger_kTS, + srot_kTS, srotm_kTS, bscal_kTS, saxpy_kTS, sscal_kTS, sswap_kTS, + bgemv_nTS, bgemv_tTS, sbgemv_nTS, sbgemv_tTS, sger_kTS, ssymv_LTS, ssymv_UTS, bgemm_kernelTS, bgemm_betaTS, diff --git a/test/Makefile b/test/Makefile index 144738eb26..d8e12058ab 100644 --- a/test/Makefile +++ b/test/Makefile @@ -120,6 +120,7 @@ endif endif ifeq ($(BUILD_BFLOAT16), 1) +BB2 = test_bgemv B2 = test_sbgemv endif ifeq ($(BUILD_SINGLE),1) @@ -135,12 +136,14 @@ ifeq ($(BUILD_COMPLEX16),1) Z2=zblat2 endif -level2: $(B2) $(S2) $(D2) $(C2) $(Z2) +level2: $(BB2) $(B2) $(S2) $(D2) $(C2) $(Z2) ifneq ($(CROSS), 1) rm -f ?BLAT2.SUMM ifeq ($(BUILD_BFLOAT16),1) + OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_bgemv > BBLAT2.SUMM + @$(GREP) -q FATAL BBLAT2.SUMM && cat BBLAT2.SUMM || exit 0 OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./test_sbgemv > SBBLAT2.SUMM @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 endif @@ -164,6 +167,8 @@ ifdef SMP rm -f ?BLAT2.SUMM ifeq ($(USE_OPENMP), 1) ifeq ($(BUILD_BFLOAT16),1) + OMP_NUM_THREADS=2 ./test_bgemv > BBLAT2.SUMM + @$(GREP) -q FATAL BBLAT2.SUMM && cat BBLAT2.SUMM || exit 0 OMP_NUM_THREADS=2 ./test_sbgemv > SBBLAT2.SUMM @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 endif @@ -185,6 +190,8 @@ ifeq ($(BUILD_COMPLEX16),1) endif else ifeq ($(BUILD_BFLOAT16),1) + OMP_NUM_THREADS=2 ./test_bgemv > BBLAT2.SUMM + @$(GREP) -q FATAL BBLAT2.SUMM && cat BBLAT2.SUMM || exit 0 OMP_NUM_THREADS=2 ./test_sbgemv > SBBLAT2.SUMM @$(GREP) -q FATAL SBBLAT2.SUMM && cat SBBLAT2.SUMM || exit 0 endif @@ -419,13 +426,16 @@ endif ifeq ($(BUILD_BFLOAT16),1) test_bgemm : compare_sgemm_bgemm.c test_helpers.h ../$(LIBNAME) - $(CC) $(CLDFLAGS) -o test_bgemm compare_sgemm_bgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + $(CC) $(CLDFLAGS) -DIBFLOAT16 -DOBFLOAT16 -o test_bgemm compare_sgemm_bgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + +test_bgemv : compare_sgemv_bgemv.c ../$(LIBNAME) + $(CC) $(CLDFLAGS) -DIBFLOAT16 -DOBFLOAT16 -o test_bgemv compare_sgemv_bgemv.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) test_sbgemm : compare_sgemm_sbgemm.c test_helpers.h ../$(LIBNAME) - $(CC) $(CLDFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + $(CC) $(CLDFLAGS) -DIBFLOAT16 -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) test_sbgemv : compare_sgemv_sbgemv.c ../$(LIBNAME) - $(CC) $(CLDFLAGS) -o test_sbgemv compare_sgemv_sbgemv.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) + $(CC) $(CLDFLAGS) -DIBFLOAT16 -o test_sbgemv compare_sgemv_sbgemv.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) endif ifeq ($(BUILD_COMPLEX),1) @@ -444,7 +454,7 @@ clean: @rm -f *.$(SUFFIX) *.$(PSUFFIX) gmon.$(SUFFIX)ut *.SUMM *.cxml *.exe *.pdb *.dwf \ sblat1 dblat1 cblat1 zblat1 \ sblat2 dblat2 cblat2 zblat2 \ - test_bgemm test_sbgemm test_sbgemv sblat3 dblat3 cblat3 zblat3 \ + test_bgemm test_bgemv test_sbgemm test_sbgemv sblat3 dblat3 cblat3 zblat3 \ sblat1p dblat1p cblat1p zblat1p \ sblat2p dblat2p cblat2p zblat2p \ sblat3p dblat3p cblat3p zblat3p \ diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index bc8a0b468a..f18fe12018 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -34,15 +34,6 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define BGEMM BLASFUNC(bgemm) #define BGEMM_LARGEST 256 -static float truncate_float32_to_bfloat16(float value) { - blasint one = 1; - bfloat16 tmp; - float result; - sbstobf16_(&one, &value, &one, &tmp, &one); - sbf16tos_(&one, &tmp, &one, &result, &one); - return result; -} - int main (int argc, char *argv[]) { diff --git a/test/compare_sgemv_bgemv.c b/test/compare_sgemv_bgemv.c new file mode 100644 index 0000000000..aac98760fb --- /dev/null +++ b/test/compare_sgemv_bgemv.c @@ -0,0 +1,149 @@ +/*************************************************************************** +Copyright (c) 2020,2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ +#include +#include +#include "../common.h" + +#include "test_helpers.h" + +#define SGEMV BLASFUNC(sgemv) +#define BGEMV BLASFUNC(bgemv) +#define BGEMV_LARGEST 256 + +int main(int argc, char *argv[]) +{ + blasint k; + int i, j, l; + blasint x, y; + blasint one = 1; + int ret = 0; + int loop = BGEMV_LARGEST; + char transA = 'N'; + float alpha = 1.0, beta = 0.0; + bfloat16 alpha_bf16, beta_bf16; + + for (beta = 0; beta < 3; beta += 1) + { + for (alpha = 0; alpha < 3; alpha += 1) + { + for (l = 0; l < 2; l++) + { // l = 1 to test inc_x & inc_y not equal to one. + for (x = 1; x <= loop; x++) + { + k = (x == 0) ? 0 : l + 1; + float *A = (float *)malloc_safe(x * x * sizeof(FLOAT)); + float *B = (float *)malloc_safe(x * sizeof(FLOAT) << l); + float *C = (float *)malloc_safe(x * sizeof(FLOAT) << l); + bfloat16 *AA = (bfloat16 *)malloc_safe(x * x * sizeof(bfloat16)); + bfloat16 *BB = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); + bfloat16 *CC = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); + float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); + if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || + (CC == NULL) || (DD == NULL)) + return 1; + + for (j = 0; j < x; j++) + { + for (i = 0; i < x; i++) + { + A[j * x + i] = ((FLOAT)rand() / (FLOAT)RAND_MAX) + 0.5; + sbstobf16_(&one, &A[j * x + i], &one, &AA[j * x + i], &one); + } + B[j << l] = ((FLOAT)rand() / (FLOAT)RAND_MAX) + 0.5; + sbstobf16_(&one, &B[j << l], &one, &BB[j << l], &one); + + C[j << l] = ((FLOAT)rand() / (FLOAT)RAND_MAX) + 0.5; + sbstobf16_(&one, &B[j << l], &one, &CC[j << l], &one); + } + + for (y = 0; y < 2; y++) + { + if (y == 0) + { + transA = 'N'; + } + else + { + transA = 'T'; + } + + memset(C, 0, x * sizeof(FLOAT) << l); + memset(CC, 0, x * sizeof(bfloat16) << l); + memset(DD, 0, x * sizeof(FLOAT)); + + sbstobf16_(&one, &alpha, &one, &alpha_bf16, &one); + sbstobf16_(&one, &beta, &one, &beta_bf16, &one); + SGEMV(&transA, &x, &x, &alpha, A, &x, B, &k, &beta, C, &k); + BGEMV(&transA, &x, &x, &alpha_bf16, AA, &x, BB, &k, &beta_bf16, CC, &k); + + for (int i = 0; i < x; i++) + DD[i] *= beta; + + for (j = 0; j < x; j++) + for (i = 0; i < x; i++) + if (transA == 'N') + { + DD[i] += alpha * float16to32(AA[j * x + i]) * float16to32(BB[j << l]); + } + else if (transA == 'T') + { + DD[j] += alpha * float16to32(AA[j * x + i]) * float16to32(BB[i << l]); + } + + for (j = 0; j < x; j++) + { + if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l]), 0.01, 0.001)) + { + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", + transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l])); + ret++; + } + if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j]), 0.001, 0.0001)) + { + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", + transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j])); + ret++; + } + } + } + + free(A); + free(B); + free(C); + free(AA); + free(BB); + free(CC); + free(DD); + } // x + } // l + } // alpha + } // beta + + if (ret != 0) + fprintf(stderr, "FATAL ERROR BGEMV - Return code: %d\n", ret); + return ret; +} diff --git a/test/compare_sgemv_sbgemv.c b/test/compare_sgemv_sbgemv.c index 5fa2d5f667..15cdce6cb5 100644 --- a/test/compare_sgemv_sbgemv.c +++ b/test/compare_sgemv_sbgemv.c @@ -56,8 +56,8 @@ main (int argc, char *argv[]) float *C = (float *)malloc_safe(x * sizeof(FLOAT) << l); bfloat16 *AA = (bfloat16 *)malloc_safe(x * x * sizeof(bfloat16)); bfloat16 *BB = (bfloat16 *)malloc_safe(x * sizeof(bfloat16) << l); - float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); float *CC = (float *)malloc_safe(x * sizeof(FLOAT) << l); + float *DD = (float *)malloc_safe(x * sizeof(FLOAT)); if ((A == NULL) || (B == NULL) || (C == NULL) || (AA == NULL) || (BB == NULL) || (DD == NULL) || (CC == NULL)) return 1; diff --git a/test/test_helpers.h b/test/test_helpers.h index 2bb3f7acd6..fcec86e102 100644 --- a/test/test_helpers.h +++ b/test/test_helpers.h @@ -31,7 +31,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../common.h" -#if IFLOAT == bfloat16 +#ifdef IBFLOAT16 static float float16to32(bfloat16 value) { blasint one = 1; @@ -41,6 +41,17 @@ static float float16to32(bfloat16 value) } #endif +#ifdef OBFLOAT16 +static float truncate_float32_to_bfloat16(float value) { + blasint one = 1; + bfloat16 tmp; + float result; + sbstobf16_(&one, &value, &one, &tmp, &one); + sbf16tos_(&one, &tmp, &one, &result, &one); + return result; +} +#endif + static void *malloc_safe(size_t size) { if (size == 0) return malloc(1); From 72d2ebb4ddb7c44141025fb3c3223415554a5666 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Tue, 15 Jul 2025 15:00:20 +0100 Subject: [PATCH 063/360] Re-add GEMV fallback for Level3 --- cmake/kernel.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/kernel.cmake b/cmake/kernel.cmake index ab548cfb0b..b9c47206e4 100644 --- a/cmake/kernel.cmake +++ b/cmake/kernel.cmake @@ -169,6 +169,10 @@ if (BUILD_BFLOAT16) SetFallback(SHSWAPKERNEL ../arm/swap.c) SetFallback(TOBF16KERNEL ../x86_64/tobf16.c) SetFallback(BF16TOKERNEL ../x86_64/bf16to.c) + SetFallback(BGEMVNKERNEL ../generic/gemv_n.c) + SetFallback(BGEMVTKERNEL ../generic/gemv_t.c) + SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c) + SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c) endif () endmacro () From 947d7af4c9c4ea7e6edeb42ceeb865eab05d5c37 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Tue, 15 Jul 2025 14:41:19 +0000 Subject: [PATCH 064/360] Fix CMake references to bscal and bgemv --- cmake/kernel.cmake | 1 + interface/CMakeLists.txt | 3 ++- kernel/CMakeLists.txt | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/kernel.cmake b/cmake/kernel.cmake index b9c47206e4..6d752ac513 100644 --- a/cmake/kernel.cmake +++ b/cmake/kernel.cmake @@ -110,6 +110,7 @@ macro(SetDefaultL1) SetFallback(SROTMKERNEL rotm.S) SetFallback(DROTMKERNEL rotm.S) SetFallback(QROTMKERNEL rotm.S) + SetFallback(BSCALKERNEL ../generic/scal.c) SetFallback(SSCALKERNEL scal.S) SetFallback(DSCALKERNEL scal.S) SetFallback(CSCALKERNEL zscal.S) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 0fcc79bfca..afb45a4204 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -150,12 +150,13 @@ endif () GenerateNamedObjects("imax.c" "USE_MIN" "i*min" ${CBLAS_FLAG}) if (BUILD_BFLOAT16) + GenerateNamedObjects("scal.c" "BGEMM" "bscal" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("bf16dot.c" "" "sbdot" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("gemm.c" "BGEMM" "bgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("gemm.c" "" "sbgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "" "sbgemmt" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemmt.c" "RNAME" "sbgemmtr" ${CBLAS_FLAG} "" "" true "BFLOAT16") - GenerateNamedObjects("bgemv.c" "BGEMV" "bgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16") + GenerateNamedObjects("sbgemv.c" "BGEMM" "bgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("sbgemv.c" "" "sbgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("tobf16.c" "SINGLE_PREC" "sbstobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16") GenerateNamedObjects("tobf16.c" "DOUBLE_PREC" "sbdtobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16") diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 0ec08827d7..8330f5054d 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -121,6 +121,7 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) # sbdot if (BUILD_BFLOAT16) + GenerateNamedObjects("${KERNELDIR}/${BSCALKERNEL}" "BGEMM" "scal_k" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBDOTKERNEL}" "SBDOT" "dot_k" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "SINGLE" "f16tos_k" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "DOUBLE" "bf16tod_k" false "" "" false "DOUBLE") @@ -222,6 +223,8 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") endif () if (BUILD_BFLOAT16) + GenerateNamedObjects("${KERNELDIR}/${BGEMVNKERNEL}" "BGEMM" "gemv_n" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BGEMVTKERNEL}" "BGEMM" "gemv_t" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBGEMVNKERNEL}" "" "gemv_n" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBGEMVTKERNEL}" "" "gemv_t" false "" "" false "BFLOAT16") endif () From 7d7757acd182e82992e0258f86c13d67fda614a3 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 15 Jul 2025 18:25:55 +0200 Subject: [PATCH 065/360] Update cross-compilation instructions for the Android NDK --- docs/install.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/install.md b/docs/install.md index 656c6a1219..73ce6df45c 100644 --- a/docs/install.md +++ b/docs/install.md @@ -623,14 +623,22 @@ Note: using `TARGET=CORTEXA57` in place of `ARMV8` will pick up better optimized routines. Implementations for the `CORTEXA57` target are compatible with all other `ARMV8` targets. -Note: for NDK 23b, something as simple as: +Note: for NDK 23b and later, something as simple as: ```bash export PATH=/opt/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/:$PATH -make HOSTCC=gcc CC=/opt/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang ONLY_CBLAS=1 TARGET=ARMV8 +make HOSTCC=gcc CC=/opt/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang ONLY_CBLAS=1 TARGET=ARMV8 RANLIB=echo ``` appears to be sufficient on Linux. On OSX, setting AR to the ar provided in the "bin" path of the NDK (probably `llvm-ar`) is also necessary. +If you prefer building with CMake, running +```bash +cmake -DANDROID_ABI=arm64-v8a -DTARGET=ARMV8 -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk-r27/build/cmake/android.toolchain.cmake -DNOFORTRAN=1 -DANDROID_PLATFORM=android-23 .. +cmake --build . +``` +in your build directory should work (be sure to adjust the toolchain_file argument according to where you installed the NDK, and the ANDROID_PLATFORM +according to the minimum version of Android you want to support. (If you leave out the ANDROID_PLATFORM parameter, the build will fail with an error +message about a missing declaration or missing header file complex.h) ??? note "Alternative build script for 3 architectures" From eae0abfdb6153a4f8619927e46c797859e55d48c Mon Sep 17 00:00:00 2001 From: Rajendra Prasad Matcha Date: Fri, 11 Jul 2025 14:51:16 +0530 Subject: [PATCH 066/360] SME1 based direct kernel with alpha and beta for cblas_sgemm level 3 API. --- common_level3.h | 7 + common_param.h | 1 + common_s.h | 2 + interface/gemm.c | 3 + kernel/CMakeLists.txt | 2 + kernel/Makefile.L3 | 6 +- .../sgemm_direct_alpha_beta_arm64_sme1.c | 199 ++++++++++++++++++ kernel/arm64/sme_abi.h | 46 ++++ kernel/setparam-ref.c | 1 + 9 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c create mode 100644 kernel/arm64/sme_abi.h diff --git a/common_level3.h b/common_level3.h index 1838b4bf6a..6ca62dc88e 100644 --- a/common_level3.h +++ b/common_level3.h @@ -52,6 +52,13 @@ void sgemm_direct(BLASLONG M, BLASLONG N, BLASLONG K, float * B, BLASLONG strideB, float * R, BLASLONG strideR); +void sgemm_direct_alpha_beta(BLASLONG M, BLASLONG N, BLASLONG K, + float alpha, + float * A, BLASLONG strideA, + float * B, BLASLONG strideB, + float beta, + float * R, BLASLONG strideR); + int sgemm_direct_performant(BLASLONG M, BLASLONG N, BLASLONG K); int shgemm_beta(BLASLONG, BLASLONG, BLASLONG, float, diff --git a/common_param.h b/common_param.h index f82b73a72b..8923fa4300 100644 --- a/common_param.h +++ b/common_param.h @@ -240,6 +240,7 @@ int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); #endif #ifdef ARCH_ARM64 void (*sgemm_direct) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG , float *, BLASLONG , float * , BLASLONG); + void (*sgemm_direct_alpha_beta) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float * , BLASLONG); #endif diff --git a/common_s.h b/common_s.h index 1dede1e365..88b4732f51 100644 --- a/common_s.h +++ b/common_s.h @@ -49,6 +49,7 @@ #define SGEMM_DIRECT_PERFORMANT sgemm_direct_performant #define SGEMM_DIRECT sgemm_direct +#define SGEMM_DIRECT_ALPHA_BETA sgemm_direct_alpha_beta #define SGEMM_ONCOPY sgemm_oncopy #define SGEMM_OTCOPY sgemm_otcopy @@ -218,6 +219,7 @@ #elif ARCH_ARM64 #define SGEMM_DIRECT_PERFORMANT sgemm_direct_performant #define SGEMM_DIRECT gotoblas -> sgemm_direct +#define SGEMM_DIRECT_ALPHA_BETA gotoblas -> sgemm_direct_alpha_beta #endif #define SGEMM_ONCOPY gotoblas -> sgemm_oncopy diff --git a/interface/gemm.c b/interface/gemm.c index d79282e13f..0b29a4dbbe 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -436,6 +436,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS if (beta == 0 && alpha == 1.0 && order == CblasRowMajor && TransA == CblasNoTrans && TransB == CblasNoTrans) { SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); return; + }else if (order == CblasRowMajor && TransA == CblasNoTrans && TransB == CblasNoTrans) { + SGEMM_DIRECT_ALPHA_BETA(m, n, k, alpha, a, lda, b, ldb, beta, c, ldc); + return; } #endif #endif diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 9434f114ea..2ec3bf77cc 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -222,9 +222,11 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) elseif (ARM64) set (SGEMMDIRECTKERNEL sgemm_direct_arm64_sme1.c) + set (SGEMMDIRECTKERNEL_ALPHA_BETA sgemm_direct_alpha_beta_arm64_sme1.c) set (SGEMMDIRECTSMEKERNEL sgemm_direct_sme1.S) set (SGEMMDIRECTPREKERNEL sgemm_direct_sme1_preprocess.S) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL_ALPHA_BETA}" "" "gemm_direct_alpha_beta" false "" "" false SINGLE) if (HAVE_SME) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1" false "" "" false SINGLE) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPREKERNEL}" "" "gemm_direct_sme1_preprocess" false "" "" false SINGLE) diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 6afb49a779..ebdfe7b06c 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -105,6 +105,7 @@ ifeq ($(TARGET_CORE), ARMV9SME) HAVE_SME = 1 endif SGEMMDIRECTKERNEL = sgemm_direct_arm64_sme1.c +SGEMMDIRECTKERNEL_ALPHA_BETA = sgemm_direct_alpha_beta_arm64_sme1.c endif endif endif @@ -164,7 +165,8 @@ SKERNELOBJS += \ endif ifeq ($(ARCH), arm64) SKERNELOBJS += \ - sgemm_direct$(TSUFFIX).$(SUFFIX) + sgemm_direct$(TSUFFIX).$(SUFFIX) \ + sgemm_direct_alpha_beta$(TSUFFIX).$(SUFFIX) ifdef HAVE_SME SKERNELOBJS += \ sgemm_direct_sme1$(TSUFFIX).$(SUFFIX) \ @@ -904,6 +906,8 @@ endif ifeq ($(ARCH), arm64) $(KDIR)sgemm_direct$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTKERNEL) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ +$(KDIR)sgemm_direct_alpha_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTKERNEL_ALPHA_BETA) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ ifdef HAVE_SME $(KDIR)sgemm_direct_sme1$(TSUFFIX).$(SUFFIX) : $(CC) $(CFLAGS) -c $(KERNELDIR)/sgemm_direct_sme1.S -UDOUBLE -UCOMPLEX -o $@ diff --git a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c new file mode 100644 index 0000000000..d9de3ace3f --- /dev/null +++ b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c @@ -0,0 +1,199 @@ +/* + Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + SPDX-License-Identifier: BSD-3-Clause-Clear +*/ + +#include "common.h" +#include +#include +#include +#include "sme_abi.h" +#if defined(HAVE_SME) + +#if defined(__ARM_FEATURE_SME) && defined(__clang__) && __clang_major__ >= 16 +#include +#endif + +/* Function prototypes */ +extern void sgemm_direct_sme1_preprocess(uint64_t nbr, uint64_t nbc,\ + const float * restrict a, float * a_mod) __asm__("sgemm_direct_sme1_preprocess"); + +/* Function Definitions */ +static uint64_t sve_cntw() { + uint64_t cnt; + asm volatile( + "rdsvl %[res], #1\n" + "lsr %[res], %[res], #2\n" + : [res] "=r" (cnt) :: + ); + return cnt; +} + +#if defined(__ARM_FEATURE_SME) && defined(__ARM_FEATURE_LOCALLY_STREAMING) && defined(__clang__) && __clang_major__ >= 16 +// Outer product kernel. +// Computes a 2SVL x 2SVL block of C, utilizing all four FP32 tiles of ZA. +__attribute__((always_inline)) inline void +kernel_2x2(const float *A, const float *B, float *C, size_t shared_dim, + size_t ldc, size_t block_rows, size_t block_cols, float alpha, float beta) + __arm_out("za") __arm_streaming { + + const uint64_t svl = svcntw(); + size_t ldb = ldc; + // Predicate set-up + svbool_t pg = svptrue_b32(); + svbool_t pg_a_0 = svwhilelt_b32_u64(0, block_rows); + svbool_t pg_a_1 = svwhilelt_b32_u64(svl, block_rows); + + svbool_t pg_b_0 = svwhilelt_b32_u64(0, block_cols); + svbool_t pg_b_1 = svwhilelt_b32_u64(svl, block_cols); + +#define pg_c_0 pg_b_0 +#define pg_c_1 pg_b_1 + + svzero_za(); + svfloat32_t beta_vec = svdup_f32(beta); + // Load C to ZA + for (size_t i = 0; i < MIN(svl, block_rows); i++) { + svfloat32_t row_c_0 = svld1(pg_c_0, &C[i * ldc]); + row_c_0 = svmul_x(pg, beta_vec, row_c_0); + svwrite_hor_za32_f32_m(/*tile*/0, /*slice*/i, pg_c_0, row_c_0); + + svfloat32_t row_c_1 = svld1(pg_c_1, &C[i * ldc + svl]); + row_c_1 = svmul_x(pg, beta_vec, row_c_1); + svwrite_hor_za32_f32_m(/*tile*/1, /*slice*/i, pg_c_1, row_c_1); + } + for (size_t i = svl; i < block_rows; i++) { + svfloat32_t row_c_0 = svld1(pg_c_0, &C[i * ldc]); + row_c_0 = svmul_x(pg, beta_vec, row_c_0); + svwrite_hor_za32_f32_m(/*tile*/2, /*slice*/i, pg_c_0, row_c_0); + + svfloat32_t row_c_1 = svld1(pg_c_1, &C[i * ldc + svl]); + row_c_1 = svmul_x(pg, beta_vec, row_c_1); + svwrite_hor_za32_f32_m(/*tile*/3, /*slice*/i, pg_c_1, row_c_1); + } + + svfloat32_t alpha_vec = svdup_f32(alpha); + // Iterate through shared dimension (K) + for (size_t k = 0; k < shared_dim; k++) { + // Load column of A + svfloat32_t col_a_0 = svld1(pg_a_0, &A[k * svl]); + col_a_0 = svmul_x(pg, alpha_vec, col_a_0); + svfloat32_t col_a_1 = svld1(pg_a_1, &A[(k + shared_dim) * svl]); + col_a_1 = svmul_x(pg, alpha_vec, col_a_1); + // Load row of B + svfloat32_t row_b_0 = svld1(pg_b_0, &B[k * ldb]); + svfloat32_t row_b_1 = svld1(pg_b_1, &B[k * ldb + svl]); + // Perform outer product + svmopa_za32_m(/*tile*/0, pg, pg, col_a_0, row_b_0); + svmopa_za32_m(/*tile*/1, pg, pg, col_a_0, row_b_1); + svmopa_za32_m(/*tile*/2, pg, pg, col_a_1, row_b_0); + svmopa_za32_m(/*tile*/3, pg, pg, col_a_1, row_b_1); + } + + // Store to C from ZA + for (size_t i = 0; i < MIN(svl, block_rows); i++) { + svst1_hor_za32(/*tile*/0, /*slice*/i, pg_c_0, &C[i * ldc]); + svst1_hor_za32(/*tile*/1, /*slice*/i, pg_c_1, &C[i * ldc + svl]); + } + for (size_t i = svl; i < block_rows; i++) { + svst1_hor_za32(/*tile*/2, /*slice*/i, pg_c_0, &C[i * ldc]); + svst1_hor_za32(/*tile*/3, /*slice*/i, pg_c_1, &C[i * ldc + svl]); + } +} + +__arm_new("za") __arm_locally_streaming +void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ + const float *ba, const float *restrict bb, const float* beta,\ + float *restrict C) { + + const uint64_t num_rows = m; + const uint64_t num_cols = n; + + const float *restrict a_ptr = ba; + const float *restrict b_ptr = bb; + float *restrict c_ptr = C; + + const uint64_t svl = svcntw(); + const uint64_t ldc = n; + + // Block over rows of C (panels of A) + uint64_t row_idx = 0; + + // 2x2 loop + uint64_t row_batch = 2*svl; + + // Block over row dimension of C + for (; row_idx < num_rows; row_idx += row_batch) { + row_batch = MIN(row_batch, num_rows - row_idx); + uint64_t col_idx = 0; + uint64_t col_batch = 2*svl; + + // Block over column dimension of C + for (; col_idx < num_cols; col_idx += col_batch) { + col_batch = MIN(col_batch, num_cols - col_idx); + + kernel_2x2(&a_ptr[row_idx * k], &b_ptr[col_idx], + &c_ptr[row_idx * ldc + col_idx], k, + ldc, row_batch, col_batch, *alpha, *beta); + } + } + return; +} + +#else +void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ + const float *ba, const float *restrict bb, const float* beta,\ + float *restrict C){} +#endif + +/*void sgemm_kernel_direct (BLASLONG M, BLASLONG N, BLASLONG K,\ + float * __restrict A, BLASLONG strideA, float * __restrict B,\ + BLASLONG strideB , float * __restrict R, BLASLONG strideR) +*/ +void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict A,\ + BLASLONG strideA, float * __restrict B, BLASLONG strideB ,\ + float beta, float * __restrict R, BLASLONG strideR){ + + uint64_t m_mod, vl_elms; + + vl_elms = sve_cntw(); + + m_mod = ceil((double)M/(double)vl_elms) * vl_elms; + + float *A_mod = (float *) malloc(m_mod*K*sizeof(float)); + + /* Prevent compiler optimization by reading from memory instead + * of reading directly from vector (z) registers. + * */ + asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", + "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", + "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", + "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31"); + + /* Pre-process the left matrix to make it suitable for + matrix sum of outer-product calculation + */ + sgemm_direct_sme1_preprocess(M, K, A, A_mod); + + asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", + "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", + "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", + "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31"); + + /* Calculate C = alpha*A*B + beta*C */ + sgemm_direct_alpha_beta_sme1_2VLx2VL(M, K, N, &alpha, A_mod, B, &beta, R); + + free(A_mod); +} + +#else + +void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict A,\ + BLASLONG strideA, float * __restrict B, BLASLONG strideB ,\ + float beta, float * __restrict R, BLASLONG strideR){} + +#endif diff --git a/kernel/arm64/sme_abi.h b/kernel/arm64/sme_abi.h new file mode 100644 index 0000000000..07bba4895b --- /dev/null +++ b/kernel/arm64/sme_abi.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright (c) 2024, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#pragma once + +#include + +/** + * * These are SME ABI routines for saving & restoring SME state. + * * They are typically provided by a compiler runtime library such + * * as libgcc or compiler-rt, but support for these routines is not + * * yet available on all platforms. + * * + * * Define these as aborting stubs so that we loudly fail on nested + * * usage of SME state. + * * + * * These are defined as weak symbols so that a compiler runtime can + * * override them if supported. + * */ +__attribute__((weak)) void __arm_tpidr2_save() { abort(); } +__attribute__((weak)) void __arm_tpidr2_restore() { abort(); } + diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index 20a1df2611..d807071a40 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -198,6 +198,7 @@ gotoblas_t TABLE_NAME = { #endif #ifdef ARCH_ARM64 sgemm_directTS, + sgemm_direct_alpha_betaTS, #endif sgemm_kernelTS, sgemm_betaTS, From 3df503cafd7d97eb53f8c8a9d6ab020442abca4b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 18 Jul 2025 23:41:57 +0200 Subject: [PATCH 067/360] portability fix and cleanup --- test/compare_sgemv_bgemv.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/compare_sgemv_bgemv.c b/test/compare_sgemv_bgemv.c index aac98760fb..bab15deb11 100644 --- a/test/compare_sgemv_bgemv.c +++ b/test/compare_sgemv_bgemv.c @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) SGEMV(&transA, &x, &x, &alpha, A, &x, B, &k, &beta, C, &k); BGEMV(&transA, &x, &x, &alpha_bf16, AA, &x, BB, &k, &beta_bf16, CC, &k); - for (int i = 0; i < x; i++) + for (i = 0; i < x; i++) DD[i] *= beta; for (j = 0; j < x; j++) @@ -118,14 +118,18 @@ int main(int argc, char *argv[]) { if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l]), 0.01, 0.001)) { - printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", +#ifdef DEBUG + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l])); +#endif ret++; } if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j]), 0.001, 0.0001)) { - printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", +#ifdef DEBUG + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j])); +#endif ret++; } } From 38e6999295e4e9d31c89c31db28dd32503cb9b63 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 18 Jul 2025 23:45:08 +0200 Subject: [PATCH 068/360] format cleanup --- test/compare_sgemm_bgemm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index f18fe12018..5358150d05 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -125,14 +125,18 @@ main (int argc, char *argv[]) float16to32 (AA[k * j + l]) * float16to32 (BB[i + l * n]); } if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j]), 0.01, 0.001)) { - printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", +#ifdef DEBUG + printf("Mismatch at i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j])); +#endif ret++; } if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j]), 0.0001, 0.00001)) { - printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, DD=%.6f\n", +#ifdef DEBUG + printf("Mismatch at i=%d, j=%d, k=%ld: CC=%.6f, DD=%.6f\n", i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j])); +#endif ret++; } From 30dbca5051e1c308eea6715dc2a79b959e5adaed Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 18 Jul 2025 23:51:04 +0200 Subject: [PATCH 069/360] fix misleading indentation to silence a gcc warning --- interface/lapack/trtri.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/lapack/trtri.c b/interface/lapack/trtri.c index df79f26656..82d806b8c2 100644 --- a/interface/lapack/trtri.c +++ b/interface/lapack/trtri.c @@ -127,10 +127,10 @@ int NAME(char *UPLO, char *DIAG, blasint *N, FLOAT *a, blasint *ldA, blasint *In #endif #ifdef SMP -if (args.n <= 150) - args.nthreads = 1; -else - args.nthreads = num_cpu_avail(4); + if (args.n <= 150) + args.nthreads = 1; + else + args.nthreads = num_cpu_avail(4); if (args.nthreads == 1) { #endif From 6ff06f5483952ba55d20a25be1f07829807111ad Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 21 Jul 2025 22:42:15 +0200 Subject: [PATCH 070/360] Add cross-compilation data for RISCV64 targets --- cmake/prebuild.cmake | 76 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index fe592ed73a..8cdfcdc60a 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1407,6 +1407,78 @@ endif () set(ZGEMM_UNROLL_M 8) set(ZGEMM_UNROLL_N 2) set(SYMV_P 8) + elseif ("${TCORE}" STREQUAL "C910V") + file(APPEND ${TARGET_CONF_TEMP} + "#define L1_DATA_SIZE 32768\n" + "#define L1_DATA_LINESIZE 32\n" + "#define L2_SIZE 1048576\n" + "#define L2_LINESIZE 32 \n" + "#define DTB_DEFAULT_ENTRIES 128\n" + "#define DTB_SIZE 4096\n" + "#define L2_ASSOCIATIVE 4\n") + set(SGEMM_UNROLL_M 16) + set(SGEMM_UNROLL_N 4) + set(DGEMM_UNROLL_M 8) + set(DGEMM_UNROLL_N 4) + set(CGEMM_UNROLL_M 2) + set(CGEMM_UNROLL_N 2) + set(ZGEMM_UNROLL_M 2) + set(ZGEMM_UNROLL_N 2) + set(SYMV_P 16) + elseif ("${TCORE}" STREQUAL "x280") + file(APPEND ${TARGET_CONF_TEMP} + "#define L1_DATA_SIZE 64536\n" + "#define L1_LINESIZE 32 \n" + "#define L2_SIZE 262144\n" + "#define L2_LINESIZE 32 \n" + "#define DTB_DEFAULT_ENTRIES 128\n" + "#define DTB_SIZE 4096\n" + "#define L2_ASSOCIATIVE 4\n") + set(SGEMM_UNROLL_M 16) + set(SGEMM_UNROLL_N 8) + set(DGEMM_UNROLL_M 16) + set(DGEMM_UNROLL_N 8) + set(CGEMM_UNROLL_M 8) + set(CGEMM_UNROLL_N 4) + set(ZGEMM_UNROLL_M 8) + set(ZGEMM_UNROLL_N 4) + set(SYMV_P 16) + elseif ("${TCORE}" STREQUAL "RISCV64_ZVL128B") + file(APPEND ${TARGET_CONF_TEMP} + "#define L1_DATA_SIZE 32768\n" + "#define L1_DATA_LINESIZE 128\n" + "#define L2_SIZE 1048576\n" + "#define L2_LINESIZE 32 \n" + "#define DTB_DEFAULT_ENTRIES 128\n" + "#define DTB_SIZE 4096\n" + "#define L2_ASSOCIATIVE 4\n") + set(SGEMM_UNROLL_M 8) + set(SGEMM_UNROLL_N 8) + set(DGEMM_UNROLL_M 8) + set(DGEMM_UNROLL_N 4) + set(CGEMM_UNROLL_M 8) + set(CGEMM_UNROLL_N 4) + set(ZGEMM_UNROLL_M 4) + set(ZGEMM_UNROLL_N 4) + set(SYMV_P 16) + elseif ("${TCORE}" STREQUAL "RISCV64_ZVL256B") + file(APPEND ${TARGET_CONF_TEMP} + "#define L1_DATA_SIZE 32768\n" + "#define L1_DATA_LINESIZE 128\n" + "#define L2_SIZE 524288\n" + "#define L2_LINESIZE 128 \n" + "#define DTB_DEFAULT_ENTRIES 128\n" + "#define DTB_SIZE 4096\n" + "#define L2_ASSOCIATIVE 4\n") + set(SGEMM_UNROLL_M 16) + set(SGEMM_UNROLL_N 8) + set(DGEMM_UNROLL_M 8) + set(DGEMM_UNROLL_N 8) + set(CGEMM_UNROLL_M 8) + set(CGEMM_UNROLL_N 8) + set(ZGEMM_UNROLL_M 8) + set(ZGEMM_UNROLL_N 4) + set(SYMV_P 16) elseif ("${TCORE}" STREQUAL "GENERIC") file(APPEND ${TARGET_CONF_TEMP} "#define L1_DATA_SIZE 32768\n" @@ -1418,9 +1490,9 @@ endif () "#define L2_ASSOCIATIVE 8\n") elseif ("${TCORE}" STREQUAL "RISCV64_GENERIC") file(APPEND ${TARGET_CONF_TEMP} - "#define L1_DATA_SIZE 32768\n" + "#define L1_DATA_SIZE 64536\n" "#define L1_DATA_LINESIZE 32\n" - "#define L2_SIZE 1048576\n" + "#define L2_SIZE 262144\n" "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" "#define DTB_SIZE 4096\n" From b24212f5dfdadf1728fac88ad166ba8bb1c48667 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 21 Jul 2025 22:54:52 +0200 Subject: [PATCH 071/360] fix numbers --- cmake/prebuild.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index 8cdfcdc60a..eea5eb5ede 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1427,7 +1427,7 @@ endif () set(SYMV_P 16) elseif ("${TCORE}" STREQUAL "x280") file(APPEND ${TARGET_CONF_TEMP} - "#define L1_DATA_SIZE 64536\n" + "#define L1_DATA_SIZE 65536\n" "#define L1_LINESIZE 32 \n" "#define L2_SIZE 262144\n" "#define L2_LINESIZE 32 \n" @@ -1446,7 +1446,7 @@ endif () elseif ("${TCORE}" STREQUAL "RISCV64_ZVL128B") file(APPEND ${TARGET_CONF_TEMP} "#define L1_DATA_SIZE 32768\n" - "#define L1_DATA_LINESIZE 128\n" + "#define L1_DATA_LINESIZE 32\n" "#define L2_SIZE 1048576\n" "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" @@ -1463,10 +1463,10 @@ endif () set(SYMV_P 16) elseif ("${TCORE}" STREQUAL "RISCV64_ZVL256B") file(APPEND ${TARGET_CONF_TEMP} - "#define L1_DATA_SIZE 32768\n" - "#define L1_DATA_LINESIZE 128\n" - "#define L2_SIZE 524288\n" - "#define L2_LINESIZE 128 \n" + "#define L1_DATA_SIZE 65536\n" + "#define L1_DATA_LINESIZE 32\n" + "#define L2_SIZE 262144\n" + "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" "#define DTB_SIZE 4096\n" "#define L2_ASSOCIATIVE 4\n") @@ -1490,9 +1490,9 @@ endif () "#define L2_ASSOCIATIVE 8\n") elseif ("${TCORE}" STREQUAL "RISCV64_GENERIC") file(APPEND ${TARGET_CONF_TEMP} - "#define L1_DATA_SIZE 64536\n" + "#define L1_DATA_SIZE 32768\n" "#define L1_DATA_LINESIZE 32\n" - "#define L2_SIZE 262144\n" + "#define L2_SIZE 1048576\n" "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" "#define DTB_SIZE 4096\n" From 821470093036ffc0313fe41b533e7596a37149e6 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 22 Jul 2025 11:01:37 +0200 Subject: [PATCH 072/360] Declare the "small" kernel static in addition to inline --- kernel/riscv64/zaxpy_vector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/zaxpy_vector.c b/kernel/riscv64/zaxpy_vector.c index dd59069311..b94935187a 100644 --- a/kernel/riscv64/zaxpy_vector.c +++ b/kernel/riscv64/zaxpy_vector.c @@ -44,9 +44,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #if !defined(DOUBLE) -inline int small_caxpy_kernel(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) +static inline int small_caxpy_kernel(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) #else -inline int small_zaxpy_kernel(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) +static inline int small_zaxpy_kernel(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) #endif { BLASLONG i=0; From e2d941e9af18935bdb2b37864dfc88a273ea5945 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 22 Jul 2025 11:02:32 +0200 Subject: [PATCH 073/360] Declare the "small" kernel static in addition to inline --- kernel/riscv64/zdot_vector.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/riscv64/zdot_vector.c b/kernel/riscv64/zdot_vector.c index 398de28e53..429eafe855 100644 --- a/kernel/riscv64/zdot_vector.c +++ b/kernel/riscv64/zdot_vector.c @@ -69,9 +69,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #if !defined(DOUBLE) - inline OPENBLAS_COMPLEX_FLOAT small_cdot_kernel(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) + static inline OPENBLAS_COMPLEX_FLOAT small_cdot_kernel(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) #else -inline OPENBLAS_COMPLEX_FLOAT small_zdot_kernel(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) + static inline OPENBLAS_COMPLEX_FLOAT small_zdot_kernel(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) #endif { BLASLONG i=0; @@ -200,4 +200,4 @@ if(n < 8) { CREAL(result) = dot[0]; CIMAG(result) = dot[1]; return(result); -} \ No newline at end of file +} From 7d908564fe30eaaeb0b3690b98571545e7e67829 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 22 Jul 2025 16:01:46 +0200 Subject: [PATCH 074/360] Use OpenBLAS_ROOT_DIR in CMake config file generation only if set --- Makefile.install | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Makefile.install b/Makefile.install index 10e6425cce..c8b4279789 100644 --- a/Makefile.install +++ b/Makefile.install @@ -189,6 +189,8 @@ endif #Generating OpenBLASConfig.cmake +ifneq ($(origin _OpenBLAS_ROOT_DIR),"undefined") + @echo Generating $(OPENBLAS_CMAKE_CONFIG) in $(DESTDIR)$(OPENBLAS_CMAKE_DIR) @echo "SET(OpenBLAS_VERSION \"${VERSION}\")" > "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" @echo "file(REAL_PATH \"../../..\" _OpenBLAS_ROOT_DIR BASE_DIRECTORY \$${CMAKE_CURRENT_LIST_DIR} )" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" @@ -215,6 +217,27 @@ else #only static @echo "SET(OpenBLAS_LIBRARIES \$${_OpenBLAS_ROOT_DIR}/lib/$(LIBPREFIX).$(LIBSUFFIX))" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" endif +else + echo Generating $(OPENBLAS_CMAKE_CONFIG) in $(DESTDIR)$(OPENBLAS_CMAKE_DIR) + @echo "SET(OpenBLAS_VERSION \"${VERSION}\")" > "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" + @echo "SET(OpenBLAS_INCLUDE_DIRS ${OPENBLAS_INCLUDE_DIR})" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" +ifneq ($(NO_SHARED),1) +#ifeq logical or +ifeq ($(OSNAME), $(filter $(OSNAME),Linux FreeBSD NetBSD OpenBSD DragonFly)) + @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_LIBRARY_DIR}/$(LIBPREFIX)$(SYMBOLSUFFIX).so)" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" + endif +ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT)) + @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_BINARY_DIR}/$(LIBDLLNAME))" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" + ifeq ($(OSNAME), Darwin) + @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_LIBRARY_DIR}/$(LIBPREFIX).dylib)" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" +endif +else +#only static + @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_LIBRARY_DIR}/$(LIBPREFIX).$(LIBSUFFIX))" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" +endif +endif +endif + #Generating OpenBLASConfigVersion.cmake @echo Generating $(OPENBLAS_CMAKE_CONFIG_VERSION) in $(DESTDIR)$(OPENBLAS_CMAKE_DIR) @echo "set (PACKAGE_VERSION \"${VERSION}\")" > "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG_VERSION)" From 2c3cdaf74ed3397ad75a15d8c7f64324ecf7ecf0 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 21 Jul 2025 17:09:47 +0000 Subject: [PATCH 075/360] Optimized BGEMV for NEOVERSEV1 target - Adds bgemv T based off of sbgemv T kernel - Adds bgemv N which is slightly alterated to not use Y as an accumulator due to the output being bf16 which results in loss of precision - Enables BGEMM_GEMV_FORWARD to proxy BGEMM to BGEMV with new kernels --- Makefile.system | 4 + benchmark/Makefile | 13 +- benchmark/gemv.c | 33 +++- kernel/arm64/KERNEL.NEOVERSEV1 | 3 + kernel/arm64/bgemv_n_sve_v3x4.c | 321 ++++++++++++++++++++++++++++++++ kernel/arm64/sbgemv_t_bfdot.c | 92 +++++---- test/compare_sgemv_bgemv.c | 2 +- 7 files changed, 426 insertions(+), 42 deletions(-) create mode 100644 kernel/arm64/bgemv_n_sve_v3x4.c diff --git a/Makefile.system b/Makefile.system index 9e20c132ce..b214006b11 100644 --- a/Makefile.system +++ b/Makefile.system @@ -277,6 +277,7 @@ endif ifeq ($(ARCH), arm64) GEMM_GEMV_FORWARD = 1 SBGEMM_GEMV_FORWARD = 1 +BGEMM_GEMV_FORWARD = 1 endif ifeq ($(ARCH), riscv) GEMM_GEMV_FORWARD = 1 @@ -296,6 +297,9 @@ endif ifeq ($(SBGEMM_GEMV_FORWARD), 1) CCOMMON_OPT += -DSBGEMM_GEMV_FORWARD endif +ifeq ($(BGEMM_GEMV_FORWARD), 1) +CCOMMON_OPT += -DBGEMM_GEMV_FORWARD +endif endif # This operation is expensive, so execution should be once. diff --git a/benchmark/Makefile b/benchmark/Makefile index cdf87c0ab6..d82a06af92 100644 --- a/benchmark/Makefile +++ b/benchmark/Makefile @@ -84,7 +84,7 @@ GOTO_LAPACK_TARGETS= endif ifeq ($(BUILD_BFLOAT16),1) -GOTO_BFLOAT_TARGETS=bgemm.goto sbgemm.goto +GOTO_BFLOAT_TARGETS=bgemm.goto sbgemm.goto bgemv.goto sbgemv.goto else GOTO_BFLOAT_TARGETS= endif @@ -667,6 +667,10 @@ bgemm.goto : bgemm.$(SUFFIX) ../$(LIBNAME) $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm sbgemm.goto : sbgemm.$(SUFFIX) ../$(LIBNAME) $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm +bgemv.goto : bgemv.$(SUFFIX) ../$(LIBNAME) + $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm +sbgemv.goto : sbgemv.$(SUFFIX) ../$(LIBNAME) + $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm endif ifeq ($(BUILD_HFLOAT16),1) @@ -3146,6 +3150,13 @@ dgemv.$(SUFFIX) : gemv.c cgemv.$(SUFFIX) : gemv.c $(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^ +ifeq ($(BUILD_BFLOAT16),1) +bgemv.$(SUFFIX) : gemv.c + $(CC) $(CFLAGS) -c -DBFLOAT16 -DBGEMM -UCOMPLEX -UDOUBLE -o $(@F) $^ +sbgemv.$(SUFFIX) : gemv.c + $(CC) $(CFLAGS) -c -DBFLOAT16 -UCOMPLEX -UDOUBLE -o $(@F) $^ +endif () + zgemv.$(SUFFIX) : gemv.c $(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^ diff --git a/benchmark/gemv.c b/benchmark/gemv.c index fc39f3f3d4..884a9bb273 100644 --- a/benchmark/gemv.c +++ b/benchmark/gemv.c @@ -1,5 +1,5 @@ /*************************************************************************** -Copyright (c) 2014, The OpenBLAS Project +Copyright (c) 2014, 2025 The OpenBLAS Project All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -34,6 +34,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef DOUBLE #define GEMV BLASFUNC(dgemv) +#elif defined(BFLOAT16) && defined(BGEMM) +#define GEMV BLASFUNC(bgemv) +#elif defined(BFLOAT16) +#define GEMV BLASFUNC(sbgemv) +#undef IFLOAT +#define IFLOAT bfloat16 #else #define GEMV BLASFUNC(sgemv) #endif @@ -49,9 +55,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif int main(int argc, char *argv[]){ - FLOAT *a, *x, *y; - FLOAT alpha[] = {1.0, 1.0}; - FLOAT beta [] = {1.0, 0.0}; + IFLOAT *a, *x; + FLOAT *y; +#ifdef BGEMM + blasint one=1; + blasint two=2; + float alpha_in[] = {1.0, 0.0}; + float beta_in[] = {0.0, 0.0}; + FLOAT alpha[2], beta[2]; + sbstobf16_(&two, alpha_in, &one, alpha, &one); + sbstobf16_(&two, beta_in, &one, beta, &one); +#else + FLOAT alpha[] = {1.0, 0.0}; + FLOAT beta [] = {0.0, 0.0}; +#endif char trans='N'; blasint m, i, j; blasint inc_x=1,inc_y=1; @@ -97,11 +114,11 @@ int main(int argc, char *argv[]){ fprintf(stderr, "From : %3d To : %3d Step = %3d Trans = '%c' Inc_x = %d Inc_y = %d Loops = %d\n", from, to, step,trans,inc_x,inc_y,loops); - if (( a = (FLOAT *)malloc(sizeof(FLOAT) * tomax * tomax * COMPSIZE)) == NULL){ + if (( a = (IFLOAT *)malloc(sizeof(IFLOAT) * tomax * tomax * COMPSIZE)) == NULL){ fprintf(stderr,"Out of Memory!!\n");exit(1); } - if (( x = (FLOAT *)malloc(sizeof(FLOAT) * tomax * abs(inc_x) * COMPSIZE)) == NULL){ + if (( x = (IFLOAT *)malloc(sizeof(IFLOAT) * tomax * abs(inc_x) * COMPSIZE)) == NULL){ fprintf(stderr,"Out of Memory!!\n");exit(1); } @@ -125,7 +142,7 @@ int main(int argc, char *argv[]){ fprintf(stderr, " %6dx%d : ", (int)m,(int)n); for(j = 0; j < m; j++){ for(i = 0; i < n * COMPSIZE; i++){ - a[(long)i + (long)j * (long)m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + a[(long)i + (long)j * (long)m * COMPSIZE] = ((IFLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; } } @@ -133,7 +150,7 @@ int main(int argc, char *argv[]){ { for(i = 0; i < n * COMPSIZE * abs(inc_x); i++){ - x[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + x[i] = ((IFLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; } for(i = 0; i < m * COMPSIZE * abs(inc_y); i++){ diff --git a/kernel/arm64/KERNEL.NEOVERSEV1 b/kernel/arm64/KERNEL.NEOVERSEV1 index 8bc0f35e5c..6f632f2cc5 100644 --- a/kernel/arm64/KERNEL.NEOVERSEV1 +++ b/kernel/arm64/KERNEL.NEOVERSEV1 @@ -46,6 +46,9 @@ BGEMMOTCOPY = sbgemm_tcopy_$(BGEMM_UNROLL_N)_neoversev1.c BGEMMONCOPYOBJ = bgemm_oncopy$(TSUFFIX).$(SUFFIX) BGEMMOTCOPYOBJ = bgemm_otcopy$(TSUFFIX).$(SUFFIX) +BGEMVTKERNEL = sbgemv_t_bfdot.c +BGEMVNKERNEL = bgemv_n_sve_v3x4.c + SBGEMM_BETA = sbgemm_beta_neoversev1.c SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_neoversev1.c ifneq ($(SBGEMM_UNROLL_M), $(SBGEMM_UNROLL_N)) diff --git a/kernel/arm64/bgemv_n_sve_v3x4.c b/kernel/arm64/bgemv_n_sve_v3x4.c new file mode 100644 index 0000000000..6347746d0c --- /dev/null +++ b/kernel/arm64/bgemv_n_sve_v3x4.c @@ -0,0 +1,321 @@ +/*************************************************************************** +Copyright (c) 2025 The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +#include + +#define UPDATE_PTRSx2 \ + a_ptr1 = a_ptr0 + lda; + +#define UPDATE_PTRSx4 \ + UPDATE_PTRSx2 \ + a_ptr2 = a_ptr1 + lda; \ + a_ptr3 = a_ptr2 + lda; + +#define UPDATE_PTRSx8 \ + UPDATE_PTRSx4 \ + a_ptr4 = a_ptr3 + lda; \ + a_ptr5 = a_ptr4 + lda; \ + a_ptr6 = a_ptr5 + lda; \ + a_ptr7 = a_ptr6 + lda; + +#define LANESx2(MACRO, offset) \ + MACRO(offset, 0) \ + MACRO(offset, 1) + +#define LANESx4(MACRO, offset) \ + LANESx2(MACRO, offset) \ + MACRO(offset, 2) \ + MACRO(offset, 3) + +#define LANESx8(MACRO, offset) \ + LANESx4(MACRO, offset) \ + MACRO(offset, 4) \ + MACRO(offset, 5) \ + MACRO(offset, 6) \ + MACRO(offset, 7) + +#define LOAD_A_VEC(offset, vec) \ + svbfloat16_t a_vec ## offset ## vec = svld1(pg_full, &a_ptr ## vec[i] + offset * sve_size_bf16); + +#define UPDATE_ACCUMULATORS_FROM_LANE(offset, lane) \ + acc ## offset ## 0 = svbfmlalb_lane(acc ## offset ## 0, a_vec ## offset ## lane, x_vec, lane); \ + acc ## offset ## 1 = svbfmlalt_lane(acc ## offset ## 1, a_vec ## offset ## lane, x_vec, lane); + +#define INIT_ACCUMULATORS(offset) \ + svfloat32_t acc ## offset ## 0 = svdup_f32(0.0); \ + svfloat32_t acc ## offset ## 1 = svdup_f32(0.0); + +#define UPDATE_ACCUMULATORS(offset) \ + acc ## offset ## 0 = svbfmlalb(acc ## offset ## 0, a_vec ## offset ## 0, x_vec); \ + acc ## offset ## 1 = svbfmlalt(acc ## offset ## 1, a_vec ## offset ## 0, x_vec); + +#define STORE_ACCUMULATORS(offset) \ + svbfloat16_t acc ## offset ## 0_bf16 = svcvt_bf16_x(pg_full, acc ## offset ## 0); \ + svbfloat16_t acc ## offset ## 1_bf16 = svcvt_bf16_x(pg_full, acc ## offset ## 1); \ + svbfloat16_t combined ## offset = svtrn1(acc ## offset ## 0_bf16, acc ## offset ## 1_bf16); \ + svst1(pg_full, &y[i] + offset * sve_size_bf16, combined ## offset); + +#define ALPHA_OP(offset) \ + acc ## offset ## 0 = svmul_x(pg_full, acc ## offset ## 0, svalpha); \ + acc ## offset ## 1 = svmul_x(pg_full, acc ## offset ## 1, svalpha); + +#define BETA_OP(offset) \ + svbfloat16_t y_vec ## offset = svld1(pg_full, &y[i] + offset * sve_size_bf16); \ + acc ## offset ## 0 = svbfmlalb(acc ## offset ## 0, svbeta16, y_vec ## offset); \ + acc ## offset ## 1 = svbfmlalt(acc ## offset ## 1, svbeta16, y_vec ## offset); + +int CNAME(BLASLONG m, BLASLONG n, FLOAT alpha, IFLOAT *a_in, BLASLONG lda, IFLOAT *x_in, BLASLONG inc_x, FLOAT beta, FLOAT *y_in, BLASLONG inc_y) +{ + BLASLONG ix; + bfloat16_t *a_ptr0, *a_ptr1, *a_ptr2, *a_ptr3, *a_ptr4, *a_ptr5, *a_ptr6, *a_ptr7; + BLASLONG sve_size_bf16 = svcnth(); + BLASLONG sve_size2_bf16 = sve_size_bf16 * 2; + BLASLONG sve_size3_bf16 = sve_size_bf16 * 3; + svbool_t pg_full = svptrue_b16(); + svbool_t pg_tail = svwhilelt_b16_s64(0, m % sve_size_bf16); + + BLASLONG n8 = n & -8; + BLASLONG n4 = n & -4; + BLASLONG n2 = n & -2; + + bfloat16_t *a = (bfloat16_t*)a_in; + bfloat16_t *x = (bfloat16_t*)x_in; + bfloat16_t *y = (bfloat16_t*)y_in; + + bfloat16_t alpha_bf16, beta_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + memcpy(&beta_bf16, &beta, sizeof(bfloat16_t)); + float beta_f32 = vcvtah_f32_bf16(beta_bf16); + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); + svfloat32_t svalpha = svdup_f32(vcvtah_f32_bf16(alpha_bf16)); + svbfloat16_t svbeta16 = svdup_bf16(beta_bf16); + + BLASLONG i = 0; + if (inc_y == 1) { + for (; (i + sve_size3_bf16 - 1) < m; i+= sve_size3_bf16) { + INIT_ACCUMULATORS(0); + INIT_ACCUMULATORS(1); + INIT_ACCUMULATORS(2); + + BLASLONG j = 0; + ix = 0; + a_ptr0 = a; + UPDATE_PTRSx8; + + if (inc_x == 1) { + for (; j < n4; j+= 4) { + uint64_t* x_u64 = (uint64_t*)&x[ix]; + svbfloat16_t x_vec = svreinterpret_bf16_u64(svdup_u64(*x_u64)); + + LANESx4(LOAD_A_VEC, 0); + LANESx4(LOAD_A_VEC, 1); + LANESx4(LOAD_A_VEC, 2); + LANESx4(UPDATE_ACCUMULATORS_FROM_LANE, 0); + LANESx4(UPDATE_ACCUMULATORS_FROM_LANE, 1); + LANESx4(UPDATE_ACCUMULATORS_FROM_LANE, 2); + + ix += 4; + + a_ptr0 += 4 * lda; + UPDATE_PTRSx4; + } + + for (; j < n2; j+= 2) { + uint32_t* x_u32 = (uint32_t*)&x[ix]; + svbfloat16_t x_vec = svreinterpret_bf16_u32(svdup_u32(*x_u32)); + + LANESx2(LOAD_A_VEC, 0); + LANESx2(LOAD_A_VEC, 1); + LANESx2(LOAD_A_VEC, 2); + LANESx2(UPDATE_ACCUMULATORS_FROM_LANE, 0); + LANESx2(UPDATE_ACCUMULATORS_FROM_LANE, 1); + LANESx2(UPDATE_ACCUMULATORS_FROM_LANE, 2); + + ix += 2; + + a_ptr0 += 2 * lda; + UPDATE_PTRSx2; + } + } + + for (; j < n; j++) { + svbfloat16_t x_vec = svdup_bf16(x[ix]); + LOAD_A_VEC(0, 0); + LOAD_A_VEC(1, 0); + LOAD_A_VEC(2, 0); + UPDATE_ACCUMULATORS(0); + UPDATE_ACCUMULATORS(1); + UPDATE_ACCUMULATORS(2); + + ix += inc_x; + a_ptr0 += lda; + } + + if (alpha_f32 != ONE) { + ALPHA_OP(0); + ALPHA_OP(1); + ALPHA_OP(2); + } + if (beta_f32 != ZERO) { + BETA_OP(0); + BETA_OP(1); + BETA_OP(2); + } + + STORE_ACCUMULATORS(0); + STORE_ACCUMULATORS(1); + STORE_ACCUMULATORS(2); + } + + for (; (i + sve_size_bf16 - 1) < m; i+= sve_size_bf16) { + INIT_ACCUMULATORS(0); + + BLASLONG j = 0; + ix = 0; + a_ptr0 = a; + UPDATE_PTRSx8; + + if (inc_x == 1) { + for (; j < n8; j+= 8) { + svbfloat16_t x_vec = svld1rq(pg_full, &x[ix]); + LANESx8(LOAD_A_VEC, 0); + LANESx8(UPDATE_ACCUMULATORS_FROM_LANE, 0); + + ix += 8; + + a_ptr0 += 8 * lda; + UPDATE_PTRSx8; + } + + for (; j < n4; j+= 4) { + uint64_t* x_u64 = (uint64_t*)&x[ix]; + svbfloat16_t x_vec = svreinterpret_bf16_u64(svdup_u64(*x_u64)); + + LANESx4(LOAD_A_VEC, 0); + LANESx4(UPDATE_ACCUMULATORS_FROM_LANE, 0); + + ix += 4; + + a_ptr0 += 4 * lda; + UPDATE_PTRSx4; + } + + for (; j < n2; j+= 2) { + uint32_t* x_u32 = (uint32_t*)&x[ix]; + svbfloat16_t x_vec = svreinterpret_bf16_u32(svdup_u32(*x_u32)); + + LANESx2(LOAD_A_VEC, 0); + LANESx2(UPDATE_ACCUMULATORS_FROM_LANE, 0); + + ix += 2; + + a_ptr0 += 2 * lda; + UPDATE_PTRSx2; + } + } + + for (; j < n; j++) { + svbfloat16_t x_vec = svdup_bf16(x[ix]); + LOAD_A_VEC(0, 0); + UPDATE_ACCUMULATORS(0); + + ix += inc_x; + a_ptr0 += lda; + } + + if (alpha_f32 != ONE) { + ALPHA_OP(0); + } + if (beta_f32 != ZERO) { + BETA_OP(0); + } + + STORE_ACCUMULATORS(0); + } + + if (i < m) { + svfloat32_t acc0 = svdup_f32(0.0); + svfloat32_t acc1 = svdup_f32(0.0); + + ix = 0; + a_ptr0 = a; + for (BLASLONG j = 0; j < n; j++) { + svbfloat16_t x_vec0 = svdup_bf16(x[ix]); + svbfloat16_t a_vec0 = svld1(pg_tail, &a_ptr0[i]); + + acc0 = svbfmlalb(acc0, a_vec0, x_vec0); + acc1 = svbfmlalt(acc1, a_vec0, x_vec0); + + ix += inc_x; + a_ptr0 += lda; + } + + if (alpha_f32 != ONE) { + acc0 = svmul_x(pg_full, acc0, svalpha); + acc1 = svmul_x(pg_full, acc1, svalpha); + } + if (beta_f32 != ZERO) { + svbfloat16_t y_vec = svld1(pg_tail, &y[i]); + acc0 = svbfmlalb(acc0, svbeta16, y_vec); + acc1 = svbfmlalt(acc1, svbeta16, y_vec); + } + + svbfloat16_t acc0_bf16 = svcvt_bf16_x(pg_full, acc0); + svbfloat16_t acc1_bf16 = svcvt_bf16_x(pg_full, acc1); + svbfloat16_t combined = svtrn1(acc0_bf16, acc1_bf16); + svst1(pg_tail, &y[i], combined); + } + + return 0; + } + + // Scalar fallback + BLASLONG iy = 0; + for (; i < m; i++) { + float temp = 0.0; + + ix = 0; + a_ptr0 = a; + for (BLASLONG j = 0; j < n; j++) { + temp += vcvtah_f32_bf16(a_ptr0[i]) * vcvtah_f32_bf16(x[ix]); + ix += inc_x; + a_ptr0 += lda; + } + + if (beta_f32 == ZERO) { + y[iy] = vcvth_bf16_f32(alpha_f32 * temp); + } else { + y[iy] = vcvth_bf16_f32(alpha_f32 * temp + beta_f32 * vcvtah_f32_bf16(y[iy])); + } + + iy += inc_y; + } + + return (0); +} diff --git a/kernel/arm64/sbgemv_t_bfdot.c b/kernel/arm64/sbgemv_t_bfdot.c index 672f70acf2..4de245d3bc 100644 --- a/kernel/arm64/sbgemv_t_bfdot.c +++ b/kernel/arm64/sbgemv_t_bfdot.c @@ -33,16 +33,39 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "common.h" -int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat16 *x, BLASLONG incx, float beta, float *y, BLASLONG incy) +#ifdef BGEMM +#define INNER_FLOAT bfloat16_t +#define TO32(x) vcvtah_f32_bf16(x) +#define FROM32(x) vcvth_bf16_f32(x) +#else +#define INNER_FLOAT float +#define TO32(x) x +#define FROM32(x) x +#endif + +int CNAME(BLASLONG m, BLASLONG n, FLOAT alpha, bfloat16 *a, BLASLONG lda, bfloat16 *x, BLASLONG incx, FLOAT beta, FLOAT *y_in, BLASLONG incy) { if (m < 1 || n < 1) return(0); + BLASLONG i; BLASLONG ix,iy; BLASLONG j; bfloat16_t *a_ptr; bfloat16_t *x_ptr; - float *y_ptr; - float temp; + float temp, temp0, temp1, temp2, temp3; + +#ifdef BGEMM + bfloat16_t alpha_bf16, beta_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + memcpy(&beta_bf16, &beta, sizeof(bfloat16_t)); + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); + float beta_f32 = vcvtah_f32_bf16(beta_bf16); +#else + float alpha_f32 = alpha; + float beta_f32 = beta; +#endif + INNER_FLOAT *y = (INNER_FLOAT *)y_in; + INNER_FLOAT *y_ptr; iy = 0; a_ptr = (bfloat16_t*)(a); @@ -56,10 +79,10 @@ int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat bfloat16_t *a2_ptr = a_ptr + lda * width * 2; bfloat16_t *a3_ptr = a_ptr + lda * width * 3; - float *y0_ptr = y + incy * width * 0; - float *y1_ptr = y + incy * width * 1; - float *y2_ptr = y + incy * width * 2; - float *y3_ptr = y + incy * width * 3; + INNER_FLOAT *y0_ptr = y + incy * width * 0; + INNER_FLOAT *y1_ptr = y + incy * width * 1; + INNER_FLOAT *y2_ptr = y + incy * width * 2; + INNER_FLOAT *y3_ptr = y + incy * width * 3; for (j = 0; j < width; j++) { float32x4_t temp0_vec = vdupq_n_f32(0.0f); @@ -113,26 +136,31 @@ int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat i += 4; } - if (beta == 0.0f) { - y0_ptr[iy] = alpha * vaddvq_f32(temp0_vec); - y1_ptr[iy] = alpha * vaddvq_f32(temp1_vec); - y2_ptr[iy] = alpha * vaddvq_f32(temp2_vec); - y3_ptr[iy] = alpha * vaddvq_f32(temp3_vec); - } - else { - y0_ptr[iy] = alpha * vaddvq_f32(temp0_vec) + beta * y0_ptr[iy]; - y1_ptr[iy] = alpha * vaddvq_f32(temp1_vec) + beta * y1_ptr[iy]; - y2_ptr[iy] = alpha * vaddvq_f32(temp2_vec) + beta * y2_ptr[iy]; - y3_ptr[iy] = alpha * vaddvq_f32(temp3_vec) + beta * y3_ptr[iy]; + + if (beta_f32 == 0.0f) { + temp0 = alpha_f32 * vaddvq_f32(temp0_vec); + temp1 = alpha_f32 * vaddvq_f32(temp1_vec); + temp2 = alpha_f32 * vaddvq_f32(temp2_vec); + temp3 = alpha_f32 * vaddvq_f32(temp3_vec); + } else { + temp0 = alpha_f32 * vaddvq_f32(temp0_vec) + beta_f32 * TO32(y0_ptr[iy]); + temp1 = alpha_f32 * vaddvq_f32(temp1_vec) + beta_f32 * TO32(y1_ptr[iy]); + temp2 = alpha_f32 * vaddvq_f32(temp2_vec) + beta_f32 * TO32(y2_ptr[iy]); + temp3 = alpha_f32 * vaddvq_f32(temp3_vec) + beta_f32 * TO32(y3_ptr[iy]); } for (; i < m; ++i) { - y0_ptr[iy] += alpha * vcvtah_f32_bf16(a0_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); - y1_ptr[iy] += alpha * vcvtah_f32_bf16(a1_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); - y2_ptr[iy] += alpha * vcvtah_f32_bf16(a2_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); - y3_ptr[iy] += alpha * vcvtah_f32_bf16(a3_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); + temp0 = temp0 + alpha_f32 * vcvtah_f32_bf16(a0_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); + temp1 = temp1 + alpha_f32 * vcvtah_f32_bf16(a1_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); + temp2 = temp2 + alpha_f32 * vcvtah_f32_bf16(a2_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); + temp3 = temp3 + alpha_f32 * vcvtah_f32_bf16(a3_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); } + y0_ptr[iy] = FROM32(temp0); + y1_ptr[iy] = FROM32(temp1); + y2_ptr[iy] = FROM32(temp2); + y3_ptr[iy] = FROM32(temp3); + iy += incy; a0_ptr += lda; @@ -164,16 +192,16 @@ int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat i += 4; } - if (beta == 0.0f) { - y_ptr[iy] = alpha * vaddvq_f32(temp0_vec); - } - else { - y_ptr[iy] = alpha * vaddvq_f32(temp0_vec) + beta * y_ptr[iy]; - } + if (beta_f32 == 0.0f) { + temp = alpha_f32 * vaddvq_f32(temp0_vec); + } else { + temp = alpha_f32 * vaddvq_f32(temp0_vec) + beta_f32 * TO32(y_ptr[iy]); + } for (; i < m; ++i) { - y_ptr[iy] += alpha * vcvtah_f32_bf16(a_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); + temp += alpha_f32 * vcvtah_f32_bf16(a_ptr[i]) * vcvtah_f32_bf16(x_ptr[i]); } + y_ptr[iy] = FROM32(temp); iy += incy; @@ -189,11 +217,11 @@ int CNAME(BLASLONG m, BLASLONG n, float alpha, bfloat16 *a, BLASLONG lda, bfloat temp += vcvtah_f32_bf16(a_ptr[i]) * vcvtah_f32_bf16(x_ptr[ix]); ix += incx; } - if (beta == 0.0f) { - y[iy] = alpha * temp; + if (beta_f32 == 0.0f) { + y[iy] = FROM32(alpha_f32 * temp); } else { - y[iy] = alpha * temp + beta * y[iy]; + y[iy] = FROM32(alpha_f32 * temp + beta_f32 * TO32(y[iy])); } iy += incy; a_ptr += lda; diff --git a/test/compare_sgemv_bgemv.c b/test/compare_sgemv_bgemv.c index bab15deb11..17011a4b75 100644 --- a/test/compare_sgemv_bgemv.c +++ b/test/compare_sgemv_bgemv.c @@ -127,7 +127,7 @@ int main(int argc, char *argv[]) if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j]), 0.001, 0.0001)) { #ifdef DEBUG - printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, DD=%.6f\n", transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j])); #endif ret++; From 444d03db9c4426435986ec82bd4a4a77e36ede18 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 23 Jul 2025 14:04:11 +0200 Subject: [PATCH 076/360] switch to another site that still has libffi6 (for now) --- .github/workflows/loongarch64_clang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/loongarch64_clang.yml b/.github/workflows/loongarch64_clang.yml index fdb48309b9..a42a2cd651 100644 --- a/.github/workflows/loongarch64_clang.yml +++ b/.github/workflows/loongarch64_clang.yml @@ -35,7 +35,7 @@ jobs: - name: Install libffi6 run: | - wget http://ftp.ca.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb + wget https://download.nvidia.com/cumulus/apt.cumulusnetworks.com/pool/upstream/libf/libffi/libffi6_3.2.1-9_amd64.deb sudo dpkg -i libffi6_3.2.1-9_amd64.deb - name: Install APT deps From 41f9701ebcddc94d6f274249d516bad66ef8321a Mon Sep 17 00:00:00 2001 From: youcai Date: Wed, 23 Jul 2025 21:51:30 +0800 Subject: [PATCH 077/360] Fix cmake building with cblas_bgemm --- driver/level3/CMakeLists.txt | 1 + interface/CMakeLists.txt | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/driver/level3/CMakeLists.txt b/driver/level3/CMakeLists.txt index b4c6125315..be2ba23c24 100644 --- a/driver/level3/CMakeLists.txt +++ b/driver/level3/CMakeLists.txt @@ -14,6 +14,7 @@ foreach (GEMM_DEFINE ${GEMM_DEFINES}) endif () if (BUILD_BFLOAT16) GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16") + GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};BGEMM" "gemm_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16") if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16") endif () diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index afb45a4204..ef9f81be82 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -283,6 +283,11 @@ if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) GenerateNamedObjects("imax.c" "USE_ABS" "i*amax" 0 "" "" false "DOUBLE") endif () +if ( BUILD_BFLOAT16 AND NO_FBLAS ) + GenerateNamedObjects("tobf16.c" "SINGLE_PREC" "sbstobf16" 0 "" "" true "BFLOAT16") + GenerateNamedObjects("bf16to.c" "SINGLE_PREC" "sbf16tos" 0 "" "" true "BFLOAT16") +endif() + add_library(interface OBJECT ${OPENBLAS_SRC}) if (USE_OPENMP) From 82954ba4ca43d4c18433445e49af076cf10735d2 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 23 Jul 2025 23:24:42 +0200 Subject: [PATCH 078/360] Update ?GEMM-to-?GEMV forwarding settings --- cmake/system.cmake | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cmake/system.cmake b/cmake/system.cmake index 81f1a67ad3..fa1a4334c2 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -420,6 +420,15 @@ if (X86_64 OR ${CORE} STREQUAL POWER10 OR ARM64 OR LOONGARCH64) endif () if (ARM64) set(GEMM_GEMV_FORWARD TRUE) + set(SBGEMM_GEMV_FORWARD TRUE) + set(BGEMM_GEMV_FORWARD TRUE) +endif () +if (POWER) + set(GEMM_GEMV_FORWARD TRUE) + set(SBGEMM_GEMV_FORWARD TRUE) +endif () +if (RISCV64) + set(GEMM_GEMV_FORWARD TRUE) endif () if (GEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) @@ -428,6 +437,9 @@ endif () if (SBGEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) set(CCOMMON_OPT "${CCOMMON_OPT} -DSBGEMM_GEMV_FORWARD") endif () +if (BGEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) + set(CCOMMON_OPT "${CCOMMON_OPT} -DBGEMM_GEMV_FORWARD") +endif () if (SMALL_MATRIX_OPT) set(CCOMMON_OPT "${CCOMMON_OPT} -DSMALL_MATRIX_OPT") endif () From a5b55f6fe349ebe032a866ebf8daeb1f1acdc1d8 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 24 Jul 2025 09:30:58 +0200 Subject: [PATCH 079/360] remove CBLAS restriction on GEMM_GEMV forwarding --- cmake/system.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/system.cmake b/cmake/system.cmake index fa1a4334c2..544bd192e3 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -431,13 +431,13 @@ if (RISCV64) set(GEMM_GEMV_FORWARD TRUE) endif () -if (GEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) +if (GEMM_GEMV_FORWARD) set(CCOMMON_OPT "${CCOMMON_OPT} -DGEMM_GEMV_FORWARD") endif () -if (SBGEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) +if (SBGEMM_GEMV_FORWARD) set(CCOMMON_OPT "${CCOMMON_OPT} -DSBGEMM_GEMV_FORWARD") endif () -if (BGEMM_GEMV_FORWARD AND NOT ONLY_CBLAS) +if (BGEMM_GEMV_FORWARD) set(CCOMMON_OPT "${CCOMMON_OPT} -DBGEMM_GEMV_FORWARD") endif () if (SMALL_MATRIX_OPT) From ea2faf0c9acf561617cb5d62e4b009ce7458b69a Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Mon, 21 Jul 2025 17:09:47 +0000 Subject: [PATCH 080/360] Add optimized BGEMM for NEOVERSEN2 target This re-uses the existing NEOVERSEN2 8x4 `sbgemm` kernel to implement `bgemm`. --- kernel/arm64/KERNEL.NEOVERSEN2 | 17 +- kernel/arm64/KERNEL.NEOVERSEV2 | 7 +- kernel/arm64/sbgemm_kernel_8x4_neoversen2.c | 18 +- .../arm64/sbgemm_kernel_8x4_neoversen2_impl.c | 243 +++++++++++------- param.h | 10 +- test/compare_sgemm_bgemm.c | 8 +- test/compare_sgemv_bgemv.c | 4 +- 7 files changed, 189 insertions(+), 118 deletions(-) diff --git a/kernel/arm64/KERNEL.NEOVERSEN2 b/kernel/arm64/KERNEL.NEOVERSEN2 index c8d511f209..5ada34e6bb 100644 --- a/kernel/arm64/KERNEL.NEOVERSEN2 +++ b/kernel/arm64/KERNEL.NEOVERSEN2 @@ -188,6 +188,20 @@ ZGEMMOTCOPY = ../generic/zgemm_tcopy_$(ZGEMM_UNROLL_N).c ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX) ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) +ifeq ($(BUILD_BFLOAT16), 1) +BGEMM_BETA = sbgemm_beta_neoversen2.c +BGEMMKERNEL = sbgemm_kernel_$(BGEMM_UNROLL_M)x$(BGEMM_UNROLL_N)_neoversen2.c +BGEMMINCOPY = sbgemm_ncopy_$(BGEMM_UNROLL_M)_neoversen2.c +BGEMMITCOPY = sbgemm_tcopy_$(BGEMM_UNROLL_M)_neoversen2.c +BGEMMONCOPY = sbgemm_ncopy_$(BGEMM_UNROLL_N)_neoversen2.c +BGEMMOTCOPY = sbgemm_tcopy_$(BGEMM_UNROLL_N)_neoversen2.c +BGEMMINCOPYOBJ = bgemm_incopy$(TSUFFIX).$(SUFFIX) +BGEMMITCOPYOBJ = bgemm_itcopy$(TSUFFIX).$(SUFFIX) +BGEMMONCOPYOBJ = bgemm_oncopy$(TSUFFIX).$(SUFFIX) +BGEMMOTCOPYOBJ = bgemm_otcopy$(TSUFFIX).$(SUFFIX) +BGEMVTKERNEL = sbgemv_t_bfdot.c +BGEMVNKERNEL = bgemv_n_sve_v3x4.c + SBGEMM_BETA = sbgemm_beta_neoversen2.c SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_neoversen2.c SBGEMMINCOPY = sbgemm_ncopy_$(SBGEMM_UNROLL_M)_neoversen2.c @@ -199,4 +213,5 @@ SBGEMMITCOPYOBJ = sbgemm_itcopy$(TSUFFIX).$(SUFFIX) SBGEMMONCOPYOBJ = sbgemm_oncopy$(TSUFFIX).$(SUFFIX) SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX) SBGEMVTKERNEL = sbgemv_t_bfdot.c -SBGEMVNKERNEL = sbgemv_n_neon.c \ No newline at end of file +SBGEMVNKERNEL = sbgemv_n_neon.c +endif diff --git a/kernel/arm64/KERNEL.NEOVERSEV2 b/kernel/arm64/KERNEL.NEOVERSEV2 index e08efdb9d8..8f58833cdb 100644 --- a/kernel/arm64/KERNEL.NEOVERSEV2 +++ b/kernel/arm64/KERNEL.NEOVERSEV2 @@ -1,6 +1 @@ -include $(KERNELDIR)/KERNEL.ARMV8SVE - -ifeq ($(BUILD_BFLOAT16), 1) -SBGEMVTKERNEL = sbgemv_t_bfdot.c -SBGEMVNKERNEL = sbgemv_n_neon.c -endif \ No newline at end of file +include $(KERNELDIR)/KERNEL.NEOVERSEN2 diff --git a/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c b/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c index 4c1385fbed..42ecf37196 100644 --- a/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c +++ b/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2022, The OpenBLAS Project + * Copyright (c) 2022,2025 The OpenBLAS Project * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -33,13 +33,23 @@ #define ALPHA_ONE #include "sbgemm_kernel_8x4_neoversen2_impl.c" #undef ALPHA_ONE +#undef UPDATE_C #include "sbgemm_kernel_8x4_neoversen2_impl.c" int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, BLASLONG ldc) { - if (alpha == 1.0f) - return sbgemm_kernel_neoversen2_alpha_one(m, n, k, alpha, A, B, C, ldc); +#ifdef BGEMM + bfloat16_t alpha_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); +#else + float alpha_f32 = alpha; +#endif + + if (alpha_f32 == 1.0f) + return gemm_kernel_neoversen2_alpha_one(m, n, k, alpha, A, B, C, ldc); else - return sbgemm_kernel_neoversen2_alpha(m, n, k, alpha, A, B, C, ldc); + return gemm_kernel_neoversen2_alpha(m, n, k, alpha, A, B, C, ldc); + return 0; } diff --git a/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c b/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c index 26ea7ee61b..712949f2cd 100644 --- a/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c +++ b/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2022, The OpenBLAS Project + * Copyright (c) 2022,2025 The OpenBLAS Project * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -46,49 +46,94 @@ INIT_C(3, 1); \ } while (0); +#ifdef BGEMM #ifdef ALPHA_ONE -#define UPDATE_C(PG, PTR, DST, SRC) \ - do { \ - DST = svld1_f32((PG), (PTR)); \ - DST = svadd_z((PG), SRC, DST); \ - svst1_f32((PG), (PTR), DST); \ +#define UPDATE_C(PG16, PG32, PTR, SRC) \ + do { \ + tmp32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ + tmp32 = svadd_z((PG32), SRC, tmp32); \ + tmp16 = svcvt_bf16_f32_z((PG32), tmp32); \ + tmp16 = svuzp1_bf16(tmp16, tmp16); \ + svst1_bf16((PG16), (PTR), tmp16); \ + } while (0) +#else +#define UPDATE_C(PG16, PG32, PTR, SRC) \ + do { \ + tmp32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ + tmp32 = svmad_z((PG32), svalpha, SRC, tmp32); \ + tmp16 = svcvt_bf16_f32_z((PG32), tmp32); \ + tmp16 = svuzp1_bf16(tmp16, tmp16); \ + svst1_bf16((PG16), (PTR), tmp16); \ + } while (0) +#endif +#else +#ifdef ALPHA_ONE +#define UPDATE_C(PG16, PG32, PTR, SRC) \ + do { \ + tmp32 = svld1_f32((PG32), (PTR)); \ + tmp32 = svadd_z((PG32), SRC, tmp32); \ + svst1_f32((PG32), (PTR), tmp32); \ } while (0); #else -#define UPDATE_C(PG, PTR, DST, SRC) \ - do { \ - DST = svld1_f32((PG), (PTR)); \ - DST = svmad_z((PG), svalpha, SRC, DST); \ - svst1_f32((PG), (PTR), DST); \ +#define UPDATE_C(PG16, PG32, PTR, SRC) \ + do { \ + tmp32 = svld1_f32((PG32), (PTR)); \ + tmp32 = svmad_z((PG32), svalpha, SRC, tmp32); \ + svst1_f32((PG32), (PTR), tmp32); \ } while (0); + #endif + #endif + +#ifdef BGEMM +#define OUTPUT_FLOAT bfloat16_t +#else +#define OUTPUT_FLOAT float #endif #ifdef ALPHA_ONE -int sbgemm_kernel_neoversen2_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT * A, IFLOAT * B, FLOAT * C, BLASLONG ldc) +static int gemm_kernel_neoversen2_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT * A, IFLOAT * B, FLOAT * C, BLASLONG ldc) #else -int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT * A, IFLOAT * B, FLOAT * C, BLASLONG ldc) +static int gemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT * A, IFLOAT * B, FLOAT * C, BLASLONG ldc) #endif { BLASLONG pad_k = (k + 3) & ~3; svbfloat16_t ma0, ma1, ma2, ma3, mb0, mb1; svfloat32_t mc00, mc01, mc10, mc11, mc20, mc21, mc30, mc31, - vc0, vc1, vc2, vc3, vc4, vc5, vc6, vc7, - oc0, oc1, oc2, oc3, oc4, oc5, oc6, oc7; + vc0, vc1, vc2, vc3, vc4, vc5, vc6, vc7; + +#ifndef ALPHA_ONE +#ifdef BGEMM + bfloat16_t alpha_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + svfloat32_t svalpha = svdup_f32(vcvtah_f32_bf16(alpha_bf16)); +#else svfloat32_t svalpha = svdup_f32(alpha); +#endif +#endif - svbool_t pg16 = svptrue_b16(); - svbool_t pg16_low = svdupq_b16(1, 1, 1, 1, 0, 0, 0, 0); - svbool_t pg32 = svptrue_b32(); - svbool_t pg32_low = svdupq_b32(1, 1, 0, 0); - svbool_t pg32_first = svdupq_b32(1, 0, 0, 0); + svbool_t pg32_first_4 = svdupq_b32(1, 1, 1, 1); + svbool_t pg32_first_2 = svdupq_b32(1, 1, 0, 0); + svbool_t pg32_first_1 = svdupq_b32(1, 0, 0, 0); + svbool_t pg16_first_8 = svdupq_b16(1, 1, 1, 1, 1, 1, 1, 1); + svbool_t pg16_first_4 = svdupq_b16(1, 1, 1, 1, 0, 0, 0, 0); +#ifdef BGEMM + svbool_t pg16_first_2 = svdupq_b16(1, 1, 0, 0, 0, 0, 0, 0); + svbool_t pg16_first_1 = svdupq_b16(1, 0, 0, 0, 0, 0, 0, 0); +#endif bfloat16_t *ptr_a = (bfloat16_t *)A; bfloat16_t *ptr_b = (bfloat16_t *)B; - FLOAT *ptr_c = C; + OUTPUT_FLOAT *ptr_c = (OUTPUT_FLOAT*)C; + + bfloat16_t *ptr_a0; + bfloat16_t *ptr_b0; + OUTPUT_FLOAT *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; - bfloat16_t *ptr_a0, *ptr_a1, *ptr_a2, *ptr_a3; - bfloat16_t *ptr_b0, *ptr_b1; - FLOAT *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; + svfloat32_t tmp32; +#ifdef BGEMM + svbfloat16_t tmp16; +#endif for (BLASLONG j = 0; j < n / 4; j++) { ptr_c0 = ptr_c; @@ -107,13 +152,13 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C_8x4; for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - ma2 = svld1_bf16(pg16, ptr_a0 + 16); - ma3 = svld1_bf16(pg16, ptr_a0 + 24); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + ma2 = svld1_bf16(pg16_first_8, ptr_a0 + 16); + ma3 = svld1_bf16(pg16_first_8, ptr_a0 + 24); - mb0 = svld1_bf16(pg16, ptr_b0); - mb1 = svld1_bf16(pg16, ptr_b0 + 8); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); + mb1 = svld1_bf16(pg16_first_8, ptr_b0 + 8); MATMUL(0, 0); MATMUL(0, 1); MATMUL(1, 0); MATMUL(1, 1); @@ -133,14 +178,14 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc6 = svuzp2(mc01, mc11); vc7 = svuzp2(mc21, mc31); - UPDATE_C(pg32, ptr_c0, oc0, vc0); - UPDATE_C(pg32, ptr_c0+4, oc1, vc1); - UPDATE_C(pg32, ptr_c1, oc2, vc2); - UPDATE_C(pg32, ptr_c1+4, oc3, vc3); - UPDATE_C(pg32, ptr_c2, oc4, vc4) - UPDATE_C(pg32, ptr_c2+4, oc5, vc5); - UPDATE_C(pg32, ptr_c3, oc6, vc6) - UPDATE_C(pg32, ptr_c3+4, oc7, vc7); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0+4, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, vc2); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1+4, vc3); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c2, vc4); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c2+4, vc5); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c3, vc6); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c3+4, vc7); ptr_c0 += 8; ptr_c1 += 8; @@ -157,10 +202,10 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(1, 0); INIT_C(1, 1); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - mb0 = svld1_bf16(pg16, ptr_b0); - mb1 = svld1_bf16(pg16, ptr_b0 + 8); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); + mb1 = svld1_bf16(pg16_first_8, ptr_b0 + 8); MATMUL(0, 0); MATMUL(0, 1); MATMUL(1, 0); MATMUL(1, 1); @@ -174,10 +219,10 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc2 = svuzp1(mc01, mc11); vc3 = svuzp2(mc01, mc11); - UPDATE_C(pg32, ptr_c0, oc0, vc0); - UPDATE_C(pg32, ptr_c1, oc1, vc1); - UPDATE_C(pg32, ptr_c2, oc2, vc2); - UPDATE_C(pg32, ptr_c3, oc3, vc3); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c2, vc2); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c3, vc3); ptr_c0 += 4; ptr_c1 += 4; @@ -192,9 +237,9 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(0, 0); INIT_C(0, 1); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - mb0 = svld1_bf16(pg16, ptr_b0); - mb1 = svld1_bf16(pg16, ptr_b0 + 8); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); + mb1 = svld1_bf16(pg16_first_8, ptr_b0 + 8); MATMUL(0, 0); MATMUL(0, 1); @@ -207,10 +252,10 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc2 = svuzp1(mc01, mc01); vc3 = svuzp2(mc01, mc01); - UPDATE_C(pg32_low, ptr_c0, oc0, vc0); - UPDATE_C(pg32_low, ptr_c1, oc1, vc1); - UPDATE_C(pg32_low, ptr_c2, oc2, vc2); - UPDATE_C(pg32_low, ptr_c3, oc3, vc3); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, vc0); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, vc1); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c2, vc2); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c3, vc3); ptr_c0 += 2; ptr_c1 += 2; @@ -224,9 +269,9 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(0, 0); INIT_C(0, 1); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16_low, ptr_a0); - mb0 = svld1_bf16(pg16, ptr_b0); - mb1 = svld1_bf16(pg16, ptr_b0 + 8); + ma0 = svld1_bf16(pg16_first_4, ptr_a0); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); + mb1 = svld1_bf16(pg16_first_8, ptr_b0 + 8); MATMUL(0, 0); MATMUL(0, 1); @@ -237,10 +282,10 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc1 = svuzp2(mc00, mc00); vc3 = svuzp2(mc01, mc01); - UPDATE_C(pg32_first, ptr_c0, oc0, mc00); - UPDATE_C(pg32_first, ptr_c1, oc1, vc1); - UPDATE_C(pg32_first, ptr_c2, oc2, mc01); - UPDATE_C(pg32_first, ptr_c3, oc3, vc3); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, mc00); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, vc1); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c2, mc01); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c3, vc3); } @@ -265,12 +310,12 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(3, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - ma2 = svld1_bf16(pg16, ptr_a0 + 16); - ma3 = svld1_bf16(pg16, ptr_a0 + 24); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + ma2 = svld1_bf16(pg16_first_8, ptr_a0 + 16); + ma3 = svld1_bf16(pg16_first_8, ptr_a0 + 24); - mb0 = svld1_bf16(pg16, ptr_b0); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); MATMUL(0, 0); MATMUL(1, 0); @@ -286,10 +331,10 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc2 = svuzp2(mc00, mc10); vc3 = svuzp2(mc20, mc30); - UPDATE_C(pg32, ptr_c0, oc0, vc0); - UPDATE_C(pg32, ptr_c0 + 4, oc1, vc1); - UPDATE_C(pg32, ptr_c1, oc2, vc2); - UPDATE_C(pg32, ptr_c1 + 4, oc3, vc3); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0 + 4, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, vc2); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1 + 4, vc3); ptr_c0 += 8; ptr_c1 += 8; @@ -304,9 +349,9 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(1, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - mb0 = svld1_bf16(pg16, ptr_b0); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); MATMUL(0, 0); MATMUL(1, 0); ptr_a0 += 16; @@ -316,8 +361,8 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc0 = svuzp1(mc00, mc10); vc1 = svuzp2(mc00, mc10); - UPDATE_C(pg32, ptr_c0, oc0, vc0); - UPDATE_C(pg32, ptr_c1, oc1, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, vc1); ptr_c0 += 4; ptr_c1 += 4; @@ -331,8 +376,8 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(0, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - mb0 = svld1_bf16(pg16, ptr_b0); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); MATMUL(0, 0); @@ -342,8 +387,8 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc0 = svuzp1(mc00, mc00); vc1 = svuzp2(mc00, mc00); - UPDATE_C(pg32_low, ptr_c0, oc0, vc0); - UPDATE_C(pg32_low, ptr_c1, oc1, vc1); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, vc0); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, vc1); ptr_c0 += 2; ptr_c1 += 2; @@ -355,16 +400,16 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp ptr_b0 = ptr_b; INIT_C(0, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16_low, ptr_a0); - mb0 = svld1_bf16(pg16, ptr_b0); + ma0 = svld1_bf16(pg16_first_4, ptr_a0); + mb0 = svld1_bf16(pg16_first_8, ptr_b0); MATMUL(0, 0); ptr_a0 += 4; ptr_b0 += 8; } vc1 = svuzp2(mc00, mc00); - UPDATE_C(pg32_first, ptr_c0, oc0, mc00); - UPDATE_C(pg32_first, ptr_c1, oc1, vc1); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, mc00); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, vc1); } ptr_b += 2 * pad_k; @@ -386,12 +431,12 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(3, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - ma2 = svld1_bf16(pg16, ptr_a0 + 16); - ma3 = svld1_bf16(pg16, ptr_a0 + 24); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + ma2 = svld1_bf16(pg16_first_8, ptr_a0 + 16); + ma3 = svld1_bf16(pg16_first_8, ptr_a0 + 24); - mb0 = svld1_bf16(pg16_low, ptr_b0); + mb0 = svld1_bf16(pg16_first_4, ptr_b0); MATMUL(0, 0); MATMUL(1, 0); @@ -405,8 +450,8 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp vc0 = svuzp1(mc00, mc10); vc1 = svuzp1(mc20, mc30); - UPDATE_C(pg32, ptr_c0, oc0, vc0); - UPDATE_C(pg32, ptr_c0 + 4, oc1, vc1); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0 + 4, vc1); ptr_c0 += 8; } @@ -418,16 +463,16 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(0, 0); INIT_C(1, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - ma1 = svld1_bf16(pg16, ptr_a0 + 8); - mb0 = svld1_bf16(pg16_low, ptr_b0); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + ma1 = svld1_bf16(pg16_first_8, ptr_a0 + 8); + mb0 = svld1_bf16(pg16_first_4, ptr_b0); MATMUL(0, 0); MATMUL(1, 0); ptr_a0 += 16; ptr_b0 += 4; } vc0 = svuzp1(mc00, mc10); - UPDATE_C(pg32, ptr_c0, oc0, vc0); + UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, vc0); ptr_c0 += 4; } @@ -439,8 +484,8 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp INIT_C(0, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16, ptr_a0); - mb0 = svld1_bf16(pg16_low, ptr_b0); + ma0 = svld1_bf16(pg16_first_8, ptr_a0); + mb0 = svld1_bf16(pg16_first_4, ptr_b0); MATMUL(0, 0); @@ -448,7 +493,7 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp ptr_b0 += 4; } vc0 = svuzp1(mc00, mc00); - UPDATE_C(pg32_low, ptr_c0, oc0, vc0); + UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, vc0); ptr_c0 += 2; } @@ -457,13 +502,13 @@ int sbgemm_kernel_neoversen2_alpha(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alp ptr_b0 = ptr_b; INIT_C(0, 0); for (BLASLONG p = 0; p < pad_k; p += 4) { - ma0 = svld1_bf16(pg16_low, ptr_a0); - mb0 = svld1_bf16(pg16_low, ptr_b0); + ma0 = svld1_bf16(pg16_first_4, ptr_a0); + mb0 = svld1_bf16(pg16_first_4, ptr_b0); MATMUL(0, 0); ptr_a0 += 4; ptr_b0 += 4; } - UPDATE_C(pg32_first, ptr_c0, oc0, mc00); + UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, mc00); } } diff --git a/param.h b/param.h index 662d084496..1a44cd0e4c 100644 --- a/param.h +++ b/param.h @@ -3644,11 +3644,17 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #define SWITCH_RATIO 16 #endif -#undef SBGEMM_ALIGN_K -#define SBGEMM_ALIGN_K 4 +#undef BGEMM_ALIGN_K +#undef BGEMM_DEFAULT_UNROLL_M +#undef BGEMM_DEFAULT_UNROLL_N +#define BGEMM_ALIGN_K 4 +#define BGEMM_DEFAULT_UNROLL_M 8 +#define BGEMM_DEFAULT_UNROLL_N 4 +#undef SBGEMM_ALIGN_K #undef SBGEMM_DEFAULT_UNROLL_M #undef SBGEMM_DEFAULT_UNROLL_N +#define SBGEMM_ALIGN_K 4 #define SBGEMM_DEFAULT_UNROLL_M 8 #define SBGEMM_DEFAULT_UNROLL_N 4 diff --git a/test/compare_sgemm_bgemm.c b/test/compare_sgemm_bgemm.c index 5358150d05..be7c538b60 100644 --- a/test/compare_sgemm_bgemm.c +++ b/test/compare_sgemm_bgemm.c @@ -100,7 +100,7 @@ main (int argc, char *argv[]) SGEMM (&transA, &transB, &m, &n, &k, &alpha, A, &m, B, &k, &beta, C, &m); - BGEMM (&transA, &transB, &m, &n, &k, &alpha_bf16, (bfloat16*) AA, + BGEMM (&transA, &transB, &m, &n, &k, &alpha_bf16, (bfloat16*)AA, &m, (bfloat16*)BB, &k, &beta_bf16, (bfloat16*)CC, &m); for (i = 0; i < n; i++) @@ -126,15 +126,15 @@ main (int argc, char *argv[]) } if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j]), 0.01, 0.001)) { #ifdef DEBUG - printf("Mismatch at i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", + printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(C[i * m + j])); #endif ret++; } - if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j]), 0.0001, 0.00001)) { + if (!is_close(float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j]), 0.01, 0.001)) { #ifdef DEBUG - printf("Mismatch at i=%d, j=%d, k=%ld: CC=%.6f, DD=%.6f\n", + printf("Mismatch at i=%d, j=%d, k=%d: CC=%.6f, DD=%.6f\n", i, j, k, float16to32(CC[i * m + j]), truncate_float32_to_bfloat16(DD[i * m + j])); #endif ret++; diff --git a/test/compare_sgemv_bgemv.c b/test/compare_sgemv_bgemv.c index 17011a4b75..014c7da50d 100644 --- a/test/compare_sgemv_bgemv.c +++ b/test/compare_sgemv_bgemv.c @@ -119,7 +119,7 @@ int main(int argc, char *argv[]) if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l]), 0.01, 0.001)) { #ifdef DEBUG - printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, C=%.6f\n", + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, C=%.6f\n", transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(C[j << l])); #endif ret++; @@ -127,7 +127,7 @@ int main(int argc, char *argv[]) if (!is_close(float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j]), 0.001, 0.0001)) { #ifdef DEBUG - printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%ld: CC=%.6f, DD=%.6f\n", + printf("Mismatch at trans=%c, alpha=%.2f, beta=%.2f, i=%d, j=%d, k=%d: CC=%.6f, DD=%.6f\n", transA, alpha, beta, i, j, k, float16to32(CC[j << l]), truncate_float32_to_bfloat16(DD[j])); #endif ret++; From 87247daadc1fa874ab4fd05e90f58e0e8b3eab3e Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Thu, 24 Jul 2025 11:30:43 +0000 Subject: [PATCH 081/360] Add NEOVERSEV2 target support Did a quick run around to make `TARGET=NEVOERSEV2` build successfully. Fixes #5385 --- Makefile.arm64 | 39 +++++++++++++++++++++++++++++++++--- cmake/cc.cmake | 49 ++++++++++++++++++++++++++++++++++++++++++++-- cmake/system.cmake | 40 +++++++++++++++++++++++++++++++++++++ getarch.c | 16 +++++++++++++++ param.h | 2 +- 5 files changed, 140 insertions(+), 6 deletions(-) diff --git a/Makefile.arm64 b/Makefile.arm64 index b278526917..b98933b77a 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -1,3 +1,31 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + ifneq ($(C_COMPILER), PGI) ifeq ($(C_COMPILER), CLANG) @@ -183,10 +211,15 @@ endif # Detect ARM Neoverse V2. ifeq ($(CORE), NEOVERSEV2) -ifeq (1, $(filter 1,$(GCCVERSIONGTEQ12) $(ISCLANG))) -CCOMMON_OPT += -march=armv9-a -mtune=neoverse-v2 +ifeq (1, $(filter 1,$(GCCVERSIONGTEQ13) $(ISCLANG))) +CCOMMON_OPT += -mcpu=neoverse-v2 +ifneq ($(F_COMPILER), NAG) +FCOMMON_OPT += -mcpu=neoverse-v2 +endif +else +CCOMMON_OPT += -march=armv8.2-a+sve+bf16 -mtune=neoverse-n1 ifneq ($(F_COMPILER), NAG) -FCOMMON_OPT += -march=armv9-a -mtune=neoverse-v2 +FCOMMON_OPT += -march=armv8.2-a -mtune=neoverse-n1 endif endif endif diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 3679278b05..952b2dd7ad 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -1,3 +1,30 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### ## ## Author: Hank Anderson ## Description: Ported from portion of OpenBLAS/Makefile.system @@ -192,6 +219,24 @@ if (${CORE} STREQUAL A64FX) endif () endif () +if (${CORE} STREQUAL NEOVERSEV2) + if (NOT DYNAMIC_ARCH) + if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) + set (CCOMMON_OPT "${CCOMMON_OPT} -Msve_intrinsics -march=armv8.5-a+sve+sve2+bf16 -mtune=neoverse-v2") + elseif (${CMAKE_C_COMPILER_ID} STREQUAL "NVC" AND NOT NO_SVE) + set (CCOMMON_OPT "${CCOMMON_OPT} -tp=neoverse-v2") + else () + if (${GCC_VERSION} VERSION_GREATER 13.0 OR ${GCC_VERSION} VERSION_EQUAL 13.0) + set (CCOMMON_OPT "${CCOMMON_OPT} -mcpu=neoverse-v2") + elseif (${GCC_VERSION} VERSION_GREATER 10.4 OR ${GCC_VERSION} VERSION_EQUAL 10.4) + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") + else () + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.2-a+sve+bf16") + endif() + endif () + endif () +endif () + if (${CORE} STREQUAL NEOVERSEN2) if (NOT DYNAMIC_ARCH) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) @@ -199,10 +244,10 @@ if (${CORE} STREQUAL NEOVERSEN2) elseif (${CMAKE_C_COMPILER_ID} STREQUAL "NVC" AND NOT NO_SVE) set (CCOMMON_OPT "${CCOMMON_OPT} -tp=neoverse-v2") else () - if (${GCC_VERSION} VERSION_GREATER 10.4 OR ${GCC_VERSION} VERSION_EQUAL 10.4) + if (${GCC_VERSION} VERSION_GREATER 11.1 OR ${GCC_VERSION} VERSION_EQUAL 11.1) set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.5-a+sve+sve2+bf16 -mtune=neoverse-n2") else () - set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.2-a+sve") + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.2-a+sve+bf16") endif() endif () endif () diff --git a/cmake/system.cmake b/cmake/system.cmake index 81f1a67ad3..338f009471 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -1,3 +1,30 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### ## ## Author: Hank Anderson ## Description: Ported from OpenBLAS/Makefile.system @@ -311,6 +338,19 @@ if (${TARGET} STREQUAL NEOVERSEV1) endif() endif() endif() + if (${TARGET} STREQUAL NEOVERSEN2) + if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve-intrinsics -march=armv9-a+sve+sve2+bf16 -mtune=neoverse-v2") + else () + if (CMAKE_C_COMPILER_VERSION VERSION_GREATER 13.0 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 13.0) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=neoverse-v2") + elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER 10.4 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 10.4) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") + else () + message(FATAL_ERROR "Compiler $${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION} does not support Neoverse N2.") + endif() + endif() + endif() if (${TARGET} STREQUAL ARMV8SVE) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve-intrinsics -march=armv8.2-a+sve") diff --git a/getarch.c b/getarch.c index 51c6705fea..417a3d08ca 100644 --- a/getarch.c +++ b/getarch.c @@ -1498,6 +1498,22 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "NEOVERSEN2" #endif +#ifdef FORCE_NEOVERSEV2 +#define FORCE +#define ARCHITECTURE "ARM64" +#define SUBARCHITECTURE "NEOVERSEV2" +#define SUBDIRNAME "arm64" +#define ARCHCONFIG "-DNEOVERSEV2 " \ + "-DL1_CODE_SIZE=65536 -DL1_CODE_LINESIZE=64 -DL1_CODE_ASSOCIATIVE=4 " \ + "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 -DL1_DATA_ASSOCIATIVE=4 " \ + "-DL2_SIZE=1048576 -DL2_LINESIZE=64 -DL2_ASSOCIATIVE=16 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \ + "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DHAVE_SVE -DARMV8 " \ + "-mcpu=neoverse-v2" +#define LIBNAME "neoversev2" +#define CORENAME "NEOVERSEV2" +#endif + #ifdef FORCE_CORTEXA55 #define FORCE #define ARCHITECTURE "ARM64" diff --git a/param.h b/param.h index 662d084496..7c8397f6ac 100644 --- a/param.h +++ b/param.h @@ -3636,7 +3636,7 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #define CGEMM_DEFAULT_R 4096 #define ZGEMM_DEFAULT_R 4096 -#elif defined(NEOVERSEN2) +#elif defined(NEOVERSEN2) || defined(NEOVERSEV2) #if defined(XDOUBLE) || defined(DOUBLE) #define SWITCH_RATIO 8 From 965463f1778b563e004e377a144445cdaf9c1283 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 24 Jul 2025 23:33:20 +0200 Subject: [PATCH 082/360] Include float-bfloat conversion functions in ONLY_CBLAS builds as well --- interface/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/Makefile b/interface/Makefile index 999d23e9a7..e9b9d2e631 100644 --- a/interface/Makefile +++ b/interface/Makefile @@ -327,6 +327,9 @@ CSBBLAS1OBJS = cblas_sbdot.$(SUFFIX) CSBBLAS2OBJS = cblas_sbgemv.$(SUFFIX) CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX) cblas_sbgemmt.$(SUFFIX) cblas_sbgemmtr.$(SUFFIX) cblas_sbgemm_batch.$(SUFFIX) CSBEXTOBJS = cblas_sbstobf16.$(SUFFIX) cblas_sbdtobf16.$(SUFFIX) cblas_sbf16tos.$(SUFFIX) cblas_dbf16tod.$(SUFFIX) +ifeq ($(ONLY_CBLAS),1) +CSBEXTOBJS += sbstobf16.$(SUFFIX) sbdtobf16.$(SUFFIX) sbf16tos.$(SUFFIX) dbf16tod.$(SUFFIX) +endif endif ifeq ($(BUILD_HFLOAT16),1) From 05fc88180c42eae7588fac4bd59c3b86ffefbc23 Mon Sep 17 00:00:00 2001 From: abhishek-fujitsu Date: Mon, 19 May 2025 18:34:38 +0530 Subject: [PATCH 083/360] ARM64: Enable bfloat16 kernels by default --- Makefile.system | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.system b/Makefile.system index b214006b11..c1c910d312 100644 --- a/Makefile.system +++ b/Makefile.system @@ -270,6 +270,7 @@ SMALL_MATRIX_OPT = 1 BUILD_BFLOAT16 = 1 else ifeq ($(ARCH), arm64) SMALL_MATRIX_OPT = 1 +BUILD_BFLOAT16 = 1 endif ifeq ($(ARCH), loongarch64) SMALL_MATRIX_OPT = 1 From 720a4743b9c45ba2a7fb4b6822b8ebba3c6d5beb Mon Sep 17 00:00:00 2001 From: abhishek-fujitsu Date: Wed, 23 Jul 2025 17:41:34 +0530 Subject: [PATCH 084/360] update contribution list --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 57993889ac..b678c017ac 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -255,6 +255,7 @@ In chronological order: * Abhishek Kumar * [2025-04-22] Optimise dot kernel for NEOVERSE V1 + * [2025-07-23] ARM64-Enable bfloat16 kernels by default * Sharif Inamdar * [2025-06-05] Optimize gemv_n_sve_v1x3 kernel From 0bc79da587b521e0be449f12f45b25f50d93306c Mon Sep 17 00:00:00 2001 From: abhishek-fujitsu Date: Fri, 25 Jul 2025 11:10:20 +0530 Subject: [PATCH 085/360] add neon header --- kernel/arm64/bgemm_kernel_4x4_neoversev1.c | 1 + kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c | 1 + kernel/arm64/bgemv_n_sve_v3x4.c | 1 + 3 files changed, 3 insertions(+) diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1.c index 7af31bb2ca..7067413ff9 100644 --- a/kernel/arm64/bgemm_kernel_4x4_neoversev1.c +++ b/kernel/arm64/bgemm_kernel_4x4_neoversev1.c @@ -27,6 +27,7 @@ * *****************************************************************************/ #include +#include #include "common.h" diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c index 2477da9c07..1f49d6200d 100644 --- a/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c +++ b/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c @@ -27,6 +27,7 @@ * *****************************************************************************/ #include +#include #include "common.h" diff --git a/kernel/arm64/bgemv_n_sve_v3x4.c b/kernel/arm64/bgemv_n_sve_v3x4.c index 6347746d0c..b5e5f76a23 100644 --- a/kernel/arm64/bgemv_n_sve_v3x4.c +++ b/kernel/arm64/bgemv_n_sve_v3x4.c @@ -28,6 +28,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "common.h" #include +#include #define UPDATE_PTRSx2 \ a_ptr1 = a_ptr0 + lda; From a9e8fa06bf11f174f339151a08978bcb3d49b59e Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Jul 2025 15:15:46 +0200 Subject: [PATCH 086/360] Introduce a (crude) threshold to multithreading --- interface/trmv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/trmv.c b/interface/trmv.c index 2e52527a3c..029a83499d 100644 --- a/interface/trmv.c +++ b/interface/trmv.c @@ -219,7 +219,10 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, #ifdef SMP nthreads = num_cpu_avail(2); - + + if (n < 50 ) nthreads = 1; + if (nthreads > 2 && n < 500) nthreads = 2; + if (nthreads == 1) { #endif From 2f89a5970ea4ccb08d10aabd1e14b331269aa68e Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Jul 2025 15:43:37 +0200 Subject: [PATCH 087/360] fix NeoverseV2 typo --- cmake/system.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/system.cmake b/cmake/system.cmake index 338f009471..2e43885b3e 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -338,7 +338,7 @@ if (${TARGET} STREQUAL NEOVERSEV1) endif() endif() endif() - if (${TARGET} STREQUAL NEOVERSEN2) + if (${TARGET} STREQUAL NEOVERSEV2) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve-intrinsics -march=armv9-a+sve+sve2+bf16 -mtune=neoverse-v2") else () @@ -347,7 +347,7 @@ if (${TARGET} STREQUAL NEOVERSEV1) elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER 10.4 OR CMAKE_C_COMPILER_VERSION VERSION_EQUAL 10.4) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") else () - message(FATAL_ERROR "Compiler $${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION} does not support Neoverse N2.") + message(FATAL_ERROR "Compiler $${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION} does not support Neoverse V2.") endif() endif() endif() From b9e107932a1b6491715dbeed0cf59dcb30c1879a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Jul 2025 15:44:34 +0200 Subject: [PATCH 088/360] add NeoverseV2 --- TargetList.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TargetList.txt b/TargetList.txt index 0c94869e7a..b890c1440d 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -102,6 +102,7 @@ CORTEXX2 NEOVERSEN1 NEOVERSEV1 NEOVERSEN2 +NEOVERSEV2 CORTEXA55 EMAG8180 FALKOR From 4c8dcb3a8f0a4afcfc3a7c6da5d61f313f067e3e Mon Sep 17 00:00:00 2001 From: abhishek-fujitsu Date: Sat, 26 Jul 2025 16:59:46 +0530 Subject: [PATCH 089/360] Darwin/arm64: disable SVE/SME and fix gfortran link path --- .github/workflows/apple_m.yml | 8 +++++++- Makefile.system | 2 -- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/apple_m.yml b/.github/workflows/apple_m.yml index 81952dabd7..56d46cf0cd 100644 --- a/.github/workflows/apple_m.yml +++ b/.github/workflows/apple_m.yml @@ -87,10 +87,16 @@ jobs: echo "max_size = 300M" > ~/.ccache/ccache.conf echo "compression = true" >> ~/.ccache/ccache.conf ccache -s + + - name: Add gfortran runtime to link path + if: matrix.build == 'make' && runner.os == 'macOS' + run: | + GFORTRAN_LIBDIR=$(gfortran -print-file-name=libgfortran.dylib | xargs dirname) + echo "Using gfortran runtime in $GFORTRAN_LIBDIR" + echo "LDFLAGS=-L/opt/homebrew/opt/llvm/lib -L$GFORTRAN_LIBDIR" >> $GITHUB_ENV - name: Build OpenBLAS run: | - export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" export CPPFLAGS="-I/opt/homebrew/opt/llvm/include" export CC="/opt/homebrew/opt/llvm/bin/clang" case "${{ matrix.build }}" in diff --git a/Makefile.system b/Makefile.system index c1c910d312..3f1c48d23d 100644 --- a/Makefile.system +++ b/Makefile.system @@ -426,10 +426,8 @@ ifeq ($(OSNAME), Darwin) ifndef MACOSX_DEPLOYMENT_TARGET ifeq ($(ARCH), arm64) export MACOSX_DEPLOYMENT_TARGET=11.0 -ifeq ($(C_COMPILER), GCC) export NO_SVE = 1 export NO_SME = 1 -endif else export MACOSX_DEPLOYMENT_TARGET=10.8 endif From 6356190d06d1d71ddcd858c3441037b70707970a Mon Sep 17 00:00:00 2001 From: abhishek-fujitsu Date: Mon, 28 Jul 2025 14:37:29 +0530 Subject: [PATCH 090/360] fix gfortran link path in dynamic_arch.yml --- .github/workflows/dynamic_arch.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/dynamic_arch.yml b/.github/workflows/dynamic_arch.yml index 2d5c7b6123..950ab08ea6 100644 --- a/.github/workflows/dynamic_arch.yml +++ b/.github/workflows/dynamic_arch.yml @@ -89,6 +89,14 @@ jobs: echo "max_size = 300M" > ~/.ccache/ccache.conf echo "compression = true" >> ~/.ccache/ccache.conf ccache -s + + - name: Add gfortran runtime to link path + if: matrix.build == 'make' && runner.os == 'macOS' + run: | + GFORTRAN_LIBDIR=$(gfortran -print-file-name=libgfortran.dylib | xargs dirname) + echo "Using gfortran runtime in $GFORTRAN_LIBDIR" + # Preserve whatever LDFLAGS may already contain + echo "LDFLAGS=${LDFLAGS:+$LDFLAGS }-L$GFORTRAN_LIBDIR" >> "$GITHUB_ENV" - name: Build OpenBLAS run: | From b66a01f9096de29ed5a0a9239e09a514a356425a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 28 Jul 2025 22:43:28 +0200 Subject: [PATCH 091/360] Fix building of bgemm tests on GEMM3M-capable (x86) targets --- test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Makefile b/test/Makefile index d8e12058ab..58b6710c6b 100644 --- a/test/Makefile +++ b/test/Makefile @@ -242,7 +242,7 @@ endif ifeq ($(SUPPORT_GEMM3M),1) -level3: $(B3) $(S3) $(D3) $(C3) $(Z3) level3_3m +level3: $(BF3) $(B3) $(S3) $(D3) $(C3) $(Z3) level3_3m else level3: $(BF3) $(B3) $(S3) $(D3) $(C3) $(Z3) endif From 7e29f1139640ad2fc060840944c335bd31cce9eb Mon Sep 17 00:00:00 2001 From: Masato Nakagawa Date: Tue, 29 Jul 2025 18:54:36 +0900 Subject: [PATCH 092/360] Multi-thread GEMM Performance Improvement on NeoverseV1 (DIVIDE_RATE=1) --- driver/level3/gemm.c | 4 ++++ driver/level3/level3_thread.c | 18 ++++++++++++------ param.h | 2 ++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/driver/level3/gemm.c b/driver/level3/gemm.c index a20d6c59ad..e37d86c28d 100644 --- a/driver/level3/gemm.c +++ b/driver/level3/gemm.c @@ -63,6 +63,10 @@ #define DIVIDE_RATE GEMM_DIVIDE_RATE #endif +#ifdef GEMM_DIVIDE_LIMIT +#define DIVIDE_LIMIT GEMM_DIVIDE_LIMIT +#endif + #ifdef THREADED_LEVEL3 #include "level3_thread.c" #else diff --git a/driver/level3/level3_thread.c b/driver/level3/level3_thread.c index cb93591ab0..22f27975bd 100644 --- a/driver/level3/level3_thread.c +++ b/driver/level3/level3_thread.c @@ -246,6 +246,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, BLASLONG nthreads_m; BLASLONG mypos_m, mypos_n; + BLASLONG divide_rate = DIVIDE_RATE; BLASLONG is, js, ls, bufferside, jjs; BLASLONG min_i, min_l, div_n, min_jj; @@ -280,6 +281,11 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, alpha = (FLOAT *)args -> alpha; beta = (FLOAT *)args -> beta; + /* Disable divide_rate when N of all threads are less than to DIVIDE_LIMIT */ +#ifdef DIVIDE_LIMIT + if (N < DIVIDE_LIMIT) divide_rate = 1; +#endif + /* Initialize 2D CPU distribution */ nthreads_m = args -> nthreads; if (range_m) { @@ -321,9 +327,9 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, ) return 0; /* Initialize workspace for local region of B */ - div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE; + div_n = (n_to - n_from + divide_rate - 1) / divide_rate; buffer[0] = sb; - for (i = 1; i < DIVIDE_RATE; i++) { + for (i = 1; i < divide_rate; i++) { buffer[i] = buffer[i - 1] + GEMM_Q * ((div_n + GEMM_UNROLL_N - 1)/GEMM_UNROLL_N) * GEMM_UNROLL_N * COMPSIZE; } @@ -365,7 +371,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, STOP_RPCC(copy_A); /* Copy local region of B into workspace and apply kernel */ - div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE; + div_n = (n_to - n_from + divide_rate - 1) / divide_rate; for (js = n_from, bufferside = 0; js < n_to; js += div_n, bufferside ++) { /* Make sure if no one is using workspace */ @@ -434,7 +440,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m; /* Split other region of B into parts */ - div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE; + div_n = (range_n[current + 1] - range_n[current] + divide_rate - 1) / divide_rate; for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) { if (current != mypos) { @@ -485,7 +491,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, do { /* Split region of B into parts and apply kernel */ - div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE; + div_n = (range_n[current + 1] - range_n[current] + divide_rate - 1) / divide_rate; for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) { /* Apply kernel with local region of A and part of region of B */ @@ -520,7 +526,7 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, /* Wait until all other threads are done with local region of B */ START_RPCC(); for (i = 0; i < args -> nthreads; i++) { - for (js = 0; js < DIVIDE_RATE; js++) { + for (js = 0; js < divide_rate; js++) { while (job[mypos].working[i][CACHE_LINE_SIZE * js] ) {YIELDING;}; } } diff --git a/param.h b/param.h index 46582333ea..77b04fe433 100644 --- a/param.h +++ b/param.h @@ -3585,6 +3585,8 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #elif defined(NEOVERSEV1) // 256-bit SVE +#define GEMM_DIVIDE_LIMIT 3 + #if defined(XDOUBLE) || defined(DOUBLE) #define SWITCH_RATIO 8 #define GEMM_PREFERED_SIZE 4 From 72f082f31d191a2e4e6942530af873527c473004 Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Wed, 30 Jul 2025 14:04:43 +0000 Subject: [PATCH 093/360] Fix bad vector zero initializer and other compiler warnings for RISC-V. --- kernel/riscv64/gemv_n_vector.c | 16 +++++++++------- kernel/riscv64/omatcopy_cn_vector.c | 2 +- kernel/riscv64/zamax_vector.c | 1 - kernel/riscv64/zamin_vector.c | 1 - kernel/riscv64/zasum_vector.c | 4 +--- kernel/riscv64/zgemv_n_vector.c | 4 ++-- kernel/riscv64/zsum_vector.c | 4 +--- 7 files changed, 14 insertions(+), 18 deletions(-) diff --git a/kernel/riscv64/gemv_n_vector.c b/kernel/riscv64/gemv_n_vector.c index 64ed532cbe..4e4f63493c 100644 --- a/kernel/riscv64/gemv_n_vector.c +++ b/kernel/riscv64/gemv_n_vector.c @@ -35,7 +35,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define VSSEV_FLOAT RISCV_RVV(vsse32_v_f32m8) #define VFMACCVF_FLOAT RISCV_RVV(vfmacc_vf_f32m8) #define VFMUL_VF_FLOAT RISCV_RVV(vfmul_vf_f32m8) -#define VFILL_ZERO_FLOAT RISCV_RVV(vfsub_vv_f32m8) +#define VREINTERPRET_FLOAT RISCV_RVV(vreinterpret_v_i32m8_f32m8) +#define VFILL_INT RISCV_RVV(vmv_v_x_i32m8) #else #define VSETVL(n) RISCV_RVV(vsetvl_e64m4)(n) #define FLOAT_V_T vfloat64m4_t @@ -45,7 +46,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define VSSEV_FLOAT RISCV_RVV(vsse64_v_f64m4) #define VFMACCVF_FLOAT RISCV_RVV(vfmacc_vf_f64m4) #define VFMUL_VF_FLOAT RISCV_RVV(vfmul_vf_f64m4) -#define VFILL_ZERO_FLOAT RISCV_RVV(vfsub_vv_f64m4) +#define VREINTERPRET_FLOAT RISCV_RVV(vreinterpret_v_i64m4_f64m4) +#define VFILL_INT RISCV_RVV(vmv_v_x_i64m4) #endif int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) @@ -56,7 +58,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO if(n < 0) return(0); FLOAT *a_ptr = a; FLOAT temp[4]; - FLOAT_V_T va0, va1, vy0, vy1,vy0_temp, vy1_temp , temp_v ,va0_0 , va0_1 , va1_0 ,va1_1 ,va2_0 ,va2_1 ,va3_0 ,va3_1 ; + FLOAT_V_T va0, va1, vy0, vy1,vy0_temp, vy1_temp ,va0_0 , va0_1 , va1_0 ,va1_1 ,va2_0 ,va2_1 ,va3_0 ,va3_1 ; unsigned int gvl = 0; if(inc_y == 1 && inc_x == 1){ gvl = VSETVL(m); @@ -66,8 +68,8 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO ix = 0; vy0_temp = VLEV_FLOAT(&y[j], gvl); vy1_temp = VLEV_FLOAT(&y[j+gvl], gvl); - vy0 = VFILL_ZERO_FLOAT(vy0 , vy0 , gvl); - vy1 = VFILL_ZERO_FLOAT(vy1 , vy1 , gvl); + vy0 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl)); + vy1 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl)); int i; int remainder = n % 4; @@ -118,7 +120,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO a_ptr = a; ix = 0; vy0_temp = VLEV_FLOAT(&y[j], gvl); - vy0 = VFILL_ZERO_FLOAT(vy0 , vy0 , gvl); + vy0 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl)); int i; int remainder = n % 4; @@ -251,4 +253,4 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO } } return(0); -} \ No newline at end of file +} diff --git a/kernel/riscv64/omatcopy_cn_vector.c b/kernel/riscv64/omatcopy_cn_vector.c index d079310b8e..ee31c54814 100644 --- a/kernel/riscv64/omatcopy_cn_vector.c +++ b/kernel/riscv64/omatcopy_cn_vector.c @@ -51,7 +51,7 @@ int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha, FLOAT *a, BLASLONG lda, FLO FLOAT *aptr,*bptr; size_t vl; - FLOAT_V_T va, vb,va1,vb1; + FLOAT_V_T va,va1; if ( rows <= 0 ) return(0); if ( cols <= 0 ) return(0); diff --git a/kernel/riscv64/zamax_vector.c b/kernel/riscv64/zamax_vector.c index ec4a5a1e95..07623262f3 100644 --- a/kernel/riscv64/zamax_vector.c +++ b/kernel/riscv64/zamax_vector.c @@ -81,7 +81,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) FLOAT_V_T_M1 v_res; v_res = VFMVVF_FLOAT_M1(0, 1); - MASK_T mask0, mask1; BLASLONG stride_x = inc_x * sizeof(FLOAT) * 2; gvl = VSETVL(n); v_max = VFMVVF_FLOAT(0, gvl); diff --git a/kernel/riscv64/zamin_vector.c b/kernel/riscv64/zamin_vector.c index 45b3e0b9de..d98cd33643 100644 --- a/kernel/riscv64/zamin_vector.c +++ b/kernel/riscv64/zamin_vector.c @@ -83,7 +83,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) FLOAT_V_T_M1 v_res; v_res = VFMVVF_FLOAT_M1(FLT_MAX, 1); - MASK_T mask0, mask1; BLASLONG stride_x = inc_x * sizeof(FLOAT) * 2; gvl = VSETVL(n); v_min = VFMVVF_FLOAT(FLT_MAX, gvl); diff --git a/kernel/riscv64/zasum_vector.c b/kernel/riscv64/zasum_vector.c index fca904d6ae..4fb4cdc460 100644 --- a/kernel/riscv64/zasum_vector.c +++ b/kernel/riscv64/zasum_vector.c @@ -76,14 +76,13 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) FLOAT asumf=0.0; if (n <= 0 || inc_x <= 0) return(asumf); unsigned int gvl = 0; - FLOAT_V_T v0, v1, v_zero,v_sum; + FLOAT_V_T v0, v1,v_sum; FLOAT_V_T_M1 v_res; v_res = VFMVVF_FLOAT_M1(0, 1); if(inc_x == 1){ BLASLONG n2 = n * 2; gvl = VSETVL(n2); - v_zero = VFMVVF_FLOAT(0, gvl); if(gvl <= n2/2){ v_sum = VFMVVF_FLOAT(0, gvl); for(i=0,j=0; i Date: Wed, 30 Jul 2025 17:05:36 +0200 Subject: [PATCH 094/360] mark xbuffer as volatile to work around gcc15.1 optimizer bug --- kernel/power/dgemv_n.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/power/dgemv_n.c b/kernel/power/dgemv_n.c index ac365b3b2a..303d9600fb 100644 --- a/kernel/power/dgemv_n.c +++ b/kernel/power/dgemv_n.c @@ -147,7 +147,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO BLASLONG m3; BLASLONG n2; BLASLONG lda4 = lda << 2; - FLOAT xbuffer[8] __attribute__ ((aligned (16))); + volatile FLOAT xbuffer[8] __attribute__ ((aligned (16))); FLOAT *ybuffer; if ( m < 1 ) return(0); From 30d11bc92c185d3a91255ea329db9bc2d2ad2174 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 30 Jul 2025 08:13:33 -0700 Subject: [PATCH 095/360] Adjust multithreading threshold and add an intermediate step --- interface/ger.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/ger.c b/interface/ger.c index af6ae8606a..640b8cb443 100644 --- a/interface/ger.c +++ b/interface/ger.c @@ -180,8 +180,10 @@ void CNAME(enum CBLAS_ORDER order, #ifdef SMPTEST // Threshold chosen so that speed-up is > 1 on a Xeon E5-2630 - if(1L * m * n > 2048L * GEMM_MULTITHREAD_THRESHOLD) + if(1L * m * n > 20480L * GEMM_MULTITHREAD_THRESHOLD) nthreads = num_cpu_avail(2); + else if(1L * m * n > 2048L * GEMM_MULTITHREAD_THRESHOLD) + nthreads = MIN(3,num_cpu_avail(2)); else nthreads = 1; From b3ffd5524abd6b2c4c21f94bc5c7e8ae82d5adc9 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 4 Aug 2025 00:20:28 -0700 Subject: [PATCH 096/360] Include NEON header for the bfloat conversion functions --- kernel/arm64/sbgemm_kernel_8x4_neoversen2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c b/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c index 42ecf37196..60634aa2ee 100644 --- a/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c +++ b/kernel/arm64/sbgemm_kernel_8x4_neoversen2.c @@ -27,6 +27,7 @@ * *****************************************************************************/ #include +#include #include "common.h" From f1ee61ea305ab2c11c373f637ea331ea9fff2b4b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 4 Aug 2025 00:21:39 -0700 Subject: [PATCH 097/360] Include NEON header for the bfloat conversion functions --- kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c b/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c index 712949f2cd..61889ca7a9 100644 --- a/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c +++ b/kernel/arm64/sbgemm_kernel_8x4_neoversen2_impl.c @@ -27,6 +27,7 @@ * *****************************************************************************/ #include +#include #include "common.h" From 75c6ab4036d32be9e5b0e70d021f9935a116aff1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 9 Aug 2025 03:28:24 -0700 Subject: [PATCH 098/360] CI: Update WoA job to use LLVM 20.1.8 and avoid stray preinstalled LLVM19 (#5411) * Update to 20.1.8 * fix PATH to avoid the obsolete LLVM19 that appeared in the preinstalled msvc folder hierarchy --- .github/workflows/windows_arm64.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/windows_arm64.yml b/.github/workflows/windows_arm64.yml index d1b5f94e0e..21043ec251 100644 --- a/.github/workflows/windows_arm64.yml +++ b/.github/workflows/windows_arm64.yml @@ -4,11 +4,9 @@ on: push: branches: - develop - - release-** pull_request: branches: - develop - - release-** concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -28,10 +26,12 @@ jobs: - name: Install LLVM for Win-ARM64 shell: pwsh run: | - Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.6/LLVM-20.1.6-woa64.exe -UseBasicParsing -OutFile LLVM-woa64.exe + Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/LLVM-20.1.8-woa64.exe -UseBasicParsing -OutFile LLVM-woa64.exe Start-Process -FilePath ".\LLVM-woa64.exe" -ArgumentList "/S" -Wait echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - + #dir "C:\Program Files\LLVM\include\flang" + #rmdir /Q /S "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/ARM64" + - name: Install CMake and Ninja for Win-ARM64 shell: pwsh run: | @@ -47,6 +47,8 @@ jobs: shell: cmd run: | CALL "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" + set PATH=C:\Program Files\LLVM\bin;%PATH% + mkdir build cd build cmake .. -G Ninja ^ From 114316f36102e3500ec84c055acb37802afdb313 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Sun, 10 Aug 2025 16:29:03 +0000 Subject: [PATCH 099/360] Optimize SBGEMM / BGEMM for NEOVERSEV1 further This changes the kernels to pack full SVE vectors and reduces the overall complexity of the inner GEMM loop. --- kernel/arm64/KERNEL.NEOVERSEV1 | 20 +- kernel/arm64/bgemm_kernel_2vlx4_neoversev1.c | 57 +++ .../bgemm_kernel_2vlx4_neoversev1_impl.c | 437 ++++++++++++++++++ kernel/arm64/bgemm_ncopy_2vl_neoversev1.c | 135 ++++++ kernel/arm64/bgemm_ncopy_4_neoversev1.c | 124 +++++ kernel/arm64/bgemm_tcopy_2vl_neoversev1.c | 154 ++++++ kernel/arm64/bgemm_tcopy_4_neoversev1.c | 143 ++++++ param.h | 8 +- 8 files changed, 1064 insertions(+), 14 deletions(-) create mode 100644 kernel/arm64/bgemm_kernel_2vlx4_neoversev1.c create mode 100644 kernel/arm64/bgemm_kernel_2vlx4_neoversev1_impl.c create mode 100644 kernel/arm64/bgemm_ncopy_2vl_neoversev1.c create mode 100644 kernel/arm64/bgemm_ncopy_4_neoversev1.c create mode 100644 kernel/arm64/bgemm_tcopy_2vl_neoversev1.c create mode 100644 kernel/arm64/bgemm_tcopy_4_neoversev1.c diff --git a/kernel/arm64/KERNEL.NEOVERSEV1 b/kernel/arm64/KERNEL.NEOVERSEV1 index 6f632f2cc5..491425b606 100644 --- a/kernel/arm64/KERNEL.NEOVERSEV1 +++ b/kernel/arm64/KERNEL.NEOVERSEV1 @@ -34,15 +34,15 @@ SGEMVTKERNEL = gemv_t_sve_v1x3.c DGEMVTKERNEL = gemv_t_sve_v1x3.c ifeq ($(BUILD_BFLOAT16), 1) BGEMM_BETA = bgemm_beta_neon.c -BGEMMKERNEL = bgemm_kernel_$(BGEMM_UNROLL_M)x$(BGEMM_UNROLL_N)_neoversev1.c +BGEMMKERNEL = bgemm_kernel_2vlx4_neoversev1.c ifneq ($(BGEMM_UNROLL_M), $(BGEMM_UNROLL_N)) -BGEMMINCOPY = sbgemm_ncopy_$(SBGEMM_UNROLL_M)_neoversev1.c -BGEMMITCOPY = sbgemm_tcopy_$(SBGEMM_UNROLL_M)_neoversev1.c +BGEMMINCOPY = bgemm_ncopy_2vl_neoversev1.c +BGEMMITCOPY = bgemm_tcopy_2vl_neoversev1.c BGEMMINCOPYOBJ = bgemm_incopy$(TSUFFIX).$(SUFFIX) BGEMMITCOPYOBJ = bgemm_itcopy$(TSUFFIX).$(SUFFIX) endif -BGEMMONCOPY = sbgemm_ncopy_$(BGEMM_UNROLL_N)_neoversev1.c -BGEMMOTCOPY = sbgemm_tcopy_$(BGEMM_UNROLL_N)_neoversev1.c +BGEMMONCOPY = bgemm_ncopy_4_neoversev1.c +BGEMMOTCOPY = bgemm_tcopy_4_neoversev1.c BGEMMONCOPYOBJ = bgemm_oncopy$(TSUFFIX).$(SUFFIX) BGEMMOTCOPYOBJ = bgemm_otcopy$(TSUFFIX).$(SUFFIX) @@ -50,15 +50,15 @@ BGEMVTKERNEL = sbgemv_t_bfdot.c BGEMVNKERNEL = bgemv_n_sve_v3x4.c SBGEMM_BETA = sbgemm_beta_neoversev1.c -SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_neoversev1.c +SBGEMMKERNEL = bgemm_kernel_2vlx4_neoversev1.c ifneq ($(SBGEMM_UNROLL_M), $(SBGEMM_UNROLL_N)) -SBGEMMINCOPY = sbgemm_ncopy_$(SBGEMM_UNROLL_M)_neoversev1.c -SBGEMMITCOPY = sbgemm_tcopy_$(SBGEMM_UNROLL_M)_neoversev1.c +SBGEMMINCOPY = bgemm_ncopy_2vl_neoversev1.c +SBGEMMITCOPY = bgemm_tcopy_2vl_neoversev1.c SBGEMMINCOPYOBJ = sbgemm_incopy$(TSUFFIX).$(SUFFIX) SBGEMMITCOPYOBJ = sbgemm_itcopy$(TSUFFIX).$(SUFFIX) endif -SBGEMMONCOPY = sbgemm_ncopy_$(SBGEMM_UNROLL_N)_neoversev1.c -SBGEMMOTCOPY = sbgemm_tcopy_$(SBGEMM_UNROLL_N)_neoversev1.c +SBGEMMONCOPY = bgemm_ncopy_4_neoversev1.c +SBGEMMOTCOPY = bgemm_tcopy_4_neoversev1.c SBGEMMONCOPYOBJ = sbgemm_oncopy$(TSUFFIX).$(SUFFIX) SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX) diff --git a/kernel/arm64/bgemm_kernel_2vlx4_neoversev1.c b/kernel/arm64/bgemm_kernel_2vlx4_neoversev1.c new file mode 100644 index 0000000000..8e135da4a5 --- /dev/null +++ b/kernel/arm64/bgemm_kernel_2vlx4_neoversev1.c @@ -0,0 +1,57 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +#define ALPHA_ONE +#include "bgemm_kernel_2vlx4_neoversev1_impl.c" +#undef ALPHA_ONE +#undef UPDATE_C +#undef UPDATE_C2 +#undef UPDATE_C1 +#include "bgemm_kernel_2vlx4_neoversev1_impl.c" + +int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, + FLOAT *C, BLASLONG ldc) { +#ifdef BGEMM + bfloat16_t alpha_bf16; + memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); + float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); +#else + float alpha_f32 = alpha; +#endif + + if (alpha_f32 == 1.0f) + return bgemm_kernel_neoversev1_alpha_one(m, n, k, alpha_f32, A, B, C, ldc); + else + return bgemm_kernel_neoversev1_alpha(m, n, k, alpha_f32, A, B, C, ldc); + return 0; +} diff --git a/kernel/arm64/bgemm_kernel_2vlx4_neoversev1_impl.c b/kernel/arm64/bgemm_kernel_2vlx4_neoversev1_impl.c new file mode 100644 index 0000000000..215d0d717a --- /dev/null +++ b/kernel/arm64/bgemm_kernel_2vlx4_neoversev1_impl.c @@ -0,0 +1,437 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +#ifdef BGEMM + +#ifdef ALPHA_ONE + +#define TO16 vcvth_bf16_f32 +#define TO32 vcvtah_f32_bf16 + +#define UPDATE_C(PG, PTR, DST, SRC) \ + do { \ + DST = svreinterpret_f32_u32(svld1uh_u32((pghalf), (uint16_t*)PTR)); \ + DST = svadd_z((PG), SRC, DST); \ + svtmp16 = svcvt_bf16_f32_z((PG), DST); \ + svtmp16 = svuzp1_bf16(svtmp16, svtmp16); \ + svst1_bf16((pghalf), (PTR), svtmp16); \ + } while (0); +#define UPDATE_C2(ptr, tmp, vector) \ + *(ptr) = TO16(vector[0] + TO32(*ptr)); \ + *(ptr + 1) = TO16(vector[1] + TO32(*(ptr + 1))); +#define UPDATE_C1(ptr, value) *ptr = TO16(TO32(*ptr) + (value)) + +#else + +#define UPDATE_C(PG, PTR, DST, SRC) \ + do { \ + DST = svreinterpret_f32_u32(svld1uh_u32((pghalf), (uint16_t*)PTR)); \ + DST = svmad_z((PG), svalpha, SRC, DST); \ + svtmp16 = svcvt_bf16_f32_z((PG), DST); \ + svtmp16 = svuzp1_bf16(svtmp16, svtmp16); \ + svst1_bf16((pghalf), (PTR), svtmp16); \ + } while (0); +#define UPDATE_C2(ptr, tmp, vector) \ + *(ptr) = TO16(vector[0] * alpha + TO32(*ptr)); \ + *(ptr + 1) = TO16(vector[1] * alpha + TO32(*(ptr + 1))); +#define UPDATE_C1(ptr, value) *ptr = TO16(TO32(*ptr) + (value) * alpha) + +#endif + +#else + +#ifdef ALPHA_ONE + +#define UPDATE_C(PG, PTR, DST, SRC) \ + do { \ + DST = svld1_f32((PG), (PTR)); \ + DST = svadd_z((PG), SRC, DST); \ + svst1_f32((PG), (PTR), DST); \ + } while (0); +#define UPDATE_C2(ptr, tmp, vector) \ + tmp = vld1_f32(ptr); \ + tmp = vadd_f32(vector, tmp); \ + vst1_f32(ptr, tmp); +#define UPDATE_C1(ptr, value) *ptr = *ptr + (value) + +#else + +#define UPDATE_C(PG, PTR, DST, SRC) \ + do { \ + DST = svld1_f32((PG), (PTR)); \ + DST = svmad_z((PG), svalpha, SRC, DST); \ + svst1_f32((PG), (PTR), DST); \ + } while (0); +#define UPDATE_C2(ptr, tmp, vector) \ + tmp = vld1_f32(ptr); \ + tmp = vmla_n_f32(tmp, vector, alpha); \ + vst1_f32(ptr, tmp); +#define UPDATE_C1(ptr, value) *ptr = *ptr + (value) * alpha + +#endif + +#endif + +#ifdef BGEMM +#define OUTPUT_FLOAT bfloat16_t +#else +#define OUTPUT_FLOAT float +#endif + +#ifdef ALPHA_ONE +static int bgemm_kernel_neoversev1_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, + float alpha, IFLOAT *AA, IFLOAT *BB, + FLOAT *CC, BLASLONG ldc) +#else +static int bgemm_kernel_neoversev1_alpha(BLASLONG m, BLASLONG n, BLASLONG k, + float alpha, IFLOAT *AA, IFLOAT *BB, FLOAT *CC, + BLASLONG ldc) +#endif +{ + BLASLONG pad_k = (k + 3) & ~3; + +#ifndef ALPHA_ONE + svfloat32_t svalpha = svdup_f32(alpha); +#endif + + bfloat16_t *ptr_a = (bfloat16_t *)AA; + bfloat16_t *ptr_b = (bfloat16_t *)BB; + OUTPUT_FLOAT *ptr_c =(OUTPUT_FLOAT*)CC; + + bfloat16_t *ptr_a0; + bfloat16_t *ptr_b0; + OUTPUT_FLOAT *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; + svfloat32_t tmp0, tmp1, tmp2, tmp3; +#ifdef BGEMM + svbfloat16_t svtmp16; +#else + float32x2_t tmp4, tmp5, tmp6, tmp7; +#endif + + const int sve_size_bf16 = svcnth(); + const int num_accumulators = sve_size_bf16 >> 1; + + svbool_t pgtrue = svptrue_b16(); +#ifdef BGEMM + // For BF16 load/store we use half the vector size + svbool_t pghalf = svwhilelt_b16(0, num_accumulators); +#endif + + // N values are 4x2 packed matrices + int n_step = 0; + const int n2 = n & -2; + const int n4 = n & -4; + + // For 256-bit this would be 8 + const int m_acc = (m & -num_accumulators); + const int m2 = m & -2; + + for (; n_step < n4; n_step += 4) { + ptr_a = (bfloat16_t *)AA; + ptr_c0 = ptr_c; + ptr_c1 = ptr_c0 + ldc; + ptr_c2 = ptr_c1 + ldc; + ptr_c3 = ptr_c2 + ldc; + ptr_c += 4 * ldc; + + int m_step = 0; + for (; m_step < m_acc; m_step += num_accumulators) { + svfloat32_t acc0 = svdup_f32(0); + svfloat32_t acc1 = svdup_f32(0); + svfloat32_t acc2 = svdup_f32(0); + svfloat32_t acc3 = svdup_f32(0); + + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += num_accumulators * pad_k; + + // Load entire 2VL block + for (BLASLONG p = 0; p < pad_k; p += 4) { + svbfloat16_t ma0 = svld1_bf16(pgtrue, ptr_a0); + svbfloat16_t ma1 = svld1_bf16(pgtrue, ptr_a0 + sve_size_bf16); + svbfloat16_t mb0 = svld1rq_bf16(pgtrue, ptr_b0); + svbfloat16_t mb1 = svld1rq_bf16(pgtrue, ptr_b0 + 8); + + acc0 = svbfmmla_f32(acc0, mb0, ma0); + acc1 = svbfmmla_f32(acc1, mb0, ma1); + acc2 = svbfmmla_f32(acc2, mb1, ma0); + acc3 = svbfmmla_f32(acc3, mb1, ma1); + + ptr_a0 += sve_size_bf16 * 2; + ptr_b0 += 16; + } + + svfloat32_t out0 = svreinterpret_f32_u64(svuzp1_u64(svreinterpret_u64_f32(acc0), svreinterpret_u64_f32(acc1))); + svfloat32_t out1 = svreinterpret_f32_u64(svuzp2_u64(svreinterpret_u64_f32(acc0), svreinterpret_u64_f32(acc1))); + + svfloat32_t out2 = svreinterpret_f32_u64(svuzp1_u64(svreinterpret_u64_f32(acc2), svreinterpret_u64_f32(acc3))); + svfloat32_t out3 = svreinterpret_f32_u64(svuzp2_u64(svreinterpret_u64_f32(acc2), svreinterpret_u64_f32(acc3))); + + UPDATE_C(pgtrue, ptr_c0, tmp0, out0); + UPDATE_C(pgtrue, ptr_c1, tmp1, out1); + UPDATE_C(pgtrue, ptr_c2, tmp2, out2); + UPDATE_C(pgtrue, ptr_c3, tmp3, out3); + + ptr_c0 += num_accumulators; + ptr_c1 += num_accumulators; + ptr_c2 += num_accumulators; + ptr_c3 += num_accumulators; + } + + for (; m_step < m2; m_step += 2) { + float32x4_t acc0 = {0,0,0,0}; + float32x4_t acc1 = {0,0,0,0}; + + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += 2 * pad_k; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + bfloat16x8_t ma0 = vld1q_bf16(ptr_a0); + bfloat16x8_t mb0 = vld1q_bf16(ptr_b0); + bfloat16x8_t mb1 = vld1q_bf16(ptr_b0 + 8); + + acc0 = vbfmmlaq_f32(acc0, mb0, ma0); + acc1 = vbfmmlaq_f32(acc1, mb1, ma0); + + ptr_a0 += 8; + ptr_b0 += 16; + } + + UPDATE_C2(ptr_c0, tmp4, vget_low_f32(acc0)); + UPDATE_C2(ptr_c1, tmp5, vget_high_f32(acc0)); + UPDATE_C2(ptr_c2, tmp6, vget_low_f32(acc1)); + UPDATE_C2(ptr_c3, tmp7, vget_high_f32(acc1)); + + ptr_c0 += 2; + ptr_c1 += 2; + ptr_c2 += 2; + ptr_c3 += 2; + } + + // Final row is always a contiguous single row + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + float32x4_t acc0 = {0,0,0,0}; + float32x4_t acc1 = {0,0,0,0}; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + /// Same A value can be used for both B values + bfloat16x8_t ma0 = vreinterpretq_bf16_u64(vdupq_n_u64( + *((uint64_t*)ptr_a0) + )); + bfloat16x8_t mb0 = vld1q_bf16(ptr_b0); + bfloat16x8_t mb1 = vld1q_bf16(ptr_b0 + 8); + + acc0 = vbfmmlaq_f32(acc0, mb0, ma0); + acc1 = vbfmmlaq_f32(acc1, mb1, ma0); + + ptr_a0 += 4; + ptr_b0 += 16; + } + + UPDATE_C1(ptr_c0, acc0[1]); + UPDATE_C1(ptr_c1, acc0[3]); + UPDATE_C1(ptr_c2, acc1[1]); + UPDATE_C1(ptr_c3, acc1[3]); + } + + ptr_b += 4 * pad_k; + } + + for (; n_step < n2; n_step += 2) { + ptr_a = (bfloat16_t *)AA; + ptr_c0 = ptr_c; + ptr_c1 = ptr_c0 + ldc; + ptr_c += 2 * ldc; + + // Sets of two are contiguously packed so yay + int m_step = 0; + for (; m_step < m_acc; m_step += num_accumulators) { + svfloat32_t acc0 = svdup_f32(0); + svfloat32_t acc1 = svdup_f32(0); + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += num_accumulators * pad_k; + + // Load entire 8x4 block + for (BLASLONG p = 0; p < pad_k; p += 4) { + svbfloat16_t ma0 = svld1_bf16(pgtrue, ptr_a0); + svbfloat16_t ma1 = svld1_bf16(pgtrue, ptr_a0 + sve_size_bf16); + svbfloat16_t mb0 = svld1rq_bf16(pgtrue, ptr_b0); + + acc0 = svbfmmla_f32(acc0, mb0, ma0); + acc1 = svbfmmla_f32(acc1, mb0, ma1); + + ptr_a0 += sve_size_bf16 * 2; + ptr_b0 += 8; + } + + svfloat32_t out0 = svreinterpret_f32_u64(svuzp1_u64(svreinterpret_u64_f32(acc0), svreinterpret_u64_f32(acc1))); + svfloat32_t out1 = svreinterpret_f32_u64(svuzp2_u64(svreinterpret_u64_f32(acc0), svreinterpret_u64_f32(acc1))); + + UPDATE_C(pgtrue, ptr_c0, tmp0, out0); + UPDATE_C(pgtrue, ptr_c1, tmp1, out1); + + ptr_c0 += num_accumulators; + ptr_c1 += num_accumulators; + } + + for (; m_step < m2; m_step += 2) { + float32x4_t acc = {0,0,0,0}; + + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += 2 * pad_k; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + bfloat16x8_t ma0 = vld1q_bf16(ptr_a0); + bfloat16x8_t mb0 = vld1q_bf16(ptr_b0); + + acc = vbfmmlaq_f32(acc, mb0, ma0); + + ptr_a0 += 8; + ptr_b0 += 8; + } + + UPDATE_C2(ptr_c0, tmp4, vget_low_f32(acc)); + UPDATE_C2(ptr_c1, tmp5, vget_high_f32(acc)); + + ptr_c0 += 2; + ptr_c1 += 2; + } + + // Final row is always a contiguous single row + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + float32x4_t acc = {0,0,0,0}; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + /// Same A value can be used for both B values + bfloat16x8_t ma0 = vreinterpretq_bf16_u64(vdupq_n_u64( + *((uint64_t*)ptr_a0) + )); + bfloat16x8_t mb0 = vld1q_bf16(ptr_b0); + + acc = vbfmmlaq_f32(acc, mb0, ma0); + + ptr_a0 += 4; + ptr_b0 += 8; + } + + UPDATE_C1(ptr_c0, acc[0]); + UPDATE_C1(ptr_c1, acc[2]); + } + + ptr_b += 2 * pad_k; + } + + if (n & 1) { + ptr_a = (bfloat16_t *)AA; + ptr_c0 = ptr_c; + + int m_step = 0; + for (; m_step < m_acc; m_step += num_accumulators) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += num_accumulators * pad_k; + + svfloat32_t acc0 = svdup_f32(0); + svfloat32_t acc1 = svdup_f32(0); + + // Load entire 8x4 block + for (BLASLONG p = 0; p < pad_k; p += 4) { + uint64_t* ptr_b0_u64 = (uint64_t*)ptr_b0; + + svbfloat16_t ma0 = svld1_bf16(pgtrue, ptr_a0); + svbfloat16_t ma1 = svld1_bf16(pgtrue, ptr_a0 + sve_size_bf16); + svbfloat16_t mb0 = svreinterpret_bf16_u64(svdup_u64(*ptr_b0_u64)); + + acc0 = svbfmmla_f32(acc0, mb0, ma0); + acc1 = svbfmmla_f32(acc1, mb0, ma1); + + ptr_a0 += sve_size_bf16 * 2; + ptr_b0 += 4; + } + + svfloat32_t out0 = svreinterpret_f32_u64(svuzp1_u64(svreinterpret_u64_f32(acc0), svreinterpret_u64_f32(acc1))); + UPDATE_C(pgtrue, ptr_c0, tmp0, out0); + + ptr_c0 += num_accumulators; + } + + for (; m_step < m2; m_step += 2) { + float32x4_t acc = {0, 0, 0, 0}; + + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + ptr_a += 2 * pad_k; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + bfloat16x8_t ma0 = vld1q_bf16(ptr_a0); + bfloat16x8_t mb0 = vcombine_bf16(vld1_bf16(ptr_b0), vdup_n_bf16(vcvth_bf16_f32(0.0f))); + + acc = vbfmmlaq_f32(acc, mb0, ma0); + + ptr_a0 += 8; + ptr_b0 += 4; + } + + UPDATE_C2(ptr_c0, tmp4, vget_low_f32(acc)); + + ptr_c0 += 2; + } + + if (m & 1) { + ptr_a0 = ptr_a; + ptr_b0 = ptr_b; + float32x2_t acc = {0,0}; + + for (BLASLONG p = 0; p < pad_k; p += 4) { + bfloat16x4_t ma0 = vld1_bf16(ptr_a0); + bfloat16x4_t mb0 = vld1_bf16(ptr_b0); + + acc = vbfdot_f32(acc, ma0, mb0); + + ptr_a0 += 4; + ptr_b0 += 4; + } + + UPDATE_C1(ptr_c0, acc[0] + acc[1]); + } + } + + return 0; +} diff --git a/kernel/arm64/bgemm_ncopy_2vl_neoversev1.c b/kernel/arm64/bgemm_ncopy_2vl_neoversev1.c new file mode 100644 index 0000000000..e67d45c8a9 --- /dev/null +++ b/kernel/arm64/bgemm_ncopy_2vl_neoversev1.c @@ -0,0 +1,135 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +int CNAME(BLASLONG n, BLASLONG m, IFLOAT *input, BLASLONG lda, IFLOAT *output) { + const int sve_size_bf16 = svcnth(); + const int num_accumulators = sve_size_bf16 >> 1; + const int m_sve_accumulators = m & -num_accumulators; + + const int n4 = n & -4; + const int n_rest = n - n4; + + const int m2 = m & -2; + const int m_rest = m - m2; + + size_t m_step = 0; + + for (; m_step < m_sve_accumulators; m_step += num_accumulators) { + const uint16_t* inner_input = input; + + // Potential for vld1q here with transpose + for (int n_step = 0; n_step < n4; n_step += 4) { + for (int line = 0; line < num_accumulators; line += 4) { + uint16x4_t a_vec0 = vld1_u16(inner_input + line * lda); + uint16x4_t a_vec1 = vld1_u16(inner_input + (line + 1) * lda); + uint16x4_t a_vec2 = vld1_u16(inner_input + (line + 2) * lda); + uint16x4_t a_vec3 = vld1_u16(inner_input + (line + 3) * lda); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + vst1_u16(output + 8, a_vec2); + vst1_u16(output + 12, a_vec3); + + output += 16; + } + + inner_input += 4; + } + + // Bit of padding up to 4 for any remaining K + // by the time we get here we hope the memory bandwidth is saturated + if (n_rest) { + for (BLASLONG line = 0; line < num_accumulators; line++) { + output[0] = inner_input[0]; + output[1] = n_rest == 1 ? 0 : inner_input[1]; + output[2] = n_rest <= 2 ? 0 : inner_input[2]; + output[3] = n_rest <= 3 ? 0 : inner_input[3]; + + inner_input += lda; + output += 4; + } + } + + input += lda * num_accumulators; + } + + // Any remaining blocks are done 2 at a time for ASIMD processing + for (; m_step < m2; m_step += 2) { + const uint16_t* inner_input = input; + for (size_t n_step = 0; n_step < n4; n_step += 4) { + uint16x4_t a_vec0 = vld1_u16(inner_input); + uint16x4_t a_vec1 = vld1_u16(inner_input + lda); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + + inner_input += 4; + output += 8; + } + + if (n_rest) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = inner_input[0]; + output[1] = n_rest == 1 ? 0 : inner_input[1]; + output[2] = n_rest <= 2 ? 0 : inner_input[2]; + output[3] = n_rest <= 3 ? 0 : inner_input[3]; + + inner_input += lda; + output += 4; + } + } + + input += lda * 2; + } + + // Final row is just there + if (m_rest & 1) { + for (size_t n_step = 0; n_step < n4; n_step += 4) { + uint16x4_t a_vec0 = vld1_u16(input); + + vst1_u16(output, a_vec0); + + input += 4; + output += 4; + } + + if (n_rest) { + output[0] = input[0]; + output[1] = n_rest == 1 ? 0 : input[1]; + output[2] = n_rest <= 2 ? 0 : input[2]; + output[3] = n_rest <= 3 ? 0 : input[3]; + } + } + + return 0; +} diff --git a/kernel/arm64/bgemm_ncopy_4_neoversev1.c b/kernel/arm64/bgemm_ncopy_4_neoversev1.c new file mode 100644 index 0000000000..fc68d35d92 --- /dev/null +++ b/kernel/arm64/bgemm_ncopy_4_neoversev1.c @@ -0,0 +1,124 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +int CNAME(BLASLONG n, BLASLONG m, IFLOAT *input, BLASLONG lda, IFLOAT *output) { + const int num_accumulators = 4; + const int m_accumulators = m & -4; + + const int n4 = n & -4; + const int n_rest = n - n4; + + const int m_rest = m - m_accumulators; + + for (size_t m_step = 0; m_step < m_accumulators; m_step += num_accumulators) { + const uint16_t* inner_input = input; + + // Potential for vld1q here with transpose + for (size_t n_step = 0; n_step < n4; n_step += 4) { + uint16x4_t a_vec0 = vld1_u16(inner_input + 0 * lda); + uint16x4_t a_vec1 = vld1_u16(inner_input + 1 * lda); + uint16x4_t a_vec2 = vld1_u16(inner_input + 2 * lda); + uint16x4_t a_vec3 = vld1_u16(inner_input + 3 * lda); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + vst1_u16(output + 8, a_vec2); + vst1_u16(output + 12, a_vec3); + + output += 16; + inner_input += 4; + } + + if (n_rest) { + for (BLASLONG line = 0; line < num_accumulators; line++) { + output[0] = inner_input[0]; + output[1] = n_rest == 1 ? 0 : inner_input[1]; + output[2] = n_rest <= 2 ? 0 : inner_input[2]; + output[3] = n_rest <= 3 ? 0 : inner_input[3]; + + inner_input += lda; + output += 4; + } + } + + input += lda * num_accumulators; + } + + if (m_rest & 2) { + const uint16_t* inner_input = input; + for (size_t n_step = 0; n_step < n4; n_step += 4) { + uint16x4_t a_vec0 = vld1_u16(inner_input); + uint16x4_t a_vec1 = vld1_u16(inner_input + lda); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + + inner_input += 4; + output += 8; + } + + if (n_rest) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = inner_input[0]; + output[1] = n_rest == 1 ? 0 : inner_input[1]; + output[2] = n_rest <= 2 ? 0 : inner_input[2]; + output[3] = n_rest <= 3 ? 0 : inner_input[3]; + + inner_input += lda; + output += 4; + } + } + + input += lda * 2; + } + + if (m_rest & 1) { + for (size_t n_step = 0; n_step < n4; n_step += 4) { + uint16x4_t a_vec0 = vld1_u16(input); + + vst1_u16(output, a_vec0); + + input += 4; + output += 4; + } + + if (n_rest) { + output[0] = input[0]; + output[1] = n_rest == 1 ? 0 : input[1]; + output[2] = n_rest <= 2 ? 0 : input[2]; + output[3] = n_rest <= 3 ? 0 : input[3]; + } + } + + return 0; +} diff --git a/kernel/arm64/bgemm_tcopy_2vl_neoversev1.c b/kernel/arm64/bgemm_tcopy_2vl_neoversev1.c new file mode 100644 index 0000000000..deb2e9c492 --- /dev/null +++ b/kernel/arm64/bgemm_tcopy_2vl_neoversev1.c @@ -0,0 +1,154 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +int CNAME(BLASLONG m, BLASLONG n, IFLOAT *input, BLASLONG lda, IFLOAT *output) { + const int sve_size_bf16 = svcnth(); + const int num_accumulators_sve = sve_size_bf16 >> 1; + const int num_accumulators = num_accumulators_sve; + const int incr_accumulators = 4; + + const int n_sve_accumulators = (n & -num_accumulators); + const int n2 = n & -2; + const int n_rest = n - n2; + + const int m4 = m & -4; + const int m_rest = m - m4; + + size_t n_step = 0; + + for (; n_step < n_sve_accumulators; n_step += num_accumulators) { + const uint16_t* inner_input = input; + + // Full 4x4 item transposes down the M dimension + for (size_t m_step = 0; m_step < m4; m_step += 4) { + const uint16_t* tile = inner_input; + + for (size_t line = 0; line < num_accumulators; line += incr_accumulators) { + // Load 4x4 block + uint16x4_t a_vec0 = vld1_u16(tile); + uint16x4_t a_vec1 = vld1_u16(tile + lda); + uint16x4_t a_vec2 = vld1_u16(tile + 2 * lda); + uint16x4_t a_vec3 = vld1_u16(tile + 3 * lda); + + // Transpose 4x4 blocks + uint16x4_t out_vec0 = vzip1_u16(a_vec0, a_vec1); + uint16x4_t out_vec1 = vzip2_u16(a_vec0, a_vec1); + uint16x4_t out_vec2 = vzip1_u16(a_vec2, a_vec3); + uint16x4_t out_vec3 = vzip2_u16(a_vec2, a_vec3); + + // Transpose 8x4 blocks + a_vec0 = vreinterpret_u16_u32(vzip1_u32(vreinterpret_u32_u16(out_vec0), vreinterpret_u32_u16(out_vec2))); + a_vec1 = vreinterpret_u16_u32(vzip2_u32(vreinterpret_u32_u16(out_vec0), vreinterpret_u32_u16(out_vec2))); + a_vec2 = vreinterpret_u16_u32(vzip1_u32(vreinterpret_u32_u16(out_vec1), vreinterpret_u32_u16(out_vec3))); + a_vec3 = vreinterpret_u16_u32(vzip2_u32(vreinterpret_u32_u16(out_vec1), vreinterpret_u32_u16(out_vec3))); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + vst1_u16(output + 8, a_vec2); + vst1_u16(output + 12, a_vec3); + + tile += incr_accumulators; + output += 16; + } + + inner_input += incr_accumulators * lda; + } + + if (m_rest) { + for (BLASLONG line = 0; line < num_accumulators; line++) { + output[0] = inner_input[0]; + output[1] = m_rest == 1 ? 0 : *(inner_input + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + 3 * lda); + + inner_input++; + output += 4; + } + } + + input += num_accumulators; + } + + for (; n_step < n2; n_step += 2) { + const uint16_t* inner_input = input; + for (size_t m_step = 0; m_step < m4; m_step += 4) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = *(inner_input + line); + output[1] = *(inner_input + line + lda); + output[2] = *(inner_input + line + 2 * lda); + output[3] = *(inner_input + line + 3 * lda); + + output += 4; + } + + inner_input += 4 * lda; + } + + if (m_rest) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = *(inner_input + line); + output[1] = m_rest == 1 ? 0 : *(inner_input + line + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + line + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + line + 3 * lda); + + output += 4; + } + } + + input += 2; + } + + if (n_rest & 1) { + const uint16_t* inner_input = input; + for (size_t m_step = 0; m_step < m4; m_step += 4) { + output[0] = *inner_input; + output[1] = *(inner_input + lda); + output[2] = *(inner_input + 2 * lda); + output[3] = *(inner_input + 3 * lda); + + inner_input += 4 * lda; + output += 4; + } + + if (m_rest) { + output[0] = inner_input[0]; + output[1] = m_rest == 1 ? 0 : *(inner_input + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + 3 * lda); + + output += 4; + } + } + + return 0; +} diff --git a/kernel/arm64/bgemm_tcopy_4_neoversev1.c b/kernel/arm64/bgemm_tcopy_4_neoversev1.c new file mode 100644 index 0000000000..49a6eca01a --- /dev/null +++ b/kernel/arm64/bgemm_tcopy_4_neoversev1.c @@ -0,0 +1,143 @@ +/*************************************************************************** + * Copyright (c) 2025, The OpenBLAS Project + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the OpenBLAS project nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * *****************************************************************************/ + +#include +#include + +#include "common.h" + +int CNAME(BLASLONG m, BLASLONG n, IFLOAT *input, BLASLONG lda, IFLOAT *output) { + const int num_accumulators = 4; + const int n_accumulators = (n & -num_accumulators); + const int n_rest = n - n_accumulators; + + const int m4 = m & -4; + const int m_rest = m - m4; + + for (size_t n_step = 0; n_step < n_accumulators; n_step += num_accumulators) { + const uint16_t* inner_input = input; + + // Full 4x4 item transposes down the M dimension + for (size_t m_step = 0; m_step < m4; m_step += 4) { + // Load 4x4 block + uint16x4_t a_vec0 = vld1_u16(inner_input); + uint16x4_t a_vec1 = vld1_u16(inner_input + lda); + uint16x4_t a_vec2 = vld1_u16(inner_input + 2 * lda); + uint16x4_t a_vec3 = vld1_u16(inner_input + 3 * lda); + + // Transpose 4x4 blocks + uint16x4_t out_vec0 = vzip1_u16(a_vec0, a_vec1); + uint16x4_t out_vec1 = vzip2_u16(a_vec0, a_vec1); + uint16x4_t out_vec2 = vzip1_u16(a_vec2, a_vec3); + uint16x4_t out_vec3 = vzip2_u16(a_vec2, a_vec3); + + // Transpose 8x4 blocks + a_vec0 = vreinterpret_u16_u32(vzip1_u32(vreinterpret_u32_u16(out_vec0), vreinterpret_u32_u16(out_vec2))); + a_vec1 = vreinterpret_u16_u32(vzip2_u32(vreinterpret_u32_u16(out_vec0), vreinterpret_u32_u16(out_vec2))); + a_vec2 = vreinterpret_u16_u32(vzip1_u32(vreinterpret_u32_u16(out_vec1), vreinterpret_u32_u16(out_vec3))); + a_vec3 = vreinterpret_u16_u32(vzip2_u32(vreinterpret_u32_u16(out_vec1), vreinterpret_u32_u16(out_vec3))); + + vst1_u16(output, a_vec0); + vst1_u16(output + 4, a_vec1); + vst1_u16(output + 8, a_vec2); + vst1_u16(output + 12, a_vec3); + + inner_input += 4 * lda; + output += 16; + } + + if (m_rest) { + for (BLASLONG line = 0; line < num_accumulators; line++) { + output[0] = inner_input[0]; + output[1] = m_rest == 1 ? 0 : *(inner_input + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + 3 * lda); + + inner_input++; + output += 4; + } + } + + input += num_accumulators; + } + + // Extract two remaining rows as 128-bit vector paired + if (n_rest & 2) { + const uint16_t* inner_input = input; + for (size_t m_step = 0; m_step < m4; m_step += 4) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = *(inner_input + line); + output[1] = *(inner_input + line + lda); + output[2] = *(inner_input + line + 2 * lda); + output[3] = *(inner_input + line + 3 * lda); + + output += 4; + } + + inner_input += 4 * lda; + } + + if (m_rest) { + for (BLASLONG line = 0; line < 2; line++) { + output[0] = *(inner_input + line); + output[1] = m_rest == 1 ? 0 : *(inner_input + line + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + line + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + line + 3 * lda); + + output += 4; + } + } + + input += 2; + } + + // Flatten final row + if (n_rest & 1) { + const uint16_t* inner_input = input; + for (size_t m_step = 0; m_step < m4; m_step += 4) { + output[0] = *inner_input; + output[1] = *(inner_input + lda); + output[2] = *(inner_input + 2 * lda); + output[3] = *(inner_input + 3 * lda); + + inner_input += 4 * lda; + output += 4; + } + + if (m_rest) { + output[0] = inner_input[0]; + output[1] = m_rest == 1 ? 0 : *(inner_input + lda); + output[2] = m_rest <= 2 ? 0 : *(inner_input + 2 * lda); + output[3] = m_rest <= 3 ? 0 : *(inner_input + 3 * lda); + + output += 4; + } + } + + return 0; +} diff --git a/param.h b/param.h index 77b04fe433..d0ee246e83 100644 --- a/param.h +++ b/param.h @@ -3598,15 +3598,15 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #undef BGEMM_ALIGN_K #undef BGEMM_DEFAULT_UNROLL_M #undef BGEMM_DEFAULT_UNROLL_N -#define BGEMM_ALIGN_K 8 +#define BGEMM_ALIGN_K 4 +#define BGEMM_DEFAULT_UNROLL_M 8 #define BGEMM_DEFAULT_UNROLL_N 4 -#define BGEMM_DEFAULT_UNROLL_M 4 #undef SBGEMM_ALIGN_K #undef SBGEMM_DEFAULT_UNROLL_M #undef SBGEMM_DEFAULT_UNROLL_N -#define SBGEMM_ALIGN_K 8 -#define SBGEMM_DEFAULT_UNROLL_M 4 +#define SBGEMM_ALIGN_K 4 +#define SBGEMM_DEFAULT_UNROLL_M 8 #define SBGEMM_DEFAULT_UNROLL_N 4 #define SGEMM_DEFAULT_UNROLL_M 16 From 5f47b872f1d0f1df439c8de9f0ac3ec68528f1e9 Mon Sep 17 00:00:00 2001 From: Chris Sidebottom Date: Sun, 10 Aug 2025 17:56:05 +0000 Subject: [PATCH 100/360] Remove older kernels for BGEMM on NEOVERSEV1 --- kernel/arm64/bgemm_kernel_4x4_neoversev1.c | 51 --- .../arm64/bgemm_kernel_4x4_neoversev1_impl.c | 430 ------------------ kernel/arm64/sbgemm_kernel_4x4_neoversev1.c | 46 -- .../arm64/sbgemm_kernel_4x4_neoversev1_impl.c | 414 ----------------- kernel/arm64/sbgemm_ncopy_4_neoversev1.c | 148 ------ kernel/arm64/sbgemm_tcopy_4_neoversev1.c | 361 --------------- 6 files changed, 1450 deletions(-) delete mode 100644 kernel/arm64/bgemm_kernel_4x4_neoversev1.c delete mode 100644 kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c delete mode 100644 kernel/arm64/sbgemm_kernel_4x4_neoversev1.c delete mode 100644 kernel/arm64/sbgemm_kernel_4x4_neoversev1_impl.c delete mode 100644 kernel/arm64/sbgemm_ncopy_4_neoversev1.c delete mode 100644 kernel/arm64/sbgemm_tcopy_4_neoversev1.c diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1.c deleted file mode 100644 index 7067413ff9..0000000000 --- a/kernel/arm64/bgemm_kernel_4x4_neoversev1.c +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ - -#include -#include - -#include "common.h" - -#define ALPHA_ONE -#include "bgemm_kernel_4x4_neoversev1_impl.c" -#undef ALPHA_ONE -#undef UPDATE_C -#include "bgemm_kernel_4x4_neoversev1_impl.c" - -int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, - FLOAT *C, BLASLONG ldc) { - bfloat16_t alpha_bf16; - memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); - float alpha_f32 = vcvtah_f32_bf16(alpha_bf16); - - if (alpha_f32 == 1.0f) - return bgemm_kernel_neoversev1_alpha_one(m, n, k, alpha, A, B, C, ldc); - else - return bgemm_kernel_neoversev1_alpha(m, n, k, alpha, A, B, C, ldc); - return 0; -} diff --git a/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c b/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c deleted file mode 100644 index 1f49d6200d..0000000000 --- a/kernel/arm64/bgemm_kernel_4x4_neoversev1_impl.c +++ /dev/null @@ -1,430 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ - -#include -#include - -#include "common.h" - -#define INIT_C(M, N) mc##M##N = svdup_f32(0); - -#define MATMUL(M, N) mc##M##N = svbfmmla(mc##M##N, ma##M, mb##N); - -#define INIT_C_4x4 \ - do { \ - INIT_C(0, 0); \ - INIT_C(0, 1); \ - INIT_C(1, 0); \ - INIT_C(1, 1); \ - } while (0); - -#ifdef ALPHA_ONE -#define UPDATE_C(PG16, PG32, PTR, TMP32, TMP16, SRC32) \ - do { \ - TMP32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ - TMP32 = svadd_z((PG32), SRC32, TMP32); \ - TMP16 = svcvt_bf16_f32_z((PG32), TMP32); \ - TMP16 = svuzp1_bf16(TMP16, TMP16); \ - svst1_bf16((PG16), (PTR), TMP16); \ - } while (0) -#else -#define UPDATE_C(PG16, PG32, PTR, TMP32, TMP16, SRC32) \ - do { \ - TMP32 = svreinterpret_f32_u32(svld1uh_u32((PG16), (uint16_t*)PTR)); \ - TMP32 = svmad_z((PG32), svalpha, SRC32, TMP32); \ - TMP16 = svcvt_bf16_f32_z((PG32), TMP32); \ - TMP16 = svuzp1_bf16(TMP16, TMP16); \ - svst1_bf16((PG16), (PTR), TMP16); \ - } while (0) -#endif - -#define ZIP_EVEN_ELEMENTS(PG, mc0, mc1, tmp, vc) \ - do { \ - (tmp) = svuzp1_f32((mc0), (mc1)); \ - (vc) = svcompact_f32((PG), (tmp)); \ - } while (0) - -#define ZIP_ODD_ELEMENTS(PG, mc0, mc1, tmp, vc) \ - do { \ - (tmp) = svuzp2_f32((mc0), (mc1)); \ - (vc) = svcompact_f32((PG), (tmp)); \ - } while (0) - -#define ACCUMULATE_LAST4_TO_FIRST4(M, N, TMP) \ - do { \ - TMP = svext_f32(mc##M##N, mc##M##N, 4); \ - mc##M##N = svadd_f32_z(svptrue_b32(), mc##M##N, (TMP)); \ - } while (0) - -#ifdef ALPHA_ONE -int bgemm_kernel_neoversev1_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, - FLOAT alpha, IFLOAT *A, IFLOAT *B, - FLOAT *C, BLASLONG ldc) -#else -int bgemm_kernel_neoversev1_alpha(BLASLONG m, BLASLONG n, BLASLONG k, - FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, - BLASLONG ldc) -#endif -{ - BLASLONG pad_k = (k + 7) & ~7; - svbfloat16_t ma0, ma1, mb0, mb1; - svfloat32_t mc00, mc01, mc10, mc11, vc0, vc1, vc2, vc3; - svfloat32_t tmp; -#ifndef ALPHA_ONE - bfloat16_t alpha_bf16; - memcpy(&alpha_bf16, &alpha, sizeof(bfloat16_t)); - svfloat32_t svalpha = svdup_f32(vcvtah_f32_bf16(alpha_bf16)); -#endif - - svbool_t pg16_all = svptrue_b16(); - - svbool_t pg32_first_1 = svwhilelt_b32(0, 1); - svbool_t pg32_first_2 = svwhilelt_b32(0, 2); - svbool_t pg32_first_4 = svwhilelt_b32(0, 4); - - svbool_t pg16_first_1 = svwhilelt_b16(0, 1); - svbool_t pg16_first_2 = svwhilelt_b16(0, 2); - svbool_t pg16_first_4 = svwhilelt_b16(0, 4); - - svbool_t pg32_select_first_2_per_quadword = svdupq_b32(1, 1, 0, 0); - - bfloat16_t *ptr_a = (bfloat16_t *)A; - bfloat16_t *ptr_b = (bfloat16_t *)B; - bfloat16_t *ptr_c = (bfloat16_t *)C; - - bfloat16_t *ptr_a0; - bfloat16_t *ptr_b0; - bfloat16_t *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; - - svfloat32_t tmp32; - svbfloat16_t tmp16; - - for (BLASLONG j = 0; j < n / 4; j++) { - ptr_c0 = ptr_c; - ptr_c1 = ptr_c0 + ldc; - ptr_c2 = ptr_c1 + ldc; - ptr_c3 = ptr_c2 + ldc; - ptr_c += 4 * ldc; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C_4x4; - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - MATMUL(1, 0); - MATMUL(1, 1); - - ptr_a0 += 32; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 1, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc1); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc2); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc3); - - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, tmp32, tmp16, vc1); - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c2, tmp32, tmp16, vc2); - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c3, tmp32, tmp16, vc3); - - ptr_c0 += 4; - ptr_c1 += 4; - ptr_c2 += 4; - ptr_c3 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - - ptr_b0 = ptr_b; - INIT_C(0, 0); - INIT_C(0, 1); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - - ptr_a0 += 16; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - - vc0 = svuzp1(mc00, mc00); - vc1 = svuzp2(mc00, mc00); - vc2 = svuzp1(mc01, mc01); - vc3 = svuzp2(mc01, mc01); - - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, tmp32, tmp16, vc1); - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c2, tmp32, tmp16, vc2); - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c3, tmp32, tmp16, vc3); - - ptr_c0 += 2; - ptr_c1 += 2; - ptr_c2 += 2; - ptr_c3 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(0, 1); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - - ptr_a0 += 16; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - - // use compact is more straightforward - vc1 = svuzp2(mc00, mc00); - vc3 = svuzp2(mc01, mc01); - - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, tmp32, tmp16, vc1); - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c2, tmp32, tmp16, mc01); - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c3, tmp32, tmp16, vc3); - } - - ptr_b += 4 * pad_k; - } - - if (n & 2) { - ptr_c0 = ptr_c; - ptr_c1 = ptr_c0 + ldc; - ptr_c += 2 * ldc; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(1, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - MATMUL(1, 0); - - ptr_a0 += 32; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc2); - - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c1, tmp32, tmp16, vc2); - - ptr_c0 += 4; - ptr_c1 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - vc0 = svuzp1(mc00, mc00); - vc1 = svuzp2(mc00, mc00); - - - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c1, tmp32, tmp16, vc1); - - ptr_c0 += 2; - ptr_c1 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - INIT_C(0, 0); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - MATMUL(0, 0); - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - vc1 = svuzp2(mc00, mc00); - - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c1, tmp32, tmp16, vc1); - } - - ptr_b += 2 * pad_k; - } - - if (n & 1) { // TODO: this case seems a overhead. find out whether it's in our - // case. - ptr_c0 = ptr_c; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(1, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - MATMUL(1, 0); - - ptr_a0 += 32; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - - UPDATE_C(pg16_first_4, pg32_first_4, ptr_c0, tmp32, tmp16, vc0); - - ptr_c0 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - - vc0 = svuzp1(mc00, mc00); - - UPDATE_C(pg16_first_2, pg32_first_2, ptr_c0, tmp32, tmp16, vc0); - - ptr_c0 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - for (BLASLONG p = 0; p < pad_k; p += 8) { - - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - - UPDATE_C(pg16_first_1, pg32_first_1, ptr_c0, tmp32, tmp16, mc00); - } - } - - return 0; -} diff --git a/kernel/arm64/sbgemm_kernel_4x4_neoversev1.c b/kernel/arm64/sbgemm_kernel_4x4_neoversev1.c deleted file mode 100644 index 889b5fc5b8..0000000000 --- a/kernel/arm64/sbgemm_kernel_4x4_neoversev1.c +++ /dev/null @@ -1,46 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2024-2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ - -#include - -#include "common.h" - -#define ALPHA_ONE -#include "sbgemm_kernel_4x4_neoversev1_impl.c" -#undef ALPHA_ONE -#include "sbgemm_kernel_4x4_neoversev1_impl.c" - -int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha, IFLOAT *A, IFLOAT *B, - FLOAT *C, BLASLONG ldc) { - if (alpha == 1.0f) - return sbgemm_kernel_neoversev1_alpha_one(m, n, k, alpha, A, B, C, ldc); - else - return sbgemm_kernel_neoversev1_alpha(m, n, k, alpha, A, B, C, ldc); - return 0; -} - diff --git a/kernel/arm64/sbgemm_kernel_4x4_neoversev1_impl.c b/kernel/arm64/sbgemm_kernel_4x4_neoversev1_impl.c deleted file mode 100644 index b6d9e9816c..0000000000 --- a/kernel/arm64/sbgemm_kernel_4x4_neoversev1_impl.c +++ /dev/null @@ -1,414 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2024-2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ - -#include - -#include "common.h" - -#define INIT_C(M, N) mc##M##N = svdup_f32(0); - -#define MATMUL(M, N) mc##M##N = svbfmmla(mc##M##N, ma##M, mb##N); - -#define INIT_C_4x4 \ - do { \ - INIT_C(0, 0); \ - INIT_C(0, 1); \ - INIT_C(1, 0); \ - INIT_C(1, 1); \ - } while (0); - -#ifdef ALPHA_ONE -#define UPDATE_C(PG, PTR, DST, SRC) \ - do { \ - DST = svld1_f32((PG), (PTR)); \ - DST = svadd_z((PG), SRC, DST); \ - svst1_f32((PG), (PTR), DST); \ - } while (0); -#else -#define UPDATE_C(PG, PTR, DST, SRC) \ - do { \ - DST = svld1_f32((PG), (PTR)); \ - DST = svmad_z((PG), svalpha, SRC, DST); \ - svst1_f32((PG), (PTR), DST); \ - } while (0); -#endif - -#define ZIP_EVEN_ELEMENTS(PG, mc0, mc1, tmp, vc) \ - do { \ - (tmp) = svuzp1_f32((mc0), (mc1)); \ - (vc) = svcompact_f32((PG), (tmp)); \ - } while (0) - -#define ZIP_ODD_ELEMENTS(PG, mc0, mc1, tmp, vc) \ - do { \ - (tmp) = svuzp2_f32((mc0), (mc1)); \ - (vc) = svcompact_f32((PG), (tmp)); \ - } while (0) - -#define ACCUMULATE_LAST4_TO_FIRST4(M, N, TMP) \ - do { \ - TMP = svext_f32(mc##M##N, mc##M##N, 4); \ - mc##M##N = svadd_f32_z(svptrue_b32(), mc##M##N, (TMP)); \ - } while (0) - -#ifdef ALPHA_ONE -int sbgemm_kernel_neoversev1_alpha_one(BLASLONG m, BLASLONG n, BLASLONG k, - FLOAT alpha, IFLOAT *A, IFLOAT *B, - FLOAT *C, BLASLONG ldc) -#else -int sbgemm_kernel_neoversev1_alpha(BLASLONG m, BLASLONG n, BLASLONG k, - FLOAT alpha, IFLOAT *A, IFLOAT *B, FLOAT *C, - BLASLONG ldc) -#endif -{ - - BLASLONG pad_k = (k + 7) & ~7; - svbfloat16_t ma0, ma1, mb0, mb1; - svfloat32_t mc00, mc01, mc10, mc11, vc0, vc1, vc2, vc3, oc0, oc1, oc2, oc3; - svfloat32_t tmp; - svfloat32_t svalpha = svdup_f32(alpha); - - svbool_t pg16_all = svptrue_b16(); - - svbool_t pg32_first_1 = svwhilelt_b32(0, 1); - svbool_t pg32_first_2 = svwhilelt_b32(0, 2); - svbool_t pg32_first_4 = svwhilelt_b32(0, 4); - - svbool_t pg32_select_first_2_per_quadword = svdupq_b32(1, 1, 0, 0); - - bfloat16_t *ptr_a = (bfloat16_t *)A; - bfloat16_t *ptr_b = (bfloat16_t *)B; - FLOAT *ptr_c = C; - - bfloat16_t *ptr_a0; - bfloat16_t *ptr_b0; - FLOAT *ptr_c0, *ptr_c1, *ptr_c2, *ptr_c3; - - for (BLASLONG j = 0; j < n / 4; j++) { - ptr_c0 = ptr_c; - ptr_c1 = ptr_c0 + ldc; - ptr_c2 = ptr_c1 + ldc; - ptr_c3 = ptr_c2 + ldc; - ptr_c += 4 * ldc; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C_4x4; - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - MATMUL(1, 0); - MATMUL(1, 1); - - ptr_a0 += 32; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 1, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc1); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc2); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc01, mc11, tmp, vc3); - - UPDATE_C(pg32_first_4, ptr_c0, oc0, vc0); - UPDATE_C(pg32_first_4, ptr_c1, oc1, vc1); - UPDATE_C(pg32_first_4, ptr_c2, oc2, vc2) - UPDATE_C(pg32_first_4, ptr_c3, oc3, vc3) - - ptr_c0 += 4; - ptr_c1 += 4; - ptr_c2 += 4; - ptr_c3 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - - ptr_b0 = ptr_b; - INIT_C(0, 0); - INIT_C(0, 1); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - - ptr_a0 += 16; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - - vc0 = svuzp1(mc00, mc00); - vc1 = svuzp2(mc00, mc00); - vc2 = svuzp1(mc01, mc01); - vc3 = svuzp2(mc01, mc01); - - UPDATE_C(pg32_first_2, ptr_c0, oc0, vc0); - UPDATE_C(pg32_first_2, ptr_c1, oc1, vc1); - UPDATE_C(pg32_first_2, ptr_c2, oc2, vc2); - UPDATE_C(pg32_first_2, ptr_c3, oc3, vc3); - - ptr_c0 += 2; - ptr_c1 += 2; - ptr_c2 += 2; - ptr_c3 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(0, 1); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - mb1 = svld1_bf16(pg16_all, ptr_b0 + 16); - - MATMUL(0, 0); - MATMUL(0, 1); - - ptr_a0 += 16; - ptr_b0 += 32; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(0, 1, tmp); - - // use compact is more straightforward - vc1 = svuzp2(mc00, mc00); - vc3 = svuzp2(mc01, mc01); - - UPDATE_C(pg32_first_1, ptr_c0, oc0, mc00); - UPDATE_C(pg32_first_1, ptr_c1, oc1, vc1); - UPDATE_C(pg32_first_1, ptr_c2, oc2, mc01); - UPDATE_C(pg32_first_1, ptr_c3, oc3, vc3); - } - - ptr_b += 4 * pad_k; - } - - if (n & 2) { - ptr_c0 = ptr_c; - ptr_c1 = ptr_c0 + ldc; - ptr_c += 2 * ldc; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(1, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - MATMUL(1, 0); - - ptr_a0 += 32; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - ZIP_ODD_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc2); - - UPDATE_C(pg32_first_4, ptr_c0, oc0, vc0); - UPDATE_C(pg32_first_4, ptr_c1, oc2, vc2); - - ptr_c0 += 4; - ptr_c1 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - vc0 = svuzp1(mc00, mc00); - vc1 = svuzp2(mc00, mc00); - - UPDATE_C(pg32_first_2, ptr_c0, oc0, vc0); - UPDATE_C(pg32_first_2, ptr_c1, oc1, vc1); - - ptr_c0 += 2; - ptr_c1 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - INIT_C(0, 0); - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - MATMUL(0, 0); - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - vc1 = svuzp2(mc00, mc00); - - UPDATE_C(pg32_first_1, ptr_c0, oc0, mc00); - UPDATE_C(pg32_first_1, ptr_c1, oc1, vc1); - } - - ptr_b += 2 * pad_k; - } - - if (n & 1) { // TODO: this case seems a overhead. find out whether it's in our - // case. - ptr_c0 = ptr_c; - ptr_a = (bfloat16_t *)A; - - for (BLASLONG i = 0; i < m / 4; i++) { - ptr_a0 = ptr_a; - ptr_a += 4 * pad_k; - - ptr_b0 = ptr_b; - - INIT_C(0, 0); - INIT_C(1, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - ma1 = svld1_bf16(pg16_all, ptr_a0 + 16); - - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - MATMUL(1, 0); - - ptr_a0 += 32; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - ACCUMULATE_LAST4_TO_FIRST4(1, 0, tmp); - - ZIP_EVEN_ELEMENTS(pg32_select_first_2_per_quadword, mc00, mc10, tmp, vc0); - - UPDATE_C(pg32_first_4, ptr_c0, oc0, vc0); - - ptr_c0 += 4; - } - - if (m & 2) { - ptr_a0 = ptr_a; - ptr_a += 2 * pad_k; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - - for (BLASLONG p = 0; p < pad_k; p += 8) { - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - - vc0 = svuzp1(mc00, mc00); - - UPDATE_C(pg32_first_2, ptr_c0, oc0, vc0); - - ptr_c0 += 2; - } - - if (m & 1) { - ptr_a0 = ptr_a; - ptr_b0 = ptr_b; - - INIT_C(0, 0); - for (BLASLONG p = 0; p < pad_k; p += 8) { - - ma0 = svld1_bf16(pg16_all, ptr_a0); - mb0 = svld1_bf16(pg16_all, ptr_b0); - - MATMUL(0, 0); - ptr_a0 += 16; - ptr_b0 += 16; - } - - ACCUMULATE_LAST4_TO_FIRST4(0, 0, tmp); - - UPDATE_C(pg32_first_1, ptr_c0, oc0, mc00); - } - } - - return 0; -} diff --git a/kernel/arm64/sbgemm_ncopy_4_neoversev1.c b/kernel/arm64/sbgemm_ncopy_4_neoversev1.c deleted file mode 100644 index 100f5c68ea..0000000000 --- a/kernel/arm64/sbgemm_ncopy_4_neoversev1.c +++ /dev/null @@ -1,148 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2024-2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ - -#include - -#include "common.h" - -int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { - IFLOAT *a_offset; - IFLOAT *a_offsetx[4]; - IFLOAT *b_offset; - a_offset = a; - b_offset = b; - - bfloat16_t zero_value_bf16; - *((uint16_t *)(&zero_value_bf16)) = 0; - - svbool_t pg16_all = svptrue_b16(); // 16 elements for sve-256 machine. - svbool_t pg16_first_8 = svwhilelt_b16(0, 8); - - svbfloat16_t v0, v1, v2, v3; - svuint64_t t0, t1; - - BLASLONG rest = m & 7; - svbool_t pg16_rest = svwhilelt_b16_s32(0, rest); - - for (BLASLONG j = 0; j < n / 4; j++) { - a_offsetx[0] = a_offset; - a_offsetx[1] = a_offsetx[0] + lda; - a_offsetx[2] = a_offsetx[1] + lda; - a_offsetx[3] = a_offsetx[2] + lda; - a_offset += 4 * lda; - - for (BLASLONG i = 0; i < m / 8; i++) { - v0 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[0]); - v1 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[1]); - v2 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[2]); - v3 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[3]); - - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - t1 = svzip1_u64(svreinterpret_u64_bf16(v2), svreinterpret_u64_bf16(v3)); - - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset + 16, - svreinterpret_bf16_u64(t1)); - - a_offsetx[0] += 8; - a_offsetx[1] += 8; - a_offsetx[2] += 8; - a_offsetx[3] += 8; - - b_offset += 32; - } - - if (rest) { // remainder along k dim - v0 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[0]); - v1 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[1]); - v2 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[2]); - v3 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[3]); - - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - t1 = svzip1_u64(svreinterpret_u64_bf16(v2), svreinterpret_u64_bf16(v3)); - - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset + 16, - svreinterpret_bf16_u64(t1)); - - b_offset += 32; - } - } - - if (n & 2) { - a_offsetx[0] = a_offset; - a_offsetx[1] = a_offsetx[0] + lda; - a_offset += 2 * lda; - - for (BLASLONG i = 0; i < m / 8; i++) { - v0 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[0]); - v1 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[1]); - - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - - b_offset += 16; - a_offsetx[0] += 8; - a_offsetx[1] += 8; - } - - if (rest) { // remainder along k dim - v0 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[0]); - v1 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[1]); - - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - - b_offset += 16; - } - } - - if (n & 1) { - a_offsetx[0] = a_offset; - - for (BLASLONG i = 0; i < m / 8; i++) { - v0 = svld1_bf16(pg16_first_8, (bfloat16_t *)a_offsetx[0]); - v1 = svdup_bf16(zero_value_bf16); - - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - - b_offset += 16; - a_offsetx[0] += 8; - } - - if (rest) { // remainder along k dim - v0 = svld1_bf16(pg16_rest, (bfloat16_t *)a_offsetx[0]); - v1 = svdup_bf16(zero_value_bf16); - t0 = svzip1_u64(svreinterpret_u64_bf16(v0), svreinterpret_u64_bf16(v1)); - svst1_bf16(pg16_all, (bfloat16_t *)b_offset, svreinterpret_bf16_u64(t0)); - } - } - - return 0; -} diff --git a/kernel/arm64/sbgemm_tcopy_4_neoversev1.c b/kernel/arm64/sbgemm_tcopy_4_neoversev1.c deleted file mode 100644 index 16c71559d8..0000000000 --- a/kernel/arm64/sbgemm_tcopy_4_neoversev1.c +++ /dev/null @@ -1,361 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2024-2025, The OpenBLAS Project - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the OpenBLAS project nor the names of - * its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * *****************************************************************************/ -#include "common.h" -#include -#include - -int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) { - BLASLONG pad_m = ((m + 7) & ~7); - BLASLONG rest = (m & 7); // rest along m dim - - IFLOAT *a_offset; - IFLOAT *a_offset0, *a_offset1, *a_offset2, *a_offset3; - IFLOAT *a_offset4, *a_offset5, *a_offset6, *a_offset7; - - IFLOAT *b_offset; - IFLOAT *b_offset0, *b_offset1; - - a_offset = a; - b_offset = b; - - svuint16_t c0, c1, c2, c3, c4, c5, c6, c7; - svuint16_t t0, t1, t2, t3; - svuint32_t m00, m01, m10, m11; - svuint64_t st_offsets_0, st_offsets_1; - - svbool_t pg16_first_4 = svwhilelt_b16(0, 4); - svbool_t pg16_first_8 = svwhilelt_b16(0, 8); - - svbool_t pg64_first_4 = svwhilelt_b64(0, 4); - - uint32_t sizeof_u64 = 8; - uint64_t _st_offsets_0[4] = { - 0 * sizeof_u64, - 1 * sizeof_u64, - 4 * sizeof_u64, - 5 * sizeof_u64, - }; - - uint64_t _st_offsets_1[4] = { - 2 * sizeof_u64, - 3 * sizeof_u64, - 6 * sizeof_u64, - 7 * sizeof_u64, - }; - - st_offsets_0 = svld1_u64(pg64_first_4, _st_offsets_0); - st_offsets_1 = svld1_u64(pg64_first_4, _st_offsets_1); - - for (BLASLONG j = 0; j < n / 8; j++) { - a_offset0 = a_offset; - a_offset1 = a_offset0 + lda; - a_offset2 = a_offset1 + lda; - a_offset3 = a_offset2 + lda; - a_offset4 = a_offset3 + lda; - a_offset5 = a_offset4 + lda; - a_offset6 = a_offset5 + lda; - a_offset7 = a_offset6 + lda; - a_offset += 8; - - b_offset0 = b_offset; - b_offset1 = b_offset0 + 4 * pad_m; - - b_offset += 8 * pad_m; - for (BLASLONG i = 0; i < m / 8; i++) { - // transpose 8x8 matrix and pack into two 4x8 block consists of two 2x4 - // small blocks - c0 = svld1_u16(pg16_first_8, a_offset0); - c1 = svld1_u16(pg16_first_8, a_offset1); - c2 = svld1_u16(pg16_first_8, a_offset2); - c3 = svld1_u16(pg16_first_8, a_offset3); - c4 = svld1_u16(pg16_first_8, a_offset4); - c5 = svld1_u16(pg16_first_8, a_offset5); - c6 = svld1_u16(pg16_first_8, a_offset6); - c7 = svld1_u16(pg16_first_8, a_offset7); - - t0 = svzip1_u16(c0, c1); - t1 = svzip1_u16(c2, c3); - t2 = svzip1_u16(c4, c5); - t3 = svzip1_u16(c6, c7); - - m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m10 = svzip2_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - m11 = svzip2_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_1, svreinterpret_u64_u32(m01)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, - st_offsets_0, svreinterpret_u64_u32(m10)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, - st_offsets_1, svreinterpret_u64_u32(m11)); - - a_offset0 += 8 * lda; - a_offset1 += 8 * lda; - a_offset2 += 8 * lda; - a_offset3 += 8 * lda; - a_offset4 += 8 * lda; - a_offset5 += 8 * lda; - a_offset6 += 8 * lda; - a_offset7 += 8 * lda; - - b_offset0 += 32; - b_offset1 += 32; - } - - if (rest) { - c0 = svld1_u16(pg16_first_8, a_offset0); - c1 = (rest >= 2 ? svld1_u16(pg16_first_8, a_offset1) : svdup_u16(0)); - c2 = (rest >= 3 ? svld1_u16(pg16_first_8, a_offset2) : svdup_u16(0)); - c3 = (rest >= 4 ? svld1_u16(pg16_first_8, a_offset3) : svdup_u16(0)); - c4 = (rest >= 5 ? svld1_u16(pg16_first_8, a_offset4) : svdup_u16(0)); - c5 = (rest >= 6 ? svld1_u16(pg16_first_8, a_offset5) : svdup_u16(0)); - c6 = (rest == 7 ? svld1_u16(pg16_first_8, a_offset6) : svdup_u16(0)); - c7 = (svdup_u16(0)); - - t0 = svzip1_u16(c0, c1); - t1 = svzip1_u16(c2, c3); - t2 = svzip1_u16(c4, c5); - t3 = svzip1_u16(c6, c7); - - m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m10 = svzip2_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - m11 = svzip2_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_1, svreinterpret_u64_u32(m01)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, - st_offsets_0, svreinterpret_u64_u32(m10)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset1, - st_offsets_1, svreinterpret_u64_u32(m11)); - } - } - - if (n & 4) { - a_offset0 = a_offset; - a_offset1 = a_offset0 + lda; - a_offset2 = a_offset1 + lda; - a_offset3 = a_offset2 + lda; - a_offset4 = a_offset3 + lda; - a_offset5 = a_offset4 + lda; - a_offset6 = a_offset5 + lda; - a_offset7 = a_offset6 + lda; - a_offset += 4; - - b_offset0 = b_offset; - b_offset += 4 * pad_m; - - for (BLASLONG i = 0; i < m / 8; i++) { - // transpose 8x8 matrix and pack into two 4x8 block consists of two 2x4 - // small blocks - c0 = svld1_u16(pg16_first_4, a_offset0); - c1 = svld1_u16(pg16_first_4, a_offset1); - c2 = svld1_u16(pg16_first_4, a_offset2); - c3 = svld1_u16(pg16_first_4, a_offset3); - c4 = svld1_u16(pg16_first_4, a_offset4); - c5 = svld1_u16(pg16_first_4, a_offset5); - c6 = svld1_u16(pg16_first_4, a_offset6); - c7 = svld1_u16(pg16_first_4, a_offset7); - - t0 = svzip1_u16(c0, c1); - t1 = svzip1_u16(c2, c3); - t2 = svzip1_u16(c4, c5); - t3 = svzip1_u16(c6, c7); - - m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_1, svreinterpret_u64_u32(m01)); - - a_offset0 += 8 * lda; - a_offset1 += 8 * lda; - a_offset2 += 8 * lda; - a_offset3 += 8 * lda; - a_offset4 += 8 * lda; - a_offset5 += 8 * lda; - a_offset6 += 8 * lda; - a_offset7 += 8 * lda; - - b_offset0 += 32; - } - - if (rest) { - c0 = svld1_u16(pg16_first_4, a_offset0); // rest >= 1 - c1 = (rest >= 2 ? svld1_u16(pg16_first_4, a_offset1) : svdup_u16(0)); - c2 = (rest >= 3 ? svld1_u16(pg16_first_4, a_offset2) : svdup_u16(0)); - c3 = (rest >= 4 ? svld1_u16(pg16_first_4, a_offset3) : svdup_u16(0)); - c4 = (rest >= 5 ? svld1_u16(pg16_first_4, a_offset4) : svdup_u16(0)); - c5 = (rest >= 6 ? svld1_u16(pg16_first_4, a_offset5) : svdup_u16(0)); - c6 = (rest == 7 ? svld1_u16(pg16_first_4, a_offset6) : svdup_u16(0)); - c7 = (svdup_u16(0)); - - t0 = svzip1_u16(c0, c1); - t1 = svzip1_u16(c2, c3); - t2 = svzip1_u16(c4, c5); - t3 = svzip1_u16(c6, c7); - - m00 = svzip1_u32(svreinterpret_u32_u16(t0), svreinterpret_u32_u16(t1)); - m01 = svzip1_u32(svreinterpret_u32_u16(t2), svreinterpret_u32_u16(t3)); - - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_0, svreinterpret_u64_u32(m00)); - svst1_scatter_u64offset_u64(pg64_first_4, (uint64_t *)b_offset0, - st_offsets_1, svreinterpret_u64_u32(m01)); - } - } - - if (n & 2) { - a_offset0 = a_offset; - a_offset1 = a_offset0 + lda; - a_offset2 = a_offset1 + lda; - a_offset3 = a_offset2 + lda; - a_offset4 = a_offset3 + lda; - a_offset5 = a_offset4 + lda; - a_offset6 = a_offset5 + lda; - a_offset7 = a_offset6 + lda; - a_offset += 2; - - b_offset0 = b_offset; - b_offset1 = b_offset0 + 8; - - b_offset += 2 * pad_m; - - for (BLASLONG i = 0; i < m / 8; i++) { - for (BLASLONG line = 0; line < 2; line++) { - b_offset0[line * 4] = a_offset0[line]; - b_offset0[line * 4 + 1] = a_offset1[line]; - b_offset0[line * 4 + 2] = a_offset2[line]; - b_offset0[line * 4 + 3] = a_offset3[line]; - - b_offset1[line * 4] = a_offset4[line]; - b_offset1[line * 4 + 1] = a_offset5[line]; - b_offset1[line * 4 + 2] = a_offset6[line]; - b_offset1[line * 4 + 3] = a_offset7[line]; - } - b_offset0 += 16; - b_offset1 += 16; - - a_offset0 += 8 * lda; - a_offset1 += 8 * lda; - a_offset2 += 8 * lda; - a_offset3 += 8 * lda; - a_offset4 += 8 * lda; - a_offset5 += 8 * lda; - a_offset6 += 8 * lda; - a_offset7 += 8 * lda; - } - - if (rest) { - for (BLASLONG line = 0; line < 2; line++) { - b_offset0[line * 4] = a_offset0[line]; - b_offset0[line * 4 + 1] = rest == 1 ? 0 : a_offset1[line]; - b_offset0[line * 4 + 2] = rest <= 2 ? 0 : a_offset2[line]; - b_offset0[line * 4 + 3] = rest <= 3 ? 0 : a_offset3[line]; - - b_offset1[line * 4] = rest <= 4 ? 0 : a_offset4[line]; - b_offset1[line * 4 + 1] = rest <= 5 ? 0 : a_offset5[line]; - b_offset1[line * 4 + 2] = rest <= 6 ? 0 : a_offset6[line]; - b_offset1[line * 4 + 3] = 0; - } - } - } - - if (n & 1) { - a_offset0 = a_offset; - a_offset1 = a_offset0 + lda; - a_offset2 = a_offset1 + lda; - a_offset3 = a_offset2 + lda; - a_offset4 = a_offset3 + lda; - a_offset5 = a_offset4 + lda; - a_offset6 = a_offset5 + lda; - a_offset7 = a_offset6 + lda; - - for (BLASLONG i = 0; i < m / 8; i++) { - b_offset[0] = a_offset0[0]; - b_offset[1] = a_offset1[0]; - b_offset[2] = a_offset2[0]; - b_offset[3] = a_offset3[0]; - - b_offset[4] = 0; - b_offset[5] = 0; - b_offset[6] = 0; - b_offset[7] = 0; - - b_offset[8] = a_offset4[0]; - b_offset[9] = a_offset5[0]; - b_offset[10] = a_offset6[0]; - b_offset[11] = a_offset7[0]; - - b_offset[12] = 0; - b_offset[13] = 0; - b_offset[14] = 0; - b_offset[15] = 0; - - b_offset += 16; - a_offset0 += 8 * lda; - a_offset1 += 8 * lda; - a_offset2 += 8 * lda; - a_offset3 += 8 * lda; - a_offset4 += 8 * lda; - a_offset5 += 8 * lda; - a_offset6 += 8 * lda; - a_offset7 += 8 * lda; - } - - if (rest) { - b_offset[0] = *a_offset0; - b_offset[1] = rest == 1 ? 0 : *a_offset1; - b_offset[2] = rest <= 2 ? 0 : *a_offset2; - b_offset[3] = rest <= 3 ? 0 : *a_offset3; - - b_offset[4] = 0; - b_offset[5] = 0; - b_offset[6] = 0; - b_offset[7] = 0; - - b_offset[8] = rest <= 4 ? 0 : *a_offset4; - b_offset[9] = rest <= 5 ? 0 : *a_offset5; - b_offset[10] = rest <= 6 ? 0 : *a_offset6; - b_offset[11] = 0; - - b_offset[12] = 0; - b_offset[13] = 0; - b_offset[14] = 0; - b_offset[15] = 0; - } - } - - return 0; -} From 803e8d48389b520c490bb859e7bae39d1c0e4524 Mon Sep 17 00:00:00 2001 From: yuanjia Date: Tue, 12 Aug 2025 18:03:16 +0800 Subject: [PATCH 101/360] Move the value assignment of vector x in gemv_n_sve.c to the outermost loop to reduce the repeated data retrieval. 1.Verify correctness using BLAS-Tester 2.Using the built-in benchmark to verify performance, the performance of float and doule type improved by about 60% and about 40% respectively.The test command is: export OMP_NUM_THREADS=1;numactl -C 10 -l ./sgemv.goto 3000 4000 100 export OMP_NUM_THREADS=1;numactl -C 10 -l ./dgemv.goto 3000 4000 100 --- kernel/arm64/gemv_n_sve.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/kernel/arm64/gemv_n_sve.c b/kernel/arm64/gemv_n_sve.c index 59a5c85572..c2f4557396 100644 --- a/kernel/arm64/gemv_n_sve.c +++ b/kernel/arm64/gemv_n_sve.c @@ -69,13 +69,12 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO FLOAT *a2_ptr = a + lda * width * 2; for (j = 0; j < width; j++) { - for (i = 0; (i + sve_size - 1) < m; i += sve_size) { - ix = j * inc_x; - - SV_TYPE x0_vec = SV_DUP(alpha * x[ix + (inc_x * width * 0)]); - SV_TYPE x1_vec = SV_DUP(alpha * x[ix + (inc_x * width * 1)]); - SV_TYPE x2_vec = SV_DUP(alpha * x[ix + (inc_x * width * 2)]); + ix = j * inc_x; + SV_TYPE x0_vec = SV_DUP(alpha * x[ix + (inc_x * width * 0)]); + SV_TYPE x1_vec = SV_DUP(alpha * x[ix + (inc_x * width * 1)]); + SV_TYPE x2_vec = SV_DUP(alpha * x[ix + (inc_x * width * 2)]); + for (i = 0; (i + sve_size - 1) < m; i += sve_size) { SV_TYPE a00_vec = svld1(pg_true, a0_ptr + i); SV_TYPE a01_vec = svld1(pg_true, a1_ptr + i); SV_TYPE a02_vec = svld1(pg_true, a2_ptr + i); @@ -89,10 +88,6 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO } if (i < m) { - SV_TYPE x0_vec = SV_DUP(alpha * x[ix + (inc_x * width * 0)]); - SV_TYPE x1_vec = SV_DUP(alpha * x[ix + (inc_x * width * 1)]); - SV_TYPE x2_vec = SV_DUP(alpha * x[ix + (inc_x * width * 2)]); - SV_TYPE a00_vec = svld1(pg, a0_ptr + i); SV_TYPE a01_vec = svld1(pg, a1_ptr + i); SV_TYPE a02_vec = svld1(pg, a2_ptr + i); @@ -115,9 +110,9 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO a_ptr = a2_ptr; for (j = width * 3; j < n; j++) { ix = j * inc_x; + SV_TYPE x_vec = SV_DUP(alpha * x[(ix)]); for (i = 0; (i + sve_size - 1) < m; i += sve_size) { SV_TYPE y_vec = svld1(pg_true, y + i); - SV_TYPE x_vec = SV_DUP(alpha * x[(ix)]); SV_TYPE a_vec = svld1(pg_true, a_ptr + i); y_vec = svmla_x(pg_true, y_vec, a_vec, x_vec); svst1(pg_true, y + i, y_vec); @@ -125,7 +120,6 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO if (i < m) { SV_TYPE y_vec = svld1(pg, y + i); - SV_TYPE x_vec = SV_DUP(alpha * x[(ix)]); SV_TYPE a_vec = svld1(pg, a_ptr + i); y_vec = svmla_m(pg, y_vec, a_vec, x_vec); svst1(pg, y + i, y_vec); From 3a6b79c50f059941358eaae2403ecca5f70c6d54 Mon Sep 17 00:00:00 2001 From: Xabier Marquiegui Date: Tue, 12 Aug 2025 14:40:15 +0200 Subject: [PATCH 102/360] fix: broken cblas installation when using makefile based builds Fix cblas.h missing from target directory if NO_CBLAS is defined but has a value that indicates you do want cblas built and installed. --- Makefile.install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.install b/Makefile.install index c8b4279789..3c8d47642b 100644 --- a/Makefile.install +++ b/Makefile.install @@ -71,7 +71,7 @@ install : lib.grd @cat common_interface.h >> "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/f77blas.h" @echo \#endif >> "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)/f77blas.h" -ifndef NO_CBLAS +ifneq ($(NO_CBLAS),1) @echo Generating cblas.h in $(DESTDIR)$(OPENBLAS_INCLUDE_DIR) @cp cblas.h cblas.tmp ifdef SYMBOLPREFIX From c00afc86a6fd318473e14150fec8964104b9cfe6 Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Tue, 12 Aug 2025 17:18:56 +0000 Subject: [PATCH 103/360] Add and use vectorized packing to ZVL128B and ZVL256B. Up to 3x+ faster than generic scalar functions. --- kernel/riscv64/KERNEL.RISCV64_ZVL128B | 22 +- kernel/riscv64/KERNEL.RISCV64_ZVL256B | 20 ++ kernel/riscv64/gemm_ncopy_16_rvv.c | 325 ++++++++++++++++++++++++++ kernel/riscv64/gemm_ncopy_4_rvv.c | 143 ++++++++++++ kernel/riscv64/gemm_tcopy_16_rvv.c | 129 ++++++++++ kernel/riscv64/gemm_tcopy_4_rvv.c | 91 ++++++++ 6 files changed, 729 insertions(+), 1 deletion(-) create mode 100644 kernel/riscv64/gemm_ncopy_16_rvv.c create mode 100644 kernel/riscv64/gemm_ncopy_4_rvv.c create mode 100644 kernel/riscv64/gemm_tcopy_16_rvv.c create mode 100644 kernel/riscv64/gemm_tcopy_4_rvv.c diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL128B b/kernel/riscv64/KERNEL.RISCV64_ZVL128B index fac233c00d..d844786932 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL128B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL128B @@ -96,27 +96,47 @@ CGEMVTKERNEL = zgemv_t_rvv.c ZGEMVTKERNEL = zgemv_t_rvv.c SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N)_zvl128b.c +ifneq ($(filter $(SGEMM_UNROLL_N),4 8 16),) +SGEMMONCOPY = gemm_ncopy_$(SGEMM_UNROLL_N)_rvv.c +SGEMMOTCOPY = gemm_tcopy_$(SGEMM_UNROLL_N)_rvv.c +else SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c +endif SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) +ifneq ($(filter $(SGEMM_UNROLL_M),4 8 16),) +SGEMMINCOPY = gemm_ncopy_$(SGEMM_UNROLL_M)_rvv.c +SGEMMITCOPY = gemm_tcopy_$(SGEMM_UNROLL_M)_rvv.c +else SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c +endif SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) endif DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N)_zvl128b.c +ifneq ($(filter $(DGEMM_UNROLL_N),4 8 16),) +DGEMMONCOPY = gemm_ncopy_$(DGEMM_UNROLL_N)_rvv.c +DGEMMOTCOPY = gemm_tcopy_$(DGEMM_UNROLL_N)_rvv.c +else DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c +endif DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) +ifneq ($(filter $(DGEMM_UNROLL_M),4 8 16),) +DGEMMINCOPY = gemm_ncopy_$(DGEMM_UNROLL_M)_rvv.c +DGEMMITCOPY = gemm_tcopy_$(DGEMM_UNROLL_M)_rvv.c +else DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c +endif DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) endif @@ -255,4 +275,4 @@ SHGEMMOTCOPYOBJ = shgemm_otcopy$(TSUFFIX).$(SUFFIX) ifndef SHGEMM_BETA SHGEMM_BETA = gemm_beta_rvv.c endif -endif \ No newline at end of file +endif diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL256B b/kernel/riscv64/KERNEL.RISCV64_ZVL256B index a41678abee..9f7cfd519e 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL256B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL256B @@ -96,25 +96,45 @@ CTRMMKERNEL = ctrmm_kernel_$(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N)_zvl256b.c ZTRMMKERNEL = ztrmm_kernel_$(ZGEMM_UNROLL_M)x$(ZGEMM_UNROLL_N)_zvl256b.c SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N)_zvl256b.c +ifneq ($(filter $(SGEMM_UNROLL_N),4 8 16),) +SGEMMONCOPY = gemm_ncopy_$(SGEMM_UNROLL_N)_rvv.c +SGEMMOTCOPY = gemm_tcopy_$(SGEMM_UNROLL_N)_rvv.c +else SGEMMONCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_N).c SGEMMOTCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_N).c +endif SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX) SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N)) +ifneq ($(filter $(SGEMM_UNROLL_M),4 8 16),) +SGEMMINCOPY = gemm_ncopy_$(SGEMM_UNROLL_M)_rvv.c +SGEMMITCOPY = gemm_tcopy_$(SGEMM_UNROLL_M)_rvv.c +else SGEMMINCOPY = ../generic/gemm_ncopy_$(SGEMM_UNROLL_M).c SGEMMITCOPY = ../generic/gemm_tcopy_$(SGEMM_UNROLL_M).c +endif SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX) SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) endif DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N)_zvl256b.c +ifneq ($(filter $(DGEMM_UNROLL_N),4 8 16),) +DGEMMONCOPY = gemm_ncopy_$(DGEMM_UNROLL_N)_rvv.c +DGEMMOTCOPY = gemm_tcopy_$(DGEMM_UNROLL_N)_rvv.c +else DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c +endif DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) +ifneq ($(filter $(DGEMM_UNROLL_M),4 8 16),) +DGEMMINCOPY = gemm_ncopy_$(DGEMM_UNROLL_M)_rvv.c +DGEMMITCOPY = gemm_tcopy_$(DGEMM_UNROLL_M)_rvv.c +else DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c +endif DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) endif diff --git a/kernel/riscv64/gemm_ncopy_16_rvv.c b/kernel/riscv64/gemm_ncopy_16_rvv.c new file mode 100644 index 0000000000..2138133bdd --- /dev/null +++ b/kernel/riscv64/gemm_ncopy_16_rvv.c @@ -0,0 +1,325 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +#if !defined(DOUBLE) +#define VSETVL(n) __riscv_vsetvl_e32m1(n) +#define FLOAT_V_T vfloat32m1_t +#define FLOAT_VX2_T vfloat32m1x2_t +#define FLOAT_VX4_T vfloat32m1x4_t +#define FLOAT_VX8_T vfloat32m1x8_t +#define VLSEG_FLOAT __riscv_vlse32_v_f32m1 +#define VLSSEG2_FLOAT __riscv_vlsseg2e32_v_f32m1x2 +#define VLSSEG4_FLOAT __riscv_vlsseg4e32_v_f32m1x4 +#define VLSSEG8_FLOAT __riscv_vlsseg8e32_v_f32m1x8 +#define VGET_VX2 __riscv_vget_v_f32m1x2_f32m1 +#define VGET_VX4 __riscv_vget_v_f32m1x4_f32m1 +#define VGET_VX8 __riscv_vget_v_f32m1x8_f32m1 +#define VSET_VX2 __riscv_vset_v_f32m1_f32m1x2 +#define VSET_VX4 __riscv_vset_v_f32m1_f32m1x4 +#define VSET_VX8 __riscv_vset_v_f32m1_f32m1x8 +#define VLEV_FLOAT __riscv_vle32_v_f32m1 +#define VSEV_FLOAT __riscv_vse32_v_f32m1 +#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1x2 +#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1x4 +#define VSSEG8_FLOAT __riscv_vsseg8e32_v_f32m1x8 +#else +#define VSETVL(n) __riscv_vsetvl_e64m1(n) +#define FLOAT_V_T vfloat64m1_t +#define FLOAT_VX2_T vfloat64m1x2_t +#define FLOAT_VX4_T vfloat64m1x4_t +#define FLOAT_VX8_T vfloat64m1x8_t +#define VLSEG_FLOAT __riscv_vlse64_v_f64m1 +#define VLSSEG2_FLOAT __riscv_vlsseg2e64_v_f64m1x2 +#define VLSSEG4_FLOAT __riscv_vlsseg4e64_v_f64m1x4 +#define VLSSEG8_FLOAT __riscv_vlsseg8e64_v_f64m1x8 +#define VGET_VX2 __riscv_vget_v_f64m1x2_f64m1 +#define VGET_VX4 __riscv_vget_v_f64m1x4_f64m1 +#define VGET_VX8 __riscv_vget_v_f64m1x8_f64m1 +#define VSET_VX2 __riscv_vset_v_f64m1_f64m1x2 +#define VSET_VX4 __riscv_vset_v_f64m1_f64m1x4 +#define VSET_VX8 __riscv_vset_v_f64m1_f64m1x8 +#define VLEV_FLOAT __riscv_vle64_v_f64m1 +#define VSEV_FLOAT __riscv_vse64_v_f64m1 +#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1x2 +#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1x4 +#define VSSEG8_FLOAT __riscv_vsseg8e64_v_f64m1x8 +#endif + +// Optimizes the implementation in ../generic/gemm_ncopy_16.c + +int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b) +{ + BLASLONG i, j; + + FLOAT *a_offset; + FLOAT *a_offset1, *a_offset2, *a_offset3, *a_offset4; + FLOAT *a_offset5, *a_offset6, *a_offset7, *a_offset8; + FLOAT *b_offset; + + FLOAT_V_T v1, v2, v3, v4, v5, v6, v7, v8; + FLOAT_V_T v9, v10, v11, v12, v13, v14, v15, v16; + FLOAT_VX2_T vx2, vx21; + FLOAT_VX4_T vx4, vx41; + FLOAT_VX8_T vx8, vx81; + + size_t vl; + + //fprintf(stderr, "gemm_ncopy_16 m=%ld n=%ld lda=%ld\n", m, n, lda); + + a_offset = a; + b_offset = b; + + j = (n >> 4); + if (j) { + vl = VSETVL(8); + + do { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda * 8; + a_offset += 16 * lda; + + i = m >> 3; + if (i) { + do { + vx8 = VLSSEG8_FLOAT(a_offset1, lda * sizeof(FLOAT), vl); + vx81 = VLSSEG8_FLOAT(a_offset2, lda * sizeof(FLOAT), vl); + + v1 = VGET_VX8(vx8, 0); + v2 = VGET_VX8(vx8, 1); + v3 = VGET_VX8(vx8, 2); + v4 = VGET_VX8(vx8, 3); + v5 = VGET_VX8(vx8, 4); + v6 = VGET_VX8(vx8, 5); + v7 = VGET_VX8(vx8, 6); + v8 = VGET_VX8(vx8, 7); + v9 = VGET_VX8(vx81, 0); + v10 = VGET_VX8(vx81, 1); + v11 = VGET_VX8(vx81, 2); + v12 = VGET_VX8(vx81, 3); + v13 = VGET_VX8(vx81, 4); + v14 = VGET_VX8(vx81, 5); + v15 = VGET_VX8(vx81, 6); + v16 = VGET_VX8(vx81, 7); + + VSEV_FLOAT(b_offset, v1, vl); + VSEV_FLOAT(b_offset + 8, v9, vl); + VSEV_FLOAT(b_offset + 16, v2, vl); + VSEV_FLOAT(b_offset + 24, v10, vl); + VSEV_FLOAT(b_offset + 32, v3, vl); + VSEV_FLOAT(b_offset + 40, v11, vl); + VSEV_FLOAT(b_offset + 48, v4, vl); + VSEV_FLOAT(b_offset + 56, v12, vl); + VSEV_FLOAT(b_offset + 64, v5, vl); + VSEV_FLOAT(b_offset + 72, v13, vl); + VSEV_FLOAT(b_offset + 80, v6, vl); + VSEV_FLOAT(b_offset + 88, v14, vl); + VSEV_FLOAT(b_offset + 96, v7, vl); + VSEV_FLOAT(b_offset + 104, v15, vl); + VSEV_FLOAT(b_offset + 112, v8, vl); + VSEV_FLOAT(b_offset + 120, v16, vl); + + a_offset1 += 8; + a_offset2 += 8; + b_offset += 128; + } while (--i); + } + + if (m & 4) { + vx4 = VLSSEG4_FLOAT(a_offset1, lda * sizeof(FLOAT), vl); + vx41 = VLSSEG4_FLOAT(a_offset2, lda * sizeof(FLOAT), vl); + + v1 = VGET_VX4(vx4, 0); + v2 = VGET_VX4(vx4, 1); + v3 = VGET_VX4(vx4, 2); + v4 = VGET_VX4(vx4, 3); + v5 = VGET_VX4(vx41, 0); + v6 = VGET_VX4(vx41, 1); + v7 = VGET_VX4(vx41, 2); + v8 = VGET_VX4(vx41, 3); + + VSEV_FLOAT(b_offset, v1, vl); + VSEV_FLOAT(b_offset + 8, v5, vl); + VSEV_FLOAT(b_offset + 16, v2, vl); + VSEV_FLOAT(b_offset + 24, v6, vl); + VSEV_FLOAT(b_offset + 32, v3, vl); + VSEV_FLOAT(b_offset + 40, v7, vl); + VSEV_FLOAT(b_offset + 48, v4, vl); + VSEV_FLOAT(b_offset + 56, v8, vl); + + a_offset1 += 4; + a_offset2 += 4; + b_offset += 64; + } + + if (m & 2) { + vx2 = VLSSEG2_FLOAT(a_offset1, lda * sizeof(FLOAT), vl); + vx21 = VLSSEG2_FLOAT(a_offset2, lda * sizeof(FLOAT), vl); + + v1 = VGET_VX2(vx2, 0); + v2 = VGET_VX2(vx2, 1); + v3 = VGET_VX2(vx21, 0); + v4 = VGET_VX2(vx21, 1); + + VSEV_FLOAT(b_offset, v1, vl); + VSEV_FLOAT(b_offset + 8, v3, vl); + VSEV_FLOAT(b_offset + 16, v2, vl); + VSEV_FLOAT(b_offset + 24, v4, vl); + + a_offset1 += 2; + a_offset2 += 2; + b_offset += 32; + } + + if (m & 1) { + v1 = VLSEG_FLOAT(a_offset1, lda * sizeof(FLOAT), vl); + v2 = VLSEG_FLOAT(a_offset2, lda * sizeof(FLOAT), vl); + + VSEV_FLOAT(b_offset, v1, vl); + VSEV_FLOAT(b_offset + 8, v2, vl); + + b_offset += 16; + } + } while (--j); + } + + if (n & 8) { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda; + a_offset3 = a_offset2 + lda; + a_offset4 = a_offset3 + lda; + a_offset5 = a_offset4 + lda; + a_offset6 = a_offset5 + lda; + a_offset7 = a_offset6 + lda; + a_offset8 = a_offset7 + lda; + a_offset += 8 * lda; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + v2 = VLEV_FLOAT(a_offset2, vl); + v3 = VLEV_FLOAT(a_offset3, vl); + v4 = VLEV_FLOAT(a_offset4, vl); + v5 = VLEV_FLOAT(a_offset5, vl); + v6 = VLEV_FLOAT(a_offset6, vl); + v7 = VLEV_FLOAT(a_offset7, vl); + v8 = VLEV_FLOAT(a_offset8, vl); + + vx8 = VSET_VX8(vx8, 0, v1); + vx8 = VSET_VX8(vx8, 1, v2); + vx8 = VSET_VX8(vx8, 2, v3); + vx8 = VSET_VX8(vx8, 3, v4); + vx8 = VSET_VX8(vx8, 4, v5); + vx8 = VSET_VX8(vx8, 5, v6); + vx8 = VSET_VX8(vx8, 6, v7); + vx8 = VSET_VX8(vx8, 7, v8); + + VSSEG8_FLOAT(b_offset, vx8, vl); + + a_offset1 += vl; + a_offset2 += vl; + a_offset3 += vl; + a_offset4 += vl; + a_offset5 += vl; + a_offset6 += vl; + a_offset7 += vl; + a_offset8 += vl; + b_offset += vl*8; + } + } + + if (n & 4) { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda; + a_offset3 = a_offset2 + lda; + a_offset4 = a_offset3 + lda; + a_offset += 4 * lda; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + v2 = VLEV_FLOAT(a_offset2, vl); + v3 = VLEV_FLOAT(a_offset3, vl); + v4 = VLEV_FLOAT(a_offset4, vl); + + vx4 = VSET_VX4(vx4, 0, v1); + vx4 = VSET_VX4(vx4, 1, v2); + vx4 = VSET_VX4(vx4, 2, v3); + vx4 = VSET_VX4(vx4, 3, v4); + + VSSEG4_FLOAT(b_offset, vx4, vl); + + a_offset1 += vl; + a_offset2 += vl; + a_offset3 += vl; + a_offset4 += vl; + b_offset += vl*4; + } + } + + if (n & 2) { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda; + a_offset += 2 * lda; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + v2 = VLEV_FLOAT(a_offset2, vl); + + vx2 = VSET_VX2(vx2, 0, v1); + vx2 = VSET_VX2(vx2, 1, v2); + + VSSEG2_FLOAT(b_offset, vx2, vl); + + a_offset1 += vl; + a_offset2 += vl; + b_offset += vl*2; + } + } + + if (n & 1) { + a_offset1 = a_offset; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + + VSEV_FLOAT(b_offset, v1, vl); + + a_offset1 += vl; + b_offset += vl; + } + } + + return 0; +} diff --git a/kernel/riscv64/gemm_ncopy_4_rvv.c b/kernel/riscv64/gemm_ncopy_4_rvv.c new file mode 100644 index 0000000000..67c93b6c09 --- /dev/null +++ b/kernel/riscv64/gemm_ncopy_4_rvv.c @@ -0,0 +1,143 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +#if !defined(DOUBLE) +#define VSETVL(n) __riscv_vsetvl_e32m1(n) +#define FLOAT_V_T vfloat32m1_t +#define FLOAT_VX2_T vfloat32m1x2_t +#define FLOAT_VX4_T vfloat32m1x4_t +#define VSET_VX2 __riscv_vset_v_f32m1_f32m1x2 +#define VSET_VX4 __riscv_vset_v_f32m1_f32m1x4 +#define VLEV_FLOAT __riscv_vle32_v_f32m1 +#define VSEV_FLOAT __riscv_vse32_v_f32m1 +#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1x2 +#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1x4 +#else +#define VSETVL(n) __riscv_vsetvl_e64m1(n) +#define FLOAT_V_T vfloat64m1_t +#define FLOAT_VX2_T vfloat64m1x2_t +#define FLOAT_VX4_T vfloat64m1x4_t +#define VSET_VX2 __riscv_vset_v_f64m1_f64m1x2 +#define VSET_VX4 __riscv_vset_v_f64m1_f64m1x4 +#define VLEV_FLOAT __riscv_vle64_v_f64m1 +#define VSEV_FLOAT __riscv_vse64_v_f64m1 +#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1x2 +#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1x4 +#endif + +// Optimizes the implementation in ../generic/gemm_ncopy_4.c + +int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b) +{ + BLASLONG i, j; + + FLOAT *a_offset; + FLOAT *a_offset1, *a_offset2, *a_offset3, *a_offset4; + FLOAT *b_offset; + + FLOAT_V_T v1, v2, v3, v4; + FLOAT_VX2_T vx2; + FLOAT_VX4_T vx4; + + size_t vl; + + //fprintf(stderr, "gemm_ncopy_4 m=%ld n=%ld lda=%ld\n", m, n, lda); + + a_offset = a; + b_offset = b; + + for(j = (n >> 2); j > 0; j--) { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda; + a_offset3 = a_offset2 + lda; + a_offset4 = a_offset3 + lda; + a_offset += 4 * lda; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + v2 = VLEV_FLOAT(a_offset2, vl); + v3 = VLEV_FLOAT(a_offset3, vl); + v4 = VLEV_FLOAT(a_offset4, vl); + + vx4 = VSET_VX4(vx4, 0, v1); + vx4 = VSET_VX4(vx4, 1, v2); + vx4 = VSET_VX4(vx4, 2, v3); + vx4 = VSET_VX4(vx4, 3, v4); + + VSSEG4_FLOAT(b_offset, vx4, vl); + + a_offset1 += vl; + a_offset2 += vl; + a_offset3 += vl; + a_offset4 += vl; + b_offset += vl*4; + } + } + + if (n & 2) { + a_offset1 = a_offset; + a_offset2 = a_offset1 + lda; + a_offset += 2 * lda; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + v2 = VLEV_FLOAT(a_offset2, vl); + + vx2 = VSET_VX2(vx2, 0, v1); + vx2 = VSET_VX2(vx2, 1, v2); + + VSSEG2_FLOAT(b_offset, vx2, vl); + + a_offset1 += vl; + a_offset2 += vl; + b_offset += vl*2; + } + } + + if (n & 1) { + a_offset1 = a_offset; + + for(i = m; i > 0; i -= vl) { + vl = VSETVL(i); + + v1 = VLEV_FLOAT(a_offset1, vl); + + VSEV_FLOAT(b_offset, v1, vl); + + a_offset1 += vl; + b_offset += vl; + } + } + + return 0; +} diff --git a/kernel/riscv64/gemm_tcopy_16_rvv.c b/kernel/riscv64/gemm_tcopy_16_rvv.c new file mode 100644 index 0000000000..4196e85722 --- /dev/null +++ b/kernel/riscv64/gemm_tcopy_16_rvv.c @@ -0,0 +1,129 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +#if !defined(DOUBLE) +#define FLOAT_V_T vfloat32m4_t +#define FLOAT_V_T_HALF vfloat32m2_t +#define FLOAT_V_T_QUARTER vfloat32m1_t +#define VLEV_FLOAT __riscv_vle32_v_f32m4 +#define VLEV_FLOAT_HALF __riscv_vle32_v_f32m2 +#define VLEV_FLOAT_QUARTER __riscv_vle32_v_f32m1 +#define VSEV_FLOAT __riscv_vse32_v_f32m4 +#define VSEV_FLOAT_HALF __riscv_vse32_v_f32m2 +#define VSEV_FLOAT_QUARTER __riscv_vse32_v_f32m1 +#else +#define FLOAT_V_T vfloat64m8_t +#define FLOAT_V_T_HALF vfloat64m4_t +#define FLOAT_V_T_QUARTER vfloat64m2_t +#define VLEV_FLOAT __riscv_vle64_v_f64m8 +#define VLEV_FLOAT_HALF __riscv_vle64_v_f64m4 +#define VLEV_FLOAT_QUARTER __riscv_vle64_v_f64m2 +#define VSEV_FLOAT __riscv_vse64_v_f64m8 +#define VSEV_FLOAT_HALF __riscv_vse64_v_f64m4 +#define VSEV_FLOAT_QUARTER __riscv_vse64_v_f64m2 +#endif + +// Optimizes the implementation in ../generic/gemm_tcopy_16.c + +int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) +{ + BLASLONG i, j; + + IFLOAT *aoffset; + IFLOAT *aoffset1; + + IFLOAT *boffset, *boffset1, *boffset2, *boffset3, *boffset4, *boffset5; + + FLOAT_V_T v0; + FLOAT_V_T_HALF v1; + FLOAT_V_T_QUARTER v2; + + // fprintf(stderr, "gemm_tcopy_16 m=%ld n=%ld lda=%ld\n", m, n, lda); + + aoffset = a; + boffset = b; + boffset2 = b + m * (n & ~15); + boffset3 = b + m * (n & ~7); + boffset4 = b + m * (n & ~3); + boffset5 = b + m * (n & ~1); + + for(j = m; j > 0; j--) { + aoffset1 = aoffset; + boffset1 = boffset; + + aoffset += lda; + boffset += 16; + + for(i = (n >> 4); i > 0; i--) { + size_t vl = 16; + + v0 = VLEV_FLOAT(aoffset1, vl); + VSEV_FLOAT(boffset1, v0, vl); + + aoffset1 += 16; + boffset1 += 16 * m; + } + + if (n & 8) { + size_t vl = 8; + + v1 = VLEV_FLOAT_HALF(aoffset1, vl); + VSEV_FLOAT_HALF(boffset2, v1, vl); + + aoffset1 += 8; + boffset2 += 8; + } + + if (n & 4) { + size_t vl = 4; + + v2 = VLEV_FLOAT_QUARTER(aoffset1, vl); + VSEV_FLOAT_QUARTER(boffset3, v2, vl); + + aoffset1 += 4; + boffset3 += 4; + } + + if (n & 2) { + *(boffset4) = *(aoffset1); + *(boffset4 + 1) = *(aoffset1 + 1); + + aoffset1 += 2; + boffset4 += 2; + } + + if (n & 1) { + *(boffset5) = *(aoffset1); + aoffset1 ++; + boffset5 ++; + } + } + + return 0; +} diff --git a/kernel/riscv64/gemm_tcopy_4_rvv.c b/kernel/riscv64/gemm_tcopy_4_rvv.c new file mode 100644 index 0000000000..b1e6a38652 --- /dev/null +++ b/kernel/riscv64/gemm_tcopy_4_rvv.c @@ -0,0 +1,91 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" + +#if !defined(DOUBLE) +#define FLOAT_V_T vfloat32m1_t +#define VLEV_FLOAT __riscv_vle32_v_f32m1 +#define VSEV_FLOAT __riscv_vse32_v_f32m1 +#else +#define FLOAT_V_T vfloat64m2_t +#define VLEV_FLOAT __riscv_vle64_v_f64m2 +#define VSEV_FLOAT __riscv_vse64_v_f64m2 +#endif + +int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b) +{ + BLASLONG i, j; + + IFLOAT *aoffset; + IFLOAT *aoffset1; + + IFLOAT *boffset, *boffset1, *boffset2, *boffset3; + + FLOAT_V_T v0; + + // fprintf(stderr, "gemm_tcopy_4 m=%ld n=%ld lda=%ld\n", m, n, lda); + + aoffset = a; + boffset = b; + boffset2 = b + m * (n & ~3); + boffset3 = b + m * (n & ~1); + + for(j = m; j > 0; j--) { + aoffset1 = aoffset; + boffset1 = boffset; + + aoffset += lda; + boffset += 4; + + for(i = (n >> 2); i > 0; i--) { + size_t vl = 4; + + v0 = VLEV_FLOAT(aoffset1, vl); + VSEV_FLOAT(boffset1, v0, vl); + + aoffset1 += 4; + boffset1 += 4 * m; + } + + if (n & 2) { + *(boffset2) = *(aoffset1); + *(boffset2 + 1) = *(aoffset1 + 1); + + aoffset1 += 2; + boffset2 += 2; + } + + if (n & 1) { + *(boffset3) = *(aoffset1); + aoffset1 ++; + boffset3 ++; + } + } + + return 0; +} From 64401b4417585711b6a6876171a9eed4fd547a26 Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Wed, 13 Aug 2025 13:41:12 +0000 Subject: [PATCH 104/360] Disable vectorized packing for DGEMM - since it is slower than scalar. --- kernel/riscv64/KERNEL.RISCV64_ZVL128B | 10 ---------- kernel/riscv64/KERNEL.RISCV64_ZVL256B | 10 ---------- 2 files changed, 20 deletions(-) diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL128B b/kernel/riscv64/KERNEL.RISCV64_ZVL128B index d844786932..ad5880b725 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL128B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL128B @@ -119,24 +119,14 @@ SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) endif DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N)_zvl128b.c -ifneq ($(filter $(DGEMM_UNROLL_N),4 8 16),) -DGEMMONCOPY = gemm_ncopy_$(DGEMM_UNROLL_N)_rvv.c -DGEMMOTCOPY = gemm_tcopy_$(DGEMM_UNROLL_N)_rvv.c -else DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c -endif DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) -ifneq ($(filter $(DGEMM_UNROLL_M),4 8 16),) -DGEMMINCOPY = gemm_ncopy_$(DGEMM_UNROLL_M)_rvv.c -DGEMMITCOPY = gemm_tcopy_$(DGEMM_UNROLL_M)_rvv.c -else DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c -endif DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) endif diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL256B b/kernel/riscv64/KERNEL.RISCV64_ZVL256B index 9f7cfd519e..d8d74254cf 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL256B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL256B @@ -118,23 +118,13 @@ SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX) endif DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N)_zvl256b.c -ifneq ($(filter $(DGEMM_UNROLL_N),4 8 16),) -DGEMMONCOPY = gemm_ncopy_$(DGEMM_UNROLL_N)_rvv.c -DGEMMOTCOPY = gemm_tcopy_$(DGEMM_UNROLL_N)_rvv.c -else DGEMMONCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_N).c DGEMMOTCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_N).c -endif DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX) DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX) ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N)) -ifneq ($(filter $(DGEMM_UNROLL_M),4 8 16),) -DGEMMINCOPY = gemm_ncopy_$(DGEMM_UNROLL_M)_rvv.c -DGEMMITCOPY = gemm_tcopy_$(DGEMM_UNROLL_M)_rvv.c -else DGEMMINCOPY = ../generic/gemm_ncopy_$(DGEMM_UNROLL_M).c DGEMMITCOPY = ../generic/gemm_tcopy_$(DGEMM_UNROLL_M).c -endif DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX) DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX) endif From ca22e28ca13fb1906b3a13194711969eaef9df85 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:25:44 -0700 Subject: [PATCH 105/360] Rename sgemm_direct_sme1.S to sgemm_direct_sme1_2VLx2VL.S --- kernel/arm64/{sgemm_direct_sme1.S => sgemm_direct_sme1_2VLx2VL.S} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename kernel/arm64/{sgemm_direct_sme1.S => sgemm_direct_sme1_2VLx2VL.S} (100%) diff --git a/kernel/arm64/sgemm_direct_sme1.S b/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S similarity index 100% rename from kernel/arm64/sgemm_direct_sme1.S rename to kernel/arm64/sgemm_direct_sme1_2VLx2VL.S From 22c6607db93e649026a95269bb1c7f2ee4ce008b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:30:10 -0700 Subject: [PATCH 106/360] Use ASMNAME to get symbol name from build system; leave x18 unused as reserved on MacOS --- kernel/arm64/sgemm_direct_sme1_2VLx2VL.S | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S b/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S index 8c0a173f3d..ebbd0cadd9 100644 --- a/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S +++ b/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S @@ -35,16 +35,17 @@ #define K_exit x15 //Exit condition for K loop #define M_cntr x16 //M loop counter #define C1 x17 //Constant1: N*(SVLs+1);SVLs-No. of 32-bit elements -#define C2 x18 //Constant2: N + SVLs -#define C3 x19 //Constant3: K*SVLs + SVLs -#define C4 x20 //Constant4: SVLs-2 -#define C5 x21 //Constant5: K*SVLs -#define C6 x22 //Constant6: N*SVLs +#define C2 x19 //Constant2: N + SVLs +#define C3 x20 //Constant3: K*SVLs + SVLs +#define C4 x21 //Constant4: SVLs-2 +#define C5 x22 //Constant5: K*SVLs +#define C6 x23 //Constant6: N*SVLs .text - .global sgemm_direct_sme1_2VLx2VL + .global ASMNAME - sgemm_direct_sme1_2VLx2VL: + ASMNAME: + //sgemm_direct_sme1_2VLx2VL: stp x19, x20, [sp, #-48]! stp x21, x22, [sp, #16] @@ -211,12 +212,12 @@ process_K_less_than_equal_2: addvl Cptr, Cptr, #2 addvl Bptr, Bptr, #1 whilelt p0.b, Bptr, N_exit //1st Tile predicate (N dimension) - b.first .N_Loop + b.mi .N_Loop add A_base, A_base, C5, lsl #3 //A_base += 2*K*SVLs FP32 elements add C_base, C_base, C6, lsl #3 //C_base += 2*N*SVLs FP32 elements incw M_cntr whilelt p2.s, M_cntr, M //1st Tile predicate (M dimension) - b.first .M_Loop + b.mi .M_Loop smstop From 89898fc499aaf51d6aa9df98a6ca7eece953eea9 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:31:40 -0700 Subject: [PATCH 107/360] Add sgemm_direct_performant for switching between direct and regular kernels --- kernel/arm64/sgemm_direct_performant.c | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 kernel/arm64/sgemm_direct_performant.c diff --git a/kernel/arm64/sgemm_direct_performant.c b/kernel/arm64/sgemm_direct_performant.c new file mode 100644 index 0000000000..c5c42bccca --- /dev/null +++ b/kernel/arm64/sgemm_direct_performant.c @@ -0,0 +1,31 @@ +#include "common.h" +/* helper for the direct sgemm code written by Arjan van der Ven */ + + + + +int CNAME(BLASLONG M, BLASLONG N, BLASLONG K) +{ +if (M<3 || M%2==1) return 0; + unsigned long long mnk = M * N * K; + /* large matrixes -> not performant */ + if (mnk >= 28 * 512 * 512) + return 0; + + /* + * if the B matrix is not a nice multiple if 4 we get many unaligned accesses, + * and the regular sgemm copy/realignment of data pays off much quicker + */ + if ((N & 3) != 0 && (mnk >= 8 * 512 * 512)) + return 0; + +#ifdef SMP + /* if we can run multithreaded, the threading changes the based threshold */ + if (mnk > 2 * 350 * 512 && num_cpu_avail(3)> 1) + return 0; +#endif + + return 1; +} + + From 08a00326a4a8dca7642647b2dcbae8b401d4da42 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:35:41 -0700 Subject: [PATCH 108/360] Build symbol name from build system variables --- .../sgemm_direct_alpha_beta_arm64_sme1.c | 24 +++++++++---- kernel/arm64/sgemm_direct_arm64_sme1.c | 34 +++++++++++++------ 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c index d9de3ace3f..7a46e40f3a 100644 --- a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c @@ -14,9 +14,17 @@ #include #endif +#if defined(DYNAMIC_ARCH) +#define COMBINE(a,b) a ## b +#define COMBINE2(a,b) COMBINE(a,b) +#define SME1_PREPROCESS_BASE sgemm_direct_sme1_preprocess +#define SME1_PREPROCESS COMBINE2(SME1_PREPROCESS_BASE,TS) +#else +#define SME1_PREPROCESS sgemm_direct_sme1_preprocess +#endif /* Function prototypes */ -extern void sgemm_direct_sme1_preprocess(uint64_t nbr, uint64_t nbc,\ - const float * restrict a, float * a_mod) __asm__("sgemm_direct_sme1_preprocess"); +extern void SME1_PREPROCESS(uint64_t nbr, uint64_t nbc,\ + const float * restrict a, float * a_mod); /* Function Definitions */ static uint64_t sve_cntw() { @@ -99,10 +107,11 @@ kernel_2x2(const float *A, const float *B, float *C, size_t shared_dim, svst1_hor_za32(/*tile*/2, /*slice*/i, pg_c_0, &C[i * ldc]); svst1_hor_za32(/*tile*/3, /*slice*/i, pg_c_1, &C[i * ldc + svl]); } +return; } __arm_new("za") __arm_locally_streaming -void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ +static void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ const float *ba, const float *restrict bb, const float* beta,\ float *restrict C) { @@ -125,6 +134,7 @@ void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, co // Block over row dimension of C for (; row_idx < num_rows; row_idx += row_batch) { row_batch = MIN(row_batch, num_rows - row_idx); + uint64_t col_idx = 0; uint64_t col_batch = 2*svl; @@ -143,7 +153,7 @@ void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, co #else void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ const float *ba, const float *restrict bb, const float* beta,\ - float *restrict C){} + float *restrict C){fprintf(stderr,"empty sgemm_alpha_beta2x2 should never get called!!!\n");} #endif /*void sgemm_kernel_direct (BLASLONG M, BLASLONG N, BLASLONG K,\ @@ -175,7 +185,8 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict /* Pre-process the left matrix to make it suitable for matrix sum of outer-product calculation */ - sgemm_direct_sme1_preprocess(M, K, A, A_mod); + + SME1_PREPROCESS(M, K, A, A_mod); asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", @@ -185,6 +196,7 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31"); /* Calculate C = alpha*A*B + beta*C */ + sgemm_direct_alpha_beta_sme1_2VLx2VL(M, K, N, &alpha, A_mod, B, &beta, R); free(A_mod); @@ -194,6 +206,6 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict A,\ BLASLONG strideA, float * __restrict B, BLASLONG strideB ,\ - float beta, float * __restrict R, BLASLONG strideR){} + float beta, float * __restrict R, BLASLONG strideR){fprintf(stderr,"empty sgemm_direct_alpha_beta should not be called!!!\n");} #endif diff --git a/kernel/arm64/sgemm_direct_arm64_sme1.c b/kernel/arm64/sgemm_direct_arm64_sme1.c index 13c337a13e..a214a0ff66 100644 --- a/kernel/arm64/sgemm_direct_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_arm64_sme1.c @@ -8,17 +8,28 @@ #include #include #if defined(HAVE_SME) - +#if defined(DYNAMIC_ARCH) +#define COMBINE(a,b) a ## b +#define COMBINE2(a,b) COMBINE(a,b) +#define SME1_PREPROCESS_BASE sgemm_direct_sme1_preprocess +#define SME1_PREPROCESS COMBINE2(SME1_PREPROCESS_BASE,TS) +#define SME1_DIRECT2X2_BASE sgemm_direct_sme1_2VLx2VL +#define SME1_DIRECT2X2 COMBINE2(SME1_DIRECT2X2_BASE,TS) +#else +#define SME1_PREPROCESS sgemm_direct_sme1_preprocess +#define SME1_DIRECT2X2 sgemm_direct_sme1_2VLx2VL +#endif /* Function prototypes */ -extern void sgemm_direct_sme1_preprocess(uint64_t nbr, uint64_t nbc,\ - const float * restrict a, float * a_mod) __asm__("sgemm_direct_sme1_preprocess"); -extern void sgemm_direct_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n,\ +extern void SME1_PREPROCESS(uint64_t nbr, uint64_t nbc,\ + const float * restrict a, float * a_mod) ; + +extern void SME1_DIRECT2X2(uint64_t m, uint64_t k, uint64_t n,\ const float * matLeft,\ const float * restrict matRight,\ - const float * restrict matResult) __asm__("sgemm_direct_sme1_2VLx2VL"); + const float * restrict matResult) ; /* Function Definitions */ -uint64_t sve_cntw() { +static uint64_t sve_cntw() { uint64_t cnt; asm volatile( "rdsvl %[res], #1\n" @@ -39,7 +50,6 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ uint64_t m_mod, vl_elms; vl_elms = sve_cntw(); - m_mod = ceil((double)M/(double)vl_elms) * vl_elms; float *A_mod = (float *) malloc(m_mod*K*sizeof(float)); @@ -57,10 +67,11 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ /* Pre-process the left matrix to make it suitable for matrix sum of outer-product calculation */ - sgemm_direct_sme1_preprocess(M, K, A, A_mod); + SME1_PREPROCESS(M, K, A, A_mod); /* Calculate C = A*B */ - sgemm_direct_sme1_2VLx2VL(M, K, N, A_mod, B, R); +fprintf(stderr,"sme direct calling 2x2\n"); + SME1_DIRECT2X2(M, K, N, A_mod, B, R); asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", @@ -75,6 +86,7 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ BLASLONG strideA, float * __restrict B, BLASLONG strideB ,\ - float * __restrict R, BLASLONG strideR){} - + float * __restrict R, BLASLONG strideR){ +fprintf(stderr,"EMPTY sgemm_kernel_direct should never be called \n"); +} #endif From 53d3bb50cc643c741442c74213ce6568396af33b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:37:50 -0700 Subject: [PATCH 109/360] Get symbol name from build system; change b.first to b.mi for AppleClang compatibility --- kernel/arm64/sgemm_direct_sme1_preprocess.S | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/arm64/sgemm_direct_sme1_preprocess.S b/kernel/arm64/sgemm_direct_sme1_preprocess.S index fa13620751..6c51b0bf63 100644 --- a/kernel/arm64/sgemm_direct_sme1_preprocess.S +++ b/kernel/arm64/sgemm_direct_sme1_preprocess.S @@ -37,9 +37,9 @@ #define C6 x15 //Constant6: 3*ncol .text - .global sgemm_direct_sme1_preprocess + .global ASMNAME //sgemm_direct_sme1_preprocess - sgemm_direct_sme1_preprocess: + ASMNAME: //sgemm_direct_sme1_preprocess: stp x19, x20, [sp, #-48]! stp x21, x22, [sp, #16] @@ -114,14 +114,14 @@ addvl mat_ptr0, mat_ptr0, #1 //mat_ptr0 += SVLb whilelt p8.b, mat_ptr0, inner_loop_exit - b.first .Loop_process + b.mi .Loop_process add mat_mod, mat_mod, C3, lsl #2 //mat_mod+=SVLs*nbc FP32 elements add mat, mat, C3, lsl #2 //mat+=SVLs*nbc FP32 elements incw outer_loop_cntr whilelt p0.s, outer_loop_cntr, nrow - b.first .M_Loop + b.mi .M_Loop smstop From 731f4dd686d9805ea4052e360dd811541a6e15c5 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:39:35 -0700 Subject: [PATCH 110/360] Add VORTEXM4 settings --- kernel/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/Makefile b/kernel/Makefile index 84cd482a06..7b96244ece 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -29,6 +29,9 @@ ifdef TARGET_CORE ifeq ($(TARGET_CORE), ARMV9SME) override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -DHAVE_SME -march=armv9-a+sve2+sme endif +ifeq ($(TARGET_CORE), VORTEXM4) + override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -DHAVE_SME -march=armv8.4-a+sme +endif ifeq ($(TARGET_CORE), SAPPHIRERAPIDS) override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(CLANGVERSIONGTEQ12))) From e82bcd27403b788bdacaaec56da839e5ccec5806 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:41:13 -0700 Subject: [PATCH 111/360] Update ARM64 sgemm_direct object generation --- kernel/Makefile.L3 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/kernel/Makefile.L3 b/kernel/Makefile.L3 index 79c88d76c7..b117bf1100 100644 --- a/kernel/Makefile.L3 +++ b/kernel/Makefile.L3 @@ -131,8 +131,12 @@ ifeq ($(ARCH), arm64) ifeq ($(TARGET_CORE), ARMV9SME) HAVE_SME = 1 endif +ifeq ($(TARGET_CORE), VORTEXM4) +HAVE_SME = 1 +endif SGEMMDIRECTKERNEL = sgemm_direct_arm64_sme1.c SGEMMDIRECTKERNEL_ALPHA_BETA = sgemm_direct_alpha_beta_arm64_sme1.c +SGEMMDIRECTPERFORMANT = sgemm_direct_performant.c endif endif endif @@ -209,11 +213,12 @@ SKERNELOBJS += \ endif ifeq ($(ARCH), arm64) SKERNELOBJS += \ + sgemm_direct_performant$(TSUFFIX).$(SUFFIX) \ sgemm_direct$(TSUFFIX).$(SUFFIX) \ sgemm_direct_alpha_beta$(TSUFFIX).$(SUFFIX) ifdef HAVE_SME SKERNELOBJS += \ - sgemm_direct_sme1$(TSUFFIX).$(SUFFIX) \ + sgemm_direct_sme1_2VLx2VL$(TSUFFIX).$(SUFFIX) \ sgemm_direct_sme1_preprocess$(TSUFFIX).$(SUFFIX) endif endif @@ -969,13 +974,15 @@ $(KDIR)sgemm_direct$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTKERNEL) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ endif ifeq ($(ARCH), arm64) +$(KDIR)sgemm_direct_performant$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTPERFORMANT) + $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sgemm_direct$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTKERNEL) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ $(KDIR)sgemm_direct_alpha_beta$(TSUFFIX).$(SUFFIX) : $(KERNELDIR)/$(SGEMMDIRECTKERNEL_ALPHA_BETA) $(CC) $(CFLAGS) -c -UDOUBLE -UCOMPLEX $< -o $@ ifdef HAVE_SME -$(KDIR)sgemm_direct_sme1$(TSUFFIX).$(SUFFIX) : - $(CC) $(CFLAGS) -c $(KERNELDIR)/sgemm_direct_sme1.S -UDOUBLE -UCOMPLEX -o $@ +$(KDIR)sgemm_direct_sme1_2VLx2VL$(TSUFFIX).$(SUFFIX) : + $(CC) $(CFLAGS) -c $(KERNELDIR)/sgemm_direct_sme1_2VLx2VL.S -UDOUBLE -UCOMPLEX -o $@ $(KDIR)sgemm_direct_sme1_preprocess$(TSUFFIX).$(SUFFIX) : $(CC) $(CFLAGS) -c $(KERNELDIR)/sgemm_direct_sme1_preprocess.S -UDOUBLE -UCOMPLEX -o $@ endif From 0203657f409e90247f8469c149331fdf1575d30c Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:42:32 -0700 Subject: [PATCH 112/360] Add sgemm_direct_performant for ARM64 --- kernel/setparam-ref.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index ccfbab8c11..36ebdd22ac 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -216,6 +216,7 @@ gotoblas_t TABLE_NAME = { #ifdef ARCH_ARM64 sgemm_directTS, sgemm_direct_alpha_betaTS, + sgemm_direct_performantTS, #endif sgemm_kernelTS, sgemm_betaTS, From de91afd2ae52ee0bf5a00680a7158e6c10cad6ae Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:44:21 -0700 Subject: [PATCH 113/360] Move SGEMM_DIRECT after the CBLAS parameter check and add sgemm_direct_performant for ARM64 --- interface/gemm.c | 56 +++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/interface/gemm.c b/interface/gemm.c index c5182c266a..62bc442467 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -424,30 +424,6 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS PRINT_DEBUG_CNAME; -#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) -#if defined(ARCH_x86) && (defined(USE_SGEMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH)) -#if defined(DYNAMIC_ARCH) - if (support_avx512() ) -#endif - if (beta == 0 && alpha == 1.0 && order == CblasRowMajor && TransA == CblasNoTrans && TransB == CblasNoTrans && SGEMM_DIRECT_PERFORMANT(m,n,k)) { - SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); - return; - } -#endif -#if defined(ARCH_ARM64) && (defined(USE_SGEMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH)) -#if defined(DYNAMIC_ARCH) - if (support_sme1()) -#endif - if (beta == 0 && alpha == 1.0 && order == CblasRowMajor && TransA == CblasNoTrans && TransB == CblasNoTrans) { - SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); - return; - }else if (order == CblasRowMajor && TransA == CblasNoTrans && TransB == CblasNoTrans) { - SGEMM_DIRECT_ALPHA_BETA(m, n, k, alpha, a, lda, b, ldb, beta, c, ldc); - return; - } -#endif -#endif - #ifndef COMPLEX args.alpha = (void *)α args.beta = (void *)β @@ -564,6 +540,35 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS return; } + + if ((args.m == 0) || (args.n == 0)) return; +#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16) +#if defined(ARCH_x86) && (defined(USE_SGEMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH)) +#if defined(DYNAMIC_ARCH) + if (support_avx512() ) +#endif + if (order == CblasRowMajor && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans && SGEMM_DIRECT_PERFORMANT(m,n,k)) { + SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); + return; + } +#endif +#if defined(ARCH_ARM64) && (defined(USE_SGEMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH)) +#if defined(DYNAMIC_ARCH) +if (strcmp(gotoblas_corename(), "armv9sme") == 0 || strcmp(gotoblas_corename(), "vortexm4") == 0) +// if (support_sme1()) +#endif + if (order == CblasRowMajor && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); + return; + } +else + if (order == CblasRowMajor && beta != 0. && (!(alpha==1.&&beta==1.)) && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + SGEMM_DIRECT_ALPHA_BETA(m, n, k, alpha, a, lda, b, ldb, beta, c, ldc); + return; + } +#endif +#endif + #endif #if defined(__linux__) && defined(__x86_64__) && defined(BFLOAT16) @@ -582,6 +587,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS if ((args.m == 0) || (args.n == 0)) return; + + + #if 0 fprintf(stderr, "m = %4d n = %d k = %d lda = %4d ldb = %4d ldc = %4d\n", args.m, args.n, args.k, args.lda, args.ldb, args.ldc); From 202a7a0e2a84c0f435312cc0c885b7ac41418e31 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:45:40 -0700 Subject: [PATCH 114/360] Separate VORTEXM4 from VORTEX and ARMV9SME --- param.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/param.h b/param.h index d0ee246e83..5a807d7f6d 100644 --- a/param.h +++ b/param.h @@ -3353,7 +3353,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if defined(CORTEXA57) || defined(CORTEXX1) || \ defined(CORTEXA72) || defined(CORTEXA73) || \ - defined(FALKOR) || defined(TSV110) || defined(EMAG8180) || defined(VORTEX) || defined(FT2000) + defined(FALKOR) || defined(TSV110) || defined(EMAG8180) || defined(VORTEX) || defined(FT2000) || defined(VORTEXM4) #define SGEMM_DEFAULT_UNROLL_M 16 #define SGEMM_DEFAULT_UNROLL_N 4 @@ -3370,7 +3370,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /*FIXME: this should be using the cache size, but there is currently no easy way to query that on ARM. So if getarch counted more than 8 cores we simply assume the host is a big desktop or server with abundant cache rather than a phone or embedded device */ -#if NUM_CORES > 8 || defined(TSV110) || defined(EMAG8180) || defined(VORTEX)|| defined(CORTEXX1) +#if NUM_CORES > 8 || defined(TSV110) || defined(EMAG8180) || defined(VORTEX)|| defined(CORTEXX1) || defined(VORTEXM4) #define SGEMM_DEFAULT_P 512 #define DGEMM_DEFAULT_P 256 #define CGEMM_DEFAULT_P 256 @@ -3598,15 +3598,15 @@ is a big desktop or server with abundant cache rather than a phone or embedded d #undef BGEMM_ALIGN_K #undef BGEMM_DEFAULT_UNROLL_M #undef BGEMM_DEFAULT_UNROLL_N -#define BGEMM_ALIGN_K 4 -#define BGEMM_DEFAULT_UNROLL_M 8 +#define BGEMM_ALIGN_K 8 #define BGEMM_DEFAULT_UNROLL_N 4 +#define BGEMM_DEFAULT_UNROLL_M 4 #undef SBGEMM_ALIGN_K #undef SBGEMM_DEFAULT_UNROLL_M #undef SBGEMM_DEFAULT_UNROLL_N -#define SBGEMM_ALIGN_K 4 -#define SBGEMM_DEFAULT_UNROLL_M 8 +#define SBGEMM_ALIGN_K 8 +#define SBGEMM_DEFAULT_UNROLL_M 4 #define SBGEMM_DEFAULT_UNROLL_N 4 #define SGEMM_DEFAULT_UNROLL_M 16 @@ -3842,7 +3842,7 @@ Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy rout #endif /* ARMv8 */ -#if defined(ARMV9SME) /* ARMv9 SME */ +#if defined(ARMV9SME) || defined(VORTEXM4) /* ARMv9 SME */ #define USE_SGEMM_KERNEL_DIRECT 1 #endif /* ARMv9 SME */ From e76c39099a5fbdb94c9e6ceeaf0e324896ea4d43 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:47:17 -0700 Subject: [PATCH 115/360] Add sgemm_direct_performant for ARM64 --- common_param.h | 1 + 1 file changed, 1 insertion(+) diff --git a/common_param.h b/common_param.h index 0145f667a1..d8298a0057 100644 --- a/common_param.h +++ b/common_param.h @@ -257,6 +257,7 @@ int (*shgemm_otcopy )(BLASLONG, BLASLONG, hfloat16 *, BLASLONG, hfloat16 *); #ifdef ARCH_ARM64 void (*sgemm_direct) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG , float *, BLASLONG , float * , BLASLONG); void (*sgemm_direct_alpha_beta) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float, float * , BLASLONG); + int (*sgemm_direct_performant) (BLASLONG M, BLASLONG N, BLASLONG K); #endif From ef0b883dffb8840799b722dd310fb1781859ef7b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:48:08 -0700 Subject: [PATCH 116/360] Add sgemm_direct_performant for ARM64 --- common_s.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_s.h b/common_s.h index 88b4732f51..513906ad50 100644 --- a/common_s.h +++ b/common_s.h @@ -217,7 +217,7 @@ #define SGEMM_DIRECT_PERFORMANT gotoblas -> sgemm_direct_performant #define SGEMM_DIRECT gotoblas -> sgemm_direct #elif ARCH_ARM64 -#define SGEMM_DIRECT_PERFORMANT sgemm_direct_performant +#define SGEMM_DIRECT_PERFORMANT gotoblas -> sgemm_direct_performant #define SGEMM_DIRECT gotoblas -> sgemm_direct #define SGEMM_DIRECT_ALPHA_BETA gotoblas -> sgemm_direct_alpha_beta #endif From ccfd0170fb48c3077621540f9eb2949ab6b38bf0 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:50:13 -0700 Subject: [PATCH 117/360] Enable SME on MacOS and add VORTEXM4 to DYNAMIC_ARCH list --- Makefile.system | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.system b/Makefile.system index 3f1c48d23d..cd9213365e 100644 --- a/Makefile.system +++ b/Makefile.system @@ -427,7 +427,7 @@ ifndef MACOSX_DEPLOYMENT_TARGET ifeq ($(ARCH), arm64) export MACOSX_DEPLOYMENT_TARGET=11.0 export NO_SVE = 1 -export NO_SME = 1 +# export NO_SME = 1 else export MACOSX_DEPLOYMENT_TARGET=10.8 endif @@ -723,6 +723,7 @@ DYNAMIC_CORE += A64FX endif ifneq ($(NO_SME), 1) DYNAMIC_CORE += ARMV9SME +DYNAMIC_CORE += VORTEXM4 endif DYNAMIC_CORE += THUNDERX DYNAMIC_CORE += THUNDERX2T99 From b0a00fbd62e1d3d6c0be4a42201ddee3002df1ae Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:51:10 -0700 Subject: [PATCH 118/360] Add minimal compiler flags for VORTEXM4 --- Makefile.arm64 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile.arm64 b/Makefile.arm64 index b98933b77a..3d713b853a 100644 --- a/Makefile.arm64 +++ b/Makefile.arm64 @@ -303,6 +303,11 @@ FCOMMON_OPT += -march=armv8.3-a endif endif +ifeq ($(CORE), VORTEXM4) +CCOMMON_OPT += -march=armv8.4-a+sme +FCOMMON_OPT += -march=armv8.4-a+sme +endif + ifeq (1, $(filter 1,$(GCCVERSIONGTEQ9) $(ISCLANG))) ifeq ($(CORE), TSV110) CCOMMON_OPT += -march=armv8.2-a -mtune=tsv110 From 30970460b88593030dc90c2dea864d344ef25cf2 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:52:05 -0700 Subject: [PATCH 119/360] Add VORTEXM4 target --- TargetList.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TargetList.txt b/TargetList.txt index b890c1440d..4903261e2c 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -111,6 +111,7 @@ THUNDERX2T99 TSV110 THUNDERX3T110 VORTEX +VORTEXM4 A64FX ARMV8SVE ARMV9SME From 4e2a8c18e5096f0775b0530dfb4cdbda9bf0c593 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:53:04 -0700 Subject: [PATCH 120/360] Split VORTEXM4 from VORTEX target due to SME support --- cpuid_arm64.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/cpuid_arm64.c b/cpuid_arm64.c index fd6a9bd478..0f1a125745 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -82,6 +82,7 @@ size_t length64=sizeof(value64); #define CPU_AMPERE1 25 // Apple #define CPU_VORTEX 13 +#define CPU_VORTEXM4 26 // Fujitsu #define CPU_A64FX 15 // Phytium @@ -113,7 +114,8 @@ static char *cpuname[] = { "FT2000", "CORTEXA76", "NEOVERSEV2", - "AMPERE1" + "AMPERE1", + "VORTEXM4", }; static char *cpuname_lower[] = { @@ -143,7 +145,7 @@ static char *cpuname_lower[] = { "cortexa76", "neoversev2", "ampere1", - "ampere1a" + "vortexm4" }; static int cpulowperf=0; @@ -400,7 +402,7 @@ int detect(void) if (value64 ==131287967|| value64 == 458787763 ) return CPU_VORTEX; //A12/M1 if (value64 == 3660830781) return CPU_VORTEX; //A15/M2 if (value64 == 2271604202) return CPU_VORTEX; //A16/M3 - if (value64 == 1867590060) return CPU_VORTEX; //M4 + if (value64 == 1867590060) return CPU_VORTEXM4; //M4 #else #ifdef OS_WINDOWS HKEY reghandle; @@ -740,6 +742,27 @@ void get_cpuconfig(void) length64 = sizeof(value64); sysctlbyname("hw.l2cachesize",&value64,&length64,NULL,0); printf("#define L2_SIZE %lld \n",value64); +#endif + printf("#define DTB_DEFAULT_ENTRIES 64 \n"); + printf("#define DTB_SIZE 4096 \n"); + break; + case CPU_VORTEXM4: + printf("#define VORTEXM4 \n"); + printf("#define HAVE_SME 1 \n"); +#ifdef __APPLE__ + length64 = sizeof(value64); + sysctlbyname("hw.l1icachesize",&value64,&length64,NULL,0); + printf("#define L1_CODE_SIZE %lld \n",value64); + length64 = sizeof(value64); + sysctlbyname("hw.cachelinesize",&value64,&length64,NULL,0); + printf("#define L1_CODE_LINESIZE %lld \n",value64); + printf("#define L1_DATA_LINESIZE %lld \n",value64); + length64 = sizeof(value64); + sysctlbyname("hw.l1dcachesize",&value64,&length64,NULL,0); + printf("#define L1_DATA_SIZE %lld \n",value64); + length64 = sizeof(value64); + sysctlbyname("hw.l2cachesize",&value64,&length64,NULL,0); + printf("#define L2_SIZE %lld \n",value64); #endif printf("#define DTB_DEFAULT_ENTRIES 64 \n"); printf("#define DTB_SIZE 4096 \n"); From 18f9582f3e955c0e98ac98d221de88cb18de2480 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 01:54:09 -0700 Subject: [PATCH 121/360] Add VORTEXM4 --- driver/others/dynamic_arm64.c | 40 +++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/driver/others/dynamic_arm64.c b/driver/others/dynamic_arm64.c index 70b51f6fce..0202a7368b 100644 --- a/driver/others/dynamic_arm64.c +++ b/driver/others/dynamic_arm64.c @@ -128,6 +128,12 @@ extern gotoblas_t gotoblas_ARMV9SME; #else #define gotoblas_ARMV9SME gotoblas_ARMV8 #endif +#ifdef DYN_VORTEXM4 +extern gotoblas_t gotoblas_VORTEXM4; +#else +#error "dont have vortexm4" +#define gotoblas_VORTEXM4 gotoblas_ARMV8 +#endif #ifdef DYN_CORTEXA55 extern gotoblas_t gotoblas_CORTEXA55; #else @@ -155,17 +161,22 @@ extern gotoblas_t gotoblas_NEOVERSEV1; extern gotoblas_t gotoblas_NEOVERSEN2; extern gotoblas_t gotoblas_ARMV8SVE; extern gotoblas_t gotoblas_A64FX; -#ifndef NO_SME -extern gotoblas_t gotoblas_ARMV9SME; -#else -#define gotoblas_ARMV9SME gotoblas_ARMV8SVE -#endif #else #define gotoblas_NEOVERSEV1 gotoblas_ARMV8 #define gotoblas_NEOVERSEN2 gotoblas_ARMV8 #define gotoblas_ARMV8SVE gotoblas_ARMV8 #define gotoblas_A64FX gotoblas_ARMV8 -#define gotoblas_ARMV9SME gotoblas_ARMV8 +#endif +#ifndef NO_SME +extern gotoblas_t gotoblas_ARMV9SME; +extern gotoblas_t gotoblas_VORTEXM4; +#else +#ifndef NO_SVE +#define gotoblas_ARMV9SME gotoblas_ARMV8SVE +#else +#define gotoblas_ARMV9SME gotoblas_NEOVERSEN1 +#endif +#define gotoblas_VORTEXM4 gotoblas_NEOVERSEN1 #endif extern gotoblas_t gotoblas_THUNDERX3T110; @@ -176,7 +187,7 @@ extern void openblas_warning(int verbose, const char * msg); #define FALLBACK_VERBOSE 1 #define NEOVERSEN1_FALLBACK "OpenBLAS : Your OS does not support SVE instructions. OpenBLAS is using Neoverse N1 kernels as a fallback, which may give poorer performance.\n" -#define NUM_CORETYPES 19 +#define NUM_CORETYPES 20 /* * In case asm/hwcap.h is outdated on the build system, make sure @@ -216,6 +227,7 @@ static char *corename[] = { "armv8sve", "a64fx", "armv9sme", + "vortexm4", "unknown" }; @@ -239,6 +251,7 @@ char *gotoblas_corename(void) { if (gotoblas == &gotoblas_ARMV8SVE) return corename[16]; if (gotoblas == &gotoblas_A64FX) return corename[17]; if (gotoblas == &gotoblas_ARMV9SME) return corename[18]; + if (gotoblas == &gotoblas_VORTEXM4) return corename[19]; return corename[NUM_CORETYPES]; } @@ -277,6 +290,7 @@ static gotoblas_t *force_coretype(char *coretype) { case 16: return (&gotoblas_ARMV8SVE); case 17: return (&gotoblas_A64FX); case 18: return (&gotoblas_ARMV9SME); + case 19: return (&gotoblas_VORTEXM4); } snprintf(message, 128, "Core not found: %s\n", coretype); openblas_warning(1, message); @@ -288,11 +302,11 @@ static gotoblas_t *get_coretype(void) { char coremsg[128]; #if defined (OS_DARWIN) -//future #if !defined(NO_SME) -// if (support_sme1()) { -// return &gotoblas_ARMV9SME; -// } -// #endif +#if !defined(NO_SME) + if (support_sme1()) { + return &gotoblas_VORTEXM4; + } +#endif return &gotoblas_NEOVERSEN1; #endif @@ -463,7 +477,7 @@ static gotoblas_t *get_coretype(void) { } break; case 0x61: // Apple -//future if (support_sme1()) return &gotoblas_ARMV9SME; + if (support_sme1()) return &gotoblas_VORTEXM4; return &gotoblas_NEOVERSEN1; break; default: From ca542f319fe27f54bb1b7245a4a7025cbe2d0060 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 08:41:38 -0700 Subject: [PATCH 122/360] Add VORTEXM4 --- kernel/arm64/KERNEL.VORTEXM4 | 1 + 1 file changed, 1 insertion(+) create mode 100644 kernel/arm64/KERNEL.VORTEXM4 diff --git a/kernel/arm64/KERNEL.VORTEXM4 b/kernel/arm64/KERNEL.VORTEXM4 new file mode 100644 index 0000000000..46a34469c3 --- /dev/null +++ b/kernel/arm64/KERNEL.VORTEXM4 @@ -0,0 +1 @@ +include $(KERNELDIR)/KERNEL.NEOVERSEN1 From a4f5fec46e0b8b931512b05981c601293f5214e5 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:32:07 -0700 Subject: [PATCH 123/360] Add compiler options for VORTEXM4 --- cmake/cc.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 952b2dd7ad..10ad9388d6 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -315,6 +315,16 @@ if (${CORE} STREQUAL ARMV9SME) endif () endif () +if (${CORE} STREQUAL VORTEXM4) + if (NOT DYNAMIC_ARCH) + if (${CMAKE_C_COMPILER_ID} STREQUAL "NVC" AND NOT NO_SVE) + set (CCOMMON_OPT "${CCOMMON_OPT} -tp=host") + else () + set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.4-a+sme") + endif () + endif () +endif () + if (${CORE} STREQUAL CORTEXA510) if (NOT DYNAMIC_ARCH) set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv8.4-a+sve") From c794d0a4ced73f8819ae14e54d864a6a4dcdd3e2 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:33:24 -0700 Subject: [PATCH 124/360] Add VORTEXM4 --- cmake/prebuild.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index eea5eb5ede..8b0fda8178 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1252,7 +1252,7 @@ endif () set(ZGEMM_UNROLL_M 4) set(ZGEMM_UNROLL_N 4) set(SYMV_P 16) - elseif ("${TCORE}" STREQUAL "VORTEX") + elseif ("${TCORE}" STREQUAL "VORTEX" OR "${TCORE}" STREQUAL "VORTEXM4") file(APPEND ${TARGET_CONF_TEMP} "#define ARMV8\n" "#define L1_CODE_SIZE\t32768\n" From 4328c91e27fb75e337d23939e7ccbeaed20dd43a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:34:51 -0700 Subject: [PATCH 125/360] relax requirements in compiler SME capability check --- cmake/system_check.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake index dd0dfab637..04e07cc135 100644 --- a/cmake/system_check.cmake +++ b/cmake/system_check.cmake @@ -142,7 +142,7 @@ endif() if (ARM64) if (NOT NO_SME) file(WRITE ${PROJECT_BINARY_DIR}/sme.c ".text \n.global sme_test\n\nsme_test:\nsmstart\nsmstop\nret\n") - execute_process(COMMAND ${CMAKE_C_COMPILER} -march=armv9-a+sve2+sme -c -v -o ${PROJECT_BINARY_DIR}/sme.o ${PROJECT_BINARY_DIR}/sme.c OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE NO_SME) + execute_process(COMMAND ${CMAKE_C_COMPILER} -march=armv8.4-a+sme -c -v -o ${PROJECT_BINARY_DIR}/sme.o ${PROJECT_BINARY_DIR}/sme.c OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE NO_SME) if (NO_SME EQUAL 1) set (CCOMMON_OPT "${CCOMMON_OPT} -DNO_SME") endif() From 426b5f23ed0e50cfc5110b2e8529c0e4c8bd65cc Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:35:36 -0700 Subject: [PATCH 126/360] Add compiler options for VORTEXM4 --- cmake/system.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/system.cmake b/cmake/system.cmake index bf4c548b92..7ce5b82abb 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -361,6 +361,9 @@ if (${TARGET} STREQUAL NEOVERSEV1) if (${TARGET} STREQUAL ARMV9SME) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv9-a+sme -O3") endif() + if (${TARGET} STREQUAL VORTEXM4) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=armv8.4-a+sme -O3") + endif() if (${TARGET} STREQUAL A64FX) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve-intrinsics -march=armv8.2-a+sve -mtune=a64fx") From 0bc19a13353aa5e306786b118144086754508073 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:38:16 -0700 Subject: [PATCH 127/360] Update SME kernel details --- kernel/arm64/CMakeLists.txt | 1499 +++++++++++++++++++++++++++++++++++ 1 file changed, 1499 insertions(+) create mode 100644 kernel/arm64/CMakeLists.txt diff --git a/kernel/arm64/CMakeLists.txt b/kernel/arm64/CMakeLists.txt new file mode 100644 index 0000000000..b4ea62f0d5 --- /dev/null +++ b/kernel/arm64/CMakeLists.txt @@ -0,0 +1,1499 @@ +############################################################################### +# Copyright (c) 2025, The OpenBLAS Project +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the OpenBLAS project nor the names of +# its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +############################################################################### + +include_directories(${PROJECT_SOURCE_DIR}) + +# Makefile +function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) + set (OPENBLAS_SRC "") + set (ARCH_SUFFIX "") + include("${PROJECT_SOURCE_DIR}/cmake/kernel.cmake") + if (${DYNAMIC_ARCH}) + include("${PROJECT_SOURCE_DIR}/cmake/system.cmake") + endif () + ParseMakefileVars("${KERNELDIR}/KERNEL") + ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") + SetDefaultL1() + SetDefaultL2() + SetDefaultL3() + + set(KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h) + if(NOT NO_LAPACK) + set(KERNEL_INTERFACE ${KERNEL_INTERFACE} common_lapack.h) + endif () + + if (${ADD_COMMONOBJS}) + if (X86) + if (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") + GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) + else() + GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) + endif() + endif () + + # don't use float type name mangling here + GenerateNamedObjects("${KERNELDIR}/${LSAME_KERNEL}" "F_INTERFACE" "lsame" false "" "" true "") + GenerateNamedObjects("${KERNELDIR}/${SCABS_KERNEL}" "COMPLEX;F_INTERFACE" "scabs1" false "" "" true "") + GenerateNamedObjects("${KERNELDIR}/${DCABS_KERNEL}" "DOUBLE;COMPLEX;F_INTERFACE" "dcabs1" false "" "" true "") + endif () + + # Run with no ARCH_SUFFIX for above + set (ARCH_SUFFIX "${TSUFFIX}") + # Makefile.L1 + foreach (float_type ${FLOAT_TYPES}) + # a bit of metaprogramming here to pull out the appropriate KERNEL var + string(SUBSTRING ${float_type} 0 1 float_char) + if (${float_type} STREQUAL "BFLOAT16") + set (float_char "SB") + endif () + GenerateNamedObjects("${KERNELDIR}/${${float_char}AMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false ${float_type}) + if (DEFINED ${float_char}MAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${${float_char}MAXKERNEL}" "" "max_k" false "" "" false ${float_type}) + endif () + if (DEFINED ${float_char}MINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${${float_char}MINKERNEL}" "USE_MIN" "min_k" false "" "" false ${float_type}) + endif () + GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false ${float_type}) + if (DEFINED I${float_char}MAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${I${float_char}MAXKERNEL}" "" "i*max_k" false "" "" false ${float_type}) + endif () + if (DEFINED I${float_char}MINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${I${float_char}MINKERNEL}" "USE_MIN" "i*min_k" false "" "" false ${float_type}) + endif () + GenerateNamedObjects("${KERNELDIR}/${${float_char}ASUMKERNEL}" "" "asum_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "" "axpy_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}COPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}NRM2KERNEL}" "" "nrm2_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "rot_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTMKERNEL}" "" "rotm_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}SCALKERNEL}" "" "scal_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}SWAPKERNEL}" "" "swap_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPBYKERNEL}" "" "axpby_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}SUMKERNEL}" "" "sum_k" false "" "" false ${float_type}) + + if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") + GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dotu_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "CONJ" "dotc_k" false "" "" false ${float_type}) + else () + GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dot_k" false "" "" false ${float_type}) + endif () + + if (${float_type} STREQUAL "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "srot_k" false "" "" false ${float_type}) + endif() + if (${float_type} STREQUAL "ZCOMPLEX") + GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "drot_k" false "" "" false ${float_type}) + endif() + + endforeach () + + #dsdot,sdsdot + GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "d*dot_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "dsdot_k" false "" "" false "SINGLE") + + # sbdot + if (BUILD_BFLOAT16) + GenerateNamedObjects("${KERNELDIR}/${BSCALKERNEL}" "BGEMM" "scal_k" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBDOTKERNEL}" "SBDOT" "dot_k" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "SINGLE" "f16tos_k" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "DOUBLE" "bf16tod_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${TOBF16KERNEL}" "SINGLE" "stobf16_k" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${TOBF16KERNEL}" "DOUBLE" "dtobf16_k" false "" "" false "BFLOAT16") + endif() + + if ((BUILD_COMPLEX OR BUILD_DOUBLE) AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SASUMKERNEL}" "" "asum_k" false "" "" false "SINGLE") + if (DEFINED SMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${SMAXKERNEL}" "" "max_k" false "" "" false "SINGLE") + endif () + if (DEFINED SMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${SMINKERNEL}" "USE_MIN" "min_k" false "" "" false "SINGLE") + endif () + if (DEFINED ISMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${ISMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "SINGLE") + endif () + if (DEFINED ISMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${ISMAXKERNEL}" "" "i*max_k" false "" "" false "SINGLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${ISAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${ISAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SSWAPKERNEL}" "" "swap_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SAXPYKERNEL}" "" "axpy_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SNRM2KERNEL}" "" "nrm2_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SDOTKERNEL}" "" "dot_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SROTKERNEL}" "" "rot_k" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SROTMKERNEL}" "" "rotm_k" false "" "" false "SINGLE") + endif () + if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) + GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE") + if (DEFINED DMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE") + endif () + if (DEFINED DMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE") + endif () + if (DEFINED IDMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE") + endif () + if (DEFINED IDMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE") + endif () + + # Makefile.L2 + GenerateCombinationObjects("generic/symv_k.c" "LOWER" "U" "" 1 "" "" 3) + GenerateNamedObjects("generic/ger.c" "" "ger_k" false "" "" "" 3) + foreach (float_type ${FLOAT_TYPES}) + string(SUBSTRING ${float_type} 0 1 float_char) + if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") + GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "" "geru_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "XCONJ" "gerv_k" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ;XCONJ" "gerd_k" false "" "" false ${float_type}) + + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false ${float_type}) + + GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_U_KERNEL}" "HEMV" "hemv_U" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_L_KERNEL}" "HEMV;LOWER" "hemv_L" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_V_KERNEL}" "HEMV;HEMVREV" "hemv_V" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_M_KERNEL}" "HEMV;HEMVREV;LOWER" "hemv_M" false "" "" false ${float_type}) + + else () + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false ${float_type}) + endif () + endforeach () + if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) + GenerateNamedObjects("${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE") + endif () + if (BUILD_COMPLEX AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") + endif () + if (BUILD_BFLOAT16) + GenerateNamedObjects("${KERNELDIR}/${BGEMVNKERNEL}" "BGEMM" "gemv_n" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BGEMVTKERNEL}" "BGEMM" "gemv_t" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMVNKERNEL}" "" "gemv_n" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMVTKERNEL}" "" "gemv_t" false "" "" false "BFLOAT16") + endif () + # Makefile.L3 + set(USE_TRMM false) + string(TOUPPER ${TARGET_CORE} UC_TARGET_CORE) + if (ARM OR ARM64 OR RISCV64 OR (UC_TARGET_CORE MATCHES LONGSOON3B) OR (UC_TARGET_CORE MATCHES GENERIC) OR (UC_TARGET_CORE MATCHES HASWELL) OR (UC_TARGET_CORE MATCHES ZEN) OR (UC_TARGET_CORE MATCHES SKYLAKEX) OR (UC_TARGET_CORE MATCHES COOPERLAKE) OR (UC_TARGET_CORE MATCHES SAPPHIRERAPIDS)) + set(USE_TRMM true) + endif () + if (ZARCH OR (UC_TARGET_CORE MATCHES POWER8) OR (UC_TARGET_CORE MATCHES POWER9) OR (UC_TARGET_CORE MATCHES POWER10)) + set(USE_TRMM true) + endif () + set(USE_DIRECT_SGEMM false) + if (X86_64 OR ARM64) + set(USE_DIRECT_SGEMM true) + endif() + if (UC_TARGET_CORE MATCHES ARMV9SME OR UC_TARGET_CORE MATCHES VORTEXM4) + set (HAVE_SME true) + endif () + + if (USE_DIRECT_SGEMM) + # if (NOT DEFINED SGEMMDIRECTKERNEL) + if (X86_64) + set (SGEMMDIRECTKERNEL sgemm_direct_skylakex.c) + set (SGEMMDIRECTPERFORMANT sgemm_direct_performant.c) + # endif() + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) + elseif (ARM64) + set (SGEMMDIRECTPERFORMANT sgemm_direct_performant.c) + set (SGEMMDIRECTKERNEL sgemm_direct_arm64_sme1.c) + set (SGEMMDIRECTKERNEL_ALPHA_BETA sgemm_direct_alpha_beta_arm64_sme1.c) + set (SGEMMDIRECTSMEKERNEL sgemm_direct_sme1_2VLx2VL.S) + set (SGEMMDIRECTPREKERNEL sgemm_direct_sme1_preprocess.S) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL_ALPHA_BETA}" "" "gemm_direct_alpha_beta" false "" "" false SINGLE) + if (HAVE_SME) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1_2VLx2VL" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPREKERNEL}" "" "gemm_direct_sme1_preprocess" false "" "" false SINGLE) + endif () + endif () + endif() + + foreach (float_type SINGLE DOUBLE) + string(SUBSTRING ${float_type} 0 1 float_char) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${float_type}) + endforeach() + if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) + GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE") + if (DGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE") + GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "DOUBLE") + GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "DOUBLE") + if (SMALL_MATRIX_OPT) + if (NOT DEFINED DGEMM_SMALL_M_PERMIT) + set(DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_NN) + set(DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_NT) + set(DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_TN) + set(DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_TT) + set(DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_NN) + set(DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_NT) + set(DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_TN) + set(DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_TT) + set(DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE") + endif () + + endif () + if ((BUILD_DOUBLE OR BUILD_COMPLEX) AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMKERNEL}" "" "gemm_kernel" false "" "" false "SINGLE") + if (SGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${SGEMM_BETA}" "" "gemm_beta" false "" "" false "SINGLE") + endif () + + if (BUILD_BFLOAT16) + if (BGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMINCOPY}" "BGEMM" "${BGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMITCOPY}" "BGEMM" "${BGEMMITCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMONCOPY}" "BGEMM" "${BGEMMONCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (BGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${BGEMMOTCOPY}" "BGEMM" "${BGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + GenerateNamedObjects("${KERNELDIR}/${BGEMMKERNEL}" "BGEMM" "gemm_kernel" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${BGEMM_BETA}" "BGEMM" "gemm_beta" false "" "" false "BFLOAT16") + if (SBGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${SBGEMMINCOPY}" "" "${SBGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (SBGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${SBGEMMITCOPY}" "" "${SBGEMMITCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (SBGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${SBGEMMONCOPY}" "" "${SBGEMMONCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + if (SBGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${SBGEMMOTCOPY}" "" "${SBGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16") + endif () + GenerateNamedObjects("${KERNELDIR}/${SBGEMMKERNEL}" "" "gemm_kernel" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_BETA}" "" "gemm_beta" false "" "" false "BFLOAT16") + endif () + if (BUILD_HFLOAT16) + if (SHGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMINCOPY}" "" "${SHGEMMINCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMITCOPY}" "" "${SHGEMMITCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMONCOPY}" "" "${SHGEMMONCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + if (SHGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${SHGEMMOTCOPY}" "" "${SHGEMMOTCOPYOBJ}" false "" "" true "HFLOAT16") + endif () + GenerateNamedObjects("${KERNELDIR}/${SHGEMMKERNEL}" "" "gemm_kernel" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_BETA}" "" "gemm_beta" false "" "" false "HFLOAT16") + endif () + foreach (float_type ${FLOAT_TYPES}) + string(SUBSTRING ${float_type} 0 1 float_char) + if (${float_char}GEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMINCOPY}" "${float_type}" "${${float_char}GEMMINCOPYOBJ}" false "" "" true ${float_type}) + endif () + + if (${float_char}GEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMITCOPY}" "${float_type}" "${${float_char}GEMMITCOPYOBJ}" false "" "" true ${float_type}) + endif () + + if (${float_char}GEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMONCOPY}" "${float_type}" "${${float_char}GEMMONCOPYOBJ}" false "" "" true ${float_type}) + endif () + + if (${float_char}GEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMOTCOPY}" "${float_type}" "${${float_char}GEMMOTCOPYOBJ}" false "" "" true ${float_type}) + endif () + + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_BETA}" "" "gemm_beta" false "" "" false ${float_type}) + + if (USE_TRMM) + set(TRMM_KERNEL "${${float_char}TRMMKERNEL}") + else () + set(TRMM_KERNEL "${${float_char}GEMMKERNEL}") + endif () + + if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") + + # just enumerate all these. there is an extra define for these indicating which side is a conjugate (e.g. CN NC NN) that I don't really want to work into GenerateCombinationObjects + + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false ${float_type}) + + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;NN" "trmm_kernel_LN" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;NN" "trmm_kernel_LT" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;CONJ;CN" "trmm_kernel_LR" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;CONJ;CN" "trmm_kernel_LC" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;NN" "trmm_kernel_RN" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;NN" "trmm_kernel_RT" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;CONJ;NC" "trmm_kernel_RR" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;CONJ;NC" "trmm_kernel_RC" false "" "" false ${float_type}) + + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false ${float_type}) + + + #hemm +if (NOT DEFINED ${float_char}HEMMUTCOPY_M) + set(HEMMUTCOPY_M "generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_M}.c") + set(HEMMLTCOPY_M "generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(HEMMUTCOPY_M "${KERNELDIR}/${${float_char}HEMMUTCOPY_M}") + set(HEMMLTCOPY_M "${KERNELDIR}/${${float_char}HEMMLTCOPY_M}") +endif() + GenerateNamedObjects(${HEMMUTCOPY_M} "" "hemm_iutcopy" false "" "" false ${float_type}) + GenerateNamedObjects(${HEMMLTCOPY_M} "LOWER" "hemm_iltcopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "hemm_outcopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "hemm_oltcopy" false "" "" false ${float_type}) + + # symm for c and z +if (NOT DEFINED ${float_char}SYMMUCOPY_M) + set(SYMMUCOPY_M "generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_M}.c") + set(SYMMLCOPY_M "generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}") + set(SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}") +endif() + GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) + GenerateNamedObjects(${SYMMUCOPY_M} "" "symm_iutcopy" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) + GenerateNamedObjects(${SYMMLCOPY_M} "LOWER" "symm_iltcopy" false "" "" false ${float_type}) + + +if (NOT DEFINED ${float_char}TRMMUNCOPY_M) + set(TRMMUNCOPY_M "generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMLNCOPY_M "generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMUTCOPY_M "generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMLTCOPY_M "generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}") + set(TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}") + set(TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}") + set(TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}") +endif () + GenerateNamedObjects(${TRMMUNCOPY_M} "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMUNCOPY_M} "" "trmm_iunncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMUTCOPY_M} "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMUTCOPY_M} "" "trmm_iutncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) + + +if (NOT DEFINED ZTRSMCOPYLN_M) + set(ZTRSMUNCOPY_M "generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c") + set(ZTRSMLNCOPY_M "generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c") + set(ZTRSMUTCOPY_M "generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c") + set(ZTRSMLTCOPY_M "generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(ZTRSMUNCOPY_M "${KERNELDIR}/${ZTRSMCOPYUN_M}") + set(ZTRSMLNCOPY_M "${KERNELDIR}/${ZTRSMCOPYLN_M}") + set(ZTRSMUTCOPY_M "${KERNELDIR}/${ZTRSMCOPYUT_M}") + set(ZTRSMLTCOPY_M "${KERNELDIR}/${ZTRSMCOPYLT_M}") +endif () + GenerateNamedObjects(${ZTRSMUNCOPY_M} "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${ZTRSMUNCOPY_M} "" "trsm_iunncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${ZTRSMLNCOPY_M} "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${ZTRSMLNCOPY_M} "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${ZTRSMUTCOPY_M} "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${ZTRSMUTCOPY_M} "" "trsm_iutncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${ZTRSMLTCOPY_M} "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${ZTRSMLTCOPY_M} "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) + + #gemm3m + if (USE_GEMM3M) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM3MKERNEL}" "NN" "gemm3m_kernel" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_oncopyb" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_oncopyr" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_oncopyi" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_otcopyb" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_otcopyr" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_otcopyi" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_incopyb" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_incopyr" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_incopyi" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_itcopyb" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_itcopyr" false "" "" false ${float_type}) + GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_itcopyi" false "" "" false ${float_type}) + +#hemm3m and symm3m + foreach(name symm3m hemm3m) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_oucopyb.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_oucopyr.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_oucopyi.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_olcopyb.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_olcopyr.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_olcopyi.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_iucopyb.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_iucopyr.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_iucopyi.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_ilcopyb.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_ilcopyr.c" false "" "" false ${float_type}) + GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_ilcopyi.c" false "" "" false ${float_type}) + + endforeach () + + endif() + + else () #For real + GenerateCombinationObjects("${KERNELDIR}/${TRMM_KERNEL}" "LEFT;TRANSA" "R;N" "TRMMKERNEL" 2 "trmm_kernel" false ${float_type}) + + # symm for s and d +if (NOT DEFINED ${float_char}SYMMUCOPY_M) + set(SYMMUCOPY_M "generic/symm_ucopy_${${float_char}GEMM_UNROLL_M}.c") + set(SYMMLCOPY_M "generic/symm_lcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}") + set(SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}") +endif() + GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) + GenerateNamedObjects(${SYMMUCOPY_M} "" "symm_iutcopy" false "" "" false ${float_type}) + + GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) + GenerateNamedObjects(${SYMMLCOPY_M} "LOWER" "symm_iltcopy" false "" "" false ${float_type}) + + # These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define. + # Could simplify it a bit by pairing up by -UUNIT/-DUNIT. + +if (NOT DEFINED ${float_char}TRMMUNCOPY_M) + set(TRMMUNCOPY_M "generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMLNCOPY_M "generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMUTCOPY_M "generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRMMLTCOPY_M "generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}") + set(TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}") + set(TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}") + set(TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}") +endif () + GenerateNamedObjects(${TRMMUNCOPY_M} "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMUNCOPY_M} "" "trmm_iunncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMUTCOPY_M} "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMUTCOPY_M} "" "trmm_iutncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) + + +if (NOT DEFINED TRSMCOPYLN_M) + set(TRSMUNCOPY_M "generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRSMLNCOPY_M "generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRSMUTCOPY_M "generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c") + set(TRSMLTCOPY_M "generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") +else () + set(TRSMUNCOPY_M "${KERNELDIR}/${TRSMCOPYUN_M}") + set(TRSMLNCOPY_M "${KERNELDIR}/${TRSMCOPYLN_M}") + set(TRSMUTCOPY_M "${KERNELDIR}/${TRSMCOPYUT_M}") + set(TRSMLTCOPY_M "${KERNELDIR}/${TRSMCOPYLT_M}") +endif () + GenerateNamedObjects(${TRSMUNCOPY_M} "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRSMUNCOPY_M} "" "trsm_iunncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRSMLNCOPY_M} "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRSMLNCOPY_M} "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRSMUTCOPY_M} "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRSMUTCOPY_M} "" "trsm_iutncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) + + GenerateNamedObjects(${TRSMLTCOPY_M} "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) + GenerateNamedObjects(${TRSMLTCOPY_M} "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) + GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) + + endif () + + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false ${float_type}) + + if (NOT DEFINED ${float_char}GEMM_SMALL_M_PERMIT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit.c) + else () + set(${float_char}GEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_NN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn.c) + else () + set(${float_char}GEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_NT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt.c) + else () + set(${float_char}GEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_TN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn.c) + else () + set(${float_char}GEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_TT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt.c) + else () + set(${float_char}GEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_NN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn.c) + else () + set(${float_char}GEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_NT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt.c) + else () + set(${float_char}GEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_TN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn.c) + else () + set(${float_char}GEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + endif () + if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_TT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}GEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt.c) + else () + set(${float_char}GEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + endif () + + if (SMALL_MATRIX_OPT) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false ${float_type}) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false ${float_type}) + + else () + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false ${float_type}) + endif () + if (BUILD_BFLOAT16) + if (NOT DEFINED SBGEMM_SMALL_M_PERMIT) + set(SBGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_NN) + set(SBGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_NT) + set(SBGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_TN) + set(SBGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_TT) + set(SBGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_B0_NN) + set(SBGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_B0_NT) + set(SBGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_B0_TN) + set(SBGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SBGEMM_SMALL_K_B0_TT) + set(SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "BFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "BFLOAT16") + endif () + + if (BUILD_HFLOAT16) + if (NOT DEFINED SHGEMM_SMALL_M_PERMIT) + set(SHGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_NN) + set(SHGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_NT) + set(SHGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_TN) + set(SHGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_TT) + set(SHGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_NN) + set(SHGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_NT) + set(SHGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_TN) + set(SHGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SHGEMM_SMALL_K_B0_TT) + set(SHGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "HFLOAT16") + GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "HFLOAT16") + endif () + endif () + + if (NOT DEFINED ${float_char}OMATCOPY_CN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_CN ../arm/zomatcopy_cn.c) + else () + set(${float_char}OMATCOPY_CN ../arm/omatcopy_cn.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_RN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_RN ../arm/zomatcopy_rn.c) + else () + set(${float_char}OMATCOPY_RN ../arm/omatcopy_rn.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_CT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_CT ../arm/zomatcopy_ct.c) + else () + set(${float_char}OMATCOPY_CT ../arm/omatcopy_ct.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_RT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_RT ../arm/zomatcopy_rt.c) + else () + set(${float_char}OMATCOPY_RT ../arm/omatcopy_rt.c) + endif () + endif () + + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CN}" "" "omatcopy_k_cn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RN}" "ROWM" "omatcopy_k_rn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CT}" "" "omatcopy_k_ct" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RT}" "ROWM" "omatcopy_k_rt" false "" "" false ${float_type}) + + if (NOT DEFINED ${float_char}OMATCOPY_CNC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_CNC ../arm/zomatcopy_cnc.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_RNC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_RNC ../arm/zomatcopy_rnc.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_CTC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_CTC ../arm/zomatcopy_ctc.c) + endif () + endif () + if (NOT DEFINED ${float_char}OMATCOPY_RTC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}OMATCOPY_RTC ../arm/zomatcopy_rtc.c) + endif () + endif () + + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CNC}" "CONJ" "omatcopy_k_cnc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RNC}" "CONJ;ROWM" "omatcopy_k_rnc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CTC}" "CONJ" "omatcopy_k_ctc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type}) + endif() + + #imatcopy + if (NOT DEFINED ${float_char}IMATCOPY_CN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c) + else () + set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c) + endif () + endif () + + if (NOT DEFINED ${float_char}IMATCOPY_RN) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c) + else () + set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c) + endif () + endif () + + if (NOT DEFINED ${float_char}IMATCOPY_CT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c) + else () + set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c) + endif () + endif () + + if (NOT DEFINED ${float_char}IMATCOPY_RT) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c) + else () + set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c) + endif () + endif () + + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type}) + + + if (NOT DEFINED ${float_char}IMATCOPY_CNC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c) + endif () + endif () + if (NOT DEFINED ${float_char}IMATCOPY_RNC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c) + endif () + endif () + if (NOT DEFINED ${float_char}IMATCOPY_CTC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c) + endif () + endif () + if (NOT DEFINED ${float_char}IMATCOPY_RTC) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c) + endif () + endif () + + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type}) + endif() + + #geadd + GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type}) + endforeach () + + if ((BUILD_DOUBLE OR BUILD_COMPLEX) AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false "SINGLE") + + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false "SINGLE") + + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false "SINGLE") + + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false "SINGLE") + if (SMALL_MATRIX_OPT) + if (NOT DEFINED SGEMM_SMALL_M_PERMIT) + set(SGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_NN) + set(SGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_NT) + set(SGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_TN) + set(SGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_TT) + set(SGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_B0_NN) + set(SGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_B0_NT) + set(SGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_B0_TN) + set(SGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED SGEMM_SMALL_K_B0_TT) + set(SGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "SINGLE") + endif () + + endif () + + # Makefile.LA + if(NOT NO_LAPACK) + foreach (float_type ${FLOAT_TYPES}) + string(SUBSTRING ${float_type} 0 1 float_char) + if (${float_type} STREQUAL "BFLOAT16") + set (float_char "SB") + endif () + if (NOT DEFINED ${float_char}NEG_TCOPY) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") + set(${float_char}NEG_TCOPY ../generic/zneg_tcopy_${${float_char}GEMM_UNROLL_M}.c) + else () + set(${float_char}NEG_TCOPY ../generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c) + endif () + endif () + + if (NOT DEFINED ${float_char}LASWP_NCOPY) + if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") + set(${float_char}LASWP_NCOPY ../generic/zlaswp_ncopy_${${float_char}GEMM_UNROLL_N}.c) + else () + set(${float_char}LASWP_NCOPY ../generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c) + endif () + endif () + GenerateNamedObjects("${KERNELDIR}/${${float_char}NEG_TCOPY}" "" "neg_tcopy" false "" "" false ${float_type}) + GenerateNamedObjects("${KERNELDIR}/${${float_char}LASWP_NCOPY}" "" "laswp_ncopy" false "" "" false ${float_type}) + endforeach() + if (BUILD_COMPLEX AND NOT BUILD_SINGLE) + if (NOT DEFINED SNEG_TCOPY) + set(SNEG_TCOPY ../generic/neg_tcopy_${SGEMM_UNROLL_M}.c) + endif () + + if (NOT DEFINED SLASWP_NCOPY) + set(SLASWP_NCOPY ../generic/laswp_ncopy_${SGEMM_UNROLL_N}.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${SNEG_TCOPY}" "" "neg_tcopy" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "SINGLE") + endif() + if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) + if (NOT DEFINED DNEG_TCOPY) + set(DNEG_TCOPY ../generic/neg_tcopy_${DGEMM_UNROLL_M}.c) + endif () + + if (NOT DEFINED DLASWP_NCOPY) + set(DLASWP_NCOPY ../generic/laswp_ncopy_${DGEMM_UNROLL_N}.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${DNEG_TCOPY}" "" "neg_tcopy" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "DOUBLE") + endif() + endif() + + if (${DYNAMIC_ARCH}) + set(SETPARAM_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/setparam-ref.c SETPARAM_REF_CONTENTS) + string(REPLACE "TS" "${TSUFFIX}" SETPARAM_REF_CONTENTS_NEW "${SETPARAM_REF_CONTENTS}") + file(WRITE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp "${SETPARAM_REF_CONTENTS_NEW}") + configure_file(${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c COPYONLY) + set(OPENBLAS_SRC ${OPENBLAS_SRC} ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c) + file(REMOVE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp) + + set(KERNEL_TSUFFIX_CONTENTS "") + foreach (KERNEL_INTERFACE_H ${KERNEL_INTERFACE}) + file(READ ${PROJECT_SOURCE_DIR}/${KERNEL_INTERFACE_H} KERNEL_INTERFACE_H_CONTENTS) + string(REGEX REPLACE " *\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}") + set(KERNEL_TSUFFIX_CONTENTS "${KERNEL_TSUFFIX_CONTENTS}\n${KERNEL_INTERFACE_H_CONTENTS_NEW}") + endforeach() + file(WRITE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp "${KERNEL_TSUFFIX_CONTENTS}") + configure_file(${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.h COPYONLY) + file(REMOVE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp) + + foreach (float_type ${FLOAT_TYPES}) + # a bit of metaprogramming here to pull out the appropriate KERNEL var + string(SUBSTRING ${float_type} 0 1 float_char) + if (${float_type} STREQUAL "BFLOAT16") + set (float_char "SB") + endif () + GenerateNamedObjects("generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false ${float_type}) + GenerateNamedObjects("generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false ${float_type}) + endforeach () + + if (BUILD_COMPLEX AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") + GenerateNamedObjects("generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "SINGLE") + endif () + if (BUILD_DOUBLE AND NOT BUILD_SINGLE) + GenerateNamedObjects("generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${TSUFFIX} false "SINGLE") + + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${TSUFFIX} false "SINGLE") + + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${TSUFFIX} false "SINGLE") + + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${TSUFFIX} false "SINGLE") + GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${TSUFFIX} false "SINGLE") + + if (SGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE") + endif () + if (SGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") + GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") + endif () + + if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) + GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE") + if (DEFINED DMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE") + endif () + if (DEFINED DMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE") + endif () + if (DEFINED IDMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE") + endif () + if (DEFINED IDMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE") + + GenerateNamedObjects("${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE") + if (DGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE") + endif () + if (DGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE") + endif () + GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE") + + GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "DOUBLE") + GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "DOUBLE") + if (SMALL_MATRIX_OPT) + if (NOT DEFINED DGEMM_SMALL_M_PERMIT) + set(DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_NN) + set(DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_NT) + set(DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_TN) + set(DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_TT) + set(DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_NN) + set(DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_NT) + set(DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_TN) + set(DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) + endif () + if (NOT DEFINED DGEMM_SMALL_K_B0_TT) + set(DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + endif () + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE") + GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE") + endif () + endif () + if (BUILD_COMPLEX16 AND NOT BUILD_SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE") + endif() + if (BUILD_COMPLEX160 AND NOT BUILD_COMPLEX) + GenerateNamedObjects("${KERNELDIR}/${CAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "COMPLEX") + if (DEFINED CMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${CMAXKERNEL}" "" "max_k" false "" "" false "COMPLEX") + endif () + if (DEFINED CMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${CMINKERNEL}" "USE_MIN" "min_k" false "" "" false "COMPLEX") + endif () + GenerateNamedObjects("${KERNELDIR}/${ICAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${ICAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "COMPLEX") + if (DEFINED ICMAXKERNEL) + GenerateNamedObjects("${KERNELDIR}/${ICMAXKERNEL}" "" "i*max_k" false "" "" false "COMPLEX") + endif () + if (DEFINED ICMINKERNEL) + GenerateNamedObjects("${KERNELDIR}/${ICMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "COMPLEX") + endif () + GenerateNamedObjects("${KERNELDIR}/${CASUMKERNEL}" "" "asum_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CAXPYKERNEL}" "" "axpy_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CNRM2KERNEL}" "" "nrm2_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CROTKERNEL}" "" "rot_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CSCALKERNEL}" "" "scal_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CSWAPKERNEL}" "" "swap_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CAXPBYKERNEL}" "" "axpby_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CSUMKERNEL}" "" "sum_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CAXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CDOTKERNEL}" "" "dotu_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CDOTKERNEL}" "CONJ" "dotc_k" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "" "gemv_n" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false "COMPLEX") + if (CGEMMINCOPY) + GenerateNamedObjects("${KERNELDIR}/${CGEMMINCOPY}" "COMPLEX" "${CGEMMINCOPYOBJ}" false "" "" true "COMPLEX") + endif () + + if (CGEMMITCOPY) + GenerateNamedObjects("${KERNELDIR}/${CGEMMITCOPY}" "COMPLEX" "${CGEMMITCOPYOBJ}" false "" "" true "COMPLEX") + endif () + + if (CGEMMONCOPY) + GenerateNamedObjects("${KERNELDIR}/${CGEMMONCOPY}" "COMPLEX" "${CGEMMONCOPYOBJ}" false "" "" true "COMPLEX") + endif () + + if (CGEMMOTCOPY) + GenerateNamedObjects("${KERNELDIR}/${CGEMMOTCOPY}" "COMPLEX" "${CGEMMOTCOPYOBJ}" false "" "" true "COMPLEX") + endif () + GenerateNamedObjects("${KERNELDIR}/${CGEMM_BETA}" "" "gemm_beta" false "" "" false "COMPLEX") + if (SMALL_MATRIX_OPT) + if (NOT DEFINED CGEMM_SMALL_M_PERMIT) + set(CGEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit) + endif () + if (NOT DEFINED CGEMM_SMALL_K_NN) + set(CGEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn) + endif () + if (NOT DEFINED CGEMM_SMALL_K_NT) + set(CGEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt) + endif () + if (NOT DEFINED CGEMM_SMALL_K_TN) + set(CGEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn) + endif () + if (NOT DEFINED CGEMM_SMALL_K_TT) + set(CGEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt) + endif () + if (NOT DEFINED CGEMM_SMALL_K_B0_NN) + set(CGEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn) + endif () + if (NOT DEFINED CGEMM_SMALL_K_B0_NT) + set(CGEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt) + endif () + if (NOT DEFINED CGEMM_SMALL_K_B0_TN) + set(CGEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn) + endif () + if (NOT DEFINED CGEMM_SMALL_K_B0_TT) + set(CGEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt) + endif () + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_M_PERMIT}.c" "" "gemm_small_matrix_permit" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NN" "gemm_small_kernel_nn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NR" "gemm_small_kernel_nr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RN" "gemm_small_kernel_rn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RR" "gemm_small_kernel_rr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NT" "gemm_small_kernel_nt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NC" "gemm_small_kernel_nc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RT" "gemm_small_kernel_rt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RC" "gemm_small_kernel_rc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TN" "gemm_small_kernel_tn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TR" "gemm_small_kernel_tr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CN" "gemm_small_kernel_cn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CR" "gemm_small_kernel_cr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TT" "gemm_small_kernel_tt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TC" "gemm_small_kernel_tc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CT" "gemm_small_kernel_ct" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CC" "gemm_small_kernel_cc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "COMPLEX") + GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "COMPLEX") + endif () + GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${TSUFFIX} false "COMPLEX") + + GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${TSUFFIX} false "COMPLEX") + + GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${TSUFFIX} false "COMPLEX") + + GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "COMPLEX") + GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "COMPLEX") + endif () + endif () + + add_library(kernel${TSUFFIX} OBJECT ${OPENBLAS_SRC}) + set_target_properties(kernel${TSUFFIX} PROPERTIES COMPILE_FLAGS "${KERNEL_DEFINITIONS}") + get_target_property(KERNEL_INCLUDE_DIRECTORIES kernel${TSUFFIX} INCLUDE_DIRECTORIES) + set_target_properties(kernel${TSUFFIX} PROPERTIES INCLUDE_DIRECTORIES "${KERNEL_INCLUDE_DIRECTORIES};${TARGET_CONF_DIR}") + if (USE_GEMM3M) + target_compile_definitions(kernel${TSUFFIX} PRIVATE USE_GEMM3M) + endif() + if (USE_OPENMP) + target_link_libraries(kernel${TSUFFIX} OpenMP::OpenMP_C) + endif() +endfunction () + + +set(ADD_COMMONOBJS 1) +if (${DYNAMIC_ARCH}) + foreach(TARGET_CORE ${DYNAMIC_CORE}) + set(BUILD_KERNEL 1) + set(KDIR "") + set(TSUFFIX "_${TARGET_CORE}") + set(KERNEL_DEFINITIONS "-DBUILD_KERNEL -DTABLE_NAME=gotoblas_${TARGET_CORE} -DTS=${TSUFFIX}") + build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") + set(ADD_COMMONOBJS 0) + endforeach() +else () + set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) + set(TARGET_CORE ${CORE}) + set(KDIR "") + set(TSUFFIX "") + set(KERNEL_DEFINITIONS "") + build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") +endif () + From bf98e448eb36d6f524cb471ffce6d7f69c8e1467 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:43:08 -0700 Subject: [PATCH 128/360] Add VORTEXM4 to DYNAMIC_ARCH list --- cmake/arch.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/arch.cmake b/cmake/arch.cmake index d9a7aafd62..62c9fe96cc 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -39,14 +39,14 @@ if (DYNAMIC_ARCH) set(DYNAMIC_CORE ${DYNAMIC_CORE} NEOVERSEV1 NEOVERSEN2 ARMV8SVE A64FX) endif () if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 14) # SME ACLE supported in GCC >= 14 - set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME) + set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME VORTEXM4) endif() elseif (${CMAKE_C_COMPILER_ID} MATCHES "Clang") if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 11) # SVE ACLE supported in LLVM >= 11 set(DYNAMIC_CORE ${DYNAMIC_CORE} NEOVERSEV1 NEOVERSEN2 ARMV8SVE A64FX) endif () if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 19) # SME ACLE supported in LLVM >= 19 - set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME) + set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME VORTEXM4) endif() endif () if (DYNAMIC_LIST) From 4609732e69c00c72b66a966e30f36763b32b6e11 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 18 Aug 2025 14:54:20 -0700 Subject: [PATCH 129/360] Relax version number requirement for AppleClang --- cmake/arch.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/arch.cmake b/cmake/arch.cmake index 62c9fe96cc..a312ef814e 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -45,7 +45,7 @@ if (DYNAMIC_ARCH) if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 11) # SVE ACLE supported in LLVM >= 11 set(DYNAMIC_CORE ${DYNAMIC_CORE} NEOVERSEV1 NEOVERSEN2 ARMV8SVE A64FX) endif () - if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 19) # SME ACLE supported in LLVM >= 19 + if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 19 OR (${CMAKE_C_COMPILER_ID} MATCHES AppleClang AND ${CMAKE_C_COMPILER_VERSION} VERSION_GREATER_EQUAL 17) ) # SME ACLE supported in LLVM >= 19 and AppleClang >= 17 set(DYNAMIC_CORE ${DYNAMIC_CORE} ARMV9SME VORTEXM4) endif() endif () From 05dbb54362f77cdcd6320947fa30b63a0cfd0cac Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 19 Aug 2025 05:12:09 -0700 Subject: [PATCH 130/360] Delete misplaced file --- kernel/arm64/CMakeLists.txt | 1499 ----------------------------------- 1 file changed, 1499 deletions(-) delete mode 100644 kernel/arm64/CMakeLists.txt diff --git a/kernel/arm64/CMakeLists.txt b/kernel/arm64/CMakeLists.txt deleted file mode 100644 index b4ea62f0d5..0000000000 --- a/kernel/arm64/CMakeLists.txt +++ /dev/null @@ -1,1499 +0,0 @@ -############################################################################### -# Copyright (c) 2025, The OpenBLAS Project -# All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name of the OpenBLAS project nor the names of -# its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -############################################################################### - -include_directories(${PROJECT_SOURCE_DIR}) - -# Makefile -function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - set (OPENBLAS_SRC "") - set (ARCH_SUFFIX "") - include("${PROJECT_SOURCE_DIR}/cmake/kernel.cmake") - if (${DYNAMIC_ARCH}) - include("${PROJECT_SOURCE_DIR}/cmake/system.cmake") - endif () - ParseMakefileVars("${KERNELDIR}/KERNEL") - ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") - SetDefaultL1() - SetDefaultL2() - SetDefaultL3() - - set(KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h) - if(NOT NO_LAPACK) - set(KERNEL_INTERFACE ${KERNEL_INTERFACE} common_lapack.h) - endif () - - if (${ADD_COMMONOBJS}) - if (X86) - if (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") - GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) - else() - GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) - endif() - endif () - - # don't use float type name mangling here - GenerateNamedObjects("${KERNELDIR}/${LSAME_KERNEL}" "F_INTERFACE" "lsame" false "" "" true "") - GenerateNamedObjects("${KERNELDIR}/${SCABS_KERNEL}" "COMPLEX;F_INTERFACE" "scabs1" false "" "" true "") - GenerateNamedObjects("${KERNELDIR}/${DCABS_KERNEL}" "DOUBLE;COMPLEX;F_INTERFACE" "dcabs1" false "" "" true "") - endif () - - # Run with no ARCH_SUFFIX for above - set (ARCH_SUFFIX "${TSUFFIX}") - # Makefile.L1 - foreach (float_type ${FLOAT_TYPES}) - # a bit of metaprogramming here to pull out the appropriate KERNEL var - string(SUBSTRING ${float_type} 0 1 float_char) - if (${float_type} STREQUAL "BFLOAT16") - set (float_char "SB") - endif () - GenerateNamedObjects("${KERNELDIR}/${${float_char}AMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false ${float_type}) - if (DEFINED ${float_char}MAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${${float_char}MAXKERNEL}" "" "max_k" false "" "" false ${float_type}) - endif () - if (DEFINED ${float_char}MINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${${float_char}MINKERNEL}" "USE_MIN" "min_k" false "" "" false ${float_type}) - endif () - GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false ${float_type}) - if (DEFINED I${float_char}MAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${I${float_char}MAXKERNEL}" "" "i*max_k" false "" "" false ${float_type}) - endif () - if (DEFINED I${float_char}MINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${I${float_char}MINKERNEL}" "USE_MIN" "i*min_k" false "" "" false ${float_type}) - endif () - GenerateNamedObjects("${KERNELDIR}/${${float_char}ASUMKERNEL}" "" "asum_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "" "axpy_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}COPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}NRM2KERNEL}" "" "nrm2_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "rot_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTMKERNEL}" "" "rotm_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}SCALKERNEL}" "" "scal_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}SWAPKERNEL}" "" "swap_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPBYKERNEL}" "" "axpby_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}SUMKERNEL}" "" "sum_k" false "" "" false ${float_type}) - - if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") - GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dotu_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "CONJ" "dotc_k" false "" "" false ${float_type}) - else () - GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dot_k" false "" "" false ${float_type}) - endif () - - if (${float_type} STREQUAL "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "srot_k" false "" "" false ${float_type}) - endif() - if (${float_type} STREQUAL "ZCOMPLEX") - GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "drot_k" false "" "" false ${float_type}) - endif() - - endforeach () - - #dsdot,sdsdot - GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "d*dot_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "dsdot_k" false "" "" false "SINGLE") - - # sbdot - if (BUILD_BFLOAT16) - GenerateNamedObjects("${KERNELDIR}/${BSCALKERNEL}" "BGEMM" "scal_k" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBDOTKERNEL}" "SBDOT" "dot_k" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "SINGLE" "f16tos_k" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${BF16TOKERNEL}" "DOUBLE" "bf16tod_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${TOBF16KERNEL}" "SINGLE" "stobf16_k" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${TOBF16KERNEL}" "DOUBLE" "dtobf16_k" false "" "" false "BFLOAT16") - endif() - - if ((BUILD_COMPLEX OR BUILD_DOUBLE) AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SASUMKERNEL}" "" "asum_k" false "" "" false "SINGLE") - if (DEFINED SMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${SMAXKERNEL}" "" "max_k" false "" "" false "SINGLE") - endif () - if (DEFINED SMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${SMINKERNEL}" "USE_MIN" "min_k" false "" "" false "SINGLE") - endif () - if (DEFINED ISMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${ISMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "SINGLE") - endif () - if (DEFINED ISMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${ISMAXKERNEL}" "" "i*max_k" false "" "" false "SINGLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${ISAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${ISAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SSWAPKERNEL}" "" "swap_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SAXPYKERNEL}" "" "axpy_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SNRM2KERNEL}" "" "nrm2_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SDOTKERNEL}" "" "dot_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SROTKERNEL}" "" "rot_k" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SROTMKERNEL}" "" "rotm_k" false "" "" false "SINGLE") - endif () - if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) - GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE") - if (DEFINED DMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE") - endif () - if (DEFINED DMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE") - endif () - if (DEFINED IDMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE") - endif () - if (DEFINED IDMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE") - endif () - - # Makefile.L2 - GenerateCombinationObjects("generic/symv_k.c" "LOWER" "U" "" 1 "" "" 3) - GenerateNamedObjects("generic/ger.c" "" "ger_k" false "" "" "" 3) - foreach (float_type ${FLOAT_TYPES}) - string(SUBSTRING ${float_type} 0 1 float_char) - if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") - GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "" "geru_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "XCONJ" "gerv_k" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ;XCONJ" "gerd_k" false "" "" false ${float_type}) - - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false ${float_type}) - - GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_U_KERNEL}" "HEMV" "hemv_U" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_L_KERNEL}" "HEMV;LOWER" "hemv_L" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_V_KERNEL}" "HEMV;HEMVREV" "hemv_V" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_M_KERNEL}" "HEMV;HEMVREV;LOWER" "hemv_M" false "" "" false ${float_type}) - - else () - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false ${float_type}) - endif () - endforeach () - if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) - GenerateNamedObjects("${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE") - endif () - if (BUILD_COMPLEX AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") - endif () - if (BUILD_BFLOAT16) - GenerateNamedObjects("${KERNELDIR}/${BGEMVNKERNEL}" "BGEMM" "gemv_n" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${BGEMVTKERNEL}" "BGEMM" "gemv_t" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMVNKERNEL}" "" "gemv_n" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMVTKERNEL}" "" "gemv_t" false "" "" false "BFLOAT16") - endif () - # Makefile.L3 - set(USE_TRMM false) - string(TOUPPER ${TARGET_CORE} UC_TARGET_CORE) - if (ARM OR ARM64 OR RISCV64 OR (UC_TARGET_CORE MATCHES LONGSOON3B) OR (UC_TARGET_CORE MATCHES GENERIC) OR (UC_TARGET_CORE MATCHES HASWELL) OR (UC_TARGET_CORE MATCHES ZEN) OR (UC_TARGET_CORE MATCHES SKYLAKEX) OR (UC_TARGET_CORE MATCHES COOPERLAKE) OR (UC_TARGET_CORE MATCHES SAPPHIRERAPIDS)) - set(USE_TRMM true) - endif () - if (ZARCH OR (UC_TARGET_CORE MATCHES POWER8) OR (UC_TARGET_CORE MATCHES POWER9) OR (UC_TARGET_CORE MATCHES POWER10)) - set(USE_TRMM true) - endif () - set(USE_DIRECT_SGEMM false) - if (X86_64 OR ARM64) - set(USE_DIRECT_SGEMM true) - endif() - if (UC_TARGET_CORE MATCHES ARMV9SME OR UC_TARGET_CORE MATCHES VORTEXM4) - set (HAVE_SME true) - endif () - - if (USE_DIRECT_SGEMM) - # if (NOT DEFINED SGEMMDIRECTKERNEL) - if (X86_64) - set (SGEMMDIRECTKERNEL sgemm_direct_skylakex.c) - set (SGEMMDIRECTPERFORMANT sgemm_direct_performant.c) - # endif() - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) - elseif (ARM64) - set (SGEMMDIRECTPERFORMANT sgemm_direct_performant.c) - set (SGEMMDIRECTKERNEL sgemm_direct_arm64_sme1.c) - set (SGEMMDIRECTKERNEL_ALPHA_BETA sgemm_direct_alpha_beta_arm64_sme1.c) - set (SGEMMDIRECTSMEKERNEL sgemm_direct_sme1_2VLx2VL.S) - set (SGEMMDIRECTPREKERNEL sgemm_direct_sme1_preprocess.S) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL_ALPHA_BETA}" "" "gemm_direct_alpha_beta" false "" "" false SINGLE) - if (HAVE_SME) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1_2VLx2VL" false "" "" false SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPREKERNEL}" "" "gemm_direct_sme1_preprocess" false "" "" false SINGLE) - endif () - endif () - endif() - - foreach (float_type SINGLE DOUBLE) - string(SUBSTRING ${float_type} 0 1 float_char) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${float_type}) - endforeach() - if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) - GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE") - if (DGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE") - GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "DOUBLE") - GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "DOUBLE") - if (SMALL_MATRIX_OPT) - if (NOT DEFINED DGEMM_SMALL_M_PERMIT) - set(DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_NN) - set(DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_NT) - set(DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_TN) - set(DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_TT) - set(DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_NN) - set(DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_NT) - set(DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_TN) - set(DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_TT) - set(DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE") - endif () - - endif () - if ((BUILD_DOUBLE OR BUILD_COMPLEX) AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMMKERNEL}" "" "gemm_kernel" false "" "" false "SINGLE") - if (SGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${SGEMM_BETA}" "" "gemm_beta" false "" "" false "SINGLE") - endif () - - if (BUILD_BFLOAT16) - if (BGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${BGEMMINCOPY}" "BGEMM" "${BGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (BGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${BGEMMITCOPY}" "BGEMM" "${BGEMMITCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (BGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${BGEMMONCOPY}" "BGEMM" "${BGEMMONCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (BGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${BGEMMOTCOPY}" "BGEMM" "${BGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - GenerateNamedObjects("${KERNELDIR}/${BGEMMKERNEL}" "BGEMM" "gemm_kernel" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${BGEMM_BETA}" "BGEMM" "gemm_beta" false "" "" false "BFLOAT16") - if (SBGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${SBGEMMINCOPY}" "" "${SBGEMMINCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (SBGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${SBGEMMITCOPY}" "" "${SBGEMMITCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (SBGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${SBGEMMONCOPY}" "" "${SBGEMMONCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - if (SBGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${SBGEMMOTCOPY}" "" "${SBGEMMOTCOPYOBJ}" false "" "" true "BFLOAT16") - endif () - GenerateNamedObjects("${KERNELDIR}/${SBGEMMKERNEL}" "" "gemm_kernel" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_BETA}" "" "gemm_beta" false "" "" false "BFLOAT16") - endif () - if (BUILD_HFLOAT16) - if (SHGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${SHGEMMINCOPY}" "" "${SHGEMMINCOPYOBJ}" false "" "" true "HFLOAT16") - endif () - if (SHGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${SHGEMMITCOPY}" "" "${SHGEMMITCOPYOBJ}" false "" "" true "HFLOAT16") - endif () - if (SHGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${SHGEMMONCOPY}" "" "${SHGEMMONCOPYOBJ}" false "" "" true "HFLOAT16") - endif () - if (SHGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${SHGEMMOTCOPY}" "" "${SHGEMMOTCOPYOBJ}" false "" "" true "HFLOAT16") - endif () - GenerateNamedObjects("${KERNELDIR}/${SHGEMMKERNEL}" "" "gemm_kernel" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_BETA}" "" "gemm_beta" false "" "" false "HFLOAT16") - endif () - foreach (float_type ${FLOAT_TYPES}) - string(SUBSTRING ${float_type} 0 1 float_char) - if (${float_char}GEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMINCOPY}" "${float_type}" "${${float_char}GEMMINCOPYOBJ}" false "" "" true ${float_type}) - endif () - - if (${float_char}GEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMITCOPY}" "${float_type}" "${${float_char}GEMMITCOPYOBJ}" false "" "" true ${float_type}) - endif () - - if (${float_char}GEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMONCOPY}" "${float_type}" "${${float_char}GEMMONCOPYOBJ}" false "" "" true ${float_type}) - endif () - - if (${float_char}GEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMOTCOPY}" "${float_type}" "${${float_char}GEMMOTCOPYOBJ}" false "" "" true ${float_type}) - endif () - - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_BETA}" "" "gemm_beta" false "" "" false ${float_type}) - - if (USE_TRMM) - set(TRMM_KERNEL "${${float_char}TRMMKERNEL}") - else () - set(TRMM_KERNEL "${${float_char}GEMMKERNEL}") - endif () - - if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") - - # just enumerate all these. there is an extra define for these indicating which side is a conjugate (e.g. CN NC NN) that I don't really want to work into GenerateCombinationObjects - - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false ${float_type}) - - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;NN" "trmm_kernel_LN" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;NN" "trmm_kernel_LT" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;CONJ;CN" "trmm_kernel_LR" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;CONJ;CN" "trmm_kernel_LC" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;NN" "trmm_kernel_RN" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;NN" "trmm_kernel_RT" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;CONJ;NC" "trmm_kernel_RR" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;CONJ;NC" "trmm_kernel_RC" false "" "" false ${float_type}) - - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false ${float_type}) - - - #hemm -if (NOT DEFINED ${float_char}HEMMUTCOPY_M) - set(HEMMUTCOPY_M "generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_M}.c") - set(HEMMLTCOPY_M "generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(HEMMUTCOPY_M "${KERNELDIR}/${${float_char}HEMMUTCOPY_M}") - set(HEMMLTCOPY_M "${KERNELDIR}/${${float_char}HEMMLTCOPY_M}") -endif() - GenerateNamedObjects(${HEMMUTCOPY_M} "" "hemm_iutcopy" false "" "" false ${float_type}) - GenerateNamedObjects(${HEMMLTCOPY_M} "LOWER" "hemm_iltcopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "hemm_outcopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "hemm_oltcopy" false "" "" false ${float_type}) - - # symm for c and z -if (NOT DEFINED ${float_char}SYMMUCOPY_M) - set(SYMMUCOPY_M "generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_M}.c") - set(SYMMLCOPY_M "generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}") - set(SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}") -endif() - GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) - GenerateNamedObjects(${SYMMUCOPY_M} "" "symm_iutcopy" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) - GenerateNamedObjects(${SYMMLCOPY_M} "LOWER" "symm_iltcopy" false "" "" false ${float_type}) - - -if (NOT DEFINED ${float_char}TRMMUNCOPY_M) - set(TRMMUNCOPY_M "generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMLNCOPY_M "generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMUTCOPY_M "generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMLTCOPY_M "generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}") - set(TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}") - set(TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}") - set(TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}") -endif () - GenerateNamedObjects(${TRMMUNCOPY_M} "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMUNCOPY_M} "" "trmm_iunncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMUTCOPY_M} "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMUTCOPY_M} "" "trmm_iutncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) - - -if (NOT DEFINED ZTRSMCOPYLN_M) - set(ZTRSMUNCOPY_M "generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c") - set(ZTRSMLNCOPY_M "generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c") - set(ZTRSMUTCOPY_M "generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c") - set(ZTRSMLTCOPY_M "generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(ZTRSMUNCOPY_M "${KERNELDIR}/${ZTRSMCOPYUN_M}") - set(ZTRSMLNCOPY_M "${KERNELDIR}/${ZTRSMCOPYLN_M}") - set(ZTRSMUTCOPY_M "${KERNELDIR}/${ZTRSMCOPYUT_M}") - set(ZTRSMLTCOPY_M "${KERNELDIR}/${ZTRSMCOPYLT_M}") -endif () - GenerateNamedObjects(${ZTRSMUNCOPY_M} "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${ZTRSMUNCOPY_M} "" "trsm_iunncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${ZTRSMLNCOPY_M} "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${ZTRSMLNCOPY_M} "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${ZTRSMUTCOPY_M} "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${ZTRSMUTCOPY_M} "" "trsm_iutncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${ZTRSMLTCOPY_M} "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${ZTRSMLTCOPY_M} "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) - - #gemm3m - if (USE_GEMM3M) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM3MKERNEL}" "NN" "gemm3m_kernel" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_oncopyb" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_oncopyr" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_oncopyi" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_otcopyb" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_otcopyr" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_otcopyi" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_incopyb" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_incopyr" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_incopyi" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_itcopyb" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_itcopyr" false "" "" false ${float_type}) - GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_itcopyi" false "" "" false ${float_type}) - -#hemm3m and symm3m - foreach(name symm3m hemm3m) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_oucopyb.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_oucopyr.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_oucopyi.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_olcopyb.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_olcopyr.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_olcopyi.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_iucopyb.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_iucopyr.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_iucopyi.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_ilcopyb.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_ilcopyr.c" false "" "" false ${float_type}) - GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_ilcopyi.c" false "" "" false ${float_type}) - - endforeach () - - endif() - - else () #For real - GenerateCombinationObjects("${KERNELDIR}/${TRMM_KERNEL}" "LEFT;TRANSA" "R;N" "TRMMKERNEL" 2 "trmm_kernel" false ${float_type}) - - # symm for s and d -if (NOT DEFINED ${float_char}SYMMUCOPY_M) - set(SYMMUCOPY_M "generic/symm_ucopy_${${float_char}GEMM_UNROLL_M}.c") - set(SYMMLCOPY_M "generic/symm_lcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(SYMMUCOPY_M "${KERNELDIR}/${${float_char}SYMMUCOPY_M}") - set(SYMMLCOPY_M "${KERNELDIR}/${${float_char}SYMMLCOPY_M}") -endif() - GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) - GenerateNamedObjects(${SYMMUCOPY_M} "" "symm_iutcopy" false "" "" false ${float_type}) - - GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) - GenerateNamedObjects(${SYMMLCOPY_M} "LOWER" "symm_iltcopy" false "" "" false ${float_type}) - - # These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define. - # Could simplify it a bit by pairing up by -UUNIT/-DUNIT. - -if (NOT DEFINED ${float_char}TRMMUNCOPY_M) - set(TRMMUNCOPY_M "generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMLNCOPY_M "generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMUTCOPY_M "generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRMMLTCOPY_M "generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(TRMMUNCOPY_M "${KERNELDIR}/${${float_char}TRMMUNCOPY_M}") - set(TRMMLNCOPY_M "${KERNELDIR}/${${float_char}TRMMLNCOPY_M}") - set(TRMMUTCOPY_M "${KERNELDIR}/${${float_char}TRMMUTCOPY_M}") - set(TRMMLTCOPY_M "${KERNELDIR}/${${float_char}TRMMLTCOPY_M}") -endif () - GenerateNamedObjects(${TRMMUNCOPY_M} "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMUNCOPY_M} "" "trmm_iunncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMLNCOPY_M} "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMUTCOPY_M} "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMUTCOPY_M} "" "trmm_iutncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRMMLTCOPY_M} "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) - - -if (NOT DEFINED TRSMCOPYLN_M) - set(TRSMUNCOPY_M "generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRSMLNCOPY_M "generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRSMUTCOPY_M "generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c") - set(TRSMLTCOPY_M "generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c") -else () - set(TRSMUNCOPY_M "${KERNELDIR}/${TRSMCOPYUN_M}") - set(TRSMLNCOPY_M "${KERNELDIR}/${TRSMCOPYLN_M}") - set(TRSMUTCOPY_M "${KERNELDIR}/${TRSMCOPYUT_M}") - set(TRSMLTCOPY_M "${KERNELDIR}/${TRSMCOPYLT_M}") -endif () - GenerateNamedObjects(${TRSMUNCOPY_M} "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRSMUNCOPY_M} "" "trsm_iunncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRSMLNCOPY_M} "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRSMLNCOPY_M} "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRSMUTCOPY_M} "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRSMUTCOPY_M} "" "trsm_iutncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) - - GenerateNamedObjects(${TRSMLTCOPY_M} "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) - GenerateNamedObjects(${TRSMLTCOPY_M} "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) - GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) - - endif () - - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false ${float_type}) - - if (NOT DEFINED ${float_char}GEMM_SMALL_M_PERMIT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit.c) - else () - set(${float_char}GEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_NN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn.c) - else () - set(${float_char}GEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_NT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt.c) - else () - set(${float_char}GEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_TN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn.c) - else () - set(${float_char}GEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_TT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt.c) - else () - set(${float_char}GEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_NN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn.c) - else () - set(${float_char}GEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_NT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt.c) - else () - set(${float_char}GEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_TN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn.c) - else () - set(${float_char}GEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - endif () - if (NOT DEFINED ${float_char}GEMM_SMALL_K_B0_TT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}GEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt.c) - else () - set(${float_char}GEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - endif () - - if (SMALL_MATRIX_OPT) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false ${float_type}) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false ${float_type}) - - else () - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false ${float_type}) - endif () - if (BUILD_BFLOAT16) - if (NOT DEFINED SBGEMM_SMALL_M_PERMIT) - set(SBGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_NN) - set(SBGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_NT) - set(SBGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_TN) - set(SBGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_TT) - set(SBGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_B0_NN) - set(SBGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_B0_NT) - set(SBGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_B0_TN) - set(SBGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SBGEMM_SMALL_K_B0_TT) - set(SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "BFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "BFLOAT16") - endif () - - if (BUILD_HFLOAT16) - if (NOT DEFINED SHGEMM_SMALL_M_PERMIT) - set(SHGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_NN) - set(SHGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_NT) - set(SHGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_TN) - set(SHGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_TT) - set(SHGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_B0_NN) - set(SHGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_B0_NT) - set(SHGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_B0_TN) - set(SHGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SHGEMM_SMALL_K_B0_TT) - set(SHGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "HFLOAT16") - GenerateNamedObjects("${KERNELDIR}/${SHGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "HFLOAT16") - endif () - endif () - - if (NOT DEFINED ${float_char}OMATCOPY_CN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_CN ../arm/zomatcopy_cn.c) - else () - set(${float_char}OMATCOPY_CN ../arm/omatcopy_cn.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_RN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_RN ../arm/zomatcopy_rn.c) - else () - set(${float_char}OMATCOPY_RN ../arm/omatcopy_rn.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_CT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_CT ../arm/zomatcopy_ct.c) - else () - set(${float_char}OMATCOPY_CT ../arm/omatcopy_ct.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_RT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_RT ../arm/zomatcopy_rt.c) - else () - set(${float_char}OMATCOPY_RT ../arm/omatcopy_rt.c) - endif () - endif () - - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CN}" "" "omatcopy_k_cn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RN}" "ROWM" "omatcopy_k_rn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CT}" "" "omatcopy_k_ct" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RT}" "ROWM" "omatcopy_k_rt" false "" "" false ${float_type}) - - if (NOT DEFINED ${float_char}OMATCOPY_CNC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_CNC ../arm/zomatcopy_cnc.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_RNC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_RNC ../arm/zomatcopy_rnc.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_CTC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_CTC ../arm/zomatcopy_ctc.c) - endif () - endif () - if (NOT DEFINED ${float_char}OMATCOPY_RTC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}OMATCOPY_RTC ../arm/zomatcopy_rtc.c) - endif () - endif () - - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CNC}" "CONJ" "omatcopy_k_cnc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RNC}" "CONJ;ROWM" "omatcopy_k_rnc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CTC}" "CONJ" "omatcopy_k_ctc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type}) - endif() - - #imatcopy - if (NOT DEFINED ${float_char}IMATCOPY_CN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c) - else () - set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c) - endif () - endif () - - if (NOT DEFINED ${float_char}IMATCOPY_RN) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c) - else () - set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c) - endif () - endif () - - if (NOT DEFINED ${float_char}IMATCOPY_CT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c) - else () - set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c) - endif () - endif () - - if (NOT DEFINED ${float_char}IMATCOPY_RT) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c) - else () - set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c) - endif () - endif () - - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type}) - - - if (NOT DEFINED ${float_char}IMATCOPY_CNC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c) - endif () - endif () - if (NOT DEFINED ${float_char}IMATCOPY_RNC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c) - endif () - endif () - if (NOT DEFINED ${float_char}IMATCOPY_CTC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c) - endif () - endif () - if (NOT DEFINED ${float_char}IMATCOPY_RTC) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c) - endif () - endif () - - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type}) - endif() - - #geadd - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type}) - endforeach () - - if ((BUILD_DOUBLE OR BUILD_COMPLEX) AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false "SINGLE") - - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false "SINGLE") - - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false "SINGLE") - - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false "SINGLE") - if (SMALL_MATRIX_OPT) - if (NOT DEFINED SGEMM_SMALL_M_PERMIT) - set(SGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_NN) - set(SGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_NT) - set(SGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_TN) - set(SGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_TT) - set(SGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_B0_NN) - set(SGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_B0_NT) - set(SGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_B0_TN) - set(SGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED SGEMM_SMALL_K_B0_TT) - set(SGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_NT}" "" "gemm_small_kernel_nt" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_TN}" "" "gemm_small_kernel_tn" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_TT}" "" "gemm_small_kernel_tt" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_NN}" "B0" "gemm_small_kernel_b0_nn" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_NT}" "B0" "gemm_small_kernel_b0_nt" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_TN}" "B0" "gemm_small_kernel_b0_tn" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMM_SMALL_K_B0_TT}" "B0" "gemm_small_kernel_b0_tt" false "" "" false "SINGLE") - endif () - - endif () - - # Makefile.LA - if(NOT NO_LAPACK) - foreach (float_type ${FLOAT_TYPES}) - string(SUBSTRING ${float_type} 0 1 float_char) - if (${float_type} STREQUAL "BFLOAT16") - set (float_char "SB") - endif () - if (NOT DEFINED ${float_char}NEG_TCOPY) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") - set(${float_char}NEG_TCOPY ../generic/zneg_tcopy_${${float_char}GEMM_UNROLL_M}.c) - else () - set(${float_char}NEG_TCOPY ../generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c) - endif () - endif () - - if (NOT DEFINED ${float_char}LASWP_NCOPY) - if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") - set(${float_char}LASWP_NCOPY ../generic/zlaswp_ncopy_${${float_char}GEMM_UNROLL_N}.c) - else () - set(${float_char}LASWP_NCOPY ../generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c) - endif () - endif () - GenerateNamedObjects("${KERNELDIR}/${${float_char}NEG_TCOPY}" "" "neg_tcopy" false "" "" false ${float_type}) - GenerateNamedObjects("${KERNELDIR}/${${float_char}LASWP_NCOPY}" "" "laswp_ncopy" false "" "" false ${float_type}) - endforeach() - if (BUILD_COMPLEX AND NOT BUILD_SINGLE) - if (NOT DEFINED SNEG_TCOPY) - set(SNEG_TCOPY ../generic/neg_tcopy_${SGEMM_UNROLL_M}.c) - endif () - - if (NOT DEFINED SLASWP_NCOPY) - set(SLASWP_NCOPY ../generic/laswp_ncopy_${SGEMM_UNROLL_N}.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${SNEG_TCOPY}" "" "neg_tcopy" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "SINGLE") - endif() - if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) - if (NOT DEFINED DNEG_TCOPY) - set(DNEG_TCOPY ../generic/neg_tcopy_${DGEMM_UNROLL_M}.c) - endif () - - if (NOT DEFINED DLASWP_NCOPY) - set(DLASWP_NCOPY ../generic/laswp_ncopy_${DGEMM_UNROLL_N}.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${DNEG_TCOPY}" "" "neg_tcopy" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DLASWP_NCOPY}" "" "laswp_ncopy" false "" "" false "DOUBLE") - endif() - endif() - - if (${DYNAMIC_ARCH}) - set(SETPARAM_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/setparam-ref.c SETPARAM_REF_CONTENTS) - string(REPLACE "TS" "${TSUFFIX}" SETPARAM_REF_CONTENTS_NEW "${SETPARAM_REF_CONTENTS}") - file(WRITE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp "${SETPARAM_REF_CONTENTS_NEW}") - configure_file(${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c COPYONLY) - set(OPENBLAS_SRC ${OPENBLAS_SRC} ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c) - file(REMOVE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp) - - set(KERNEL_TSUFFIX_CONTENTS "") - foreach (KERNEL_INTERFACE_H ${KERNEL_INTERFACE}) - file(READ ${PROJECT_SOURCE_DIR}/${KERNEL_INTERFACE_H} KERNEL_INTERFACE_H_CONTENTS) - string(REGEX REPLACE " *\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}") - set(KERNEL_TSUFFIX_CONTENTS "${KERNEL_TSUFFIX_CONTENTS}\n${KERNEL_INTERFACE_H_CONTENTS_NEW}") - endforeach() - file(WRITE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp "${KERNEL_TSUFFIX_CONTENTS}") - configure_file(${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.h COPYONLY) - file(REMOVE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp) - - foreach (float_type ${FLOAT_TYPES}) - # a bit of metaprogramming here to pull out the appropriate KERNEL var - string(SUBSTRING ${float_type} 0 1 float_char) - if (${float_type} STREQUAL "BFLOAT16") - set (float_char "SB") - endif () - GenerateNamedObjects("generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false ${float_type}) - GenerateNamedObjects("generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false ${float_type}) - endforeach () - - if (BUILD_COMPLEX AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") - GenerateNamedObjects("generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "SINGLE") - endif () - if (BUILD_DOUBLE AND NOT BUILD_SINGLE) - GenerateNamedObjects("generic/neg_tcopy_${SGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/laswp_ncopy_${SGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${STRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_uncopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${TSUFFIX} false "SINGLE") - - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_lncopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${TSUFFIX} false "SINGLE") - - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_utcopy_${SGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${TSUFFIX} false "SINGLE") - - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${TSUFFIX} false "SINGLE") - GenerateNamedObjects("generic/trsm_ltcopy_${SGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${TSUFFIX} false "SINGLE") - - if (SGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMINCOPY}" "SINGLE" "${SGEMMINCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMITCOPY}" "SINGLE" "${SGEMMITCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMONCOPY}" "SINGLE" "${SGEMMONCOPYOBJ}" false "" "" true "SINGLE") - endif () - if (SGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${SGEMMOTCOPY}" "SINGLE" "${SGEMMOTCOPYOBJ}" false "" "" true "SINGLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${SGEMVNKERNEL}" "" "gemv_n" false "" "" false "SINGLE") - GenerateNamedObjects("${KERNELDIR}/${SGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "SINGLE") - endif () - - if (BUILD_COMPLEX16 AND NOT BUILD_DOUBLE) - GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "" "asum_k" false "" "" false "DOUBLE") - if (DEFINED DMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "" "max_k" false "" "" false "DOUBLE") - endif () - if (DEFINED DMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "USE_MIN" "min_k" false "" "" false "DOUBLE") - endif () - if (DEFINED IDMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "DOUBLE") - endif () - if (DEFINED IDMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "" "i*max_k" false "" "" false "DOUBLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "" "scal_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "" "nrm2_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "" "rot_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DROTMKERNEL}" "" "rotm_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "" "dot_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "" "swap_k" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "" "axpy_k" false "" "" false "DOUBLE") - - GenerateNamedObjects("${KERNELDIR}/${DGEMVNKERNEL}" "" "gemv_n" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "" "gemm_kernel" false "" "" false "DOUBLE") - if (DGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMINCOPY}" "DOUBLE" "${DGEMMINCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMITCOPY}" "DOUBLE" "${DGEMMITCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMONCOPY}" "DOUBLE" "${DGEMMONCOPYOBJ}" false "" "" true "DOUBLE") - endif () - if (DGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${DGEMMOTCOPY}" "DOUBLE" "${DGEMMOTCOPYOBJ}" false "" "" true "DOUBLE") - endif () - GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "" "gemm_beta" false "" "" false "DOUBLE") - - GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "DOUBLE") - GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "DOUBLE") - if (SMALL_MATRIX_OPT) - if (NOT DEFINED DGEMM_SMALL_M_PERMIT) - set(DGEMM_SMALL_M_PERMIT ../generic/gemm_small_matrix_permit.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_NN) - set(DGEMM_SMALL_K_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_NT) - set(DGEMM_SMALL_K_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_TN) - set(DGEMM_SMALL_K_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_TT) - set(DGEMM_SMALL_K_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_NN) - set(DGEMM_SMALL_K_B0_NN ../generic/gemm_small_matrix_kernel_nn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_NT) - set(DGEMM_SMALL_K_B0_NT ../generic/gemm_small_matrix_kernel_nt.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_TN) - set(DGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) - endif () - if (NOT DEFINED DGEMM_SMALL_K_B0_TT) - set(DGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) - endif () - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NN" "gemm_small_kernel_nn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "NR" "gemm_small_kernel_nr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RN" "gemm_small_kernel_rn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NN}" "RR" "gemm_small_kernel_rr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NT" "gemm_small_kernel_nt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "NC" "gemm_small_kernel_nc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RT" "gemm_small_kernel_rt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_NT}" "RC" "gemm_small_kernel_rc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TN" "gemm_small_kernel_tn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "TR" "gemm_small_kernel_tr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CN" "gemm_small_kernel_cn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TN}" "CR" "gemm_small_kernel_cr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TT" "gemm_small_kernel_tt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "TC" "gemm_small_kernel_tc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CT" "gemm_small_kernel_ct" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_TT}" "CC" "gemm_small_kernel_cc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NN}" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_NT}" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TN}" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "DOUBLE") - GenerateNamedObjects("${KERNELDIR}/${DGEMM_SMALL_K_B0_TT}" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "DOUBLE") - endif () - endif () - if (BUILD_COMPLEX16 AND NOT BUILD_SINGLE) - GenerateNamedObjects("${KERNELDIR}/${SSCALKERNEL}" "" "scal_k" false "" "" false "SINGLE") - endif() - if (BUILD_COMPLEX160 AND NOT BUILD_COMPLEX) - GenerateNamedObjects("${KERNELDIR}/${CAMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CAMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false "COMPLEX") - if (DEFINED CMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${CMAXKERNEL}" "" "max_k" false "" "" false "COMPLEX") - endif () - if (DEFINED CMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${CMINKERNEL}" "USE_MIN" "min_k" false "" "" false "COMPLEX") - endif () - GenerateNamedObjects("${KERNELDIR}/${ICAMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${ICAMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false "COMPLEX") - if (DEFINED ICMAXKERNEL) - GenerateNamedObjects("${KERNELDIR}/${ICMAXKERNEL}" "" "i*max_k" false "" "" false "COMPLEX") - endif () - if (DEFINED ICMINKERNEL) - GenerateNamedObjects("${KERNELDIR}/${ICMINKERNEL}" "USE_MIN" "i*min_k" false "" "" false "COMPLEX") - endif () - GenerateNamedObjects("${KERNELDIR}/${CASUMKERNEL}" "" "asum_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CAXPYKERNEL}" "" "axpy_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CCOPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CNRM2KERNEL}" "" "nrm2_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CROTKERNEL}" "" "rot_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CSCALKERNEL}" "" "scal_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CSWAPKERNEL}" "" "swap_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CAXPBYKERNEL}" "" "axpby_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CSUMKERNEL}" "" "sum_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CAXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CDOTKERNEL}" "" "dotu_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CDOTKERNEL}" "CONJ" "dotc_k" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "" "gemv_n" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CTRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false "COMPLEX") - if (CGEMMINCOPY) - GenerateNamedObjects("${KERNELDIR}/${CGEMMINCOPY}" "COMPLEX" "${CGEMMINCOPYOBJ}" false "" "" true "COMPLEX") - endif () - - if (CGEMMITCOPY) - GenerateNamedObjects("${KERNELDIR}/${CGEMMITCOPY}" "COMPLEX" "${CGEMMITCOPYOBJ}" false "" "" true "COMPLEX") - endif () - - if (CGEMMONCOPY) - GenerateNamedObjects("${KERNELDIR}/${CGEMMONCOPY}" "COMPLEX" "${CGEMMONCOPYOBJ}" false "" "" true "COMPLEX") - endif () - - if (CGEMMOTCOPY) - GenerateNamedObjects("${KERNELDIR}/${CGEMMOTCOPY}" "COMPLEX" "${CGEMMOTCOPYOBJ}" false "" "" true "COMPLEX") - endif () - GenerateNamedObjects("${KERNELDIR}/${CGEMM_BETA}" "" "gemm_beta" false "" "" false "COMPLEX") - if (SMALL_MATRIX_OPT) - if (NOT DEFINED CGEMM_SMALL_M_PERMIT) - set(CGEMM_SMALL_M_PERMIT ../generic/zgemm_small_matrix_permit) - endif () - if (NOT DEFINED CGEMM_SMALL_K_NN) - set(CGEMM_SMALL_K_NN ../generic/zgemm_small_matrix_kernel_nn) - endif () - if (NOT DEFINED CGEMM_SMALL_K_NT) - set(CGEMM_SMALL_K_NT ../generic/zgemm_small_matrix_kernel_nt) - endif () - if (NOT DEFINED CGEMM_SMALL_K_TN) - set(CGEMM_SMALL_K_TN ../generic/zgemm_small_matrix_kernel_tn) - endif () - if (NOT DEFINED CGEMM_SMALL_K_TT) - set(CGEMM_SMALL_K_TT ../generic/zgemm_small_matrix_kernel_tt) - endif () - if (NOT DEFINED CGEMM_SMALL_K_B0_NN) - set(CGEMM_SMALL_K_B0_NN ../generic/zgemm_small_matrix_kernel_nn) - endif () - if (NOT DEFINED CGEMM_SMALL_K_B0_NT) - set(CGEMM_SMALL_K_B0_NT ../generic/zgemm_small_matrix_kernel_nt) - endif () - if (NOT DEFINED CGEMM_SMALL_K_B0_TN) - set(CGEMM_SMALL_K_B0_TN ../generic/zgemm_small_matrix_kernel_tn) - endif () - if (NOT DEFINED CGEMM_SMALL_K_B0_TT) - set(CGEMM_SMALL_K_B0_TT ../generic/zgemm_small_matrix_kernel_tt) - endif () - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_M_PERMIT}.c" "" "gemm_small_matrix_permit" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NN" "gemm_small_kernel_nn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "NR" "gemm_small_kernel_nr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RN" "gemm_small_kernel_rn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NN}.c" "RR" "gemm_small_kernel_rr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NT" "gemm_small_kernel_nt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "NC" "gemm_small_kernel_nc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RT" "gemm_small_kernel_rt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_NT}.c" "RC" "gemm_small_kernel_rc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TN" "gemm_small_kernel_tn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "TR" "gemm_small_kernel_tr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CN" "gemm_small_kernel_cn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TN}.c" "CR" "gemm_small_kernel_cr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TT" "gemm_small_kernel_tt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "TC" "gemm_small_kernel_tc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CT" "gemm_small_kernel_ct" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_TT}.c" "CC" "gemm_small_kernel_cc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NN;B0" "gemm_small_kernel_b0_nn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "NR;B0" "gemm_small_kernel_b0_nr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RN;B0" "gemm_small_kernel_b0_rn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NN}.c" "RR;B0" "gemm_small_kernel_b0_rr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NT;B0" "gemm_small_kernel_b0_nt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "NC;B0" "gemm_small_kernel_b0_nc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RT;B0" "gemm_small_kernel_b0_rt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_NT}.c" "RC;B0" "gemm_small_kernel_b0_rc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TN;B0" "gemm_small_kernel_b0_tn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "TR;B0" "gemm_small_kernel_b0_tr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CN;B0" "gemm_small_kernel_b0_cn" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TN}.c" "CR;B0" "gemm_small_kernel_b0_cr" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TT;B0" "gemm_small_kernel_b0_tt" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "TC;B0" "gemm_small_kernel_b0_tc" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CT;B0" "gemm_small_kernel_b0_ct" false "" "" false "COMPLEX") - GenerateNamedObjects("${KERNELDIR}/${CGEMM_SMALL_K_B0_TT}.c" "CC;B0" "gemm_small_kernel_b0_cc" false "" "" false "COMPLEX") - endif () - GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_uncopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" ${TSUFFIX} false "COMPLEX") - - GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_lncopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" ${TSUFFIX} false "COMPLEX") - - GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_utcopy_${CGEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" ${TSUFFIX} false "COMPLEX") - - GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/ztrsm_ltcopy_${CGEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/neg_tcopy_${DGEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false "COMPLEX") - GenerateNamedObjects("generic/laswp_ncopy_${DGEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false "COMPLEX") - endif () - endif () - - add_library(kernel${TSUFFIX} OBJECT ${OPENBLAS_SRC}) - set_target_properties(kernel${TSUFFIX} PROPERTIES COMPILE_FLAGS "${KERNEL_DEFINITIONS}") - get_target_property(KERNEL_INCLUDE_DIRECTORIES kernel${TSUFFIX} INCLUDE_DIRECTORIES) - set_target_properties(kernel${TSUFFIX} PROPERTIES INCLUDE_DIRECTORIES "${KERNEL_INCLUDE_DIRECTORIES};${TARGET_CONF_DIR}") - if (USE_GEMM3M) - target_compile_definitions(kernel${TSUFFIX} PRIVATE USE_GEMM3M) - endif() - if (USE_OPENMP) - target_link_libraries(kernel${TSUFFIX} OpenMP::OpenMP_C) - endif() -endfunction () - - -set(ADD_COMMONOBJS 1) -if (${DYNAMIC_ARCH}) - foreach(TARGET_CORE ${DYNAMIC_CORE}) - set(BUILD_KERNEL 1) - set(KDIR "") - set(TSUFFIX "_${TARGET_CORE}") - set(KERNEL_DEFINITIONS "-DBUILD_KERNEL -DTABLE_NAME=gotoblas_${TARGET_CORE} -DTS=${TSUFFIX}") - build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") - set(ADD_COMMONOBJS 0) - endforeach() -else () - set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) - set(TARGET_CORE ${CORE}) - set(KDIR "") - set(TSUFFIX "") - set(KERNEL_DEFINITIONS "") - build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") -endif () - From 107c883c8a434ad5f24606876c5f5885ad8db113 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 19 Aug 2025 05:13:28 -0700 Subject: [PATCH 131/360] Update SME-related kernels --- kernel/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index a2e349d32d..b4ea62f0d5 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -241,7 +241,7 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) if (X86_64 OR ARM64) set(USE_DIRECT_SGEMM true) endif() - if (UC_TARGET_CORE MATCHES ARMV9SME) + if (UC_TARGET_CORE MATCHES ARMV9SME OR UC_TARGET_CORE MATCHES VORTEXM4) set (HAVE_SME true) endif () @@ -254,14 +254,16 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) elseif (ARM64) + set (SGEMMDIRECTPERFORMANT sgemm_direct_performant.c) set (SGEMMDIRECTKERNEL sgemm_direct_arm64_sme1.c) set (SGEMMDIRECTKERNEL_ALPHA_BETA sgemm_direct_alpha_beta_arm64_sme1.c) - set (SGEMMDIRECTSMEKERNEL sgemm_direct_sme1.S) + set (SGEMMDIRECTSMEKERNEL sgemm_direct_sme1_2VLx2VL.S) set (SGEMMDIRECTPREKERNEL sgemm_direct_sme1_preprocess.S) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPERFORMANT}" "" "gemm_direct_performant" false "" "" false SINGLE) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL}" "" "gemm_direct" false "" "" false SINGLE) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTKERNEL_ALPHA_BETA}" "" "gemm_direct_alpha_beta" false "" "" false SINGLE) if (HAVE_SME) - GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1" false "" "" false SINGLE) + GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTSMEKERNEL}" "" "gemm_direct_sme1_2VLx2VL" false "" "" false SINGLE) GenerateNamedObjects("${KERNELDIR}/${SGEMMDIRECTPREKERNEL}" "" "gemm_direct_sme1_preprocess" false "" "" false SINGLE) endif () endif () From 501728a354fc70d47ef4f69b5f181b8a38b325c9 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 20 Aug 2025 06:24:38 -0700 Subject: [PATCH 132/360] adjust register 20 accesses to 21 after moving x18 --- kernel/arm64/sgemm_direct_sme1_2VLx2VL.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S b/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S index ebbd0cadd9..afb662c1fb 100644 --- a/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S +++ b/kernel/arm64/sgemm_direct_sme1_2VLx2VL.S @@ -62,7 +62,7 @@ add C2, N, C4 //N + SVLs add C3, C5, C4 //K*SVLs + SVLs whilelt p2.s, M_cntr, M //Tile 0,1 predicate (M dimension) - sub w20, w20, #2 //SVLs-2 + sub w21, w21, #2 //SVLs-2 .M_Loop: incw M_cntr @@ -199,7 +199,7 @@ process_K_less_than_equal_2: st1w {za1h.s[w13, #0]}, p5, [Cptr1] st1w {za2h.s[w13, #0]}, p6, [Cptr0, C6, lsl #2] st1w {za3h.s[w13, #0]}, p7, [Cptr1, C6, lsl #2] - cmp w13, w20 + cmp w13, w21 b.mi .Loop_store_ZA psel p4, p0, p2.s[w13, 1] psel p5, p1, p2.s[w13, 1] From edaa73fd2423ca332c41fdf16966da8ddb1c5ca3 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 20 Aug 2025 06:33:28 -0700 Subject: [PATCH 133/360] Hide the local 2VLx2VL symbol as static is insufficient for this with gcc --- kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c index 7a46e40f3a..9fb7e0d43f 100644 --- a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c @@ -111,6 +111,7 @@ return; } __arm_new("za") __arm_locally_streaming +__attribute__((visibility("hidden"))) static void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ const float *ba, const float *restrict bb, const float* beta,\ float *restrict C) { @@ -209,3 +210,4 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict float beta, float * __restrict R, BLASLONG strideR){fprintf(stderr,"empty sgemm_direct_alpha_beta should not be called!!!\n");} #endif + From 1ee8879c787c19b6a6c092def2016e76e93ffefd Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 20 Aug 2025 09:59:32 -0700 Subject: [PATCH 134/360] Add VORTEXM4 --- getarch.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/getarch.c b/getarch.c index 417a3d08ca..72097ada97 100644 --- a/getarch.c +++ b/getarch.c @@ -1654,6 +1654,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "VORTEX" #endif +#ifdef FORCE_VORTEXM4 +#define FORCE +#define ARCHITECTURE "ARM64" +#define SUBARCHITECTURE "VORTEXM4" +#define SUBDIRNAME "arm64" +#define ARCHCONFIG "-DVORTEXM4 " \ + "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \ + "-DL2_SIZE=262144 -DL2_LINESIZE=64 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=32 " \ + "-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DHAVE_SME -DARMV8" +#define LIBNAME "vortexm4" +#define CORENAME "VORTEXM4" +#endif + #ifdef FORCE_A64FX #define ARMV8 #define FORCE From 7c1839899e81829b096c62e73804d6859a0beed1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 21 Aug 2025 11:57:07 +0200 Subject: [PATCH 135/360] Increase assumed L2 sizes for RISCV X280 / ZVL256B and for SVE-capable ARM64 --- cmake/prebuild.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake index eea5eb5ede..0c88cefe03 100644 --- a/cmake/prebuild.cmake +++ b/cmake/prebuild.cmake @@ -1310,7 +1310,7 @@ endif () file(APPEND ${TARGET_CONF_TEMP} "#define L1_DATA_SIZE\t32768\n" "#define L1_DATA_LINESIZE\t64\n" - "#define L2_SIZE\t262144\n" + "#define L2_SIZE\t1048576\n" "#define L2_LINESIZE\t64\n" "#define DTB_DEFAULT_ENTRIES\t64\n" "#define DTB_SIZE\t4096\n" @@ -1429,7 +1429,7 @@ endif () file(APPEND ${TARGET_CONF_TEMP} "#define L1_DATA_SIZE 65536\n" "#define L1_LINESIZE 32 \n" - "#define L2_SIZE 262144\n" + "#define L2_SIZE 2097152\n" "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" "#define DTB_SIZE 4096\n" @@ -1465,7 +1465,7 @@ endif () file(APPEND ${TARGET_CONF_TEMP} "#define L1_DATA_SIZE 65536\n" "#define L1_DATA_LINESIZE 32\n" - "#define L2_SIZE 262144\n" + "#define L2_SIZE 2097152\n" "#define L2_LINESIZE 32 \n" "#define DTB_DEFAULT_ENTRIES 128\n" "#define DTB_SIZE 4096\n" From 855945befb1c5855b3739d1200bf89533a82a0d1 Mon Sep 17 00:00:00 2001 From: h-motoki Date: Thu, 21 Aug 2025 20:56:58 +0900 Subject: [PATCH 136/360] Implementing SVE in [SD]AXPY Kernels for A64FX and Graviton3E --- kernel/arm64/KERNEL.A64FX | 3 ++ kernel/arm64/KERNEL.NEOVERSEV1 | 4 ++ kernel/arm64/axpy_sve.c | 86 ++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 kernel/arm64/axpy_sve.c diff --git a/kernel/arm64/KERNEL.A64FX b/kernel/arm64/KERNEL.A64FX index e5e6a9d697..e54804db80 100644 --- a/kernel/arm64/KERNEL.A64FX +++ b/kernel/arm64/KERNEL.A64FX @@ -7,3 +7,6 @@ DGEMVTKERNEL = gemv_t_sve_v4x3.c DDOTKERNEL = dot_sve_v8.c SDOTKERNEL = dot_sve_v8.c + +SAXPYKERNEL = axpy_sve.c +DAXPYKERNEL = axpy_sve.c diff --git a/kernel/arm64/KERNEL.NEOVERSEV1 b/kernel/arm64/KERNEL.NEOVERSEV1 index 491425b606..0107340937 100644 --- a/kernel/arm64/KERNEL.NEOVERSEV1 +++ b/kernel/arm64/KERNEL.NEOVERSEV1 @@ -32,6 +32,10 @@ SGEMVNKERNEL = gemv_n_sve_v1x3.c DGEMVNKERNEL = gemv_n_sve_v1x3.c SGEMVTKERNEL = gemv_t_sve_v1x3.c DGEMVTKERNEL = gemv_t_sve_v1x3.c + +SAXPYKERNEL = axpy_sve.c +DAXPYKERNEL = axpy_sve.c + ifeq ($(BUILD_BFLOAT16), 1) BGEMM_BETA = bgemm_beta_neon.c BGEMMKERNEL = bgemm_kernel_2vlx4_neoversev1.c diff --git a/kernel/arm64/axpy_sve.c b/kernel/arm64/axpy_sve.c new file mode 100644 index 0000000000..69a99cfee6 --- /dev/null +++ b/kernel/arm64/axpy_sve.c @@ -0,0 +1,86 @@ +/*************************************************************************** +Copyright (c) 2025, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include + +#include "common.h" + +#ifdef DOUBLE +#define SV_TYPE svfloat64_t +#define SV_COUNT svcntd +#define SV_DUP svdup_f64 +#define SV_WHILE svwhilelt_b64_s64 +#define SV_TRUE svptrue_b64 +#else +#define SV_TYPE svfloat32_t +#define SV_COUNT svcntw +#define SV_DUP svdup_f32 +#define SV_WHILE svwhilelt_b32_s64 +#define SV_TRUE svptrue_b32 +#endif + +int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *dummy, BLASLONG dummy2) { + BLASLONG i = 0; + BLASLONG ix = 0, iy = 0; + BLASLONG sve_size = SV_COUNT(); + + if (n < 0) return (0); + if (da == 0.0) return (0); + + if (inc_x == 1 && inc_y == 1) { + SV_TYPE da_vec = SV_DUP(da); + for (i = 0; i + sve_size - 1 < n; i += sve_size) { + SV_TYPE x_vec = svld1(SV_TRUE(), &x[i]); + SV_TYPE y_vec = svld1(SV_TRUE(), &y[i]); + y_vec = svmla_x(SV_TRUE(), y_vec, da_vec, x_vec); + svst1(SV_TRUE(), &y[i], y_vec); + } + + if (i < n) { + svbool_t pg = SV_WHILE(i, n); + SV_TYPE x_vec = svld1(pg, &x[i]); + SV_TYPE y_vec = svld1(pg, &y[i]); + y_vec = svmla_x(pg, y_vec, da_vec, x_vec); + svst1(pg, &y[i], y_vec); + } + return (0); + } + + while (i < n) { + y[iy] += da * x[ix]; + ix += inc_x; + iy += inc_y; + i++; + } + + return (0); +} From c2cc7a3602b70974a57f38c014b6f3763e04eb38 Mon Sep 17 00:00:00 2001 From: yuanjia Date: Fri, 22 Aug 2025 16:14:14 +0800 Subject: [PATCH 137/360] riscv64: optimize gemv_t_vector.c --- kernel/riscv64/gemv_t_vector.c | 247 ++++++++++++++++++++++----------- 1 file changed, 168 insertions(+), 79 deletions(-) diff --git a/kernel/riscv64/gemv_t_vector.c b/kernel/riscv64/gemv_t_vector.c index 62b85164cb..0c9dad1e4b 100644 --- a/kernel/riscv64/gemv_t_vector.c +++ b/kernel/riscv64/gemv_t_vector.c @@ -27,110 +27,199 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "common.h" #if !defined(DOUBLE) -#define VSETVL(n) RISCV_RVV(vsetvl_e32m2)(n) -#define FLOAT_V_T vfloat32m2_t +#define VSETVL(n) RISCV_RVV(vsetvl_e32m8)(n) +#define VSETVL_MAX_M1 RISCV_RVV(vsetvlmax_e32m1) +#define FLOAT_V_T vfloat32m8_t #define FLOAT_V_T_M1 vfloat32m1_t -#define VLEV_FLOAT RISCV_RVV(vle32_v_f32m2) -#define VLSEV_FLOAT RISCV_RVV(vlse32_v_f32m2) +#define VLEV_FLOAT RISCV_RVV(vle32_v_f32m8) +#define VLSEV_FLOAT RISCV_RVV(vlse32_v_f32m8) #ifdef RISCV_0p10_INTRINSICS -#define VFREDSUM_FLOAT(va, vb, gvl) vfredusum_vs_f32m2_f32m1(v_res, va, vb, gvl) +#define VFREDSUM_FLOAT(va, vb, gvl) vfredusum_vs_f32m8_f32m1(v_res, va, vb, gvl) #else -#define VFREDSUM_FLOAT RISCV_RVV(vfredusum_vs_f32m2_f32m1) +#define VFREDSUM_FLOAT RISCV_RVV(vfredusum_vs_f32m8_f32m1) #endif -#define VFMACCVV_FLOAT RISCV_RVV(vfmacc_vv_f32m2) -#define VFMVVF_FLOAT RISCV_RVV(vfmv_v_f_f32m2) +#define VFMULVV_FLOAT RISCV_RVV(vfmul_vv_f32m8) +#define VFMVVF_FLOAT RISCV_RVV(vfmv_v_f_f32m8) #define VFMVVF_FLOAT_M1 RISCV_RVV(vfmv_v_f_f32m1) -#define VFMULVV_FLOAT RISCV_RVV(vfmul_vv_f32m2) #define xint_t int #else -#define VSETVL(n) RISCV_RVV(vsetvl_e64m2)(n) -#define FLOAT_V_T vfloat64m2_t +#define VSETVL(n) RISCV_RVV(vsetvl_e64m8)(n) +#define VSETVL_MAX_M1 RISCV_RVV(vsetvlmax_e64m1) +#define FLOAT_V_T vfloat64m8_t #define FLOAT_V_T_M1 vfloat64m1_t -#define VLEV_FLOAT RISCV_RVV(vle64_v_f64m2) -#define VLSEV_FLOAT RISCV_RVV(vlse64_v_f64m2) +#define VLEV_FLOAT RISCV_RVV(vle64_v_f64m8) +#define VLSEV_FLOAT RISCV_RVV(vlse64_v_f64m8) #ifdef RISCV_0p10_INTRINSICS -#define VFREDSUM_FLOAT(va, vb, gvl) vfredusum_vs_f64m2_f64m1(v_res, va, vb, gvl) +#define VFREDSUM_FLOAT(va, vb, gvl) vfredusum_vs_f64m8_f64m1(v_res, va, vb, gvl) #else -#define VFREDSUM_FLOAT RISCV_RVV(vfredusum_vs_f64m2_f64m1) +#define VFREDSUM_FLOAT RISCV_RVV(vfredusum_vs_f64m8_f64m1) #endif -#define VFMACCVV_FLOAT RISCV_RVV(vfmacc_vv_f64m2) -#define VFMVVF_FLOAT RISCV_RVV(vfmv_v_f_f64m2) +#define VFMULVV_FLOAT RISCV_RVV(vfmul_vv_f64m8) +#define VFMVVF_FLOAT RISCV_RVV(vfmv_v_f_f64m8) #define VFMVVF_FLOAT_M1 RISCV_RVV(vfmv_v_f_f64m1) -#define VFMULVV_FLOAT RISCV_RVV(vfmul_vv_f64m2) #define xint_t long long #endif int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer) { - BLASLONG i = 0, j = 0, k = 0; - BLASLONG ix = 0, iy = 0; - FLOAT *a_ptr = a; - FLOAT temp; + BLASLONG i = 0, j = 0, k = 0; + BLASLONG ix = 0, iy = 0; + FLOAT *a_ptr = a; + FLOAT temp; - FLOAT_V_T va, vr, vx; - unsigned int gvl = 0; - FLOAT_V_T_M1 v_res; + FLOAT_V_T va, vr, vx; + unsigned int gvl = 0; + FLOAT_V_T_M1 v_res; + size_t vlmax = VSETVL_MAX_M1(); +#ifndef RISCV_0p10_INTRINSICS + FLOAT_V_T va0, va1, va2, va3, vr0, vr1, vr2, vr3; + FLOAT_V_T_M1 vec0, vec1, vec2, vec3; + FLOAT *a_ptrs[4], *y_ptrs[4]; +#endif - if(inc_x == 1){ - for(i = 0; i < n; i++){ - v_res = VFMVVF_FLOAT_M1(0, 1); - gvl = VSETVL(m); - j = 0; - vr = VFMVVF_FLOAT(0, gvl); - for(k = 0; k < m/gvl; k++){ - va = VLEV_FLOAT(&a_ptr[j], gvl); - vx = VLEV_FLOAT(&x[j], gvl); - vr = VFMULVV_FLOAT(va, vx, gvl); // could vfmacc here and reduce outside loop - v_res = VFREDSUM_FLOAT(vr, v_res, gvl); // but that reordering diverges far enough from scalar path to make tests fail - j += gvl; - } - if(j < m){ - gvl = VSETVL(m-j); - va = VLEV_FLOAT(&a_ptr[j], gvl); - vx = VLEV_FLOAT(&x[j], gvl); - vr = VFMULVV_FLOAT(va, vx, gvl); - v_res = VFREDSUM_FLOAT(vr, v_res, gvl); - } - temp = (FLOAT)EXTRACT_FLOAT(v_res); - y[iy] += alpha * temp; + if(inc_x == 1){ +#ifndef RISCV_0p10_INTRINSICS + BLASLONG anr = n - n % 4; + for (; i < anr; i += 4) { + gvl = VSETVL(m); + j = 0; + for (int l = 0; l < 4; l++) { + a_ptrs[l] = a + (i + l) * lda; + y_ptrs[l] = y + (i + l) * inc_y; + } + vec0 = VFMVVF_FLOAT_M1(0.0, vlmax); + vec1 = VFMVVF_FLOAT_M1(0.0, vlmax); + vec2 = VFMVVF_FLOAT_M1(0.0, vlmax); + vec3 = VFMVVF_FLOAT_M1(0.0, vlmax); + vr0 = VFMVVF_FLOAT(0.0, gvl); + vr1 = VFMVVF_FLOAT(0.0, gvl); + vr2 = VFMVVF_FLOAT(0.0, gvl); + vr3 = VFMVVF_FLOAT(0.0, gvl); + for (k = 0; k < m / gvl; k++) { + va0 = VLEV_FLOAT(a_ptrs[0] + j, gvl); + va1 = VLEV_FLOAT(a_ptrs[1] + j, gvl); + va2 = VLEV_FLOAT(a_ptrs[2] + j, gvl); + va3 = VLEV_FLOAT(a_ptrs[3] + j, gvl); + vx = VLEV_FLOAT(x + j, gvl); + vr0 = VFMULVV_FLOAT(va0, vx, gvl); + vr1 = VFMULVV_FLOAT(va1, vx, gvl); + vr2 = VFMULVV_FLOAT(va2, vx, gvl); + vr3 = VFMULVV_FLOAT(va3, vx, gvl); + // Floating-point addition does not satisfy the associative law, that is, (a + b) + c ≠ a + (b + c), + // so piecewise multiplication and reduction must be performed inside the loop body. + vec0 = VFREDSUM_FLOAT(vr0, vec0, gvl); + vec1 = VFREDSUM_FLOAT(vr1, vec1, gvl); + vec2 = VFREDSUM_FLOAT(vr2, vec2, gvl); + vec3 = VFREDSUM_FLOAT(vr3, vec3, gvl); + j += gvl; + } + if (j < m) { + gvl = VSETVL(m - j); + va0 = VLEV_FLOAT(a_ptrs[0] + j, gvl); + va1 = VLEV_FLOAT(a_ptrs[1] + j, gvl); + va2 = VLEV_FLOAT(a_ptrs[2] + j, gvl); + va3 = VLEV_FLOAT(a_ptrs[3] + j, gvl); - iy += inc_y; - a_ptr += lda; - } - }else{ - BLASLONG stride_x = inc_x * sizeof(FLOAT); - for(i = 0; i < n; i++){ - v_res = VFMVVF_FLOAT_M1(0, 1); - gvl = VSETVL(m); - j = 0; - ix = 0; - vr = VFMVVF_FLOAT(0, gvl); - for(k = 0; k < m/gvl; k++){ - va = VLEV_FLOAT(&a_ptr[j], gvl); - vx = VLSEV_FLOAT(&x[ix], stride_x, gvl); - vr = VFMULVV_FLOAT(va, vx, gvl); - v_res = VFREDSUM_FLOAT(vr, v_res, gvl); - j += gvl; - ix += inc_x * gvl; - } - if(j < m){ - gvl = VSETVL(m-j); - va = VLEV_FLOAT(&a_ptr[j], gvl); - vx = VLSEV_FLOAT(&x[ix], stride_x, gvl); - vr = VFMULVV_FLOAT(va, vx, gvl); - v_res = VFREDSUM_FLOAT(vr, v_res, gvl); - } - temp = (FLOAT)EXTRACT_FLOAT(v_res); - y[iy] += alpha * temp; + vx = VLEV_FLOAT(x + j, gvl); + vr0 = VFMULVV_FLOAT(va0, vx, gvl); + vr1 = VFMULVV_FLOAT(va1, vx, gvl); + vr2 = VFMULVV_FLOAT(va2, vx, gvl); + vr3 = VFMULVV_FLOAT(va3, vx, gvl); + vec0 = VFREDSUM_FLOAT(vr0, vec0, gvl); + vec1 = VFREDSUM_FLOAT(vr1, vec1, gvl); + vec2 = VFREDSUM_FLOAT(vr2, vec2, gvl); + vec3 = VFREDSUM_FLOAT(vr3, vec3, gvl); + } + *y_ptrs[0] += alpha * (FLOAT)(EXTRACT_FLOAT(vec0)); + *y_ptrs[1] += alpha * (FLOAT)(EXTRACT_FLOAT(vec1)); + *y_ptrs[2] += alpha * (FLOAT)(EXTRACT_FLOAT(vec2)); + *y_ptrs[3] += alpha * (FLOAT)(EXTRACT_FLOAT(vec3)); + } + // deal with the tail + for (; i < n; i++) { + v_res = VFMVVF_FLOAT_M1(0, vlmax); + gvl = VSETVL(m); + j = 0; + a_ptrs[0] = a + i * lda; + y_ptrs[0] = y + i * inc_y; + vr0 = VFMVVF_FLOAT(0, gvl); + for (k = 0; k < m / gvl; k++) { + va0 = VLEV_FLOAT(a_ptrs[0] + j, gvl); + vx = VLEV_FLOAT(x + j, gvl); + vr0 = VFMULVV_FLOAT(va0, vx, gvl); + v_res = VFREDSUM_FLOAT(vr0, v_res, gvl); + j += gvl; + } + if (j < m) { + gvl = VSETVL(m - j); + va0 = VLEV_FLOAT(a_ptrs[0] + j, gvl); + vx = VLEV_FLOAT(x + j, gvl); + vr0 = VFMULVV_FLOAT(va0, vx, gvl); + v_res = VFREDSUM_FLOAT(vr0, v_res, gvl); + } + *y_ptrs[0] += alpha * (FLOAT)(EXTRACT_FLOAT(v_res)); + } +#else + for(i = 0; i < n; i++){ + v_res = VFMVVF_FLOAT_M1(0, 1); + gvl = VSETVL(m); + j = 0; + vr = VFMVVF_FLOAT(0, gvl); + for(k = 0; k < m/gvl; k++){ + va = VLEV_FLOAT(&a_ptr[j], gvl); + vx = VLEV_FLOAT(&x[j], gvl); + vr = VFMULVV_FLOAT(va, vx, gvl); // could vfmacc here and reduce outside loop + v_res = VFREDSUM_FLOAT(vr, v_res, gvl); // but that reordering diverges far enough from scalar path to make tests fail + j += gvl; + } + if(j < m){ + gvl = VSETVL(m-j); + va = VLEV_FLOAT(&a_ptr[j], gvl); + vx = VLEV_FLOAT(&x[j], gvl); + vr = VFMULVV_FLOAT(va, vx, gvl); + v_res = VFREDSUM_FLOAT(vr, v_res, gvl); + } + temp = (FLOAT)EXTRACT_FLOAT(v_res); + y[iy] += alpha * temp; - iy += inc_y; - a_ptr += lda; + iy += inc_y; + a_ptr += lda; + } +#endif + } else { + BLASLONG stride_x = inc_x * sizeof(FLOAT); + for(i = 0; i < n; i++){ + v_res = VFMVVF_FLOAT_M1(0, 1); + gvl = VSETVL(m); + j = 0; + ix = 0; + vr = VFMVVF_FLOAT(0, gvl); + for(k = 0; k < m/gvl; k++){ + va = VLEV_FLOAT(&a_ptr[j], gvl); + vx = VLSEV_FLOAT(&x[ix], stride_x, gvl); + vr = VFMULVV_FLOAT(va, vx, gvl); + v_res = VFREDSUM_FLOAT(vr, v_res, gvl); + j += gvl; + ix += inc_x * gvl; + } + if(j < m){ + gvl = VSETVL(m-j); + va = VLEV_FLOAT(&a_ptr[j], gvl); + vx = VLSEV_FLOAT(&x[ix], stride_x, gvl); + vr = VFMULVV_FLOAT(va, vx, gvl); + v_res = VFREDSUM_FLOAT(vr, v_res, gvl); } - } + temp = (FLOAT)EXTRACT_FLOAT(v_res); + y[iy] += alpha * temp; - return(0); + iy += inc_y; + a_ptr += lda; + } + } + + return (0); } From 7f89c6f353091aa09540b51158ab85a220b1192b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 23 Aug 2025 14:20:15 -0700 Subject: [PATCH 138/360] smh-based direct sgemm currently requires leading dimensions to be same as matrix dimension --- interface/gemm.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/gemm.c b/interface/gemm.c index 62bc442467..92c75093c3 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -266,6 +266,7 @@ void NAME(char *TRANSA, char *TRANSB, int transa, transb, nrowa, nrowb; blasint info; + int order = -1; char transA, transB; IFLOAT *buffer; @@ -557,15 +558,16 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS if (strcmp(gotoblas_corename(), "armv9sme") == 0 || strcmp(gotoblas_corename(), "vortexm4") == 0) // if (support_sme1()) #endif - if (order == CblasRowMajor && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + if (order == CblasRowMajor && m==lda && n ==ldb && k==ldc && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); return; } else - if (order == CblasRowMajor && beta != 0. && (!(alpha==1.&&beta==1.)) && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + if (order == CblasRowMajor && m==lda && n==ldb && k==ldc && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { SGEMM_DIRECT_ALPHA_BETA(m, n, k, alpha, a, lda, b, ldb, beta, c, ldc); return; } + #endif #endif @@ -587,9 +589,6 @@ else if ((args.m == 0) || (args.n == 0)) return; - - - #if 0 fprintf(stderr, "m = %4d n = %d k = %d lda = %4d ldb = %4d ldc = %4d\n", args.m, args.n, args.k, args.lda, args.ldb, args.ldc); @@ -626,6 +625,7 @@ else } bool is_efficient_gemv = have_tuned_gemv || ((NT == 'N') || (NT == 'T' && inc_x == 1)); if (is_efficient_gemv) { +fprintf(stderr,"gemv_forwarding\n"); GEMV(&NT, &m, &n, args.alpha, args.a, &lda, args.b, &inc_x, args.beta, args.c, &inc_y); return; } @@ -649,6 +649,7 @@ else } bool is_efficient_gemv = have_tuned_gemv || ((NT == 'N' && inc_y == 1) || (NT == 'T' && inc_x == 1)); if (is_efficient_gemv) { +fprintf(stderr,"gemv_forwarding\n"); GEMV(&NT, &m, &n, args.alpha, args.b, &ldb, args.a, &inc_x, args.beta, args.c, &inc_y); return; } From 8e50b8d5255a26bc8293d1b83586a2035a8d8ccb Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 23 Aug 2025 14:36:49 -0700 Subject: [PATCH 139/360] Add d8 to d15 to clobber lists as the code does not expressly save them --- kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c index 9fb7e0d43f..f2de509c77 100644 --- a/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_alpha_beta_arm64_sme1.c @@ -111,7 +111,6 @@ return; } __arm_new("za") __arm_locally_streaming -__attribute__((visibility("hidden"))) static void sgemm_direct_alpha_beta_sme1_2VLx2VL(uint64_t m, uint64_t k, uint64_t n, const float* alpha,\ const float *ba, const float *restrict bb, const float* beta,\ float *restrict C) { @@ -177,11 +176,11 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict * of reading directly from vector (z) registers. * */ asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", - "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", - "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31"); + "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31","za"); /* Pre-process the left matrix to make it suitable for matrix sum of outer-product calculation @@ -190,11 +189,11 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict SME1_PREPROCESS(M, K, A, A_mod); asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", - "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15","d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", - "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31"); + "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31", "za"); /* Calculate C = alpha*A*B + beta*C */ @@ -210,4 +209,3 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float alpha, float * __restrict float beta, float * __restrict R, BLASLONG strideR){fprintf(stderr,"empty sgemm_direct_alpha_beta should not be called!!!\n");} #endif - From b4fc09e9e17cd2b3809e446d9b2b18fc028d6d14 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 23 Aug 2025 14:39:27 -0700 Subject: [PATCH 140/360] Add registers d8 to d15 to clobber lists as the code does not expressly save them --- kernel/arm64/sgemm_direct_arm64_sme1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/arm64/sgemm_direct_arm64_sme1.c b/kernel/arm64/sgemm_direct_arm64_sme1.c index a214a0ff66..e4c8423550 100644 --- a/kernel/arm64/sgemm_direct_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_arm64_sme1.c @@ -58,7 +58,7 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ * of reading directly from vector (z) registers. * */ asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", - "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", @@ -74,7 +74,7 @@ fprintf(stderr,"sme direct calling 2x2\n"); SME1_DIRECT2X2(M, K, N, A_mod, B, R); asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", - "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", + "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8", "z9", "z10", "z11", "z12", "z13", "z14", "z15", "z16", "z17", "z18", "z19", "z20", "z21", "z22", "z23", From 1b88c9c7421d10c622f28ef3b3f85207089baccc Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 24 Aug 2025 13:48:22 -0700 Subject: [PATCH 141/360] remove debugging printouts --- interface/gemm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/gemm.c b/interface/gemm.c index 92c75093c3..52c16fc0ab 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -625,7 +625,6 @@ else } bool is_efficient_gemv = have_tuned_gemv || ((NT == 'N') || (NT == 'T' && inc_x == 1)); if (is_efficient_gemv) { -fprintf(stderr,"gemv_forwarding\n"); GEMV(&NT, &m, &n, args.alpha, args.a, &lda, args.b, &inc_x, args.beta, args.c, &inc_y); return; } @@ -649,7 +648,6 @@ fprintf(stderr,"gemv_forwarding\n"); } bool is_efficient_gemv = have_tuned_gemv || ((NT == 'N' && inc_y == 1) || (NT == 'T' && inc_x == 1)); if (is_efficient_gemv) { -fprintf(stderr,"gemv_forwarding\n"); GEMV(&NT, &m, &n, args.alpha, args.b, &ldb, args.a, &inc_x, args.beta, args.c, &inc_y); return; } From 2b5d8c789dad6560b17fe95759cbb5474e83686a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 24 Aug 2025 13:50:08 -0700 Subject: [PATCH 142/360] remove debugging printout --- kernel/arm64/sgemm_direct_arm64_sme1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/arm64/sgemm_direct_arm64_sme1.c b/kernel/arm64/sgemm_direct_arm64_sme1.c index e4c8423550..8c1b398186 100644 --- a/kernel/arm64/sgemm_direct_arm64_sme1.c +++ b/kernel/arm64/sgemm_direct_arm64_sme1.c @@ -70,7 +70,6 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ SME1_PREPROCESS(M, K, A, A_mod); /* Calculate C = A*B */ -fprintf(stderr,"sme direct calling 2x2\n"); SME1_DIRECT2X2(M, K, N, A_mod, B, R); asm volatile("" : : :"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", @@ -90,3 +89,4 @@ void CNAME (BLASLONG M, BLASLONG N, BLASLONG K, float * __restrict A,\ fprintf(stderr,"EMPTY sgemm_kernel_direct should never be called \n"); } #endif + From ce79fe12fdacdfd5d48c4a61a08f86aa6170eae9 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Wed, 27 Aug 2025 10:15:09 +0000 Subject: [PATCH 143/360] disable fp16 flags on RISC-V unless BUILD_HFLOAT16=1 The compiler options that enable 16 bit floating point instructions should not be enabled by default when building the RISCV64_ZVL128B and RISCV64_ZVL256B targets. The zfh and zvfh extensions are not part of the 'V' extension and are not required by any of the RVA profiles. There's no guarantee that kernels built with zfh and zvfh will work correctly on fully compliant RVA23U64 devices. To fix the issue we only build the RISCV64_ZVL128B and RISCV64_ZVL256B kernels with the half float flags if BUILD_HFLOAT16=1. We also update the RISC-V dynamic detection code to disable the RISCV64_ZVL128B and RISCV64_ZVL256B kernels at runtime if we've built with DYNAMIC_ARCH=1 and BUILD_HFLOAT16=1 and are running on a device that does not support both Zfh and Zvfh. Fixes: https://github.com/OpenMathLib/OpenBLAS/issues/5428 --- Makefile.prebuild | 4 ++-- Makefile.riscv64 | 12 +++++++++++- driver/others/Makefile | 2 +- driver/others/dynamic_riscv64.c | 14 +++++++++++++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Makefile.prebuild b/Makefile.prebuild index b6c8d552f9..b7d695a750 100644 --- a/Makefile.prebuild +++ b/Makefile.prebuild @@ -64,11 +64,11 @@ TARGET_FLAGS = -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d endif ifeq ($(TARGET), RISCV64_ZVL256B) -TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d endif ifeq ($(TARGET), RISCV64_ZVL128B) -TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d endif ifeq ($(TARGET), RISCV64_GENERIC) diff --git a/Makefile.riscv64 b/Makefile.riscv64 index 8fe734186b..cbabcadab7 100644 --- a/Makefile.riscv64 +++ b/Makefile.riscv64 @@ -7,12 +7,22 @@ CCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d -static endif ifeq ($(CORE), RISCV64_ZVL256B) +ifeq ($(BUILD_HFLOAT16), 1) CCOMMON_OPT += -march=rv64imafdcv_zvl256b_zvfh_zfh -mabi=lp64d FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +else +CCOMMON_OPT += -march=rv64imafdcv_zvl256b -mabi=lp64d +FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +endif endif ifeq ($(CORE), RISCV64_ZVL128B) -CCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +ifeq ($(BUILD_HFLOAT16), 1) +CCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d +else +CCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d +endif endif ifeq ($(CORE), RISCV64_GENERIC) CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d diff --git a/driver/others/Makefile b/driver/others/Makefile index 6a53638bc1..719d617c45 100644 --- a/driver/others/Makefile +++ b/driver/others/Makefile @@ -218,7 +218,7 @@ mulx.$(SUFFIX) : $(ARCH)/mulx.c $(CC) $(CFLAGS) -c -DXDOUBLE -UCOMPLEX $< -o $(@F) detect_riscv64.$(SUFFIX): detect_riscv64.c - $(CC) $(CFLAGS) -c -march=rv64imafdcv_zvfh_zfh $< -o $(@F) + $(CC) $(CFLAGS) -c -march=rv64imafdcv $< -o $(@F) xerbla.$(PSUFFIX) : xerbla.c $(CC) $(PFLAGS) -c $< -o $(@F) diff --git a/driver/others/dynamic_riscv64.c b/driver/others/dynamic_riscv64.c index 78e3bb67a4..35ddb277ca 100644 --- a/driver/others/dynamic_riscv64.c +++ b/driver/others/dynamic_riscv64.c @@ -97,6 +97,8 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_KEY_IMA_EXT_0 4 #define RISCV_HWPROBE_IMA_V (1 << 2) +#define RISCV_HWPROBE_EXT_ZFH (1 << 27) +#define RISCV_HWPROBE_EXT_ZVFH (1 << 30) #ifndef NR_riscv_hwprobe #ifndef NR_arch_specific_syscall @@ -147,6 +149,7 @@ char* gotoblas_corename(void) { } static gotoblas_t* get_coretype(void) { + uint64_t vector_mask; unsigned vlenb = 0; #if !defined(OS_LINUX) @@ -165,14 +168,23 @@ static gotoblas_t* get_coretype(void) { }; int ret = syscall(NR_riscv_hwprobe, pairs, 1, 0, NULL, 0); if (ret == 0) { - if (!(pairs[0].value & RISCV_HWPROBE_IMA_V)) +#if defined(BUILD_HFLOAT16) + vector_mask = (RISCV_HWPROBE_IMA_V | RISCV_HWPROBE_EXT_ZFH | RISCV_HWPROBE_EXT_ZVFH); +#else + vector_mask = RISCV_HWPROBE_IMA_V; +#endif + if ((pairs[0].value & vector_mask) != vector_mask) return NULL; } else { +#if defined(BUILD_HFLOAT16) + return NULL; +#else if (!(getauxval(AT_HWCAP) & DETECT_RISCV64_HWCAP_ISA_V)) return NULL; if (!detect_riscv64_rvv100()) return NULL; +#endif } /* From 7fcad02dc2687c62cbbc60228aa7ffafa5e26e7a Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 28 Aug 2025 14:08:46 +0000 Subject: [PATCH 144/360] fix RVV 1.0 detection code There were a couple of issues with the detection code used to check for RVV 1.0 on kernels that do not support hwprobe. 1. The vtype clobber was missing 2. The wrong form of vsetvli was being used. The vsetvli x0, x0 form is inappropriate for this use case as it can only be safely used in code where the value of vtype is known. The use of vsetvli x0, x0 here can lead to a failure to detect RVV 1.0, if, for example, the vill bit happens to be set before detect_riscv64_rvv100 is called. We fix both issues by adding the missing clobber and replacing the first parameter to vsetvli with t0 (which we add to our clobbers). --- driver/others/detect_riscv64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/others/detect_riscv64.c b/driver/others/detect_riscv64.c index 5a5cc03916..dc3bb82099 100644 --- a/driver/others/detect_riscv64.c +++ b/driver/others/detect_riscv64.c @@ -63,12 +63,12 @@ uint64_t detect_riscv64_rvv100(void) * RVV 1.0 and we return 0. */ - asm volatile("vsetvli x0, x0, e8, m1, ta, ma\n\t" + asm volatile("vsetvli t0, x0, e8, m1, ta, ma\n\t" "csrr %0, vtype\n\t" "slt %0, x0, %0\n" : "=r" (rvv10_supported) : - :); + :"t0", "vtype"); return rvv10_supported; } From fd8f0d4f8cee502ef3776b523eaee86dd8b1b765 Mon Sep 17 00:00:00 2001 From: Ruiyang Wu Date: Sun, 31 Aug 2025 22:21:01 -0400 Subject: [PATCH 145/360] CMake: Demote the OpenMP mixed linkage check to NOTICE --- cmake/system.cmake | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/cmake/system.cmake b/cmake/system.cmake index bf4c548b92..11ebb529e3 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -418,10 +418,15 @@ if (USE_OPENMP) if (NOT NOFORTRAN) find_package(OpenMP COMPONENTS Fortran REQUIRED) # Avoid mixed OpenMP linkage - get_target_property(OMP_C_LIB OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES) - get_target_property(OMP_Fortran_LIB OpenMP::OpenMP_Fortran INTERFACE_LINK_LIBRARIES) - if (NOT OMP_C_LIB STREQUAL OMP_Fortran_LIB) - message(FATAL_ERROR "Multiple OpenMP runtime libraries detected. Mixed OpenMP runtime linkage is dangerous. You may pass -DOpenMP_LANG_LIB_NAMES and -DOpenMP_omp_LIBRARY to manually choose the OpenMP library.") + get_target_property(OMP_C_LIBS OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES) + get_target_property(OMP_F_LIBS OpenMP::OpenMP_Fortran INTERFACE_LINK_LIBRARIES) + if (NOT OMP_C_LIBS STREQUAL OMP_F_LIBS) + message(NOTICE + "OpenMP runtimes detected:\n" + "C=${OMP_C_LIBS}\n" + "Fortran=${OMP_F_LIBS}\n" + "Please check that they are the same OpenMP runtime implementation." + ) endif() endif () endif () From ed6c223105a8c005d6fe3f14b2f93eade3b3c48d Mon Sep 17 00:00:00 2001 From: Ruiyang Wu Date: Mon, 1 Sep 2025 22:33:52 -0400 Subject: [PATCH 146/360] CMake: Improve the wording of the OpenMP mixed linkage check --- cmake/system.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/system.cmake b/cmake/system.cmake index 11ebb529e3..c085bceef8 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -422,10 +422,11 @@ if (USE_OPENMP) get_target_property(OMP_F_LIBS OpenMP::OpenMP_Fortran INTERFACE_LINK_LIBRARIES) if (NOT OMP_C_LIBS STREQUAL OMP_F_LIBS) message(NOTICE - "OpenMP runtimes detected:\n" + "CMake detected different OpenMP libraries for C and Fortran:\n" "C=${OMP_C_LIBS}\n" "Fortran=${OMP_F_LIBS}\n" - "Please check that they are the same OpenMP runtime implementation." + "In case you encounter issues, please check that this is correct.\n" + "You may pass -DOpenMP__LIB_NAMES and -DOpenMP__LIBRARY to cmake to manually force the OpenMP library." ) endif() endif () From 4c1a4e60a61dac6d94f6c67cf7fe09cf675cc6ba Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 2 Sep 2025 14:54:08 +0200 Subject: [PATCH 147/360] Update toolchain to its latest nightly build --- .github/workflows/riscv64_vector.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64_vector.yml b/.github/workflows/riscv64_vector.yml index 9209ebb7d1..5dd74b9dcc 100644 --- a/.github/workflows/riscv64_vector.yml +++ b/.github/workflows/riscv64_vector.yml @@ -17,7 +17,7 @@ jobs: triple: riscv64-unknown-linux-gnu riscv_gnu_toolchain: https://github.com/riscv-collab/riscv-gnu-toolchain riscv_gnu_toolchain_version: 13.2.0 - riscv_gnu_toolchain_nightly_download_path: /releases/download/2024.02.02/riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.02.02-nightly.tar.gz + riscv_gnu_toolchain_nightly_download_path: /releases/download/2025.08.29/riscv64-glibc-ubuntu-22.04-llvm-nightly-2025.08.29-nightly.tar.xz strategy: fail-fast: false matrix: From c42fccccb5c382139dde078bb0305be888d01ff1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 2 Sep 2025 15:36:32 +0200 Subject: [PATCH 148/360] Drop installation of cmake --- .github/workflows/apple_m.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/apple_m.yml b/.github/workflows/apple_m.yml index 56d46cf0cd..b6f13570c9 100644 --- a/.github/workflows/apple_m.yml +++ b/.github/workflows/apple_m.yml @@ -44,7 +44,7 @@ jobs: elif [ "$RUNNER_OS" == "macOS" ]; then # It looks like "gfortran" isn't working correctly unless "gcc" is re-installed. brew reinstall gcc - brew install coreutils cmake ccache + brew install coreutils ccache brew install llvm else echo "::error::$RUNNER_OS not supported" From a1331406a37cd8737afd15cc5de7498926b93ebb Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 2 Sep 2025 15:39:08 +0200 Subject: [PATCH 149/360] drop (re)installation of cmake on osx runners --- .github/workflows/dynamic_arch.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dynamic_arch.yml b/.github/workflows/dynamic_arch.yml index 950ab08ea6..131966fbba 100644 --- a/.github/workflows/dynamic_arch.yml +++ b/.github/workflows/dynamic_arch.yml @@ -49,7 +49,7 @@ jobs: elif [ "$RUNNER_OS" == "macOS" ]; then # It looks like "gfortran" isn't working correctly unless "gcc" is re-installed. brew reinstall gcc - brew install coreutils cmake ccache + brew install coreutils ccache else echo "::error::$RUNNER_OS not supported" exit 1 From 1c7251ca20ff3c416831300ee22c30ed846ce302 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 2 Sep 2025 18:36:02 +0200 Subject: [PATCH 150/360] remove the -llto_library option for any osx fortran compiler --- Makefile.system | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile.system b/Makefile.system index 3f1c48d23d..b44cbf9873 100644 --- a/Makefile.system +++ b/Makefile.system @@ -442,11 +442,9 @@ CCOMMON_OPT += -Wl,-ld_classic FCOMMON_OPT += -Wl,-ld_classic endif ifeq (x$(XCVER), x 16) -ifeq ($(F_COMPILER), GFORTRAN) override CEXTRALIB := $(filter-out(-lto_library, $(CEXTRALIB))) endif endif -endif ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly)) MD5SUM = md5 -r From 7b1f9bedf817e8c34ef1c76726a595ca3d2ee35d Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 8 Sep 2025 15:11:57 +0200 Subject: [PATCH 151/360] clean up duplicate assignment of cpus newer than POWER10 --- driver/others/dynamic_power.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/driver/others/dynamic_power.c b/driver/others/dynamic_power.c index f0afe3eb6c..34189869c5 100644 --- a/driver/others/dynamic_power.c +++ b/driver/others/dynamic_power.c @@ -69,7 +69,7 @@ static int cpuid(void) else if (arch == POWER_9) return CPU_POWER9; #endif #ifdef POWER_10 - else if (arch >= POWER_10) return CPU_POWER10; + else if (arch == POWER_10) return CPU_POWER10; #endif #ifdef POWER_11 else if (arch >= POWER_11) return CPU_POWER10; From 2fee943edb8f4959243026af60efc9db3bedb965 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 9 Sep 2025 13:18:51 -0700 Subject: [PATCH 152/360] Add CMake build support for IBM Z (#5440) * Add ZARCH support, including DYNAMIC_ARCH --- Jenkinsfile | 5 +++++ cmake/arch.cmake | 8 +++++++- cmake/cc.cmake | 4 ++++ cmake/system.cmake | 9 ++++++++- cmake/system_check.cmake | 5 +++++ driver/others/CMakeLists.txt | 2 ++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index baeeee59ff..c4d2a4147f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,5 +10,10 @@ pipeline { sh 'make clean && make' } } + stage('CMakeBuild') { + steps { + sh 'sudo apt update && sudo apt install cmake -y && make clean && rm -rf build && mkdir build && cd build && cmake -DDYNAMIC_ARCH=1 .. && make' + } + } } } diff --git a/cmake/arch.cmake b/cmake/arch.cmake index d9a7aafd62..f5e901a316 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -94,7 +94,13 @@ if (DYNAMIC_ARCH) set(DYNAMIC_CORE PRESCOTT ${DYNAMIC_LIST}) endif () endif () - + + if (ZARCH) + set(DYNAMIC_CORE Z13 Z14 ZARCH_GENERIC) + set(DYN_Z13 1) + set(DYN_Z14 1) + endif () + if (LOONGARCH64) set(DYNAMIC_CORE LA64_GENERIC LA264 LA464) endif () diff --git a/cmake/cc.cmake b/cmake/cc.cmake index 952b2dd7ad..b3d9e9dc7b 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -86,6 +86,10 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS set(BINARY_DEFINED 1) endif () + if (ZARCH) + set (BINARY_DEFINED 1) + endif () + if (CMAKE_SYSTEM_NAME STREQUAL "AIX") set(BINARY_DEFINED 1) endif () diff --git a/cmake/system.cmake b/cmake/system.cmake index bf4c548b92..8dded3c215 100644 --- a/cmake/system.cmake +++ b/cmake/system.cmake @@ -316,6 +316,13 @@ if (DEFINED TARGET) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math") endif() +if (${TARGET} STREQUAL Z13) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=z13 -mzvector") +endif() +if (${TARGET} STREQUAL Z14) + set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=z14 -mzvector") +endif() + if (${TARGET} STREQUAL NEOVERSEV1) if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE) set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve_intrinsics -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1") @@ -485,7 +492,7 @@ if (SMALL_MATRIX_OPT) endif () if (DYNAMIC_ARCH) - if (X86 OR X86_64 OR ARM64 OR POWER OR RISCV64 OR LOONGARCH64) + if (X86 OR X86_64 OR ARM64 OR POWER OR RISCV64 OR LOONGARCH64 OR ZARCH) set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_ARCH") if (DYNAMIC_OLDER) set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_OLDER") diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake index dd0dfab637..3d987c3062 100644 --- a/cmake/system_check.cmake +++ b/cmake/system_check.cmake @@ -50,6 +50,9 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64.*") set(LOONGARCH64 1) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64.*") set(RISCV64 1) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390.*") + set(ZARCH 1) + set(BINARY 64) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" OR (CMAKE_SYSTEM_NAME MATCHES "Darwin" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*")) if (NOT BINARY) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") @@ -100,6 +103,8 @@ elseif(X86) set(ARCH "x86") elseif(POWER) set(ARCH "power") +elseif(ZARCH) + set(ARCH "zarch") elseif(MIPS32) set(ARCH "mips") elseif(MIPS64) diff --git a/driver/others/CMakeLists.txt b/driver/others/CMakeLists.txt index ebcc0aa781..e963fd9dda 100644 --- a/driver/others/CMakeLists.txt +++ b/driver/others/CMakeLists.txt @@ -52,6 +52,8 @@ if (DYNAMIC_ARCH) list(APPEND COMMON_SOURCES dynamic_arm64.c) elseif (POWER) list(APPEND COMMON_SOURCES dynamic_power.c) + elseif (ZARCH) + list(APPEND COMMON_SOURCES dynamic_zarch.c) elseif (RISCV64) list(APPEND COMMON_SOURCES dynamic_riscv64.c detect_riscv64.c) elseif (LOONGARCH64) From 66cc27e75f1f82436c1843d2300f59ddacf4d452 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 10 Sep 2025 10:57:02 +0200 Subject: [PATCH 153/360] Add message for fallback due to unavailable Zfh extension --- driver/others/dynamic_riscv64.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/driver/others/dynamic_riscv64.c b/driver/others/dynamic_riscv64.c index 35ddb277ca..aa82845d4b 100644 --- a/driver/others/dynamic_riscv64.c +++ b/driver/others/dynamic_riscv64.c @@ -177,6 +177,8 @@ static gotoblas_t* get_coretype(void) { return NULL; } else { #if defined(BUILD_HFLOAT16) + snprintf(coremsg, sizeof(coremsg), "Cpu support for Zfh+Zvfh extensions required due to BUILD_HFLOAT16=1\n"); + openblas_warning(1, coremsg); return NULL; #else if (!(getauxval(AT_HWCAP) & DETECT_RISCV64_HWCAP_ISA_V)) From cb6c4392a562e9b04299949bcfbd1fd9e5872c68 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 10 Sep 2025 22:44:14 +0200 Subject: [PATCH 154/360] Make GEMM3M parameters available on 32bit X86-GENERIC --- param.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/param.h b/param.h index d0ee246e83..09a9620a57 100644 --- a/param.h +++ b/param.h @@ -4141,8 +4141,6 @@ Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy rout #define CGEMM_DEFAULT_UNROLL_N 2 #define ZGEMM_DEFAULT_UNROLL_N 2 #define XGEMM_DEFAULT_UNROLL_N 1 -#define CGEMM3M_DEFAULT_UNROLL_N 2 -#define ZGEMM3M_DEFAULT_UNROLL_N 2 #ifdef ARCH_X86 #define SGEMM_DEFAULT_UNROLL_M 2 @@ -4158,8 +4156,11 @@ Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy rout #define CGEMM_DEFAULT_UNROLL_M 2 #define ZGEMM_DEFAULT_UNROLL_M 2 #define XGEMM_DEFAULT_UNROLL_M 1 +#endif #define CGEMM3M_DEFAULT_UNROLL_M 2 #define ZGEMM3M_DEFAULT_UNROLL_M 2 +#define CGEMM3M_DEFAULT_UNROLL_N 2 +#define ZGEMM3M_DEFAULT_UNROLL_N 2 #define CGEMM3M_DEFAULT_P 448 #define ZGEMM3M_DEFAULT_P 224 #define XGEMM3M_DEFAULT_P 112 @@ -4170,7 +4171,7 @@ Until then, just keep it different than DGEMM_DEFAULT_UNROLL_N to keep copy rout #define ZGEMM3M_DEFAULT_R 12288 #define XGEMM3M_DEFAULT_R 12288 -#endif + #ifdef ARCH_MIPS #define SGEMM_DEFAULT_P 128 From 2953c7d244ab5ee3d0299abe486a1371ceaeed12 Mon Sep 17 00:00:00 2001 From: Dayuxiaoshui <792179245@qq.com> Date: Thu, 11 Sep 2025 13:29:18 +0800 Subject: [PATCH 155/360] Add OMATCOPY_CT performance test with RVV optimization - Created comprehensive performance test for omatcopy_ct function - Added RVV vectorized implementation with conditional compilation - Included build script for SG2044 server testing - Support both scalar and RVV optimized versions - Added throughput measurement and detailed performance metrics Co-authored-by: gong-flying --- build_and_test.sh | 84 ++++++++++++ test_omatcopy_ct.c | 318 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 402 insertions(+) create mode 100755 build_and_test.sh create mode 100644 test_omatcopy_ct.c diff --git a/build_and_test.sh b/build_and_test.sh new file mode 100755 index 0000000000..52b99e2b3c --- /dev/null +++ b/build_and_test.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# OMATCOPY_CT 性能测试编译脚本 +# 适用于 SG2044 服务器 + +echo "=== OMATCOPY_CT 性能测试编译脚本 ===" +echo "适用于 SG2044 RISC-V 服务器" +echo + +# 检查编译器 +if ! command -v gcc &> /dev/null; then + echo "错误: 未找到 GCC 编译器" + exit 1 +fi + +# 显示 GCC 版本 +echo "GCC 版本:" +gcc --version | head -1 +echo + +# 编译标准版本(无RVV) +echo "[1/3] 编译标准版本(标量优化)..." +gcc -O3 -march=rv64gc test_omatcopy_ct.c -lm -o test_omatcopy_ct_scalar +if [ $? -eq 0 ]; then + echo "✓ 标准版本编译成功: test_omatcopy_ct_scalar" +else + echo "✗ 标准版本编译失败" + exit 1 +fi + +# 编译RVV版本 +echo "[2/3] 编译RVV优化版本..." +gcc -O3 -march=rv64gcv -DUSE_RVV test_omatcopy_ct.c -lm -o test_omatcopy_ct_rvv +if [ $? -eq 0 ]; then + echo "✓ RVV版本编译成功: test_omatcopy_ct_rvv" +else + echo "⚠ RVV版本编译失败(可能不支持RVV扩展)" + echo " 将只运行标量版本测试" +fi + +echo +echo "[3/3] 编译完成!" +echo + +# 检查CPU信息 +echo "=== CPU 信息 ===" +if [ -f /proc/cpuinfo ]; then + echo "CPU型号:" + grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2 | xargs + echo "CPU核心数: $(nproc)" + + # 检查RVV支持 + if grep -q "v" /proc/cpuinfo; then + echo "✓ 检测到向量扩展支持" + else + echo "⚠ 未检测到向量扩展支持" + fi +fi +echo + +# 运行测试 +echo "=== 开始性能测试 ===" +echo + +if [ -f "test_omatcopy_ct_rvv" ]; then + echo "运行 RVV 优化版本测试:" + echo "----------------------------------------" + ./test_omatcopy_ct_rvv + echo +fi + +echo "运行标量版本测试:" +echo "----------------------------------------" +./test_omatcopy_ct_scalar + +echo +echo "=== 测试完成 ===" +echo "文件说明:" +echo " test_omatcopy_ct_scalar - 标量优化版本" +if [ -f "test_omatcopy_ct_rvv" ]; then + echo " test_omatcopy_ct_rvv - RVV向量化版本" +fi +echo " test_omatcopy_ct.c - 源代码文件" +echo " build_and_test.sh - 本编译脚本" \ No newline at end of file diff --git a/test_omatcopy_ct.c b/test_omatcopy_ct.c new file mode 100644 index 0000000000..e8e59dfc73 --- /dev/null +++ b/test_omatcopy_ct.c @@ -0,0 +1,318 @@ +#include +#include +#include +#include +#include + +// 定义BLASLONG和FLOAT类型 +typedef long BLASLONG; +typedef double FLOAT; + +// 编译选项:定义USE_RVV来启用真实RVV版本测试 +// gcc -DUSE_RVV -march=rv64gcv test_omatcopy_ct.c -o test_omatcopy_ct +#ifdef USE_RVV +#include +#endif + +// 原始版本实现(标量版本) +int omatcopy_ct_original(BLASLONG rows, BLASLONG cols, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb) +{ + BLASLONG i,j; + FLOAT *aptr,*bptr; + + if ( rows <= 0 ) return(0); + if ( cols <= 0 ) return(0); + + aptr = a; + + if ( alpha == 0.0 ) + { + for ( i=0; i 1e-5) { + printf("Mismatch at [%ld,%ld]: %f vs %f\n", i, j, b1[i * ldb + j], b2[i * ldb + j]); + return 0; + } + } + } + return 1; +} + +int main() { + printf("=== OMATCOPY_CT Performance Test ===\n"); + printf("测试原始标量版本 vs 模拟向量化版本的性能对比\n\n"); + + // 测试参数 - 适合sg2044服务器的测试规模 + BLASLONG test_sizes[][2] = { + {64, 64}, // 小规模:缓存友好 + {128, 128}, // 中等规模:L1缓存边界 + {256, 256}, // 大规模:L2缓存测试 + {512, 512}, // 更大规模:内存带宽测试 + {1024, 768}, // 非方阵测试 + {2048, 1024} // 大型矩阵测试 + }; + int num_tests = sizeof(test_sizes) / sizeof(test_sizes[0]); + + FLOAT alpha_values[] = {0.0, 1.0, 2.5}; + int num_alphas = sizeof(alpha_values) / sizeof(alpha_values[0]); + + srand(42); // 固定随机种子确保可重复性 + + for (int t = 0; t < num_tests; t++) { + BLASLONG rows = test_sizes[t][0]; + BLASLONG cols = test_sizes[t][1]; + BLASLONG lda = rows; + BLASLONG ldb = rows; + + printf("测试矩阵大小: %ldx%ld\n", rows, cols); + + // 分配内存(增加额外空间防止越界) + FLOAT *a = (FLOAT*)calloc(rows * lda + 128, sizeof(FLOAT)); + FLOAT *b1 = (FLOAT*)calloc(cols * ldb + 128, sizeof(FLOAT)); + FLOAT *b2 = (FLOAT*)calloc(cols * ldb + 128, sizeof(FLOAT)); + + if (!a || !b1 || !b2) { + printf("内存分配失败!\n"); + return 1; + } + + init_matrix(a, rows, cols, lda); + + for (int a_idx = 0; a_idx < num_alphas; a_idx++) { + FLOAT alpha = alpha_values[a_idx]; + printf(" Alpha = %.1f: ", alpha); + + // 清零输出矩阵 + memset(b1, 0, rows * cols * sizeof(FLOAT)); + memset(b2, 0, rows * cols * sizeof(FLOAT)); + + // 动态调整迭代次数(大矩阵用更少迭代) + int iterations = (rows * cols > 500000) ? 10 : (rows * cols > 100000) ? 20 : 50; + + // 预热运行 + omatcopy_ct_original(rows, cols, alpha, a, lda, b1, ldb); + omatcopy_ct_rvv(rows, cols, alpha, a, lda, b2, ldb); + + // 测试原始版本 + double start_time = get_time(); + for (int iter = 0; iter < iterations; iter++) { + omatcopy_ct_original(rows, cols, alpha, a, lda, b1, ldb); + } + double original_time = (get_time() - start_time) / iterations; + + // 测试RVV优化版本 + start_time = get_time(); + for (int iter = 0; iter < iterations; iter++) { + omatcopy_ct_rvv(rows, cols, alpha, a, lda, b2, ldb); + } + double rvv_time = (get_time() - start_time) / iterations; + + // 验证结果 + int correct = verify_results(b1, b2, rows, cols, ldb); + + // 计算性能提升 + double speedup = original_time / rvv_time; + + // 计算性能指标 + double throughput_orig = (rows * cols * sizeof(FLOAT) * 2) / (original_time * 1e-6) / 1e9; // GB/s + double throughput_rvv = (rows * cols * sizeof(FLOAT) * 2) / (rvv_time * 1e-6) / 1e9; // GB/s + + printf("标量: %.2f μs (%.2f GB/s), RVV: %.2f μs (%.2f GB/s), 加速比: %.2fx, 正确性: %s\n", + original_time, throughput_orig, rvv_time, throughput_rvv, speedup, correct ? "✓" : "✗"); + } + + free(a); + free(b1); + free(b2); + printf("\n"); + } + + printf("=== 测试完成 ===\n"); +#ifdef USE_RVV + printf("✓ 使用真实RVV指令进行测试\n"); +#else + printf("⚠ 使用模拟优化版本进行测试(在sg2044上请使用 -DUSE_RVV 编译)\n"); +#endif + printf("\n编译建议:\n"); + printf(" 标准版本: gcc -O3 -march=rv64gc test_omatcopy_ct.c -lm -o test_omatcopy_ct\n"); + printf(" RVV版本: gcc -O3 -march=rv64gcv -DUSE_RVV test_omatcopy_ct.c -lm -o test_omatcopy_ct\n"); + return 0; +} \ No newline at end of file From 708d586599774ca642389d7570ca177ddbcde697 Mon Sep 17 00:00:00 2001 From: Dayuxiaoshui <792179245@qq.com> Date: Thu, 11 Sep 2025 19:20:26 +0800 Subject: [PATCH 156/360] Add OMATCOPY_CT performance test with RVV optimization Co-authored-by: gong-flying --- build_and_test.sh | 72 ++++++++++++---- kernel/riscv64/KERNEL.RISCV64_ZVL128B | 3 + kernel/riscv64/KERNEL.RISCV64_ZVL256B | 3 + kernel/riscv64/omatcopy_ct_rvv.c | 118 ++++++++++++++++++++++++++ test_omatcopy_ct | Bin 0 -> 16544 bytes test_omatcopy_ct_rvv | Bin 0 -> 740336 bytes test_omatcopy_ct_scalar | Bin 0 -> 740072 bytes 7 files changed, 180 insertions(+), 16 deletions(-) create mode 100644 kernel/riscv64/omatcopy_ct_rvv.c create mode 100755 test_omatcopy_ct create mode 100755 test_omatcopy_ct_rvv create mode 100755 test_omatcopy_ct_scalar diff --git a/build_and_test.sh b/build_and_test.sh index 52b99e2b3c..318dad5b59 100755 --- a/build_and_test.sh +++ b/build_and_test.sh @@ -8,19 +8,29 @@ echo "适用于 SG2044 RISC-V 服务器" echo # 检查编译器 -if ! command -v gcc &> /dev/null; then - echo "错误: 未找到 GCC 编译器" +if command -v riscv64-unknown-linux-gnu-gcc &> /dev/null; then + CC="riscv64-unknown-linux-gnu-gcc" + echo "使用 RISC-V 交叉编译器" +elif command -v gcc &> /dev/null; then + CC="gcc" + echo "使用系统 GCC 编译器" +else + echo "错误: 未找到合适的编译器" exit 1 fi -# 显示 GCC 版本 -echo "GCC 版本:" -gcc --version | head -1 +# 显示编译器版本 +echo "编译器版本:" +$CC --version | head -1 echo # 编译标准版本(无RVV) echo "[1/3] 编译标准版本(标量优化)..." -gcc -O3 -march=rv64gc test_omatcopy_ct.c -lm -o test_omatcopy_ct_scalar +if [[ "$CC" == *"riscv64"* ]]; then + $CC -O3 -march=rv64gc test_omatcopy_ct.c -lm -o test_omatcopy_ct_scalar -static +else + $CC -O3 test_omatcopy_ct.c -lm -o test_omatcopy_ct_scalar +fi if [ $? -eq 0 ]; then echo "✓ 标准版本编译成功: test_omatcopy_ct_scalar" else @@ -30,7 +40,11 @@ fi # 编译RVV版本 echo "[2/3] 编译RVV优化版本..." -gcc -O3 -march=rv64gcv -DUSE_RVV test_omatcopy_ct.c -lm -o test_omatcopy_ct_rvv +if [[ "$CC" == *"riscv64"* ]]; then + $CC -O3 -march=rv64gcv -DUSE_RVV test_omatcopy_ct.c -lm -o test_omatcopy_ct_rvv -static +else + $CC -O3 -DUSE_RVV test_omatcopy_ct.c -lm -o test_omatcopy_ct_rvv +fi if [ $? -eq 0 ]; then echo "✓ RVV版本编译成功: test_omatcopy_ct_rvv" else @@ -62,17 +76,33 @@ echo echo "=== 开始性能测试 ===" echo -if [ -f "test_omatcopy_ct_rvv" ]; then - echo "运行 RVV 优化版本测试:" - echo "----------------------------------------" - ./test_omatcopy_ct_rvv +# 如果是交叉编译,提示用户需要在目标平台运行 +if [[ "$CC" == *"riscv64"* ]]; then + echo "⚠ 检测到交叉编译环境,生成的可执行文件需要在 RISC-V 平台上运行" + echo "请将以下文件传输到目标 RISC-V 系统:" + echo " - test_omatcopy_ct_scalar (标量版本)" + if [ -f "test_omatcopy_ct_rvv" ]; then + echo " - test_omatcopy_ct_rvv (RVV优化版本)" + fi echo + echo "在目标系统上运行:" + echo " ./test_omatcopy_ct_scalar # 运行标量版本" + if [ -f "test_omatcopy_ct_rvv" ]; then + echo " ./test_omatcopy_ct_rvv # 运行RVV版本" + fi +else + if [ -f "test_omatcopy_ct_rvv" ]; then + echo "运行 RVV 优化版本测试:" + echo "----------------------------------------" + ./test_omatcopy_ct_rvv + echo + fi + + echo "运行标量版本测试:" + echo "----------------------------------------" + ./test_omatcopy_ct_scalar fi -echo "运行标量版本测试:" -echo "----------------------------------------" -./test_omatcopy_ct_scalar - echo echo "=== 测试完成 ===" echo "文件说明:" @@ -81,4 +111,14 @@ if [ -f "test_omatcopy_ct_rvv" ]; then echo " test_omatcopy_ct_rvv - RVV向量化版本" fi echo " test_omatcopy_ct.c - 源代码文件" -echo " build_and_test.sh - 本编译脚本" \ No newline at end of file +echo " build_and_test.sh - 本编译脚本" +echo +echo "编译器信息:" +echo " 使用编译器: $CC" +if [[ "$CC" == *"riscv64"* ]]; then + echo " 目标架构: RISC-V 64位" + echo " 编译模式: 交叉编译 (静态链接)" +else + echo " 目标架构: 本机架构" + echo " 编译模式: 本地编译" +fi \ No newline at end of file diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL128B b/kernel/riscv64/KERNEL.RISCV64_ZVL128B index ad5880b725..03c8a4c95f 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL128B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL128B @@ -266,3 +266,6 @@ ifndef SHGEMM_BETA SHGEMM_BETA = gemm_beta_rvv.c endif endif + +DOMATCOPY_CT = omatcopy_ct_rvv.c +SOMATCOPY_CT = omatcopy_ct_rvv.c diff --git a/kernel/riscv64/KERNEL.RISCV64_ZVL256B b/kernel/riscv64/KERNEL.RISCV64_ZVL256B index d8d74254cf..d42379e165 100644 --- a/kernel/riscv64/KERNEL.RISCV64_ZVL256B +++ b/kernel/riscv64/KERNEL.RISCV64_ZVL256B @@ -219,6 +219,9 @@ COMATCOPY_CN = zomatcopy_cn_vector.c DOMATCOPY_CN = omatcopy_cn_vector.c SOMATCOPY_CN = omatcopy_cn_vector.c +DOMATCOPY_CT = omatcopy_ct_rvv.c +SOMATCOPY_CT = omatcopy_ct_rvv.c + ifeq ($(BUILD_BFLOAT16), 1) SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl256b.c diff --git a/kernel/riscv64/omatcopy_ct_rvv.c b/kernel/riscv64/omatcopy_ct_rvv.c new file mode 100644 index 0000000000..032cce53be --- /dev/null +++ b/kernel/riscv64/omatcopy_ct_rvv.c @@ -0,0 +1,118 @@ +/*************************************************************************** +Copyright (c) 2013, The OpenBLAS Project +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +3. Neither the name of the OpenBLAS project nor the names of +its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ + +#include "common.h" +#include + +#if !defined(DOUBLE) +#define VSETVL_MAX __riscv_vsetvlmax_e32m8() +#define VSETVL(n) __riscv_vsetvl_e32m8(n) +#define FLOAT_V_T vfloat32m8_t +#define VLEV_FLOAT __riscv_vle32_v_f32m8 +#define VSEV_FLOAT __riscv_vse32_v_f32m8 +#define VLSEV_FLOAT __riscv_vlse32_v_f32m8 +#define VSSEV_FLOAT __riscv_vsse32_v_f32m8 +#define VFMULVF_FLOAT __riscv_vfmul_vf_f32m8 +#define VFMVVF_FLOAT __riscv_vfmv_v_f_f32m8 +#else +#define VSETVL_MAX __riscv_vsetvlmax_e64m8() +#define VSETVL(n) __riscv_vsetvl_e64m8(n) +#define FLOAT_V_T vfloat64m8_t +#define VLEV_FLOAT __riscv_vle64_v_f64m8 +#define VSEV_FLOAT __riscv_vse64_v_f64m8 +#define VLSEV_FLOAT __riscv_vlse64_v_f64m8 +#define VSSEV_FLOAT __riscv_vsse64_v_f64m8 +#define VFMULVF_FLOAT __riscv_vfmul_vf_f64m8 +#define VFMVVF_FLOAT __riscv_vfmv_v_f_f64m8 +#endif + +/***************************************************** + * Order ColMajor + * Trans with RVV optimization + * +******************************************************/ + +int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG ldb) +{ + BLASLONG i, j; + FLOAT *aptr, *bptr; + size_t vl; + FLOAT_V_T va, vb; + + if (rows <= 0) return(0); + if (cols <= 0) return(0); + + aptr = a; + + if (alpha == 0.0) + { + vl = VSETVL_MAX; + va = VFMVVF_FLOAT(0, vl); + for (i = 0; i < cols; i++) + { + bptr = &b[i]; + for (j = 0; j < rows; j += vl) + { + vl = VSETVL(rows - j); + VSSEV_FLOAT(bptr + j * ldb, sizeof(FLOAT) * ldb, va, vl); + } + } + return(0); + } + + if (alpha == 1.0) + { + for (i = 0; i < cols; i++) + { + bptr = &b[i]; + for (j = 0; j < rows; j += vl) + { + vl = VSETVL(rows - j); + va = VLEV_FLOAT(aptr + j, vl); + VSSEV_FLOAT(bptr + j * ldb, sizeof(FLOAT) * ldb, va, vl); + } + aptr += lda; + } + return(0); + } + + // General case with alpha scaling + for (i = 0; i < cols; i++) + { + bptr = &b[i]; + for (j = 0; j < rows; j += vl) + { + vl = VSETVL(rows - j); + va = VLEV_FLOAT(aptr + j, vl); + va = VFMULVF_FLOAT(va, alpha, vl); + VSSEV_FLOAT(bptr + j * ldb, sizeof(FLOAT) * ldb, va, vl); + } + aptr += lda; + } + + return(0); +} \ No newline at end of file diff --git a/test_omatcopy_ct b/test_omatcopy_ct new file mode 100755 index 0000000000000000000000000000000000000000..2420ee55597ba50e953a1eff0460e6060bbc2d6d GIT binary patch literal 16544 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

      {gRaVLPkI2NCEO;TwM-62 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 -#include -#include -#include - -const int M = 31, K = 31, N = 31; -const float alpha = 1.0f, beta = 0.0f; - -hfloat16 A[961] = { 5.00000, 4.00000, 2.00000, 9.00000, 2.00000, 2.00000, 7.00000, 6.00000, 5.00000, 1.00000, 8.00000, 3.00000, 1.00000, 10.00000, 6.00000, 5.00000, 0.00000, 1.00000, 5.00000, 10.00000, 1.00000, 4.00000, 7.00000, 0.00000, 1.00000, 5.00000, 9.00000, 0.00000, 0.00000, 7.00000, 8.00000, 9.00000, 10.00000, 5.00000, 8.00000, 9.00000, 9.00000, 7.00000, 2.00000, 6.00000, 1.00000, 3.00000, 9.00000, 9.00000, 4.00000, 10.00000, 6.00000, 3.00000, 2.00000, 1.00000, 10.00000, 10.00000, 1.00000, 0.00000, 10.00000, 6.00000, 8.00000, 10.00000, 6.00000, 0.00000, 3.00000, 5.00000, 8.00000, 0.00000, 5.00000, 3.00000, 4.00000, 4.00000, 0.00000, 10.00000, 4.00000, 5.00000, 9.00000, 0.00000, 9.00000, 8.00000, 10.00000, 2.00000, 8.00000, 0.00000, 10.00000, 7.00000, 8.00000, 9.00000, 7.00000, 3.00000, 1.00000, 1.00000, 1.00000, 8.00000, 6.00000, 9.00000, 0.00000, 1.00000, 3.00000, 2.00000, 2.00000, 6.00000, 2.00000, 4.00000, 3.00000, 9.00000, 10.00000, 5.00000, 7.00000, 2.00000, 4.00000, 6.00000, 7.00000, 2.00000, 6.00000, 4.00000, 2.00000, 6.00000, 0.00000, 8.00000, 10.00000, 3.00000, 6.00000, 10.00000, 4.00000, 7.00000, 5.00000, 6.00000, 8.00000, 4.00000, 3.00000, 7.00000, 9.00000, 5.00000, 5.00000, 3.00000, 5.00000, 2.00000, 0.00000, 2.00000, 8.00000, 7.00000, 3.00000, 6.00000, 9.00000, 7.00000, 0.00000, 8.00000, 7.00000, 0.00000, 6.00000, 8.00000, 6.00000, 5.00000, 9.00000, 5.00000, 9.00000, 1.00000, 7.00000, 1.00000, 2.00000, 3.00000, 2.00000, 7.00000, 3.00000, 2.00000, 2.00000, 7.00000, 5.00000, 3.00000, 9.00000, 6.00000, 2.00000, 1.00000, 0.00000, 3.00000, 6.00000, 6.00000, 6.00000, 0.00000, 8.00000, 5.00000, 6.00000, 1.00000, 2.00000, 1.00000, 8.00000, 6.00000, 4.00000, 3.00000, 1.00000, 4.00000, 2.00000, 2.00000, 0.00000, 2.00000, 7.00000, 2.00000, 7.00000, 1.00000, 1.00000, 2.00000, 0.00000, 10.00000, 3.00000, 5.00000, 2.00000, 3.00000, 0.00000, 6.00000, 9.00000, 1.00000, 7.00000, 10.00000, 4.00000, 2.00000, 5.00000, 9.00000, 1.00000, 6.00000, 2.00000, 0.00000, 8.00000, 3.00000, 2.00000, 6.00000, 1.00000, 7.00000, 4.00000, 6.00000, 2.00000, 7.00000, 0.00000, 4.00000, 5.00000, 0.00000, 2.00000, 2.00000, 3.00000, 5.00000, 1.00000, 10.00000, 0.00000, 2.00000, 4.00000, 5.00000, 2.00000, 10.00000, 5.00000, 7.00000, 2.00000, 4.00000, 5.00000, 2.00000, 10.00000, 4.00000, 3.00000, 9.00000, 3.00000, 3.00000, 0.00000, 8.00000, 6.00000, 8.00000, 2.00000, 9.00000, 1.00000, 0.00000, 4.00000, 9.00000, 0.00000, 9.00000, 2.00000, 5.00000, 1.00000, 9.00000, 5.00000, 2.00000, 4.00000, 4.00000, 6.00000, 3.00000, 7.00000, 5.00000, 2.00000, 8.00000, 2.00000, 4.00000, 0.00000, 6.00000, 0.00000, 9.00000, 10.00000, 2.00000, 4.00000, 10.00000, 10.00000, 10.00000, 0.00000, 9.00000, 3.00000, 6.00000, 0.00000, 10.00000, 0.00000, 9.00000, 6.00000, 6.00000, 4.00000, 1.00000, 7.00000, 8.00000, 6.00000, 0.00000, 4.00000, 0.00000, 9.00000, 10.00000, 4.00000, 2.00000, 5.00000, 10.00000, 9.00000, 5.00000, 8.00000, 7.00000, 0.00000, 7.00000, 2.00000, 10.00000, 3.00000, 4.00000, 4.00000, 8.00000, 7.00000, 9.00000, 2.00000, 4.00000, 5.00000, 7.00000, 8.00000, 3.00000, 9.00000, 10.00000, 5.00000, 0.00000, 3.00000, 8.00000, 2.00000, 9.00000, 3.00000, 5.00000, 4.00000, 7.00000, 3.00000, 4.00000, 0.00000, 1.00000, 1.00000, 6.00000, 1.00000, 10.00000, 1.00000, 7.00000, 1.00000, 10.00000, 9.00000, 1.00000, 4.00000, 0.00000, 2.00000, 9.00000, 3.00000, 0.00000, 10.00000, 7.00000, 7.00000, 4.00000, 7.00000, 2.00000, 5.00000, 6.00000, 6.00000, 7.00000, 7.00000, 3.00000, 4.00000, 0.00000, 8.00000, 10.00000, 7.00000, 9.00000, 1.00000, 6.00000, 5.00000, 5.00000, 4.00000, 8.00000, 8.00000, 7.00000, 2.00000, 8.00000, 5.00000, 2.00000, 9.00000, 3.00000, 9.00000, 5.00000, 6.00000, 3.00000, 9.00000, 9.00000, 7.00000, 4.00000, 8.00000, 6.00000, 0.00000, 2.00000, 8.00000, 2.00000, 1.00000, 4.00000, 8.00000, 3.00000, 6.00000, 10.00000, 9.00000, 10.00000, 5.00000, 1.00000, 7.00000, 3.00000, 10.00000, 0.00000, 8.00000, 8.00000, 0.00000, 5.00000, 4.00000, 7.00000, 0.00000, 3.00000, 2.00000, 6.00000, 6.00000, 10.00000, 0.00000, 10.00000, 0.00000, 1.00000, 3.00000, 10.00000, 3.00000, 10.00000, 3.00000, 1.00000, 6.00000, 3.00000, 5.00000, 3.00000, 8.00000, 4.00000, 6.00000, 0.00000, 4.00000, 3.00000, 3.00000, 7.00000, 0.00000, 1.00000, 3.00000, 2.00000, 10.00000, 7.00000, 10.00000, 10.00000, 3.00000, 4.00000, 2.00000, 1.00000, 1.00000, 10.00000, 5.00000, 0.00000, 2.00000, 5.00000, 5.00000, 2.00000, 7.00000, 9.00000, 5.00000, 4.00000, 7.00000, 10.00000, 8.00000, 5.00000, 9.00000, 10.00000, 9.00000, 1.00000, 9.00000, 2.00000, 8.00000, 6.00000, 5.00000, 4.00000, 6.00000, 9.00000, 0.00000, 0.00000, 0.00000, 8.00000, 0.00000, 0.00000, 6.00000, 0.00000, 5.00000, 7.00000, 7.00000, 5.00000, 3.00000, 5.00000, 3.00000, 8.00000, 5.00000, 2.00000, 7.00000, 7.00000, 9.00000, 3.00000, 4.00000, 9.00000, 8.00000, 7.00000, 7.00000, 8.00000, 5.00000, 6.00000, 1.00000, 2.00000, 1.00000, 2.00000, 6.00000, 5.00000, 6.00000, 0.00000, 2.00000, 1.00000, 9.00000, 3.00000, 5.00000, 3.00000, 3.00000, 1.00000, 9.00000, 0.00000, 7.00000, 0.00000, 2.00000, 2.00000, 4.00000, 8.00000, 2.00000, 2.00000, 7.00000, 7.00000, 8.00000, 5.00000, 5.00000, 5.00000, 7.00000, 6.00000, 7.00000, 0.00000, 3.00000, 8.00000, 6.00000, 3.00000, 7.00000, 1.00000, 2.00000, 2.00000, 4.00000, 2.00000, 3.00000, 10.00000, 5.00000, 0.00000, 9.00000, 3.00000, 8.00000, 7.00000, 4.00000, 5.00000, 1.00000, 7.00000, 1.00000, 9.00000, 8.00000, 1.00000, 10.00000, 6.00000, 1.00000, 10.00000, 9.00000, 2.00000, 7.00000, 8.00000, 3.00000, 7.00000, 5.00000, 9.00000, 3.00000, 0.00000, 5.00000, 2.00000, 7.00000, 8.00000, 0.00000, 4.00000, 5.00000, 5.00000, 10.00000, 5.00000, 5.00000, 6.00000, 8.00000, 0.00000, 3.00000, 3.00000, 5.00000, 5.00000, 3.00000, 9.00000, 1.00000, 9.00000, 5.00000, 0.00000, 6.00000, 4.00000, 4.00000, 0.00000, 4.00000, 0.00000, 2.00000, 4.00000, 7.00000, 5.00000, 8.00000, 0.00000, 5.00000, 4.00000, 1.00000, 8.00000, 1.00000, 6.00000, 4.00000, 5.00000, 8.00000, 3.00000, 1.00000, 4.00000, 5.00000, 4.00000, 10.00000, 2.00000, 4.00000, 6.00000, 1.00000, 5.00000, 6.00000, 3.00000, 7.00000, 0.00000, 1.00000, 0.00000, 0.00000, 1.00000, 10.00000, 8.00000, 2.00000, 4.00000, 0.00000, 4.00000, 9.00000, 5.00000, 3.00000, 7.00000, 5.00000, 1.00000, 6.00000, 2.00000, 1.00000, 8.00000, 0.00000, 7.00000, 4.00000, 5.00000, 8.00000, 5.00000, 1.00000, 6.00000, 9.00000, 2.00000, 5.00000, 10.00000, 7.00000, 5.00000, 0.00000, 7.00000, 5.00000, 1.00000, 0.00000, 1.00000, 5.00000, 2.00000, 2.00000, 3.00000, 6.00000, 9.00000, 9.00000, 3.00000, 8.00000, 10.00000, 1.00000, 4.00000, 5.00000, 8.00000, 2.00000, 2.00000, 1.00000, 8.00000, 4.00000, 8.00000, 7.00000, 5.00000, 10.00000, 1.00000, 2.00000, 6.00000, 8.00000, 2.00000, 3.00000, 1.00000, 3.00000, 10.00000, 9.00000, 0.00000, 5.00000, 2.00000, 9.00000, 0.00000, 2.00000, 7.00000, 5.00000, 3.00000, 6.00000, 6.00000, 6.00000, 10.00000, 10.00000, 5.00000, 4.00000, 2.00000, 0.00000, 0.00000, 5.00000, 1.00000, 0.00000, 8.00000, 1.00000, 10.00000, 4.00000, 8.00000, 7.00000, 10.00000, 8.00000, 0.00000, 10.00000, 2.00000, 10.00000, 5.00000, 9.00000, 8.00000, 0.00000, 9.00000, 2.00000, 3.00000, 10.00000, 2.00000, 10.00000, 5.00000, 5.00000, 6.00000, 3.00000, 5.00000, 1.00000, 2.00000, 0.00000, 6.00000, 6.00000, 1.00000, 4.00000, 5.00000, 8.00000, 8.00000, 2.00000, 10.00000, 6.00000, 5.00000, 10.00000, 8.00000, 0.00000, 3.00000, 1.00000, 4.00000, 5.00000, 2.00000, 0.00000, 7.00000, 1.00000, 5.00000, 4.00000, 2.00000, 9.00000, 4.00000, 1.00000, 5.00000, 9.00000, 8.00000, 5.00000, 2.00000, 8.00000, 8.00000, 8.00000, 7.00000, 4.00000, 10.00000, 2.00000, 8.00000, 10.00000, 3.00000, 8.00000, 6.00000, 1.00000, 6.00000, 3.00000, 2.00000, 0.00000, 3.00000, 10.00000, 8.00000, 3.00000, 3.00000, 3.00000, 5.00000, 2.00000, 9.00000, 5.00000, 5.00000, 4.00000, 4.00000, 8.00000, 6.00000, 8.00000, 1.00000, 4.00000, 4.00000, 1.00000, 6.00000, 8.00000, 6.00000, 10.00000, 9.00000, 6.00000, 0.00000, 2.00000, 6.00000, 3.00000, 3.00000, 1.00000, 6.00000, 6.00000, 8.00000, 5.00000, 7.00000, 6.00000, 2.00000, 3.00000, 0.00000, 10.00000, 10.00000, 5.00000, 0.00000, 1.00000, 0.00000, 3.00000, 4.00000, 2.00000, 7.00000, 4.00000, 7.00000, 2.00000, 7.00000, 9.00000, 0.00000, 0.00000, 8.00000, 3.00000, 3.00000, 10.00000, 3.00000, 3.00000, 2.00000, 7.00000, 4.00000, 2.00000, 4.00000, 6.00000, 6.00000, 5.00000, 3.00000, 7.00000, 10.00000, 4.00000, 10.00000, 0.00000, 5.00000, 0.00000, 6.00000, 7.00000, 9.00000, 10.00000, 6.00000, 1.00000, 1.00000, 9.00000, 1.00000, 1.00000, 4.00000, 6.00000, 6.00000, 1.00000, 6.00000, 9.00000, 6.00000, 0.00000, 3.00000, 2.00000, 4.00000, 3.00000, 9.00000, 2.00000, 0.00000, 9.00000, 4.00000, 0.00000, 10.00000, 4.00000, 2.00000, 5.00000, 6.00000, 2.00000, 9.00000, 4.00000 }; -hfloat16 B[961] = { 1.00000, 9.00000, 6.00000, 5.00000, 4.00000, 9.00000, 9.00000, 10.00000, 9.00000, 7.00000, 0.00000, 8.00000, 6.00000, 1.00000, 1.00000, 10.00000, 2.00000, 8.00000, 4.00000, 5.00000, 6.00000, 7.00000, 0.00000, 3.00000, 5.00000, 7.00000, 4.00000, 1.00000, 9.00000, 8.00000, 2.00000, 4.00000, 6.00000, 3.00000, 8.00000, 1.00000, 7.00000, 0.00000, 0.00000, 6.00000, 1.00000, 3.00000, 6.00000, 8.00000, 7.00000, 2.00000, 6.00000, 6.00000, 2.00000, 6.00000, 2.00000, 2.00000, 0.00000, 7.00000, 3.00000, 3.00000, 7.00000, 2.00000, 6.00000, 10.00000, 8.00000, 2.00000, 8.00000, 7.00000, 3.00000, 6.00000, 2.00000, 0.00000, 8.00000, 7.00000, 4.00000, 10.00000, 6.00000, 2.00000, 6.00000, 7.00000, 5.00000, 3.00000, 9.00000, 9.00000, 7.00000, 3.00000, 5.00000, 10.00000, 3.00000, 3.00000, 9.00000, 4.00000, 3.00000, 6.00000, 2.00000, 7.00000, 8.00000, 10.00000, 4.00000, 9.00000, 8.00000, 10.00000, 6.00000, 7.00000, 10.00000, 9.00000, 5.00000, 8.00000, 9.00000, 1.00000, 1.00000, 8.00000, 2.00000, 7.00000, 0.00000, 6.00000, 2.00000, 2.00000, 9.00000, 6.00000, 3.00000, 9.00000, 7.00000, 9.00000, 1.00000, 7.00000, 1.00000, 8.00000, 0.00000, 4.00000, 5.00000, 2.00000, 5.00000, 6.00000, 4.00000, 8.00000, 1.00000, 10.00000, 10.00000, 10.00000, 8.00000, 4.00000, 10.00000, 8.00000, 1.00000, 9.00000, 9.00000, 8.00000, 8.00000, 3.00000, 4.00000, 4.00000, 7.00000, 9.00000, 4.00000, 0.00000, 6.00000, 9.00000, 5.00000, 2.00000, 3.00000, 7.00000, 5.00000, 0.00000, 5.00000, 6.00000, 4.00000, 2.00000, 2.00000, 5.00000, 7.00000, 8.00000, 7.00000, 9.00000, 6.00000, 8.00000, 7.00000, 4.00000, 9.00000, 8.00000, 3.00000, 7.00000, 9.00000, 8.00000, 1.00000, 3.00000, 3.00000, 8.00000, 3.00000, 0.00000, 9.00000, 9.00000, 2.00000, 5.00000, 3.00000, 4.00000, 0.00000, 8.00000, 10.00000, 4.00000, 7.00000, 2.00000, 8.00000, 2.00000, 7.00000, 1.00000, 10.00000, 0.00000, 8.00000, 8.00000, 1.00000, 3.00000, 3.00000, 8.00000, 7.00000, 3.00000, 0.00000, 2.00000, 1.00000, 4.00000, 1.00000, 2.00000, 10.00000, 5.00000, 0.00000, 10.00000, 7.00000, 10.00000, 3.00000, 5.00000, 1.00000, 3.00000, 6.00000, 3.00000, 7.00000, 4.00000, 9.00000, 2.00000, 3.00000, 10.00000, 8.00000, 1.00000, 10.00000, 3.00000, 7.00000, 8.00000, 7.00000, 5.00000, 3.00000, 1.00000, 9.00000, 7.00000, 1.00000, 9.00000, 9.00000, 0.00000, 7.00000, 7.00000, 10.00000, 6.00000, 8.00000, 7.00000, 3.00000, 10.00000, 1.00000, 5.00000, 0.00000, 10.00000, 1.00000, 6.00000, 5.00000, 6.00000, 7.00000, 10.00000, 0.00000, 3.00000, 1.00000, 8.00000, 2.00000, 9.00000, 3.00000, 3.00000, 6.00000, 2.00000, 10.00000, 6.00000, 7.00000, 9.00000, 2.00000, 3.00000, 4.00000, 3.00000, 5.00000, 0.00000, 0.00000, 5.00000, 2.00000, 3.00000, 1.00000, 3.00000, 4.00000, 5.00000, 6.00000, 8.00000, 7.00000, 0.00000, 4.00000, 9.00000, 5.00000, 3.00000, 7.00000, 9.00000, 6.00000, 2.00000, 7.00000, 6.00000, 1.00000, 10.00000, 6.00000, 10.00000, 10.00000, 10.00000, 10.00000, 4.00000, 6.00000, 6.00000, 9.00000, 1.00000, 1.00000, 6.00000, 1.00000, 8.00000, 9.00000, 6.00000, 5.00000, 2.00000, 8.00000, 4.00000, 10.00000, 2.00000, 8.00000, 6.00000, 4.00000, 0.00000, 9.00000, 1.00000, 8.00000, 0.00000, 1.00000, 8.00000, 5.00000, 1.00000, 1.00000, 2.00000, 0.00000, 2.00000, 0.00000, 10.00000, 5.00000, 0.00000, 2.00000, 7.00000, 4.00000, 6.00000, 7.00000, 2.00000, 6.00000, 0.00000, 9.00000, 3.00000, 5.00000, 8.00000, 8.00000, 8.00000, 1.00000, 3.00000, 3.00000, 4.00000, 4.00000, 5.00000, 2.00000, 5.00000, 8.00000, 8.00000, 6.00000, 10.00000, 10.00000, 7.00000, 1.00000, 6.00000, 6.00000, 3.00000, 4.00000, 9.00000, 10.00000, 3.00000, 4.00000, 9.00000, 4.00000, 1.00000, 5.00000, 7.00000, 9.00000, 4.00000, 1.00000, 3.00000, 6.00000, 10.00000, 1.00000, 4.00000, 8.00000, 2.00000, 7.00000, 4.00000, 7.00000, 6.00000, 5.00000, 1.00000, 9.00000, 10.00000, 0.00000, 9.00000, 8.00000, 1.00000, 9.00000, 4.00000, 7.00000, 8.00000, 1.00000, 4.00000, 2.00000, 5.00000, 6.00000, 7.00000, 6.00000, 4.00000, 8.00000, 8.00000, 5.00000, 4.00000, 0.00000, 4.00000, 9.00000, 5.00000, 0.00000, 8.00000, 2.00000, 2.00000, 0.00000, 9.00000, 2.00000, 5.00000, 4.00000, 1.00000, 8.00000, 5.00000, 5.00000, 4.00000, 5.00000, 3.00000, 4.00000, 6.00000, 3.00000, 10.00000, 1.00000, 6.00000, 7.00000, 6.00000, 0.00000, 0.00000, 7.00000, 10.00000, 10.00000, 3.00000, 8.00000, 8.00000, 1.00000, 0.00000, 2.00000, 5.00000, 5.00000, 4.00000, 4.00000, 2.00000, 1.00000, 2.00000, 8.00000, 2.00000, 6.00000, 3.00000, 7.00000, 10.00000, 9.00000, 7.00000, 0.00000, 5.00000, 7.00000, 0.00000, 2.00000, 8.00000, 6.00000, 5.00000, 3.00000, 8.00000, 1.00000, 6.00000, 3.00000, 3.00000, 8.00000, 8.00000, 0.00000, 4.00000, 5.00000, 6.00000, 4.00000, 8.00000, 8.00000, 2.00000, 10.00000, 10.00000, 0.00000, 4.00000, 4.00000, 3.00000, 8.00000, 1.00000, 9.00000, 9.00000, 10.00000, 7.00000, 3.00000, 2.00000, 0.00000, 0.00000, 7.00000, 0.00000, 6.00000, 7.00000, 0.00000, 6.00000, 6.00000, 7.00000, 9.00000, 9.00000, 10.00000, 4.00000, 10.00000, 3.00000, 4.00000, 2.00000, 8.00000, 4.00000, 7.00000, 3.00000, 10.00000, 4.00000, 2.00000, 8.00000, 6.00000, 3.00000, 4.00000, 1.00000, 4.00000, 0.00000, 8.00000, 1.00000, 2.00000, 0.00000, 0.00000, 5.00000, 7.00000, 10.00000, 7.00000, 10.00000, 7.00000, 2.00000, 2.00000, 4.00000, 2.00000, 9.00000, 0.00000, 0.00000, 10.00000, 3.00000, 10.00000, 2.00000, 0.00000, 5.00000, 5.00000, 10.00000, 1.00000, 5.00000, 3.00000, 10.00000, 4.00000, 4.00000, 3.00000, 10.00000, 6.00000, 4.00000, 8.00000, 7.00000, 10.00000, 1.00000, 3.00000, 10.00000, 10.00000, 4.00000, 3.00000, 0.00000, 9.00000, 7.00000, 10.00000, 7.00000, 9.00000, 3.00000, 10.00000, 9.00000, 9.00000, 5.00000, 2.00000, 7.00000, 1.00000, 7.00000, 3.00000, 9.00000, 2.00000, 3.00000, 4.00000, 7.00000, 1.00000, 8.00000, 4.00000, 8.00000, 7.00000, 8.00000, 10.00000, 2.00000, 8.00000, 3.00000, 5.00000, 3.00000, 4.00000, 3.00000, 6.00000, 0.00000, 7.00000, 7.00000, 4.00000, 6.00000, 6.00000, 2.00000, 8.00000, 10.00000, 7.00000, 2.00000, 2.00000, 7.00000, 3.00000, 5.00000, 4.00000, 7.00000, 2.00000, 9.00000, 3.00000, 5.00000, 6.00000, 7.00000, 9.00000, 7.00000, 6.00000, 5.00000, 7.00000, 1.00000, 2.00000, 4.00000, 10.00000, 0.00000, 3.00000, 5.00000, 6.00000, 1.00000, 1.00000, 9.00000, 3.00000, 4.00000, 6.00000, 8.00000, 1.00000, 6.00000, 3.00000, 4.00000, 5.00000, 10.00000, 9.00000, 7.00000, 7.00000, 1.00000, 1.00000, 1.00000, 2.00000, 6.00000, 10.00000, 5.00000, 3.00000, 2.00000, 6.00000, 7.00000, 6.00000, 3.00000, 10.00000, 2.00000, 4.00000, 9.00000, 5.00000, 1.00000, 0.00000, 4.00000, 2.00000, 7.00000, 8.00000, 8.00000, 3.00000, 10.00000, 3.00000, 10.00000, 7.00000, 9.00000, 1.00000, 9.00000, 7.00000, 6.00000, 4.00000, 2.00000, 8.00000, 3.00000, 8.00000, 9.00000, 10.00000, 4.00000, 10.00000, 2.00000, 10.00000, 4.00000, 10.00000, 1.00000, 9.00000, 6.00000, 8.00000, 4.00000, 3.00000, 2.00000, 9.00000, 8.00000, 10.00000, 9.00000, 9.00000, 7.00000, 10.00000, 2.00000, 6.00000, 9.00000, 6.00000, 7.00000, 10.00000, 10.00000, 5.00000, 5.00000, 4.00000, 0.00000, 8.00000, 0.00000, 3.00000, 4.00000, 6.00000, 9.00000, 6.00000, 4.00000, 1.00000, 7.00000, 4.00000, 10.00000, 8.00000, 3.00000, 3.00000, 4.00000, 6.00000, 3.00000, 2.00000, 7.00000, 8.00000, 2.00000, 6.00000, 4.00000, 4.00000, 3.00000, 7.00000, 8.00000, 1.00000, 9.00000, 1.00000, 10.00000, 9.00000, 6.00000, 6.00000, 4.00000, 6.00000, 4.00000, 8.00000, 0.00000, 6.00000, 6.00000, 9.00000, 10.00000, 3.00000, 2.00000, 2.00000, 10.00000, 1.00000, 1.00000, 7.00000, 7.00000, 6.00000, 0.00000, 2.00000, 7.00000, 3.00000, 2.00000, 9.00000, 6.00000, 9.00000, 9.00000, 1.00000, 10.00000, 10.00000, 6.00000, 7.00000, 1.00000, 5.00000, 1.00000, 8.00000, 9.00000, 4.00000, 10.00000, 10.00000, 7.00000, 4.00000, 5.00000, 7.00000, 9.00000, 10.00000, 3.00000, 3.00000, 9.00000, 4.00000, 9.00000, 8.00000, 10.00000, 2.00000, 0.00000, 5.00000, 8.00000, 6.00000, 9.00000, 10.00000, 9.00000, 0.00000, 0.00000, 4.00000, 8.00000, 2.00000, 5.00000, 4.00000, 5.00000, 8.00000, 10.00000, 7.00000, 7.00000, 4.00000, 10.00000, 3.00000, 6.00000, 0.00000, 5.00000, 1.00000, 10.00000, 7.00000, 8.00000, 0.00000, 6.00000, 7.00000, 2.00000, 2.00000, 4.00000, 5.00000, 5.00000, 6.00000, 5.00000, 10.00000, 1.00000, 4.00000, 7.00000, 7.00000, 10.00000, 10.00000, 6.00000, 3.00000, 4.00000, 6.00000, 10.00000, 9.00000, 3.00000, 8.00000, 0.00000, 10.00000, 7.00000, 0.00000, 3.00000, 3.00000, 8.00000, 9.00000, 4.00000, 5.00000, 3.00000, 4.00000, 4.00000, 4.00000, 7.00000, 9.00000, 8.00000, 9.00000, 8.00000, 8.00000, 7.00000, 9.00000, 8.00000, 8.00000, 0.00000, 10.00000, 0.00000, 8.00000, 3.00000, 0.00000, 1.00000, 5.00000, 7.00000, 3.00000, 4.00000, 7.00000, 6.00000, 3.00000, 2.00000, 9.00000, 5.00000, 0.00000, 2.00000, 9.00000, 0.00000, 6.00000, 9.00000, 9.00000, 1.00000, 8.00000, 3.00000, 4.00000 }; -float C[961] = { 0 }; - -int main() { - cblas_shgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, - M, N, K, - alpha, - A, K, - B, N, - beta, - C, N); - - printf("Result C = A * B:\n"); - for (int i = 0; i < M * N; i++) { - printf("%.5f ", C[i]); - if ((i + 1) % N == 0) printf("\n"); - } - return 0; -} - -// Reference result computed in Python: -// C_ref = { 819.00000, 781.00000, 707.00000, 691.00000, 730.00000, 696.00000, 721.00000, 907.00000, 739.00000, 631.00000, 583.00000, 866.00000, 766.00000, 476.00000, 572.00000, 674.00000, 564.00000, 742.00000, 791.00000, 699.00000, 668.00000, 723.00000, 630.00000, 687.00000, 882.00000, 804.00000, 708.00000, 611.00000, 704.00000, 555.00000, 667.00000, 900.00000, 1007.00000, 938.00000, 967.00000, 939.00000, 958.00000, 917.00000, 1132.00000, 950.00000, 958.00000, 917.00000, 1085.00000, 1138.00000, 842.00000, 889.00000, 889.00000, 861.00000, 1017.00000, 1072.00000, 1001.00000, 972.00000, 949.00000, 852.00000, 1077.00000, 1059.00000, 1097.00000, 882.00000, 825.00000, 1024.00000, 899.00000, 809.00000, 801.00000, 871.00000, 794.00000, 815.00000, 818.00000, 859.00000, 896.00000, 1080.00000, 959.00000, 1015.00000, 620.00000, 1000.00000, 914.00000, 681.00000, 759.00000, 863.00000, 707.00000, 1005.00000, 839.00000, 791.00000, 849.00000, 895.00000, 727.00000, 754.00000, 990.00000, 887.00000, 807.00000, 805.00000, 870.00000, 834.00000, 786.00000, 702.00000, 898.00000, 815.00000, 855.00000, 819.00000, 738.00000, 792.00000, 915.00000, 749.00000, 779.00000, 718.00000, 844.00000, 861.00000, 643.00000, 648.00000, 782.00000, 635.00000, 830.00000, 834.00000, 808.00000, 839.00000, 828.00000, 697.00000, 887.00000, 903.00000, 850.00000, 790.00000, 839.00000, 763.00000, 736.00000, 686.00000, 827.00000, 878.00000, 882.00000, 949.00000, 813.00000, 874.00000, 889.00000, 1055.00000, 886.00000, 954.00000, 809.00000, 963.00000, 927.00000, 794.00000, 856.00000, 943.00000, 706.00000, 901.00000, 983.00000, 924.00000, 826.00000, 891.00000, 768.00000, 901.00000, 1021.00000, 909.00000, 919.00000, 725.00000, 877.00000, 828.00000, 755.00000, 546.00000, 609.00000, 629.00000, 590.00000, 642.00000, 571.00000, 657.00000, 675.00000, 702.00000, 737.00000, 553.00000, 651.00000, 738.00000, 633.00000, 568.00000, 667.00000, 528.00000, 715.00000, 614.00000, 638.00000, 641.00000, 741.00000, 492.00000, 653.00000, 694.00000, 661.00000, 603.00000, 629.00000, 652.00000, 529.00000, 529.00000, 685.00000, 660.00000, 599.00000, 670.00000, 590.00000, 615.00000, 621.00000, 730.00000, 715.00000, 670.00000, 531.00000, 625.00000, 776.00000, 478.00000, 585.00000, 610.00000, 587.00000, 626.00000, 550.00000, 659.00000, 644.00000, 612.00000, 562.00000, 715.00000, 688.00000, 628.00000, 529.00000, 646.00000, 597.00000, 583.00000, 566.00000, 619.00000, 681.00000, 626.00000, 685.00000, 564.00000, 625.00000, 586.00000, 787.00000, 661.00000, 668.00000, 645.00000, 730.00000, 741.00000, 500.00000, 595.00000, 682.00000, 502.00000, 617.00000, 717.00000, 599.00000, 622.00000, 546.00000, 615.00000, 625.00000, 710.00000, 643.00000, 631.00000, 549.00000, 582.00000, 617.00000, 618.00000, 772.00000, 734.00000, 683.00000, 805.00000, 756.00000, 700.00000, 832.00000, 820.00000, 786.00000, 778.00000, 622.00000, 720.00000, 977.00000, 752.00000, 739.00000, 776.00000, 637.00000, 849.00000, 804.00000, 858.00000, 734.00000, 811.00000, 588.00000, 809.00000, 921.00000, 766.00000, 785.00000, 680.00000, 813.00000, 688.00000, 663.00000, 807.00000, 899.00000, 716.00000, 860.00000, 757.00000, 790.00000, 771.00000, 1070.00000, 926.00000, 1034.00000, 675.00000, 880.00000, 863.00000, 655.00000, 754.00000, 805.00000, 809.00000, 921.00000, 843.00000, 762.00000, 846.00000, 790.00000, 689.00000, 722.00000, 883.00000, 856.00000, 790.00000, 923.00000, 831.00000, 878.00000, 665.00000, 941.00000, 1071.00000, 1021.00000, 951.00000, 1009.00000, 954.00000, 1080.00000, 1131.00000, 954.00000, 940.00000, 792.00000, 1072.00000, 1039.00000, 815.00000, 820.00000, 933.00000, 745.00000, 1043.00000, 1015.00000, 940.00000, 870.00000, 1058.00000, 802.00000, 988.00000, 1147.00000, 1000.00000, 982.00000, 857.00000, 912.00000, 857.00000, 975.00000, 667.00000, 773.00000, 699.00000, 612.00000, 618.00000, 585.00000, 667.00000, 797.00000, 666.00000, 760.00000, 622.00000, 864.00000, 801.00000, 535.00000, 647.00000, 686.00000, 644.00000, 702.00000, 764.00000, 685.00000, 665.00000, 692.00000, 582.00000, 649.00000, 799.00000, 777.00000, 636.00000, 636.00000, 758.00000, 722.00000, 644.00000, 838.00000, 936.00000, 951.00000, 941.00000, 838.00000, 872.00000, 999.00000, 1056.00000, 917.00000, 915.00000, 824.00000, 1071.00000, 935.00000, 836.00000, 848.00000, 952.00000, 698.00000, 1059.00000, 960.00000, 870.00000, 901.00000, 966.00000, 832.00000, 899.00000, 1035.00000, 982.00000, 870.00000, 818.00000, 819.00000, 883.00000, 791.00000, 750.00000, 859.00000, 951.00000, 834.00000, 899.00000, 870.00000, 851.00000, 934.00000, 897.00000, 918.00000, 827.00000, 1025.00000, 1006.00000, 884.00000, 844.00000, 881.00000, 694.00000, 929.00000, 878.00000, 848.00000, 861.00000, 877.00000, 892.00000, 1001.00000, 932.00000, 925.00000, 830.00000, 762.00000, 872.00000, 850.00000, 744.00000, 633.00000, 777.00000, 684.00000, 725.00000, 634.00000, 708.00000, 675.00000, 766.00000, 712.00000, 675.00000, 550.00000, 717.00000, 784.00000, 525.00000, 622.00000, 653.00000, 629.00000, 746.00000, 654.00000, 703.00000, 665.00000, 673.00000, 634.00000, 684.00000, 819.00000, 668.00000, 632.00000, 707.00000, 684.00000, 701.00000, 576.00000, 934.00000, 864.00000, 932.00000, 941.00000, 818.00000, 887.00000, 923.00000, 1128.00000, 984.00000, 1022.00000, 893.00000, 981.00000, 987.00000, 831.00000, 971.00000, 879.00000, 855.00000, 945.00000, 935.00000, 877.00000, 854.00000, 856.00000, 844.00000, 935.00000, 1045.00000, 887.00000, 885.00000, 757.00000, 889.00000, 831.00000, 758.00000, 711.00000, 764.00000, 729.00000, 731.00000, 780.00000, 686.00000, 751.00000, 876.00000, 812.00000, 794.00000, 653.00000, 784.00000, 871.00000, 743.00000, 699.00000, 806.00000, 707.00000, 760.00000, 781.00000, 763.00000, 688.00000, 847.00000, 611.00000, 839.00000, 855.00000, 796.00000, 730.00000, 643.00000, 768.00000, 735.00000, 615.00000, 662.00000, 679.00000, 676.00000, 697.00000, 611.00000, 653.00000, 742.00000, 731.00000, 733.00000, 733.00000, 676.00000, 811.00000, 856.00000, 640.00000, 675.00000, 706.00000, 563.00000, 766.00000, 738.00000, 704.00000, 661.00000, 702.00000, 612.00000, 713.00000, 751.00000, 791.00000, 690.00000, 598.00000, 707.00000, 711.00000, 570.00000, 793.00000, 834.00000, 796.00000, 853.00000, 792.00000, 764.00000, 859.00000, 999.00000, 813.00000, 844.00000, 689.00000, 874.00000, 848.00000, 626.00000, 758.00000, 804.00000, 660.00000, 848.00000, 888.00000, 830.00000, 766.00000, 818.00000, 651.00000, 747.00000, 945.00000, 853.00000, 794.00000, 738.00000, 762.00000, 775.00000, 774.00000, 789.00000, 865.00000, 793.00000, 768.00000, 861.00000, 864.00000, 988.00000, 975.00000, 881.00000, 904.00000, 709.00000, 991.00000, 1026.00000, 775.00000, 745.00000, 947.00000, 741.00000, 1044.00000, 904.00000, 936.00000, 821.00000, 866.00000, 742.00000, 827.00000, 947.00000, 902.00000, 874.00000, 900.00000, 855.00000, 819.00000, 765.00000, 575.00000, 803.00000, 576.00000, 614.00000, 643.00000, 598.00000, 666.00000, 738.00000, 675.00000, 678.00000, 552.00000, 591.00000, 731.00000, 552.00000, 503.00000, 591.00000, 727.00000, 723.00000, 673.00000, 641.00000, 608.00000, 712.00000, 504.00000, 622.00000, 745.00000, 672.00000, 572.00000, 739.00000, 703.00000, 627.00000, 494.00000, 626.00000, 774.00000, 666.00000, 700.00000, 734.00000, 662.00000, 821.00000, 756.00000, 685.00000, 680.00000, 601.00000, 701.00000, 684.00000, 599.00000, 559.00000, 625.00000, 599.00000, 727.00000, 742.00000, 701.00000, 579.00000, 765.00000, 532.00000, 651.00000, 758.00000, 767.00000, 714.00000, 704.00000, 659.00000, 666.00000, 578.00000, 587.00000, 705.00000, 615.00000, 671.00000, 678.00000, 705.00000, 696.00000, 700.00000, 719.00000, 778.00000, 575.00000, 680.00000, 838.00000, 709.00000, 626.00000, 660.00000, 512.00000, 809.00000, 775.00000, 738.00000, 619.00000, 710.00000, 592.00000, 664.00000, 770.00000, 733.00000, 716.00000, 663.00000, 702.00000, 722.00000, 648.00000, 882.00000, 852.00000, 757.00000, 944.00000, 779.00000, 821.00000, 838.00000, 1012.00000, 948.00000, 934.00000, 674.00000, 867.00000, 929.00000, 786.00000, 734.00000, 756.00000, 797.00000, 898.00000, 876.00000, 859.00000, 757.00000, 873.00000, 740.00000, 890.00000, 1016.00000, 827.00000, 799.00000, 836.00000, 833.00000, 752.00000, 695.00000, 754.00000, 827.00000, 893.00000, 837.00000, 829.00000, 670.00000, 874.00000, 908.00000, 822.00000, 787.00000, 746.00000, 797.00000, 889.00000, 763.00000, 751.00000, 807.00000, 693.00000, 913.00000, 870.00000, 764.00000, 837.00000, 886.00000, 704.00000, 827.00000, 899.00000, 846.00000, 749.00000, 749.00000, 775.00000, 701.00000, 690.00000, 798.00000, 936.00000, 822.00000, 887.00000, 840.00000, 777.00000, 710.00000, 964.00000, 783.00000, 768.00000, 721.00000, 887.00000, 889.00000, 699.00000, 770.00000, 741.00000, 764.00000, 796.00000, 967.00000, 755.00000, 724.00000, 775.00000, 686.00000, 799.00000, 942.00000, 929.00000, 835.00000, 737.00000, 916.00000, 835.00000, 702.00000, 868.00000, 889.00000, 840.00000, 826.00000, 870.00000, 762.00000, 810.00000, 971.00000, 893.00000, 874.00000, 713.00000, 889.00000, 966.00000, 710.00000, 721.00000, 790.00000, 810.00000, 895.00000, 780.00000, 785.00000, 852.00000, 778.00000, 843.00000, 873.00000, 914.00000, 917.00000, 765.00000, 845.00000, 942.00000, 779.00000, 576.00000, 710.00000, 803.00000, 705.00000, 820.00000, 695.00000, 699.00000, 758.00000, 832.00000, 789.00000, 811.00000, 618.00000, 813.00000, 879.00000, 677.00000, 642.00000, 749.00000, 645.00000, 847.00000, 811.00000, 745.00000, 736.00000, 754.00000, 645.00000, 711.00000, 887.00000, 817.00000, 757.00000, 788.00000, 859.00000, 761.00000, 630.00000, 727.00000, 785.00000, 664.00000, 716.00000, 671.00000, 722.00000, 638.00000, 870.00000, 743.00000, 802.00000, 490.00000, 800.00000, 921.00000, 599.00000, 588.00000, 688.00000, 633.00000, 858.00000, 743.00000, 704.00000, 748.00000, 640.00000, 667.00000, 719.00000, 814.00000, 762.00000, 682.00000, 712.00000, 821.00000, 709.00000, 601.00000, 733.00000, 999.00000, 764.00000, 782.00000, 815.00000, 892.00000, 817.00000, 970.00000, 807.00000, 871.00000, 646.00000, 925.00000, 948.00000, 740.00000, 720.00000, 912.00000, 750.00000, 855.00000, 889.00000, 845.00000, 713.00000, 805.00000, 739.00000, 850.00000, 987.00000, 867.00000, 852.00000, 742.00000, 951.00000, 816.00000, 708.00000, 666.00000, 756.00000, 606.00000, 726.00000, 647.00000, 637.00000, 771.00000, 722.00000, 707.00000, 688.00000, 624.00000, 680.00000, 904.00000, 584.00000, 615.00000, 648.00000, 643.00000, 713.00000, 679.00000, 735.00000, 639.00000, 698.00000, 595.00000, 789.00000, 802.00000, 648.00000, 673.00000, 702.00000, 655.00000, 674.00000, 640.00000 } diff --git a/install/include/cblas.h b/install/include/cblas.h deleted file mode 100644 index 448befd34d..0000000000 --- a/install/include/cblas.h +++ /dev/null @@ -1,457 +0,0 @@ -#ifndef CBLAS_H -#define CBLAS_H - -#include -#include "openblas_config.h" - -#ifdef __cplusplus -extern "C" { - /* Assume C declarations for C++ */ -#endif /* __cplusplus */ - -/*Set the number of threads on runtime.*/ -void openblas_set_num_threads(int num_threads); -void goto_set_num_threads(int num_threads); -int openblas_set_num_threads_local(int num_threads); - -/*Get the number of threads on runtime.*/ -int openblas_get_num_threads(void); - -/*Get the number of physical processors (cores).*/ -int openblas_get_num_procs(void); - -/*Get the build configure on runtime.*/ -char* openblas_get_config(void); - -/*Get the CPU corename on runtime.*/ -char* openblas_get_corename(void); - -/*Set the threading backend to a custom callback.*/ -typedef void (*openblas_dojob_callback)(int thread_num, void *jobdata, int dojob_data); -typedef void (*openblas_threads_callback)(int sync, openblas_dojob_callback dojob, int numjobs, size_t jobdata_elsize, void *jobdata, int dojob_data); -void openblas_set_threads_callback_function(openblas_threads_callback callback); - -#ifdef OPENBLAS_OS_LINUX -/* Sets thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */ -int openblas_setaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set); -/* Queries thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */ -int openblas_getaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set); -#endif - -/* Get the parallelization type which is used by OpenBLAS */ -int openblas_get_parallel(void); -/* OpenBLAS is compiled for sequential use */ -#define OPENBLAS_SEQUENTIAL 0 -/* OpenBLAS is compiled using normal threading model */ -#define OPENBLAS_THREAD 1 -/* OpenBLAS is compiled using OpenMP threading model */ -#define OPENBLAS_OPENMP 2 - - -/* - * Since all of GotoBlas was written without const, - * we disable it at build time. - */ -#ifndef OPENBLAS_CONST -# define OPENBLAS_CONST const -#endif - - -#define CBLAS_INDEX size_t - -typedef enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102} CBLAS_ORDER; -typedef enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114} CBLAS_TRANSPOSE; -typedef enum CBLAS_UPLO {CblasUpper=121, CblasLower=122} CBLAS_UPLO; -typedef enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132} CBLAS_DIAG; -typedef enum CBLAS_SIDE {CblasLeft=141, CblasRight=142} CBLAS_SIDE; -typedef CBLAS_ORDER CBLAS_LAYOUT; - -float cblas_sdsdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); -double cblas_dsdot (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); -float cblas_sdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); -double cblas_ddot(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy); - -openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); -openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); -openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); -openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); - -void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); -void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); -void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); -void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); - -float cblas_sasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -double cblas_dasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -float cblas_ssum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -double cblas_dsum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -float cblas_scsum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -double cblas_dzsum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -float cblas_snrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX); -double cblas_dnrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX); -float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); -double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); - -CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -CBLAS_INDEX cblas_isamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_idamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_icamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_izamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -float cblas_samax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -double cblas_damax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -float cblas_scamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -double cblas_dzamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -float cblas_samin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -double cblas_damin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -float cblas_scamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -double cblas_dzamin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -CBLAS_INDEX cblas_ismax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_idmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_icmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_izmax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -CBLAS_INDEX cblas_ismin(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_idmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_icmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); -CBLAS_INDEX cblas_izmin(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); - -void cblas_saxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); -void cblas_daxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); -void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); -void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); - -void cblas_caxpyc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); -void cblas_zaxpyc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); - -void cblas_scopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); -void cblas_dcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); -void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); -void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); - -void cblas_sswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); -void cblas_dswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); -void cblas_cswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); -void cblas_zswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); - -void cblas_srot(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s); -void cblas_drot(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s); -void cblas_csrot(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s); -void cblas_zdrot(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s); - -void cblas_srotg(float *a, float *b, float *c, float *s); -void cblas_drotg(double *a, double *b, double *c, double *s); -void cblas_crotg(void *a, void *b, float *c, void *s); -void cblas_zrotg(void *a, void *b, double *c, void *s); - - -void cblas_srotm(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float *P); -void cblas_drotm(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double *P); - -void cblas_srotmg(float *d1, float *d2, float *b1, OPENBLAS_CONST float b2, float *P); -void cblas_drotmg(double *d1, double *d2, double *b1, OPENBLAS_CONST double b2, double *P); - -void cblas_sscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX); -void cblas_dscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX); -void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); -void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); -void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, void *X, OPENBLAS_CONST blasint incX); -void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, void *X, OPENBLAS_CONST blasint incX); - -void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, - OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); -void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, - OPENBLAS_CONST double alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); -void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); -void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); - -void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); -void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); -void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); -void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); -void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); -void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); - -void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); - -void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); - -void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda); -void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda); -void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); -void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); - -void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo,OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, - OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); -void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, - OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); -void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, - OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); -void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, - OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); - -void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); -void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); -void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); -void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); - -void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); -void cblas_dsbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); - - -void cblas_stbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); - -void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); - -void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); - -void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); -void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); -void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); -void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, - OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); - -void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); -void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); -void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); -void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, - OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); - - -void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *Ap, - OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); -void cblas_dspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *Ap, - OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); - -void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *Ap); -void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *Ap); - -void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A); -void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X,OPENBLAS_CONST blasint incX, void *A); - -void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A); -void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A); -void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); -void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); - -void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); -void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); - -void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); -void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); - -void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_sgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_dgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -void cblas_cgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, - OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); -void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); -void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); -void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); - -void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); -void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); -void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); -void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, - OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); - -void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST double alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); -void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); - -void cblas_xerbla(blasint p, OPENBLAS_CONST char *rout, OPENBLAS_CONST char *form, ...); - -/*** BLAS extensions ***/ - -void cblas_saxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); - -void cblas_daxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); - -void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); - -void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); - -void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a, - OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb); -void cblas_domatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, OPENBLAS_CONST double *a, - OPENBLAS_CONST blasint clda, double *b, OPENBLAS_CONST blasint cldb); -void cblas_comatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float* calpha, OPENBLAS_CONST float* a, - OPENBLAS_CONST blasint clda, float*b, OPENBLAS_CONST blasint cldb); -void cblas_zomatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, OPENBLAS_CONST double* a, - OPENBLAS_CONST blasint clda, double *b, OPENBLAS_CONST blasint cldb); - -void cblas_simatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, float *a, - OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); -void cblas_dimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, double *a, - OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); -void cblas_cimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float* calpha, float* a, - OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); -void cblas_zimatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double* calpha, double* a, - OPENBLAS_CONST blasint clda, OPENBLAS_CONST blasint cldb); - -void cblas_sgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST float cbeta, - float *c, OPENBLAS_CONST blasint cldc); -void cblas_dgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double calpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST double cbeta, - double *c, OPENBLAS_CONST blasint cldc); -void cblas_cgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float *calpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST float *cbeta, - float *c, OPENBLAS_CONST blasint cldc); -void cblas_zgeadd(OPENBLAS_CONST enum CBLAS_ORDER CORDER,OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST double *calpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint clda, OPENBLAS_CONST double *cbeta, - double *c, OPENBLAS_CONST blasint cldc); - -void cblas_sgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, - OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST float ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST float ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); - -void cblas_dgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, - OPENBLAS_CONST double * alpha_array, OPENBLAS_CONST double ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST double ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST double * beta_array, double ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); - -void cblas_cgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, - OPENBLAS_CONST void * alpha_array, OPENBLAS_CONST void ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST void ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST void * beta_array, void ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); - -void cblas_zgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, - OPENBLAS_CONST void * alpha_array, OPENBLAS_CONST void ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST void ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST void * beta_array, void ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); - -/*** BFLOAT16 and INT8 extensions ***/ -/* convert float array to BFLOAT16 array by rounding */ -void cblas_sbstobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *in, OPENBLAS_CONST blasint incin, bfloat16 *out, OPENBLAS_CONST blasint incout); -/* convert double array to BFLOAT16 array by rounding */ -void cblas_sbdtobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *in, OPENBLAS_CONST blasint incin, bfloat16 *out, OPENBLAS_CONST blasint incout); -/* convert BFLOAT16 array to float array */ -void cblas_sbf16tos(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, float *out, OPENBLAS_CONST blasint incout); -/* convert BFLOAT16 array to double array */ -void cblas_dbf16tod(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *in, OPENBLAS_CONST blasint incin, double *out, OPENBLAS_CONST blasint incout); -/* dot production of BFLOAT16 input arrays, and output as float */ -float cblas_sbdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST bfloat16 *y, OPENBLAS_CONST blasint incy); -void cblas_sbgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); - -void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array, - OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST bfloat16 ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST bfloat16 ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size); - -/*** FLOAT16 extensions ***/ -void cblas_shgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST hfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST hfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif diff --git a/install/include/f77blas.h b/install/include/f77blas.h deleted file mode 100644 index a683e87a02..0000000000 --- a/install/include/f77blas.h +++ /dev/null @@ -1,811 +0,0 @@ -#ifndef OPENBLAS_F77BLAS_H -#define OPENBLAS_F77BLAS_H -#include "openblas_config.h" -/*********************************************************************/ -/* Copyright 2009, 2010 The University of Texas at Austin. */ -/* All rights reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the following */ -/* conditions are met: */ -/* */ -/* 1. Redistributions of source code must retain the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer. */ -/* */ -/* 2. Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ -/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ -/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ -/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ -/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ -/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ -/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ -/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ -/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ -/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ -/* POSSIBILITY OF SUCH DAMAGE. */ -/* */ -/* The views and conclusions contained in the software and */ -/* documentation are those of the authors and should not be */ -/* interpreted as representing official policies, either expressed */ -/* or implied, of The University of Texas at Austin. */ -/*********************************************************************/ - -#ifndef ASSEMBLER - -#ifdef __cplusplus -extern "C" { - /* Assume C declarations for C++ */ -#endif /* __cplusplus */ - -int BLASFUNC(xerbla)(char *, blasint *info, blasint); - -void openblas_set_num_threads_(int *); - -/*Set the threading backend to a custom callback.*/ -typedef void (*openblas_dojob_callback)(int thread_num, void *jobdata, int dojob_data); -typedef void (*openblas_threads_callback)(int sync, openblas_dojob_callback dojob, int numjobs, size_t jobdata_elsize, void *jobdata, int dojob_data); -extern openblas_threads_callback openblas_threads_callback_; - -FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *); -FLOATRET BLASFUNC(sdsdot)(blasint *, float *, float *, blasint *, float *, blasint *); - -double BLASFUNC(dsdot) (blasint *, float *, blasint *, float *, blasint *); -double BLASFUNC(ddot) (blasint *, double *, blasint *, double *, blasint *); -xdouble BLASFUNC(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *); - -float BLASFUNC(sbdot) (blasint *, bfloat16 *, blasint *, bfloat16 *, blasint *); -void BLASFUNC(sbstobf16) (blasint *, float *, blasint *, bfloat16 *, blasint *); -void BLASFUNC(sbdtobf16) (blasint *, double *, blasint *, bfloat16 *, blasint *); -void BLASFUNC(sbf16tos) (blasint *, bfloat16 *, blasint *, float *, blasint *); -void BLASFUNC(dbf16tod) (blasint *, bfloat16 *, blasint *, double *, blasint *); - -#ifdef RETURN_BY_STRUCT -typedef struct { - float r, i; -} myccomplex_t; - -typedef struct { - double r, i; -} myzcomplex_t; - -typedef struct { - xdouble r, i; -} myxcomplex_t; - -myccomplex_t BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); -myccomplex_t BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); -myzcomplex_t BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); -myzcomplex_t BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); -myxcomplex_t BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); -myxcomplex_t BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); - -#elif defined RETURN_BY_STACK -void BLASFUNC(cdotu) (openblas_complex_float *, blasint *, float * , blasint *, float *, blasint *); -void BLASFUNC(cdotc) (openblas_complex_float *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(zdotu) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(zdotc) (openblas_complex_double *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xdotu) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(xdotc) (openblas_complex_xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); -#else -openblas_complex_float BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *); -openblas_complex_float BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *); -openblas_complex_double BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *); -openblas_complex_double BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *); -openblas_complex_xdouble BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *); -openblas_complex_xdouble BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *); -#endif - -void BLASFUNC(saxpy) (blasint *, float *, float *, blasint *, float *, blasint *); -void BLASFUNC(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *); -void BLASFUNC(qaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *); -void BLASFUNC(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *); -void BLASFUNC(xaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(caxpyc)(blasint *, float *, float *, blasint *, float *, blasint *); -void BLASFUNC(zaxpyc)(blasint *, double *, double *, blasint *, double *, blasint *); -void BLASFUNC(xaxpyc)(blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(scopy) (blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(dcopy) (blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(qcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(ccopy) (blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(zcopy) (blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(sswap) (blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(dswap) (blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(cswap) (blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(zswap) (blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(sasum) (blasint *, float *, blasint *); -FLOATRET BLASFUNC(scasum)(blasint *, float *, blasint *); -double BLASFUNC(dasum) (blasint *, double *, blasint *); -xdouble BLASFUNC(qasum) (blasint *, xdouble *, blasint *); -double BLASFUNC(dzasum)(blasint *, double *, blasint *); -xdouble BLASFUNC(qxasum)(blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(ssum) (blasint *, float *, blasint *); -FLOATRET BLASFUNC(scsum)(blasint *, float *, blasint *); -double BLASFUNC(dsum) (blasint *, double *, blasint *); -xdouble BLASFUNC(qsum) (blasint *, xdouble *, blasint *); -double BLASFUNC(dzsum)(blasint *, double *, blasint *); -xdouble BLASFUNC(qxsum)(blasint *, xdouble *, blasint *); - -blasint BLASFUNC(isamax)(blasint *, float *, blasint *); -blasint BLASFUNC(idamax)(blasint *, double *, blasint *); -blasint BLASFUNC(iqamax)(blasint *, xdouble *, blasint *); -blasint BLASFUNC(icamax)(blasint *, float *, blasint *); -blasint BLASFUNC(izamax)(blasint *, double *, blasint *); -blasint BLASFUNC(ixamax)(blasint *, xdouble *, blasint *); - -blasint BLASFUNC(ismax) (blasint *, float *, blasint *); -blasint BLASFUNC(idmax) (blasint *, double *, blasint *); -blasint BLASFUNC(iqmax) (blasint *, xdouble *, blasint *); -blasint BLASFUNC(icmax) (blasint *, float *, blasint *); -blasint BLASFUNC(izmax) (blasint *, double *, blasint *); -blasint BLASFUNC(ixmax) (blasint *, xdouble *, blasint *); - -blasint BLASFUNC(isamin)(blasint *, float *, blasint *); -blasint BLASFUNC(idamin)(blasint *, double *, blasint *); -blasint BLASFUNC(iqamin)(blasint *, xdouble *, blasint *); -blasint BLASFUNC(icamin)(blasint *, float *, blasint *); -blasint BLASFUNC(izamin)(blasint *, double *, blasint *); -blasint BLASFUNC(ixamin)(blasint *, xdouble *, blasint *); - -blasint BLASFUNC(ismin)(blasint *, float *, blasint *); -blasint BLASFUNC(idmin)(blasint *, double *, blasint *); -blasint BLASFUNC(iqmin)(blasint *, xdouble *, blasint *); -blasint BLASFUNC(icmin)(blasint *, float *, blasint *); -blasint BLASFUNC(izmin)(blasint *, double *, blasint *); -blasint BLASFUNC(ixmin)(blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(samax) (blasint *, float *, blasint *); -double BLASFUNC(damax) (blasint *, double *, blasint *); -xdouble BLASFUNC(qamax) (blasint *, xdouble *, blasint *); -FLOATRET BLASFUNC(scamax)(blasint *, float *, blasint *); -double BLASFUNC(dzamax)(blasint *, double *, blasint *); -xdouble BLASFUNC(qxamax)(blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(samin) (blasint *, float *, blasint *); -double BLASFUNC(damin) (blasint *, double *, blasint *); -xdouble BLASFUNC(qamin) (blasint *, xdouble *, blasint *); -FLOATRET BLASFUNC(scamin)(blasint *, float *, blasint *); -double BLASFUNC(dzamin)(blasint *, double *, blasint *); -xdouble BLASFUNC(qxamin)(blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(smax) (blasint *, float *, blasint *); -double BLASFUNC(dmax) (blasint *, double *, blasint *); -xdouble BLASFUNC(qmax) (blasint *, xdouble *, blasint *); -FLOATRET BLASFUNC(scmax) (blasint *, float *, blasint *); -double BLASFUNC(dzmax) (blasint *, double *, blasint *); -xdouble BLASFUNC(qxmax) (blasint *, xdouble *, blasint *); - -FLOATRET BLASFUNC(smin) (blasint *, float *, blasint *); -double BLASFUNC(dmin) (blasint *, double *, blasint *); -xdouble BLASFUNC(qmin) (blasint *, xdouble *, blasint *); -FLOATRET BLASFUNC(scmin) (blasint *, float *, blasint *); -double BLASFUNC(dzmin) (blasint *, double *, blasint *); -xdouble BLASFUNC(qxmin) (blasint *, xdouble *, blasint *); - -void BLASFUNC(sscal) (blasint *, float *, float *, blasint *); -void BLASFUNC(dscal) (blasint *, double *, double *, blasint *); -void BLASFUNC(qscal) (blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(cscal) (blasint *, float *, float *, blasint *); -void BLASFUNC(zscal) (blasint *, double *, double *, blasint *); -void BLASFUNC(xscal) (blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(csscal)(blasint *, float *, float *, blasint *); -void BLASFUNC(zdscal)(blasint *, double *, double *, blasint *); -void BLASFUNC(xqscal)(blasint *, xdouble *, xdouble *, blasint *); - -FLOATRET BLASFUNC(snrm2) (blasint *, float *, blasint *); -FLOATRET BLASFUNC(scnrm2)(blasint *, float *, blasint *); - -double BLASFUNC(dnrm2) (blasint *, double *, blasint *); -xdouble BLASFUNC(qnrm2) (blasint *, xdouble *, blasint *); -double BLASFUNC(dznrm2)(blasint *, double *, blasint *); -xdouble BLASFUNC(qxnrm2)(blasint *, xdouble *, blasint *); - -void BLASFUNC(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); -void BLASFUNC(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); -void BLASFUNC(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); -void BLASFUNC(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); -void BLASFUNC(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); -void BLASFUNC(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); - -void BLASFUNC(srotg) (float *, float *, float *, float *); -void BLASFUNC(drotg) (double *, double *, double *, double *); -void BLASFUNC(qrotg) (xdouble *, xdouble *, xdouble *, xdouble *); -void BLASFUNC(crotg) (float *, float *, float *, float *); -void BLASFUNC(zrotg) (double *, double *, double *, double *); -void BLASFUNC(xrotg) (xdouble *, xdouble *, xdouble *, xdouble *); - -void BLASFUNC(srotmg)(float *, float *, float *, float *, float *); -void BLASFUNC(drotmg)(double *, double *, double *, double *, double *); - -void BLASFUNC(srotm) (blasint *, float *, blasint *, float *, blasint *, float *); -void BLASFUNC(drotm) (blasint *, double *, blasint *, double *, blasint *, double *); -void BLASFUNC(qrotm) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *); - -/* Level 2 routines */ - -void BLASFUNC(sger)(blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, blasint *); -void BLASFUNC(dger)(blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, blasint *); -void BLASFUNC(qger)(blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(cgeru)(blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, blasint *); -void BLASFUNC(cgerc)(blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, blasint *); -void BLASFUNC(zgeru)(blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, blasint *); -void BLASFUNC(zgerc)(blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, blasint *); -void BLASFUNC(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(sbgemv)(char *, blasint *, blasint *, float *, bfloat16 *, blasint *, - bfloat16 *, blasint *, float *, float *, blasint *); -void BLASFUNC(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dgemv)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(cgemv)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zgemv)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(strsv) (char *, char *, char *, blasint *, float *, blasint *, - float *, blasint *); -void BLASFUNC(dtrsv) (char *, char *, char *, blasint *, double *, blasint *, - double *, blasint *); -void BLASFUNC(qtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, - xdouble *, blasint *); -void BLASFUNC(ctrsv) (char *, char *, char *, blasint *, float *, blasint *, - float *, blasint *); -void BLASFUNC(ztrsv) (char *, char *, char *, blasint *, double *, blasint *, - double *, blasint *); -void BLASFUNC(xtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *, - xdouble *, blasint *); - -void BLASFUNC(strmv) (char *, char *, char *, blasint *, float *, blasint *, - float *, blasint *); -void BLASFUNC(dtrmv) (char *, char *, char *, blasint *, double *, blasint *, - double *, blasint *); -void BLASFUNC(qtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, - xdouble *, blasint *); -void BLASFUNC(ctrmv) (char *, char *, char *, blasint *, float *, blasint *, - float *, blasint *); -void BLASFUNC(ztrmv) (char *, char *, char *, blasint *, double *, blasint *, - double *, blasint *); -void BLASFUNC(xtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *, - xdouble *, blasint *); - -void BLASFUNC(stpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); -void BLASFUNC(dtpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); -void BLASFUNC(qtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(ctpsv) (char *, char *, char *, blasint *, float *, float *, blasint *); -void BLASFUNC(ztpsv) (char *, char *, char *, blasint *, double *, double *, blasint *); -void BLASFUNC(xtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(stpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); -void BLASFUNC(dtpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); -void BLASFUNC(qtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(ctpmv) (char *, char *, char *, blasint *, float *, float *, blasint *); -void BLASFUNC(ztpmv) (char *, char *, char *, blasint *, double *, double *, blasint *); -void BLASFUNC(xtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(stbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(dtbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(qtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(ctbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(ztbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(stbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(dtbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(qtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(ctbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(ztbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(ssymv) (char *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dsymv) (char *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(csymv) (char *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zsymv) (char *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xsymv) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(sspmv) (char *, blasint *, float *, float *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dspmv) (char *, blasint *, double *, double *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qspmv) (char *, blasint *, xdouble *, xdouble *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(cspmv) (char *, blasint *, float *, float *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zspmv) (char *, blasint *, double *, double *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xspmv) (char *, blasint *, xdouble *, xdouble *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(ssyr) (char *, blasint *, float *, float *, blasint *, - float *, blasint *); -void BLASFUNC(dsyr) (char *, blasint *, double *, double *, blasint *, - double *, blasint *); -void BLASFUNC(qsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *); -void BLASFUNC(csyr) (char *, blasint *, float *, float *, blasint *, - float *, blasint *); -void BLASFUNC(zsyr) (char *, blasint *, double *, double *, blasint *, - double *, blasint *); -void BLASFUNC(xsyr) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *); - -void BLASFUNC(ssyr2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(dsyr2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(qsyr2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(csyr2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(zsyr2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xsyr2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(sspr) (char *, blasint *, float *, float *, blasint *, - float *); -void BLASFUNC(dspr) (char *, blasint *, double *, double *, blasint *, - double *); -void BLASFUNC(qspr) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *); -void BLASFUNC(cspr) (char *, blasint *, float *, float *, blasint *, - float *); -void BLASFUNC(zspr) (char *, blasint *, double *, double *, blasint *, - double *); -void BLASFUNC(xspr) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *); - -void BLASFUNC(sspr2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *); -void BLASFUNC(dspr2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *); -void BLASFUNC(qspr2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *); -void BLASFUNC(cspr2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *); -void BLASFUNC(zspr2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *); -void BLASFUNC(xspr2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *); - -void BLASFUNC(cher) (char *, blasint *, float *, float *, blasint *, - float *, blasint *); -void BLASFUNC(zher) (char *, blasint *, double *, double *, blasint *, - double *, blasint *); -void BLASFUNC(xher) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *); - -void BLASFUNC(chpr) (char *, blasint *, float *, float *, blasint *, float *); -void BLASFUNC(zhpr) (char *, blasint *, double *, double *, blasint *, double *); -void BLASFUNC(xhpr) (char *, blasint *, xdouble *, xdouble *, blasint *, xdouble *); - -void BLASFUNC(cher2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, blasint *); -void BLASFUNC(zher2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, blasint *); -void BLASFUNC(xher2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(chpr2) (char *, blasint *, float *, - float *, blasint *, float *, blasint *, float *); -void BLASFUNC(zhpr2) (char *, blasint *, double *, - double *, blasint *, double *, blasint *, double *); -void BLASFUNC(xhpr2) (char *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *); - -void BLASFUNC(chemv) (char *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zhemv) (char *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xhemv) (char *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(chpmv) (char *, blasint *, float *, float *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zhpmv) (char *, blasint *, double *, double *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xhpmv) (char *, blasint *, xdouble *, xdouble *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -int BLASFUNC(snorm)(char *, blasint *, blasint *, float *, blasint *); -int BLASFUNC(dnorm)(char *, blasint *, blasint *, double *, blasint *); -int BLASFUNC(cnorm)(char *, blasint *, blasint *, float *, blasint *); -int BLASFUNC(znorm)(char *, blasint *, blasint *, double *, blasint *); - -void BLASFUNC(sgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(cgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(ssbmv)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(csbmv)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zsbmv)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(chbmv)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zhbmv)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -/* Level 3 routines */ - -void BLASFUNC(shgemm)(char *, char *, blasint *, blasint *, blasint *, float *, - hfloat16 *, blasint *, hfloat16 *, blasint *, float *, float *, blasint *); -void BLASFUNC(sbgemm)(char *, char *, blasint *, blasint *, blasint *, float *, - bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); -void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dgemm)(char *, char *, blasint *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(cgemm)(char *, char *, blasint *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zgemm)(char *, char *, blasint *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(sgemmt)(char*, char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dgemmt)(char*, char *, char *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, double *, blasint *); -void BLASFUNC(cgemmt)(char*, char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zgemmt)(char*, char *, char *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, double *, blasint *); - -int BLASFUNC(sge2mm)(char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *, - float *, float *, blasint *); -int BLASFUNC(dge2mm)(char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *, - double *, double *, blasint *); -int BLASFUNC(cge2mm)(char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *, - float *, float *, blasint *); -int BLASFUNC(zge2mm)(char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *, - double *, double *, blasint *); - -void BLASFUNC(strsm)(char *, char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *); -void BLASFUNC(dtrsm)(char *, char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *); -void BLASFUNC(qtrsm)(char *, char *, char *, char *, blasint *, blasint *, - xdouble *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(ctrsm)(char *, char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *); -void BLASFUNC(ztrsm)(char *, char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *); -void BLASFUNC(xtrsm)(char *, char *, char *, char *, blasint *, blasint *, - xdouble *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(strmm)(char *, char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *); -void BLASFUNC(dtrmm)(char *, char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *); -void BLASFUNC(qtrmm)(char *, char *, char *, char *, blasint *, blasint *, - xdouble *, xdouble *, blasint *, xdouble *, blasint *); -void BLASFUNC(ctrmm)(char *, char *, char *, char *, blasint *, blasint *, - float *, float *, blasint *, float *, blasint *); -void BLASFUNC(ztrmm)(char *, char *, char *, char *, blasint *, blasint *, - double *, double *, blasint *, double *, blasint *); -void BLASFUNC(xtrmm)(char *, char *, char *, char *, blasint *, blasint *, - xdouble *, xdouble *, blasint *, xdouble *, blasint *); - -void BLASFUNC(ssymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(qsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(csymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(csymm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zsymm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xsymm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(ssyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, float *, blasint *); -void BLASFUNC(dsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, double *, blasint *); -void BLASFUNC(qsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, xdouble *, blasint *); -void BLASFUNC(csyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, float *, blasint *); -void BLASFUNC(zsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, double *, blasint *); -void BLASFUNC(xsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, xdouble *, blasint *); - -void BLASFUNC(ssyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(dsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double*, blasint *, double *, double *, blasint *); -void BLASFUNC(qsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble*, blasint *, xdouble *, xdouble *, blasint *); -void BLASFUNC(csyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double*, blasint *, double *, double *, blasint *); -void BLASFUNC(xsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble*, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(chemm)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zhemm)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xhemm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(chemm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zhemm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *, double *, double *, blasint *); -void BLASFUNC(xhemm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -void BLASFUNC(cherk)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, float *, blasint *); -void BLASFUNC(zherk)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double *, double *, blasint *); -void BLASFUNC(xherk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble *, xdouble *, blasint *); - -void BLASFUNC(cher2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -void BLASFUNC(zher2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *, - double*, blasint *, double *, double *, blasint *); -void BLASFUNC(xher2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble*, blasint *, xdouble *, xdouble *, blasint *); - -int BLASFUNC(cher2m)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *, float *, float *, blasint *); -int BLASFUNC(zher2m)(char *, char *, char *, blasint *, blasint *, double *, double *, blasint *, - double*, blasint *, double *, double *, blasint *); -int BLASFUNC(xher2m)(char *, char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *, - xdouble*, blasint *, xdouble *, xdouble *, blasint *); - -int BLASFUNC(sgemt)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *); -int BLASFUNC(dgemt)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *); -int BLASFUNC(cgemt)(char *, blasint *, blasint *, float *, float *, blasint *, - float *, blasint *); -int BLASFUNC(zgemt)(char *, blasint *, blasint *, double *, double *, blasint *, - double *, blasint *); - -int BLASFUNC(sgema)(char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, float *, blasint *, float *, blasint *); -int BLASFUNC(dgema)(char *, char *, blasint *, blasint *, double *, - double *, blasint *, double*, double *, blasint *, double*, blasint *); -int BLASFUNC(cgema)(char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, float *, blasint *, float *, blasint *); -int BLASFUNC(zgema)(char *, char *, blasint *, blasint *, double *, - double *, blasint *, double*, double *, blasint *, double*, blasint *); - -int BLASFUNC(sgems)(char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, float *, blasint *, float *, blasint *); -int BLASFUNC(dgems)(char *, char *, blasint *, blasint *, double *, - double *, blasint *, double*, double *, blasint *, double*, blasint *); -int BLASFUNC(cgems)(char *, char *, blasint *, blasint *, float *, - float *, blasint *, float *, float *, blasint *, float *, blasint *); -int BLASFUNC(zgems)(char *, char *, blasint *, blasint *, double *, - double *, blasint *, double*, double *, blasint *, double*, blasint *); - -int BLASFUNC(sgemc)(char *, char *, blasint *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); -int BLASFUNC(dgemc)(char *, char *, blasint *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); -int BLASFUNC(qgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); -int BLASFUNC(cgemc)(char *, char *, blasint *, blasint *, blasint *, float *, - float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *); -int BLASFUNC(zgemc)(char *, char *, blasint *, blasint *, blasint *, double *, - double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *); -int BLASFUNC(xgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *, - xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); - -/* Lapack routines */ - -int BLASFUNC(sgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); -int BLASFUNC(dgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); -int BLASFUNC(qgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); -int BLASFUNC(cgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); -int BLASFUNC(zgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); -int BLASFUNC(xgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); - -int BLASFUNC(sgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); -int BLASFUNC(dgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); -int BLASFUNC(qgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); -int BLASFUNC(cgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *); -int BLASFUNC(zgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *); -int BLASFUNC(xgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *); - -int BLASFUNC(slaswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); -int BLASFUNC(dlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); -int BLASFUNC(qlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); -int BLASFUNC(claswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *); -int BLASFUNC(zlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *); -int BLASFUNC(xlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *); - -int BLASFUNC(sgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(cgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(sgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); -int BLASFUNC(qgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); -int BLASFUNC(cgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *); -int BLASFUNC(xgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *); - -int BLASFUNC(spotf2)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dpotf2)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(cpotf2)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zpotf2)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xpotf2)(char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(spotrf)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dpotrf)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(cpotrf)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zpotrf)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xpotrf)(char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(spotri)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dpotri)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qpotri)(char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(cpotri)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zpotri)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xpotri)(char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(spotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(cpotrs)(char *, blasint *, blasint *, float *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zpotrs)(char *, blasint *, blasint *, double *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xpotrs)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(slauu2)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dlauu2)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(clauu2)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zlauu2)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xlauu2)(char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(slauum)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dlauum)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qlauum)(char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(clauum)(char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(zlauum)(char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xlauum)(char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(strti2)(char *, char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dtrti2)(char *, char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(ctrti2)(char *, char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(ztrti2)(char *, char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *); - -int BLASFUNC(strtri)(char *, char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(dtrtri)(char *, char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(qtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); -int BLASFUNC(ctrtri)(char *, char *, blasint *, float *, blasint *, blasint *); -int BLASFUNC(ztrtri)(char *, char *, blasint *, double *, blasint *, blasint *); -int BLASFUNC(xtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *); - - -FLOATRET BLASFUNC(slamch)(char *); -double BLASFUNC(dlamch)(char *); -xdouble BLASFUNC(qlamch)(char *); - -FLOATRET BLASFUNC(slamc3)(float *, float *); -double BLASFUNC(dlamc3)(double *, double *); -xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *); - -/* BLAS extensions */ - -void BLASFUNC(saxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *); -void BLASFUNC(daxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *); -void BLASFUNC(caxpby) (blasint *, void *, float *, blasint *, void *, float *, blasint *); -void BLASFUNC(zaxpby) (blasint *, void *, double *, blasint *, void *, double *, blasint *); - -void BLASFUNC(somatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); -void BLASFUNC(domatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); -void BLASFUNC(comatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *); -void BLASFUNC(zomatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *); - -void BLASFUNC(simatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); -void BLASFUNC(dimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); -void BLASFUNC(cimatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, blasint *); -void BLASFUNC(zimatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, blasint *); - -void BLASFUNC(sgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); -void BLASFUNC(dgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); -void BLASFUNC(cgeadd) (blasint *, blasint *, float *, float *, blasint *, float *, float *, blasint*); -void BLASFUNC(zgeadd) (blasint *, blasint *, double *, double *, blasint *, double *, double *, blasint*); - - -#ifdef __cplusplus -} - -#endif /* __cplusplus */ - -#endif -#endif diff --git a/install/include/lapack.h b/install/include/lapack.h deleted file mode 100644 index 0ed9ad01a9..0000000000 --- a/install/include/lapack.h +++ /dev/null @@ -1,23341 +0,0 @@ -#ifndef LAPACK_H -#define LAPACK_H - -/* -* Turn on HAVE_LAPACK_CONFIG_H to redefine C-LAPACK datatypes -*/ -#ifdef HAVE_LAPACK_CONFIG_H -#include "lapacke_config.h" -#endif - -#include "lapacke_mangling.h" - -#include -#include -#include - -/* It seems all current Fortran compilers put strlen at end. -* Some historical compilers put strlen after the str argument -* or make the str argument into a struct. */ -#ifndef __EMSCRIPTEN__ -#define LAPACK_FORTRAN_STRLEN_END -#endif - -#ifndef FORTRAN_STRLEN - #define FORTRAN_STRLEN size_t -#endif - -/* Complex types are structures equivalent to the -* Fortran complex types COMPLEX(4) and COMPLEX(8). -* -* One can also redefine the types with his own types -* for example by including in the code definitions like -* -* #define lapack_complex_float std::complex -* #define lapack_complex_double std::complex -* -* or define these types in the command line: -* -* -Dlapack_complex_float="std::complex" -* -Dlapack_complex_double="std::complex" -*/ - -#ifndef LAPACK_COMPLEX_CUSTOM - -/* Complex type (single precision) */ -#ifndef lapack_complex_float -#ifndef __cplusplus -#include -#else -#include -#endif -#define lapack_complex_float float _Complex -#endif - -#ifndef lapack_complex_float_real -#define lapack_complex_float_real(z) (creal(z)) -#endif - -#ifndef lapack_complex_float_imag -#define lapack_complex_float_imag(z) (cimag(z)) -#endif - -/* Complex type (double precision) */ -#ifndef lapack_complex_double -#ifndef __cplusplus -#include -#else -#include -#endif -#define lapack_complex_double double _Complex -#endif - -#ifndef lapack_complex_double_real -#define lapack_complex_double_real(z) (creal(z)) -#endif - -#ifndef lapack_complex_double_imag -#define lapack_complex_double_imag(z) (cimag(z)) -#endif - -#endif /* LAPACK_COMPLEX_CUSTOM */ - - -#ifdef __cplusplus -extern "C" { -#endif - -/*----------------------------------------------------------------------------*/ -#ifndef lapack_int -#if defined(LAPACK_ILP64) -#define lapack_int int64_t -#else -#define lapack_int int32_t -#endif -#endif - -/* - * Integer format string - */ -#ifndef LAPACK_IFMT -#if defined(LAPACK_ILP64) -#define LAPACK_IFMT PRId64 -#else -#define LAPACK_IFMT PRId32 -#endif -#endif - -#ifndef lapack_logical -#define lapack_logical lapack_int -#endif - -/* f2c, hence clapack and MacOS Accelerate, returns double instead of float - * for sdot, slange, clange, etc. */ -#if defined(LAPACK_F2C) - typedef double lapack_float_return; -#else - typedef float lapack_float_return; -#endif - - -/* Callback logical functions of one, two, or three arguments are used -* to select eigenvalues to sort to the top left of the Schur form. -* The value is selected if function returns TRUE (non-zero). */ - -typedef lapack_logical (*LAPACK_S_SELECT2) ( const float*, const float* ); -typedef lapack_logical (*LAPACK_S_SELECT3) - ( const float*, const float*, const float* ); -typedef lapack_logical (*LAPACK_D_SELECT2) ( const double*, const double* ); -typedef lapack_logical (*LAPACK_D_SELECT3) - ( const double*, const double*, const double* ); - -typedef lapack_logical (*LAPACK_C_SELECT1) ( const lapack_complex_float* ); -typedef lapack_logical (*LAPACK_C_SELECT2) - ( const lapack_complex_float*, const lapack_complex_float* ); -typedef lapack_logical (*LAPACK_Z_SELECT1) ( const lapack_complex_double* ); -typedef lapack_logical (*LAPACK_Z_SELECT2) - ( const lapack_complex_double*, const lapack_complex_double* ); - -#define LAPACK_lsame_base LAPACK_GLOBAL(lsame,LSAME) -lapack_logical LAPACK_lsame_base( const char* ca, const char* cb -#ifndef __EMSCRIPTEN__ - , lapack_int lca, lapack_int lcb -#endif -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_lsame(...) LAPACK_lsame_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_lsame(...) LAPACK_lsame_base(__VA_ARGS__) -#endif - - -/*----------------------------------------------------------------------------*/ -/* This is in alphabetical order (ignoring leading precision). */ - -#define LAPACK_cbbcsd_base LAPACK_GLOBAL(cbbcsd,CBBCSD) -void LAPACK_cbbcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - float* theta, - float* phi, - lapack_complex_float* U1, lapack_int const* ldu1, - lapack_complex_float* U2, lapack_int const* ldu2, - lapack_complex_float* V1T, lapack_int const* ldv1t, - lapack_complex_float* V2T, lapack_int const* ldv2t, - float* B11D, - float* B11E, - float* B12D, - float* B12E, - float* B21D, - float* B21E, - float* B22D, - float* B22E, - float* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cbbcsd(...) LAPACK_cbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_cbbcsd(...) LAPACK_cbbcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_dbbcsd_base LAPACK_GLOBAL(dbbcsd,DBBCSD) -void LAPACK_dbbcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - double* theta, - double* phi, - double* U1, lapack_int const* ldu1, - double* U2, lapack_int const* ldu2, - double* V1T, lapack_int const* ldv1t, - double* V2T, lapack_int const* ldv2t, - double* B11D, - double* B11E, - double* B12D, - double* B12E, - double* b21d, - double* b21e, - double* b22d, - double* b22e, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dbbcsd(...) LAPACK_dbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_dbbcsd(...) LAPACK_dbbcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_sbbcsd_base LAPACK_GLOBAL(sbbcsd,SBBCSD) -void LAPACK_sbbcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - float* theta, - float* phi, - float* U1, lapack_int const* ldu1, - float* U2, lapack_int const* ldu2, - float* V1T, lapack_int const* ldv1t, - float* V2T, lapack_int const* ldv2t, - float* B11D, - float* B11E, - float* B12D, - float* B12E, - float* B21D, - float* B21E, - float* B22D, - float* B22E, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sbbcsd(...) LAPACK_sbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_sbbcsd(...) LAPACK_sbbcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_zbbcsd_base LAPACK_GLOBAL(zbbcsd,ZBBCSD) -void LAPACK_zbbcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - double* theta, - double* phi, - lapack_complex_double* U1, lapack_int const* ldu1, - lapack_complex_double* U2, lapack_int const* ldu2, - lapack_complex_double* V1T, lapack_int const* ldv1t, - lapack_complex_double* V2T, lapack_int const* ldv2t, - double* B11D, - double* B11E, - double* B12D, - double* B12E, - double* B21D, - double* B21E, - double* B22D, - double* B22E, - double* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zbbcsd(...) LAPACK_zbbcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_zbbcsd(...) LAPACK_zbbcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_dbdsdc_base LAPACK_GLOBAL(dbdsdc,DBDSDC) -void LAPACK_dbdsdc_base( - char const* uplo, char const* compq, - lapack_int const* n, - double* D, - double* E, - double* U, lapack_int const* ldu, - double* VT, lapack_int const* ldvt, - double* Q, lapack_int* IQ, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dbdsdc(...) LAPACK_dbdsdc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dbdsdc(...) LAPACK_dbdsdc_base(__VA_ARGS__) -#endif - -#define LAPACK_sbdsdc_base LAPACK_GLOBAL(sbdsdc,SBDSDC) -void LAPACK_sbdsdc_base( - char const* uplo, char const* compq, - lapack_int const* n, - float* D, - float* E, - float* U, lapack_int const* ldu, - float* VT, lapack_int const* ldvt, - float* Q, lapack_int* IQ, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sbdsdc(...) LAPACK_sbdsdc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sbdsdc(...) LAPACK_sbdsdc_base(__VA_ARGS__) -#endif - -#define LAPACK_cbdsqr_base LAPACK_GLOBAL(cbdsqr,CBDSQR) -void LAPACK_cbdsqr_base( - char const* uplo, - lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, - float* D, - float* E, - lapack_complex_float* VT, lapack_int const* ldvt, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* C, lapack_int const* ldc, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cbdsqr(...) LAPACK_cbdsqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cbdsqr(...) LAPACK_cbdsqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dbdsqr_base LAPACK_GLOBAL(dbdsqr,DBDSQR) -void LAPACK_dbdsqr_base( - char const* uplo, - lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, - double* D, - double* E, - double* VT, lapack_int const* ldvt, - double* U, lapack_int const* ldu, - double* C, lapack_int const* ldc, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dbdsqr(...) LAPACK_dbdsqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dbdsqr(...) LAPACK_dbdsqr_base(__VA_ARGS__) -#endif - -#define LAPACK_sbdsqr_base LAPACK_GLOBAL(sbdsqr,SBDSQR) -void LAPACK_sbdsqr_base( - char const* uplo, - lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, - float* D, - float* E, - float* VT, lapack_int const* ldvt, - float* U, lapack_int const* ldu, - float* C, lapack_int const* ldc, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sbdsqr(...) LAPACK_sbdsqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_sbdsqr(...) LAPACK_sbdsqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zbdsqr_base LAPACK_GLOBAL(zbdsqr,ZBDSQR) -void LAPACK_zbdsqr_base( - char const* uplo, - lapack_int const* n, lapack_int const* ncvt, lapack_int const* nru, lapack_int const* ncc, - double* D, - double* E, - lapack_complex_double* VT, lapack_int const* ldvt, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* C, lapack_int const* ldc, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zbdsqr(...) LAPACK_zbdsqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zbdsqr(...) LAPACK_zbdsqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dbdsvdx_base LAPACK_GLOBAL(dbdsvdx,DBDSVDX) -void LAPACK_dbdsvdx_base( - char const* uplo, char const* jobz, char const* range, - lapack_int const* n, - double const* D, - double const* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - double* S, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dbdsvdx(...) LAPACK_dbdsvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dbdsvdx(...) LAPACK_dbdsvdx_base(__VA_ARGS__) -#endif - -#define LAPACK_sbdsvdx_base LAPACK_GLOBAL(sbdsvdx,SBDSVDX) -void LAPACK_sbdsvdx_base( - char const* uplo, char const* jobz, char const* range, - lapack_int const* n, - float const* D, - float const* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - float* S, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sbdsvdx(...) LAPACK_sbdsvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sbdsvdx(...) LAPACK_sbdsvdx_base(__VA_ARGS__) -#endif - -#define LAPACK_ddisna_base LAPACK_GLOBAL(ddisna,DDISNA) -void LAPACK_ddisna_base( - char const* job, - lapack_int const* m, lapack_int const* n, - double const* D, - double* SEP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ddisna(...) LAPACK_ddisna_base(__VA_ARGS__, 1) -#else - #define LAPACK_ddisna(...) LAPACK_ddisna_base(__VA_ARGS__) -#endif - -#define LAPACK_sdisna_base LAPACK_GLOBAL(sdisna,SDISNA) -void LAPACK_sdisna_base( - char const* job, - lapack_int const* m, lapack_int const* n, - float const* D, - float* SEP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sdisna(...) LAPACK_sdisna_base(__VA_ARGS__, 1) -#else - #define LAPACK_sdisna(...) LAPACK_sdisna_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbbrd_base LAPACK_GLOBAL(cgbbrd,CGBBRD) -void LAPACK_cgbbrd_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float* AB, lapack_int const* ldab, - float* D, - float* E, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* PT, lapack_int const* ldpt, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbbrd(...) LAPACK_cgbbrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgbbrd(...) LAPACK_cgbbrd_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbbrd_base LAPACK_GLOBAL(dgbbrd,DGBBRD) -void LAPACK_dgbbrd_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, - double* AB, lapack_int const* ldab, - double* D, - double* E, - double* Q, lapack_int const* ldq, - double* PT, lapack_int const* ldpt, - double* C, lapack_int const* ldc, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbbrd(...) LAPACK_dgbbrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgbbrd(...) LAPACK_dgbbrd_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbbrd_base LAPACK_GLOBAL(sgbbrd,SGBBRD) -void LAPACK_sgbbrd_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, - float* AB, lapack_int const* ldab, - float* D, - float* E, - float* Q, lapack_int const* ldq, - float* PT, lapack_int const* ldpt, - float* C, lapack_int const* ldc, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbbrd(...) LAPACK_sgbbrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgbbrd(...) LAPACK_sgbbrd_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbbrd_base LAPACK_GLOBAL(zgbbrd,ZGBBRD) -void LAPACK_zgbbrd_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* ncc, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double* AB, lapack_int const* ldab, - double* D, - double* E, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* PT, lapack_int const* ldpt, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbbrd(...) LAPACK_zgbbrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgbbrd(...) LAPACK_zgbbrd_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbcon_base LAPACK_GLOBAL(cgbcon,CGBCON) -void LAPACK_cgbcon_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float const* AB, lapack_int const* ldab, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbcon(...) LAPACK_cgbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgbcon(...) LAPACK_cgbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbcon_base LAPACK_GLOBAL(dgbcon,DGBCON) -void LAPACK_dgbcon_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* AB, lapack_int const* ldab, lapack_int const* ipiv, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbcon(...) LAPACK_dgbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgbcon(...) LAPACK_dgbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbcon_base LAPACK_GLOBAL(sgbcon,SGBCON) -void LAPACK_sgbcon_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* AB, lapack_int const* ldab, lapack_int const* ipiv, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbcon(...) LAPACK_sgbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgbcon(...) LAPACK_sgbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbcon_base LAPACK_GLOBAL(zgbcon,ZGBCON) -void LAPACK_zgbcon_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double const* AB, lapack_int const* ldab, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbcon(...) LAPACK_zgbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgbcon(...) LAPACK_zgbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbequ LAPACK_GLOBAL(cgbequ,CGBEQU) -void LAPACK_cgbequ( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float const* AB, lapack_int const* ldab, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_dgbequ LAPACK_GLOBAL(dgbequ,DGBEQU) -void LAPACK_dgbequ( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* AB, lapack_int const* ldab, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_sgbequ LAPACK_GLOBAL(sgbequ,SGBEQU) -void LAPACK_sgbequ( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* AB, lapack_int const* ldab, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_zgbequ LAPACK_GLOBAL(zgbequ,ZGBEQU) -void LAPACK_zgbequ( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double const* AB, lapack_int const* ldab, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_cgbequb LAPACK_GLOBAL(cgbequb,CGBEQUB) -void LAPACK_cgbequb( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float const* AB, lapack_int const* ldab, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_dgbequb LAPACK_GLOBAL(dgbequb,DGBEQUB) -void LAPACK_dgbequb( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* AB, lapack_int const* ldab, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_sgbequb LAPACK_GLOBAL(sgbequb,SGBEQUB) -void LAPACK_sgbequb( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* AB, lapack_int const* ldab, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_zgbequb LAPACK_GLOBAL(zgbequb,ZGBEQUB) -void LAPACK_zgbequb( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double const* AB, lapack_int const* ldab, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_cgbrfs_base LAPACK_GLOBAL(cgbrfs,CGBRFS) -void LAPACK_cgbrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbrfs(...) LAPACK_cgbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgbrfs(...) LAPACK_cgbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbrfs_base LAPACK_GLOBAL(dgbrfs,DGBRFS) -void LAPACK_dgbrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbrfs(...) LAPACK_dgbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgbrfs(...) LAPACK_dgbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbrfs_base LAPACK_GLOBAL(sgbrfs,SGBRFS) -void LAPACK_sgbrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbrfs(...) LAPACK_sgbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgbrfs(...) LAPACK_sgbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbrfs_base LAPACK_GLOBAL(zgbrfs,ZGBRFS) -void LAPACK_zgbrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbrfs(...) LAPACK_zgbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgbrfs(...) LAPACK_zgbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbrfsx_base LAPACK_GLOBAL(cgbrfsx,CGBRFSX) -void LAPACK_cgbrfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - const float* R, - const float* C, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbrfsx(...) LAPACK_cgbrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgbrfsx(...) LAPACK_cgbrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbrfsx_base LAPACK_GLOBAL(dgbrfsx,DGBRFSX) -void LAPACK_dgbrfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - const double* R, - const double* C, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbrfsx(...) LAPACK_dgbrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgbrfsx(...) LAPACK_dgbrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbrfsx_base LAPACK_GLOBAL(sgbrfsx,SGBRFSX) -void LAPACK_sgbrfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - const float* R, - const float* C, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbrfsx(...) LAPACK_sgbrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgbrfsx(...) LAPACK_sgbrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbrfsx_base LAPACK_GLOBAL(zgbrfsx,ZGBRFSX) -void LAPACK_zgbrfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double const* AFB, lapack_int const* ldafb, lapack_int const* ipiv, - const double* R, - const double* C, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbrfsx(...) LAPACK_zgbrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgbrfsx(...) LAPACK_zgbrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbsv LAPACK_GLOBAL(cgbsv,CGBSV) -void LAPACK_cgbsv( - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_dgbsv LAPACK_GLOBAL(dgbsv,DGBSV) -void LAPACK_dgbsv( - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double* AB, lapack_int const* ldab, lapack_int* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_sgbsv LAPACK_GLOBAL(sgbsv,SGBSV) -void LAPACK_sgbsv( - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float* AB, lapack_int const* ldab, lapack_int* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_zgbsv LAPACK_GLOBAL(zgbsv,ZGBSV) -void LAPACK_zgbsv( - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_cgbsvx_base LAPACK_GLOBAL(cgbsvx,CGBSVX) -void LAPACK_cgbsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - float* R, - float* C, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbsvx(...) LAPACK_cgbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgbsvx(...) LAPACK_cgbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbsvx_base LAPACK_GLOBAL(dgbsvx,DGBSVX) -void LAPACK_dgbsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double* AB, lapack_int const* ldab, - double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - double* R, - double* C, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbsvx(...) LAPACK_dgbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgbsvx(...) LAPACK_dgbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbsvx_base LAPACK_GLOBAL(sgbsvx,SGBSVX) -void LAPACK_sgbsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float* AB, lapack_int const* ldab, - float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - float* R, - float* C, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbsvx(...) LAPACK_sgbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgbsvx(...) LAPACK_sgbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbsvx_base LAPACK_GLOBAL(zgbsvx,ZGBSVX) -void LAPACK_zgbsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - double* R, - double* C, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbsvx(...) LAPACK_zgbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgbsvx(...) LAPACK_zgbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbsvxx_base LAPACK_GLOBAL(cgbsvxx,CGBSVXX) -void LAPACK_cgbsvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - float* R, - float* C, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbsvxx(...) LAPACK_cgbsvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgbsvxx(...) LAPACK_cgbsvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbsvxx_base LAPACK_GLOBAL(dgbsvxx,DGBSVXX) -void LAPACK_dgbsvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double* AB, lapack_int const* ldab, - double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - double* R, - double* C, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbsvxx(...) LAPACK_dgbsvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgbsvxx(...) LAPACK_dgbsvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbsvxx_base LAPACK_GLOBAL(sgbsvxx,SGBSVXX) -void LAPACK_sgbsvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float* AB, lapack_int const* ldab, - float* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - float* R, - float* C, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbsvxx(...) LAPACK_sgbsvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgbsvxx(...) LAPACK_sgbsvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbsvxx_base LAPACK_GLOBAL(zgbsvxx,ZGBSVXX) -void LAPACK_zgbsvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* AFB, lapack_int const* ldafb, lapack_int* ipiv, char* equed, - double* R, - double* C, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbsvxx(...) LAPACK_zgbsvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgbsvxx(...) LAPACK_zgbsvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgbtrf LAPACK_GLOBAL(cgbtrf,CGBTRF) -void LAPACK_cgbtrf( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_dgbtrf LAPACK_GLOBAL(dgbtrf,DGBTRF) -void LAPACK_dgbtrf( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_sgbtrf LAPACK_GLOBAL(sgbtrf,SGBTRF) -void LAPACK_sgbtrf( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_zgbtrf LAPACK_GLOBAL(zgbtrf,ZGBTRF) -void LAPACK_zgbtrf( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double* AB, lapack_int const* ldab, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_cgbtrs_base LAPACK_GLOBAL(cgbtrs,CGBTRS) -void LAPACK_cgbtrs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgbtrs(...) LAPACK_cgbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgbtrs(...) LAPACK_cgbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgbtrs_base LAPACK_GLOBAL(dgbtrs,DGBTRS) -void LAPACK_dgbtrs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgbtrs(...) LAPACK_dgbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgbtrs(...) LAPACK_dgbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgbtrs_base LAPACK_GLOBAL(sgbtrs,SGBTRS) -void LAPACK_sgbtrs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgbtrs(...) LAPACK_sgbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgbtrs(...) LAPACK_sgbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgbtrs_base LAPACK_GLOBAL(zgbtrs,ZGBTRS) -void LAPACK_zgbtrs_base( - char const* trans, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgbtrs(...) LAPACK_zgbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgbtrs(...) LAPACK_zgbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cgebak_base LAPACK_GLOBAL(cgebak,CGEBAK) -void LAPACK_cgebak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float const* scale, lapack_int const* m, - lapack_complex_float* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgebak(...) LAPACK_cgebak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgebak(...) LAPACK_cgebak_base(__VA_ARGS__) -#endif - -#define LAPACK_dgebak_base LAPACK_GLOBAL(dgebak,DGEBAK) -void LAPACK_dgebak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double const* scale, lapack_int const* m, - double* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgebak(...) LAPACK_dgebak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgebak(...) LAPACK_dgebak_base(__VA_ARGS__) -#endif - -#define LAPACK_sgebak_base LAPACK_GLOBAL(sgebak,SGEBAK) -void LAPACK_sgebak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float const* scale, lapack_int const* m, - float* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgebak(...) LAPACK_sgebak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgebak(...) LAPACK_sgebak_base(__VA_ARGS__) -#endif - -#define LAPACK_zgebak_base LAPACK_GLOBAL(zgebak,ZGEBAK) -void LAPACK_zgebak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double const* scale, lapack_int const* m, - lapack_complex_double* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgebak(...) LAPACK_zgebak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgebak(...) LAPACK_zgebak_base(__VA_ARGS__) -#endif - -#define LAPACK_cgebal_base LAPACK_GLOBAL(cgebal,CGEBAL) -void LAPACK_cgebal_base( - char const* job, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, - float* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgebal(...) LAPACK_cgebal_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgebal(...) LAPACK_cgebal_base(__VA_ARGS__) -#endif - -#define LAPACK_dgebal_base LAPACK_GLOBAL(dgebal,DGEBAL) -void LAPACK_dgebal_base( - char const* job, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, - double* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgebal(...) LAPACK_dgebal_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgebal(...) LAPACK_dgebal_base(__VA_ARGS__) -#endif - -#define LAPACK_sgebal_base LAPACK_GLOBAL(sgebal,SGEBAL) -void LAPACK_sgebal_base( - char const* job, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, - float* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgebal(...) LAPACK_sgebal_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgebal(...) LAPACK_sgebal_base(__VA_ARGS__) -#endif - -#define LAPACK_zgebal_base LAPACK_GLOBAL(zgebal,ZGEBAL) -void LAPACK_zgebal_base( - char const* job, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ilo, lapack_int* ihi, - double* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgebal(...) LAPACK_zgebal_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgebal(...) LAPACK_zgebal_base(__VA_ARGS__) -#endif - -#define LAPACK_cgebrd LAPACK_GLOBAL(cgebrd,CGEBRD) -void LAPACK_cgebrd( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* D, - float* E, - lapack_complex_float* tauq, - lapack_complex_float* taup, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgebrd LAPACK_GLOBAL(dgebrd,DGEBRD) -void LAPACK_dgebrd( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* D, - double* E, - double* tauq, - double* taup, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgebrd LAPACK_GLOBAL(sgebrd,SGEBRD) -void LAPACK_sgebrd( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* D, - float* E, - float* tauq, - float* taup, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgebrd LAPACK_GLOBAL(zgebrd,ZGEBRD) -void LAPACK_zgebrd( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* D, - double* E, - lapack_complex_double* tauq, - lapack_complex_double* taup, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgecon_base LAPACK_GLOBAL(cgecon,CGECON) -void LAPACK_cgecon_base( - char const* norm, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float const* anorm, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgecon(...) LAPACK_cgecon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgecon(...) LAPACK_cgecon_base(__VA_ARGS__) -#endif - -#define LAPACK_dgecon_base LAPACK_GLOBAL(dgecon,DGECON) -void LAPACK_dgecon_base( - char const* norm, - lapack_int const* n, - double const* A, lapack_int const* lda, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgecon(...) LAPACK_dgecon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgecon(...) LAPACK_dgecon_base(__VA_ARGS__) -#endif - -#define LAPACK_sgecon_base LAPACK_GLOBAL(sgecon,SGECON) -void LAPACK_sgecon_base( - char const* norm, - lapack_int const* n, - float const* A, lapack_int const* lda, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgecon(...) LAPACK_sgecon_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgecon(...) LAPACK_sgecon_base(__VA_ARGS__) -#endif - -#define LAPACK_zgecon_base LAPACK_GLOBAL(zgecon,ZGECON) -void LAPACK_zgecon_base( - char const* norm, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double const* anorm, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgecon(...) LAPACK_zgecon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgecon(...) LAPACK_zgecon_base(__VA_ARGS__) -#endif - -#define LAPACK_cgeequ LAPACK_GLOBAL(cgeequ,CGEEQU) -void LAPACK_cgeequ( - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_dgeequ LAPACK_GLOBAL(dgeequ,DGEEQU) -void LAPACK_dgeequ( - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_sgeequ LAPACK_GLOBAL(sgeequ,SGEEQU) -void LAPACK_sgeequ( - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_zgeequ LAPACK_GLOBAL(zgeequ,ZGEEQU) -void LAPACK_zgeequ( - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_cgeequb LAPACK_GLOBAL(cgeequb,CGEEQUB) -void LAPACK_cgeequb( - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_dgeequb LAPACK_GLOBAL(dgeequb,DGEEQUB) -void LAPACK_dgeequb( - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_sgeequb LAPACK_GLOBAL(sgeequb,SGEEQUB) -void LAPACK_sgeequb( - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float* R, - float* C, - float* rowcnd, - float* colcnd, - float* amax, - lapack_int* info ); - -#define LAPACK_zgeequb LAPACK_GLOBAL(zgeequb,ZGEEQUB) -void LAPACK_zgeequb( - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* R, - double* C, - double* rowcnd, - double* colcnd, - double* amax, - lapack_int* info ); - -#define LAPACK_cgees_base LAPACK_GLOBAL(cgees,CGEES) -void LAPACK_cgees_base( - char const* jobvs, char const* sort, LAPACK_C_SELECT1 select, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* sdim, - lapack_complex_float* W, - lapack_complex_float* VS, lapack_int const* ldvs, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgees(...) LAPACK_cgees_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgees(...) LAPACK_cgees_base(__VA_ARGS__) -#endif - -#define LAPACK_dgees_base LAPACK_GLOBAL(dgees,DGEES) -void LAPACK_dgees_base( - char const* jobvs, char const* sort, LAPACK_D_SELECT2 select, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* sdim, - double* WR, - double* WI, - double* VS, lapack_int const* ldvs, - double* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgees(...) LAPACK_dgees_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgees(...) LAPACK_dgees_base(__VA_ARGS__) -#endif - -#define LAPACK_sgees_base LAPACK_GLOBAL(sgees,SGEES) -void LAPACK_sgees_base( - char const* jobvs, char const* sort, LAPACK_S_SELECT2 select, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* sdim, - float* WR, - float* WI, - float* VS, lapack_int const* ldvs, - float* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgees(...) LAPACK_sgees_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgees(...) LAPACK_sgees_base(__VA_ARGS__) -#endif - -#define LAPACK_zgees_base LAPACK_GLOBAL(zgees,ZGEES) -void LAPACK_zgees_base( - char const* jobvs, char const* sort, LAPACK_Z_SELECT1 select, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* sdim, - lapack_complex_double* W, - lapack_complex_double* VS, lapack_int const* ldvs, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgees(...) LAPACK_zgees_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgees(...) LAPACK_zgees_base(__VA_ARGS__) -#endif - -#define LAPACK_cgeesx_base LAPACK_GLOBAL(cgeesx,CGEESX) -void LAPACK_cgeesx_base( - char const* jobvs, char const* sort, LAPACK_C_SELECT1 select, char const* sense, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* sdim, - lapack_complex_float* W, - lapack_complex_float* VS, lapack_int const* ldvs, - float* rconde, - float* rcondv, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgeesx(...) LAPACK_cgeesx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgeesx(...) LAPACK_cgeesx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgeesx_base LAPACK_GLOBAL(dgeesx,DGEESX) -void LAPACK_dgeesx_base( - char const* jobvs, char const* sort, LAPACK_D_SELECT2 select, char const* sense, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* sdim, - double* WR, - double* WI, - double* VS, lapack_int const* ldvs, - double* rconde, - double* rcondv, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgeesx(...) LAPACK_dgeesx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgeesx(...) LAPACK_dgeesx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgeesx_base LAPACK_GLOBAL(sgeesx,SGEESX) -void LAPACK_sgeesx_base( - char const* jobvs, char const* sort, LAPACK_S_SELECT2 select, char const* sense, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* sdim, - float* WR, - float* WI, - float* VS, lapack_int const* ldvs, - float* rconde, - float* rcondv, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgeesx(...) LAPACK_sgeesx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgeesx(...) LAPACK_sgeesx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgeesx_base LAPACK_GLOBAL(zgeesx,ZGEESX) -void LAPACK_zgeesx_base( - char const* jobvs, char const* sort, LAPACK_Z_SELECT1 select, char const* sense, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* sdim, - lapack_complex_double* W, - lapack_complex_double* VS, lapack_int const* ldvs, - double* rconde, - double* rcondv, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgeesx(...) LAPACK_zgeesx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgeesx(...) LAPACK_zgeesx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgeev_base LAPACK_GLOBAL(cgeev,CGEEV) -void LAPACK_cgeev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* W, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgeev(...) LAPACK_cgeev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgeev(...) LAPACK_cgeev_base(__VA_ARGS__) -#endif - -#define LAPACK_dgeev_base LAPACK_GLOBAL(dgeev,DGEEV) -void LAPACK_dgeev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - double* A, lapack_int const* lda, - double* WR, - double* WI, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgeev(...) LAPACK_dgeev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgeev(...) LAPACK_dgeev_base(__VA_ARGS__) -#endif - -#define LAPACK_sgeev_base LAPACK_GLOBAL(sgeev,SGEEV) -void LAPACK_sgeev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - float* A, lapack_int const* lda, - float* WR, - float* WI, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgeev(...) LAPACK_sgeev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgeev(...) LAPACK_sgeev_base(__VA_ARGS__) -#endif - -#define LAPACK_zgeev_base LAPACK_GLOBAL(zgeev,ZGEEV) -void LAPACK_zgeev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* W, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgeev(...) LAPACK_zgeev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgeev(...) LAPACK_zgeev_base(__VA_ARGS__) -#endif - -#define LAPACK_cgeevx_base LAPACK_GLOBAL(cgeevx,CGEEVX) -void LAPACK_cgeevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* W, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - float* scale, - float* abnrm, - float* rconde, - float* rcondv, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgeevx(...) LAPACK_cgeevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_cgeevx(...) LAPACK_cgeevx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgeevx_base LAPACK_GLOBAL(dgeevx,DGEEVX) -void LAPACK_dgeevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - double* A, lapack_int const* lda, - double* WR, - double* WI, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - double* scale, - double* abnrm, - double* rconde, - double* rcondv, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgeevx(...) LAPACK_dgeevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dgeevx(...) LAPACK_dgeevx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgeevx_base LAPACK_GLOBAL(sgeevx,SGEEVX) -void LAPACK_sgeevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - float* A, lapack_int const* lda, - float* WR, - float* WI, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - float* scale, - float* abnrm, - float* rconde, - float* rcondv, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgeevx(...) LAPACK_sgeevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_sgeevx(...) LAPACK_sgeevx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgeevx_base LAPACK_GLOBAL(zgeevx,ZGEEVX) -void LAPACK_zgeevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* W, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - double* scale, - double* abnrm, - double* rconde, - double* rcondv, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgeevx(...) LAPACK_zgeevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_zgeevx(...) LAPACK_zgeevx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgehrd LAPACK_GLOBAL(cgehrd,CGEHRD) -void LAPACK_cgehrd( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgehrd LAPACK_GLOBAL(dgehrd,DGEHRD) -void LAPACK_dgehrd( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgehrd LAPACK_GLOBAL(sgehrd,SGEHRD) -void LAPACK_sgehrd( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgehrd LAPACK_GLOBAL(zgehrd,ZGEHRD) -void LAPACK_zgehrd( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgejsv_base LAPACK_GLOBAL(cgejsv,CGEJSV) -void LAPACK_cgejsv_base( - char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* SVA, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* V, lapack_int const* ldv, - lapack_complex_float* cwork, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgejsv(...) LAPACK_cgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_cgejsv(...) LAPACK_cgejsv_base(__VA_ARGS__) -#endif - -#define LAPACK_dgejsv_base LAPACK_GLOBAL(dgejsv,DGEJSV) -void LAPACK_dgejsv_base( - char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* SVA, - double* U, lapack_int const* ldu, - double* V, lapack_int const* ldv, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgejsv(...) LAPACK_dgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_dgejsv(...) LAPACK_dgejsv_base(__VA_ARGS__) -#endif - -#define LAPACK_sgejsv_base LAPACK_GLOBAL(sgejsv,SGEJSV) -void LAPACK_sgejsv_base( - char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* SVA, - float* U, lapack_int const* ldu, - float* V, lapack_int const* ldv, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgejsv(...) LAPACK_sgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_sgejsv(...) LAPACK_sgejsv_base(__VA_ARGS__) -#endif - -#define LAPACK_zgejsv_base LAPACK_GLOBAL(zgejsv,ZGEJSV) -void LAPACK_zgejsv_base( - char const* joba, char const* jobu, char const* jobv, char const* jobr, char const* jobt, char const* jobp, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* SVA, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* V, lapack_int const* ldv, - lapack_complex_double* cwork, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgejsv(...) LAPACK_zgejsv_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_zgejsv(...) LAPACK_zgejsv_base(__VA_ARGS__) -#endif - -#define LAPACK_cgelq LAPACK_GLOBAL(cgelq,CGELQ) -void LAPACK_cgelq( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* tsize, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgelq LAPACK_GLOBAL(dgelq,DGELQ) -void LAPACK_dgelq( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* T, lapack_int const* tsize, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgelq LAPACK_GLOBAL(sgelq,SGELQ) -void LAPACK_sgelq( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* T, lapack_int const* tsize, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgelq LAPACK_GLOBAL(zgelq,ZGELQ) -void LAPACK_zgelq( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* tsize, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgelq2 LAPACK_GLOBAL(cgelq2,CGELQ2) -void LAPACK_cgelq2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dgelq2 LAPACK_GLOBAL(dgelq2,DGELQ2) -void LAPACK_dgelq2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, - lapack_int* info ); - -#define LAPACK_sgelq2 LAPACK_GLOBAL(sgelq2,SGELQ2) -void LAPACK_sgelq2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, - lapack_int* info ); - -#define LAPACK_zgelq2 LAPACK_GLOBAL(zgelq2,ZGELQ2) -void LAPACK_zgelq2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_cgelqf LAPACK_GLOBAL(cgelqf,CGELQF) -void LAPACK_cgelqf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgelqf LAPACK_GLOBAL(dgelqf,DGELQF) -void LAPACK_dgelqf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgelqf LAPACK_GLOBAL(sgelqf,SGELQF) -void LAPACK_sgelqf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgelqf LAPACK_GLOBAL(zgelqf,ZGELQF) -void LAPACK_zgelqf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgels_base LAPACK_GLOBAL(cgels,CGELS) -void LAPACK_cgels_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgels(...) LAPACK_cgels_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgels(...) LAPACK_cgels_base(__VA_ARGS__) -#endif - -#define LAPACK_dgels_base LAPACK_GLOBAL(dgels,DGELS) -void LAPACK_dgels_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgels(...) LAPACK_dgels_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgels(...) LAPACK_dgels_base(__VA_ARGS__) -#endif - -#define LAPACK_sgels_base LAPACK_GLOBAL(sgels,SGELS) -void LAPACK_sgels_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgels(...) LAPACK_sgels_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgels(...) LAPACK_sgels_base(__VA_ARGS__) -#endif - -#define LAPACK_zgels_base LAPACK_GLOBAL(zgels,ZGELS) -void LAPACK_zgels_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgels(...) LAPACK_zgels_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgels(...) LAPACK_zgels_base(__VA_ARGS__) -#endif - -#define LAPACK_cgelsd LAPACK_GLOBAL(cgelsd,CGELSD) -void LAPACK_cgelsd( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* S, - float const* rcond, lapack_int* rank, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, - lapack_int* info ); - -#define LAPACK_dgelsd LAPACK_GLOBAL(dgelsd,DGELSD) -void LAPACK_dgelsd( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* S, - double const* rcond, lapack_int* rank, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info ); - -#define LAPACK_sgelsd LAPACK_GLOBAL(sgelsd,SGELSD) -void LAPACK_sgelsd( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* S, - float const* rcond, lapack_int* rank, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info ); - -#define LAPACK_zgelsd LAPACK_GLOBAL(zgelsd,ZGELSD) -void LAPACK_zgelsd( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* S, - double const* rcond, lapack_int* rank, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, - lapack_int* info ); - -#define LAPACK_cgelss LAPACK_GLOBAL(cgelss,CGELSS) -void LAPACK_cgelss( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* S, - float const* rcond, lapack_int* rank, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info ); - -#define LAPACK_dgelss LAPACK_GLOBAL(dgelss,DGELSS) -void LAPACK_dgelss( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* S, - double const* rcond, lapack_int* rank, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgelss LAPACK_GLOBAL(sgelss,SGELSS) -void LAPACK_sgelss( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* S, - float const* rcond, lapack_int* rank, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgelss LAPACK_GLOBAL(zgelss,ZGELSS) -void LAPACK_zgelss( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* S, - double const* rcond, lapack_int* rank, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info ); - -#define LAPACK_cgelsy LAPACK_GLOBAL(cgelsy,CGELSY) -void LAPACK_cgelsy( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, lapack_int* JPVT, - float const* rcond, lapack_int* rank, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info ); - -#define LAPACK_dgelsy LAPACK_GLOBAL(dgelsy,DGELSY) -void LAPACK_dgelsy( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, lapack_int* JPVT, - double const* rcond, lapack_int* rank, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgelsy LAPACK_GLOBAL(sgelsy,SGELSY) -void LAPACK_sgelsy( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, lapack_int* JPVT, - float const* rcond, lapack_int* rank, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgelsy LAPACK_GLOBAL(zgelsy,ZGELSY) -void LAPACK_zgelsy( - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, lapack_int* JPVT, - double const* rcond, lapack_int* rank, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info ); - -#define LAPACK_cgemlq_base LAPACK_GLOBAL(cgemlq,CGEMLQ) -void LAPACK_cgemlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* T, lapack_int const* tsize, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgemlq(...) LAPACK_cgemlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgemlq(...) LAPACK_cgemlq_base(__VA_ARGS__) -#endif - -#define LAPACK_dgemlq_base LAPACK_GLOBAL(dgemlq,DGEMLQ) -void LAPACK_dgemlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* T, lapack_int const* tsize, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgemlq(...) LAPACK_dgemlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgemlq(...) LAPACK_dgemlq_base(__VA_ARGS__) -#endif - -#define LAPACK_sgemlq_base LAPACK_GLOBAL(sgemlq,SGEMLQ) -void LAPACK_sgemlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* T, lapack_int const* tsize, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgemlq(...) LAPACK_sgemlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgemlq(...) LAPACK_sgemlq_base(__VA_ARGS__) -#endif - -#define LAPACK_zgemlq_base LAPACK_GLOBAL(zgemlq,ZGEMLQ) -void LAPACK_zgemlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* T, lapack_int const* tsize, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgemlq(...) LAPACK_zgemlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgemlq(...) LAPACK_zgemlq_base(__VA_ARGS__) -#endif - -#define LAPACK_cgemqr_base LAPACK_GLOBAL(cgemqr,CGEMQR) -void LAPACK_cgemqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* T, lapack_int const* tsize, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgemqr(...) LAPACK_cgemqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgemqr(...) LAPACK_cgemqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dgemqr_base LAPACK_GLOBAL(dgemqr,DGEMQR) -void LAPACK_dgemqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* T, lapack_int const* tsize, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgemqr(...) LAPACK_dgemqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgemqr(...) LAPACK_dgemqr_base(__VA_ARGS__) -#endif - -#define LAPACK_sgemqr_base LAPACK_GLOBAL(sgemqr,SGEMQR) -void LAPACK_sgemqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* T, lapack_int const* tsize, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgemqr(...) LAPACK_sgemqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgemqr(...) LAPACK_sgemqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zgemqr_base LAPACK_GLOBAL(zgemqr,ZGEMQR) -void LAPACK_zgemqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* T, lapack_int const* tsize, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgemqr(...) LAPACK_zgemqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgemqr(...) LAPACK_zgemqr_base(__VA_ARGS__) -#endif - -#define LAPACK_cgemqrt_base LAPACK_GLOBAL(cgemqrt,CGEMQRT) -void LAPACK_cgemqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgemqrt(...) LAPACK_cgemqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgemqrt(...) LAPACK_cgemqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_dgemqrt_base LAPACK_GLOBAL(dgemqrt,DGEMQRT) -void LAPACK_dgemqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, - double const* V, lapack_int const* ldv, - double const* T, lapack_int const* ldt, - double* C, lapack_int const* ldc, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgemqrt(...) LAPACK_dgemqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgemqrt(...) LAPACK_dgemqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_sgemqrt_base LAPACK_GLOBAL(sgemqrt,SGEMQRT) -void LAPACK_sgemqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, - float const* V, lapack_int const* ldv, - float const* T, lapack_int const* ldt, - float* C, lapack_int const* ldc, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgemqrt(...) LAPACK_sgemqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgemqrt(...) LAPACK_sgemqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_zgemqrt_base LAPACK_GLOBAL(zgemqrt,ZGEMQRT) -void LAPACK_zgemqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* nb, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgemqrt(...) LAPACK_zgemqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgemqrt(...) LAPACK_zgemqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_cgeql2 LAPACK_GLOBAL(cgeql2,CGEQL2) -void LAPACK_cgeql2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dgeql2 LAPACK_GLOBAL(dgeql2,DGEQL2) -void LAPACK_dgeql2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, - lapack_int* info ); - -#define LAPACK_sgeql2 LAPACK_GLOBAL(sgeql2,SGEQL2) -void LAPACK_sgeql2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, - lapack_int* info ); - -#define LAPACK_zgeql2 LAPACK_GLOBAL(zgeql2,ZGEQL2) -void LAPACK_zgeql2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_cgeqlf LAPACK_GLOBAL(cgeqlf,CGEQLF) -void LAPACK_cgeqlf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgeqlf LAPACK_GLOBAL(dgeqlf,DGEQLF) -void LAPACK_dgeqlf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqlf LAPACK_GLOBAL(sgeqlf,SGEQLF) -void LAPACK_sgeqlf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgeqlf LAPACK_GLOBAL(zgeqlf,ZGEQLF) -void LAPACK_zgeqlf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqpf LAPACK_GLOBAL(sgeqpf,SGEQPF) -void LAPACK_sgeqpf( lapack_int* m, lapack_int* n, float* a, lapack_int* lda, - lapack_int* jpvt, float* tau, float* work, - lapack_int *info ); - -#define LAPACK_dgeqpf LAPACK_GLOBAL(dgeqpf,DGEQPF) -void LAPACK_dgeqpf( lapack_int* m, lapack_int* n, double* a, lapack_int* lda, - lapack_int* jpvt, double* tau, double* work, - lapack_int *info ); - -#define LAPACK_cgeqpf LAPACK_GLOBAL(cgeqpf,CGEQPF) -void LAPACK_cgeqpf( lapack_int* m, lapack_int* n, lapack_complex_float* a, - lapack_int* lda, lapack_int* jpvt, - lapack_complex_float* tau, lapack_complex_float* work, - float* rwork, lapack_int *info ); - -#define LAPACK_zgeqpf LAPACK_GLOBAL(zgeqpf,ZGEQPF) -void LAPACK_zgeqpf( lapack_int* m, lapack_int* n, lapack_complex_double* a, - lapack_int* lda, lapack_int* jpvt, - lapack_complex_double* tau, lapack_complex_double* work, - double* rwork, lapack_int *info ); - -#define LAPACK_cgeqp3 LAPACK_GLOBAL(cgeqp3,CGEQP3) -void LAPACK_cgeqp3( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* JPVT, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info ); - -#define LAPACK_dgeqp3 LAPACK_GLOBAL(dgeqp3,DGEQP3) -void LAPACK_dgeqp3( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* JPVT, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqp3 LAPACK_GLOBAL(sgeqp3,SGEQP3) -void LAPACK_sgeqp3( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* JPVT, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgeqp3 LAPACK_GLOBAL(zgeqp3,ZGEQP3) -void LAPACK_zgeqp3( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* JPVT, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info ); - -#define LAPACK_cgeqr LAPACK_GLOBAL(cgeqr,CGEQR) -void LAPACK_cgeqr( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* tsize, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgeqr LAPACK_GLOBAL(dgeqr,DGEQR) -void LAPACK_dgeqr( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* T, lapack_int const* tsize, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqr LAPACK_GLOBAL(sgeqr,SGEQR) -void LAPACK_sgeqr( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* T, lapack_int const* tsize, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgeqr LAPACK_GLOBAL(zgeqr,ZGEQR) -void LAPACK_zgeqr( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* tsize, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgeqr2 LAPACK_GLOBAL(cgeqr2,CGEQR2) -void LAPACK_cgeqr2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dgeqr2 LAPACK_GLOBAL(dgeqr2,DGEQR2) -void LAPACK_dgeqr2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, - lapack_int* info ); - -#define LAPACK_sgeqr2 LAPACK_GLOBAL(sgeqr2,SGEQR2) -void LAPACK_sgeqr2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, - lapack_int* info ); - -#define LAPACK_zgeqr2 LAPACK_GLOBAL(zgeqr2,ZGEQR2) -void LAPACK_zgeqr2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_cgeqrf LAPACK_GLOBAL(cgeqrf,CGEQRF) -void LAPACK_cgeqrf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgeqrf LAPACK_GLOBAL(dgeqrf,DGEQRF) -void LAPACK_dgeqrf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqrf LAPACK_GLOBAL(sgeqrf,SGEQRF) -void LAPACK_sgeqrf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgeqrf LAPACK_GLOBAL(zgeqrf,ZGEQRF) -void LAPACK_zgeqrf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgeqrfp LAPACK_GLOBAL(cgeqrfp,CGEQRFP) -void LAPACK_cgeqrfp( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgeqrfp LAPACK_GLOBAL(dgeqrfp,DGEQRFP) -void LAPACK_dgeqrfp( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgeqrfp LAPACK_GLOBAL(sgeqrfp,SGEQRFP) -void LAPACK_sgeqrfp( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgeqrfp LAPACK_GLOBAL(zgeqrfp,ZGEQRFP) -void LAPACK_zgeqrfp( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgeqrt LAPACK_GLOBAL(cgeqrt,CGEQRT) -void LAPACK_cgeqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* nb, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dgeqrt LAPACK_GLOBAL(dgeqrt,DGEQRT) -void LAPACK_dgeqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* nb, - double* A, lapack_int const* lda, - double* T, lapack_int const* ldt, - double* work, - lapack_int* info ); - -#define LAPACK_sgeqrt LAPACK_GLOBAL(sgeqrt,SGEQRT) -void LAPACK_sgeqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* nb, - float* A, lapack_int const* lda, - float* T, lapack_int const* ldt, - float* work, - lapack_int* info ); - -#define LAPACK_zgeqrt LAPACK_GLOBAL(zgeqrt,ZGEQRT) -void LAPACK_zgeqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* nb, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_cgeqrt2 LAPACK_GLOBAL(cgeqrt2,CGEQRT2) -void LAPACK_cgeqrt2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_dgeqrt2 LAPACK_GLOBAL(dgeqrt2,DGEQRT2) -void LAPACK_dgeqrt2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_sgeqrt2 LAPACK_GLOBAL(sgeqrt2,SGEQRT2) -void LAPACK_sgeqrt2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_zgeqrt2 LAPACK_GLOBAL(zgeqrt2,ZGEQRT2) -void LAPACK_zgeqrt2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_cgeqrt3 LAPACK_GLOBAL(cgeqrt3,CGEQRT3) -void LAPACK_cgeqrt3( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_dgeqrt3 LAPACK_GLOBAL(dgeqrt3,DGEQRT3) -void LAPACK_dgeqrt3( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_sgeqrt3 LAPACK_GLOBAL(sgeqrt3,SGEQRT3) -void LAPACK_sgeqrt3( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_zgeqrt3 LAPACK_GLOBAL(zgeqrt3,ZGEQRT3) -void LAPACK_zgeqrt3( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_cgerfs_base LAPACK_GLOBAL(cgerfs,CGERFS) -void LAPACK_cgerfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgerfs(...) LAPACK_cgerfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgerfs(...) LAPACK_cgerfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgerfs_base LAPACK_GLOBAL(dgerfs,DGERFS) -void LAPACK_dgerfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgerfs(...) LAPACK_dgerfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgerfs(...) LAPACK_dgerfs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgerfs_base LAPACK_GLOBAL(sgerfs,SGERFS) -void LAPACK_sgerfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgerfs(...) LAPACK_sgerfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgerfs(...) LAPACK_sgerfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgerfs_base LAPACK_GLOBAL(zgerfs,ZGERFS) -void LAPACK_zgerfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgerfs(...) LAPACK_zgerfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgerfs(...) LAPACK_zgerfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cgerfsx_base LAPACK_GLOBAL(cgerfsx,CGERFSX) -void LAPACK_cgerfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - float const* R, - float const* C, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgerfsx(...) LAPACK_cgerfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgerfsx(...) LAPACK_cgerfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgerfsx_base LAPACK_GLOBAL(dgerfsx,DGERFSX) -void LAPACK_dgerfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - double const* R, - double const* C, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgerfsx(...) LAPACK_dgerfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgerfsx(...) LAPACK_dgerfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgerfsx_base LAPACK_GLOBAL(sgerfsx,SGERFSX) -void LAPACK_sgerfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - float const* R, - float const* C, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgerfsx(...) LAPACK_sgerfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgerfsx(...) LAPACK_sgerfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgerfsx_base LAPACK_GLOBAL(zgerfsx,ZGERFSX) -void LAPACK_zgerfsx_base( - char const* trans, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - double const* R, - double const* C, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgerfsx(...) LAPACK_zgerfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgerfsx(...) LAPACK_zgerfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgerq2 LAPACK_GLOBAL(cgerq2,CGERQ2) -void LAPACK_cgerq2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dgerq2 LAPACK_GLOBAL(dgerq2,DGERQ2) -void LAPACK_dgerq2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, - lapack_int* info ); - -#define LAPACK_sgerq2 LAPACK_GLOBAL(sgerq2,SGERQ2) -void LAPACK_sgerq2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, - lapack_int* info ); - -#define LAPACK_zgerq2 LAPACK_GLOBAL(zgerq2,ZGERQ2) -void LAPACK_zgerq2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_cgerqf LAPACK_GLOBAL(cgerqf,CGERQF) -void LAPACK_cgerqf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgerqf LAPACK_GLOBAL(dgerqf,DGERQF) -void LAPACK_dgerqf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgerqf LAPACK_GLOBAL(sgerqf,SGERQF) -void LAPACK_sgerqf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgerqf LAPACK_GLOBAL(zgerqf,ZGERQF) -void LAPACK_zgerqf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgesdd_base LAPACK_GLOBAL(cgesdd,CGESDD) -void LAPACK_cgesdd_base( - char const* jobz, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* S, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* VT, lapack_int const* ldvt, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesdd(...) LAPACK_cgesdd_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgesdd(...) LAPACK_cgesdd_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesdd_base LAPACK_GLOBAL(dgesdd,DGESDD) -void LAPACK_dgesdd_base( - char const* jobz, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* S, - double* U, lapack_int const* ldu, - double* VT, lapack_int const* ldvt, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesdd(...) LAPACK_dgesdd_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgesdd(...) LAPACK_dgesdd_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesdd_base LAPACK_GLOBAL(sgesdd,SGESDD) -void LAPACK_sgesdd_base( - char const* jobz, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* S, - float* U, lapack_int const* ldu, - float* VT, lapack_int const* ldvt, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesdd(...) LAPACK_sgesdd_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgesdd(...) LAPACK_sgesdd_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesdd_base LAPACK_GLOBAL(zgesdd,ZGESDD) -void LAPACK_zgesdd_base( - char const* jobz, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* S, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* VT, lapack_int const* ldvt, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgesdd(...) LAPACK_zgesdd_base(__VA_ARGS__) -#endif - -#define LAPACK_cgedmd_base LAPACK_GLOBAL(cgedmd,CGEDMD) -void LAPACK_cgedmd_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobf, - lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, - lapack_complex_float* x, lapack_int const* ldx, - lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, - const float* tol, lapack_int* k, lapack_complex_float* eigs, - lapack_complex_float* z, lapack_int const* ldz, float* res, - lapack_complex_float* b, lapack_int const* ldb, - lapack_complex_float* w, lapack_int const* ldw, - lapack_complex_float* s, lapack_int const* lds, - lapack_complex_float* zwork, lapack_int const* lzwork, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_cgedmd(...) LAPACK_cgedmd_base(__VA_ARGS__) -#endif - - -#define LAPACK_dgedmd_base LAPACK_GLOBAL(dgedmd,DGEDMD) -void LAPACK_dgedmd_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobf, - lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, - double* x, lapack_int const* ldx, - double* y, lapack_int const* ldy, lapack_int const* nrnk, - const double* tol, lapack_int* k, double* reig, double* imeig, - double* z, lapack_int const* ldz, double* res, - double* b, lapack_int const* ldb, - double* w, lapack_int const* ldw, - double* s, lapack_int const* lds, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dgedmd(...) LAPACK_dgedmd_base(__VA_ARGS__) -#endif - -#define LAPACK_sgedmd_base LAPACK_GLOBAL(sgedmd,SGEDMD) -void LAPACK_sgedmd_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobf, - lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, - float* x, lapack_int const* ldx, - float* y, lapack_int const* ldy, lapack_int const* nrnk, - const float* tol, lapack_int* k, float* reig, float *imeig, - float* z, lapack_int const* ldz, float* res, - float* b, lapack_int const* ldb, - float* w, lapack_int const* ldw, - float* s, lapack_int const* lds, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_sgedmd(...) LAPACK_sgedmd_base(__VA_ARGS__) -#endif - -#define LAPACK_zgedmd_base LAPACK_GLOBAL(zgedmd,ZGEDMD) -void LAPACK_zgedmd_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobf, - lapack_int const* whtsvd, lapack_int const* m, lapack_int const* n, - lapack_complex_double* x, lapack_int const* ldx, - lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, - const double* tol, lapack_int *k, lapack_complex_double* eigs, - lapack_complex_double* z, lapack_int const* ldz, double* res, - lapack_complex_double* b, lapack_int const* ldb, - lapack_complex_double* w, lapack_int const* ldw, - lapack_complex_double* s, lapack_int const* lds, - lapack_complex_double* zwork, lapack_int const* lzwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_zgedmd(...) LAPACK_zgedmd_base(__VA_ARGS__) -#endif - -#define LAPACK_cgedmdq_base LAPACK_GLOBAL(cgedmdq,CGEDMDQ) -void LAPACK_cgedmdq_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobq, - char const* jobt, char const* jobf, lapack_int const* whtsvd, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* f, lapack_int const* ldf, - lapack_complex_float* x, lapack_int const* ldx, - lapack_complex_float* y, lapack_int const* ldy, lapack_int const* nrnk, - float const* tol, lapack_int const* k, - lapack_complex_float* eigs, - lapack_complex_float* z, lapack_int const* ldz, float* res, - lapack_complex_float* b, lapack_int const* ldb, - lapack_complex_float* v, lapack_int const* ldv, - lapack_complex_float* s, lapack_int const* lds, - lapack_complex_float* zwork, lapack_int const* lzwork, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_cgedmdq(...) LAPACK_cgedmdq_base(__VA_ARGS__) -#endif - -#define LAPACK_dgedmdq_base LAPACK_GLOBAL(dgedmdq,DGEDMDQ) -void LAPACK_dgedmdq_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobq, - char const* jobt, char const* jobf, lapack_int const* whtsvd, - lapack_int const* m, lapack_int const* n, - double* f, lapack_int const* ldf, - double* x, lapack_int const* ldx, - double* y, lapack_int const* ldy, lapack_int const* nrnk, - double const* tol, lapack_int* k, - double* reig, double *imeig, - double* z, lapack_int const* ldz, double* res, - double* b, lapack_int const* ldb, - double* v, lapack_int const* ldv, - double* s, lapack_int const* lds, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_dgedmdq(...) LAPACK_dgedmdq_base(__VA_ARGS__) -#endif - -#define LAPACK_sgedmdq_base LAPACK_GLOBAL(sgedmdq,SGEDMDQ) -void LAPACK_sgedmdq_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobq, - char const* jobt, char const* jobf, lapack_int const* whtsvd, - lapack_int const* m, lapack_int const* n, - float* f, lapack_int const* ldf, - float* x, lapack_int const* ldx, - float* y, lapack_int const* ldy, lapack_int const* nrnk, - float const* tol, lapack_int const* k, - float* reig, float* imeig, - float* z, lapack_int const* ldz, float* res, - float* b, lapack_int const* ldb, - float* v, lapack_int const* ldv, - float* s, lapack_int const* lds, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_sgedmdq(...) LAPACK_sgedmdq_base(__VA_ARGS__) -#endif - -#define LAPACK_zgedmdq_base LAPACK_GLOBAL(zgedmdq,ZGEDMDQ) -void LAPACK_zgedmdq_base( - char const* jobs, char const* jobz, char const* jobr, char const* jobq, - char const* jobt, char const* jobf, lapack_int const* whtsvd, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* f, lapack_int const* ldf, - lapack_complex_double* x, lapack_int const* ldx, - lapack_complex_double* y, lapack_int const* ldy, lapack_int const* nrnk, - double const* tol, lapack_int const* k, - lapack_complex_double* eigs, - lapack_complex_double* z, lapack_int const* ldz, double* res, - lapack_complex_double* b, lapack_int const* ldb, - lapack_complex_double* v, lapack_int const* ldv, - lapack_complex_double* s, lapack_int const* lds, - lapack_complex_double* zwork, lapack_int const* lzwork, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info - -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_zgedmdq(...) LAPACK_zgedmdq_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesv LAPACK_GLOBAL(cgesv,CGESV) -lapack_int LAPACK_cgesv( - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_dgesv LAPACK_GLOBAL(dgesv,DGESV) -lapack_int LAPACK_dgesv( - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_sgesv LAPACK_GLOBAL(sgesv,SGESV) -lapack_int LAPACK_sgesv( - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_zgesv LAPACK_GLOBAL(zgesv,ZGESV) -lapack_int LAPACK_zgesv( - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_dsgesv LAPACK_GLOBAL(dsgesv,DSGESV) -void LAPACK_dsgesv( - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, lapack_int* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* work, - float* swork, lapack_int* iter, - lapack_int* info ); - -#define LAPACK_zcgesv LAPACK_GLOBAL(zcgesv,ZCGESV) -void LAPACK_zcgesv( - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - lapack_complex_double* work, - lapack_complex_float* swork, - double* rwork, lapack_int* iter, - lapack_int* info ); - -#define LAPACK_cgesvd_base LAPACK_GLOBAL(cgesvd,CGESVD) -void LAPACK_cgesvd_base( - char const* jobu, char const* jobvt, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* S, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* VT, lapack_int const* ldvt, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvd(...) LAPACK_cgesvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgesvd(...) LAPACK_cgesvd_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesvd_base LAPACK_GLOBAL(dgesvd,DGESVD) -void LAPACK_dgesvd_base( - char const* jobu, char const* jobvt, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* S, - double* U, lapack_int const* ldu, - double* VT, lapack_int const* ldvt, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvd(...) LAPACK_dgesvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgesvd(...) LAPACK_dgesvd_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvd_base LAPACK_GLOBAL(sgesvd,SGESVD) -void LAPACK_sgesvd_base( - char const* jobu, char const* jobvt, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* S, - float* U, lapack_int const* ldu, - float* VT, lapack_int const* ldvt, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvd(...) LAPACK_sgesvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgesvd(...) LAPACK_sgesvd_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvd_base LAPACK_GLOBAL(zgesvd,ZGESVD) -void LAPACK_zgesvd_base( - char const* jobu, char const* jobvt, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* S, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* VT, lapack_int const* ldvt, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvd(...) LAPACK_zgesvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgesvd(...) LAPACK_zgesvd_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesvdq_base LAPACK_GLOBAL(cgesvdq,CGESVDQ) -void LAPACK_cgesvdq_base( - char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* S, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* V, lapack_int const* ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int const* liwork, - lapack_complex_float* cwork, lapack_int* lcwork, - float* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvdq(...) LAPACK_cgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_cgesvdq(...) LAPACK_cgesvdq_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesvdq_base LAPACK_GLOBAL(dgesvdq,DGESVDQ) -void LAPACK_dgesvdq_base( - char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* S, - double* U, lapack_int const* ldu, - double* V, lapack_int const* ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int const* liwork, - double* work, lapack_int* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvdq(...) LAPACK_dgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_dgesvdq(...) LAPACK_dgesvdq_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvdq_base LAPACK_GLOBAL(sgesvdq,SGESVDQ) -void LAPACK_sgesvdq_base( - char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* S, - float* U, lapack_int const* ldu, - float* V, lapack_int const* ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int const* liwork, - float* work, lapack_int* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvdq(...) LAPACK_sgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_sgesvdq(...) LAPACK_sgesvdq_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvdq_base LAPACK_GLOBAL(zgesvdq,ZGESVDQ) -void LAPACK_zgesvdq_base( - char const* joba, char const* jobp, char const* jobr, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* S, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* V, lapack_int const* ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int const* liwork, - lapack_complex_double* cwork, lapack_int* lcwork, - double* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvdq(...) LAPACK_zgesvdq_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_zgesvdq(...) LAPACK_zgesvdq_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesvdx_base LAPACK_GLOBAL(cgesvdx,CGESVDX) -void LAPACK_cgesvdx_base( - char const* jobu, char const* jobvt, char const* range, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - float* S, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* VT, lapack_int const* ldvt, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvdx(...) LAPACK_cgesvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgesvdx(...) LAPACK_cgesvdx_base(__VA_ARGS__) -#endif - - -#define LAPACK_dgesvdx_base LAPACK_GLOBAL(dgesvdx,DGESVDX) -void LAPACK_dgesvdx_base( - char const* jobu, char const* jobvt, char const* range, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - double* S, - double* U, lapack_int const* ldu, - double* VT, lapack_int const* ldvt, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvdx(...) LAPACK_dgesvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgesvdx(...) LAPACK_dgesvdx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvdx_base LAPACK_GLOBAL(sgesvdx,SGESVDX) -void LAPACK_sgesvdx_base( - char const* jobu, char const* jobvt, char const* range, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - float* S, - float* U, lapack_int const* ldu, - float* VT, lapack_int const* ldvt, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvdx(...) LAPACK_sgesvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgesvdx(...) LAPACK_sgesvdx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvdx_base LAPACK_GLOBAL(zgesvdx,ZGESVDX) -void LAPACK_zgesvdx_base( - char const* jobu, char const* jobvt, char const* range, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* ns, - double* S, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* VT, lapack_int const* ldvt, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvdx(...) LAPACK_zgesvdx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgesvdx(...) LAPACK_zgesvdx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesvj_base LAPACK_GLOBAL(cgesvj,CGESVJ) -void LAPACK_cgesvj_base( - char const* joba, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* SVA, lapack_int const* mv, - lapack_complex_float* V, lapack_int const* ldv, - lapack_complex_float* cwork, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvj(...) LAPACK_cgesvj_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgesvj(...) LAPACK_cgesvj_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesvj_base LAPACK_GLOBAL(dgesvj,DGESVJ) -void LAPACK_dgesvj_base( - char const* joba, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* SVA, lapack_int const* mv, - double* V, lapack_int const* ldv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvj(...) LAPACK_dgesvj_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgesvj(...) LAPACK_dgesvj_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvj_base LAPACK_GLOBAL(sgesvj,SGESVJ) -void LAPACK_sgesvj_base( - char const* joba, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* SVA, lapack_int const* mv, - float* V, lapack_int const* ldv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvj(...) LAPACK_sgesvj_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgesvj(...) LAPACK_sgesvj_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvj_base LAPACK_GLOBAL(zgesvj,ZGESVJ) -void LAPACK_zgesvj_base( - char const* joba, char const* jobu, char const* jobv, - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* SVA, lapack_int const* mv, - lapack_complex_double* V, lapack_int const* ldv, - lapack_complex_double* cwork, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvj(...) LAPACK_zgesvj_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgesvj(...) LAPACK_zgesvj_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesvx_base LAPACK_GLOBAL(cgesvx,CGESVX) -void LAPACK_cgesvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* R, - float* C, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvx(...) LAPACK_cgesvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgesvx(...) LAPACK_cgesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesvx_base LAPACK_GLOBAL(dgesvx,DGESVX) -void LAPACK_dgesvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* R, - double* C, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvx(...) LAPACK_dgesvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgesvx(...) LAPACK_dgesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvx_base LAPACK_GLOBAL(sgesvx,SGESVX) -void LAPACK_sgesvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* R, - float* C, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvx(...) LAPACK_sgesvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgesvx(...) LAPACK_sgesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvx_base LAPACK_GLOBAL(zgesvx,ZGESVX) -void LAPACK_zgesvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* R, - double* C, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvx(...) LAPACK_zgesvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgesvx(...) LAPACK_zgesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgesvxx_base LAPACK_GLOBAL(cgesvxx,CGESVXX) -void LAPACK_cgesvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* R, - float* C, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgesvxx(...) LAPACK_cgesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgesvxx(...) LAPACK_cgesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgesvxx_base LAPACK_GLOBAL(dgesvxx,DGESVXX) -void LAPACK_dgesvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* R, - double* C, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgesvxx(...) LAPACK_dgesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgesvxx(...) LAPACK_dgesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgesvxx_base LAPACK_GLOBAL(sgesvxx,SGESVXX) -void LAPACK_sgesvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* R, - float* C, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgesvxx(...) LAPACK_sgesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgesvxx(...) LAPACK_sgesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgesvxx_base LAPACK_GLOBAL(zgesvxx,ZGESVXX) -void LAPACK_zgesvxx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* R, - double* C, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgesvxx(...) LAPACK_zgesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgesvxx(...) LAPACK_zgesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgetf2 LAPACK_GLOBAL(cgetf2,CGETF2) -lapack_int LAPACK_cgetf2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_dgetf2 LAPACK_GLOBAL(dgetf2,DGETF2) -lapack_int LAPACK_dgetf2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_sgetf2 LAPACK_GLOBAL(sgetf2,SGETF2) -lapack_int LAPACK_sgetf2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_zgetf2 LAPACK_GLOBAL(zgetf2,ZGETF2) -lapack_int LAPACK_zgetf2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_cgetrf LAPACK_GLOBAL(cgetrf,CGETRF) -lapack_int LAPACK_cgetrf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_dgetrf LAPACK_GLOBAL(dgetrf,DGETRF) -lapack_int LAPACK_dgetrf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_sgetrf LAPACK_GLOBAL(sgetrf,SGETRF) -lapack_int LAPACK_sgetrf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_zgetrf LAPACK_GLOBAL(zgetrf,ZGETRF) -lapack_int LAPACK_zgetrf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_cgetrf2 LAPACK_GLOBAL(cgetrf2,CGETRF2) -void LAPACK_cgetrf2( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_dgetrf2 LAPACK_GLOBAL(dgetrf2,DGETRF2) -void LAPACK_dgetrf2( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_sgetrf2 LAPACK_GLOBAL(sgetrf2,SGETRF2) -void LAPACK_sgetrf2( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_zgetrf2 LAPACK_GLOBAL(zgetrf2,ZGETRF2) -void LAPACK_zgetrf2( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_cgetri LAPACK_GLOBAL(cgetri,CGETRI) -void LAPACK_cgetri( - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgetri LAPACK_GLOBAL(dgetri,DGETRI) -void LAPACK_dgetri( - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgetri LAPACK_GLOBAL(sgetri,SGETRI) -void LAPACK_sgetri( - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgetri LAPACK_GLOBAL(zgetri,ZGETRI) -void LAPACK_zgetri( - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgetrs_base LAPACK_GLOBAL(cgetrs,CGETRS) -lapack_int LAPACK_cgetrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgetrs(...) LAPACK_cgetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgetrs(...) LAPACK_cgetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgetrs_base LAPACK_GLOBAL(dgetrs,DGETRS) -lapack_int LAPACK_dgetrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgetrs(...) LAPACK_dgetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgetrs(...) LAPACK_dgetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgetrs_base LAPACK_GLOBAL(sgetrs,SGETRS) -lapack_int LAPACK_sgetrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgetrs(...) LAPACK_sgetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgetrs(...) LAPACK_sgetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgetrs_base LAPACK_GLOBAL(zgetrs,ZGETRS) -lapack_int LAPACK_zgetrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgetrs(...) LAPACK_zgetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgetrs(...) LAPACK_zgetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cgetsls_base LAPACK_GLOBAL(cgetsls,CGETSLS) -void LAPACK_cgetsls_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgetsls(...) LAPACK_cgetsls_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgetsls(...) LAPACK_cgetsls_base(__VA_ARGS__) -#endif - -#define LAPACK_dgetsls_base LAPACK_GLOBAL(dgetsls,DGETSLS) -void LAPACK_dgetsls_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgetsls(...) LAPACK_dgetsls_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgetsls(...) LAPACK_dgetsls_base(__VA_ARGS__) -#endif - -#define LAPACK_sgetsls_base LAPACK_GLOBAL(sgetsls,SGETSLS) -void LAPACK_sgetsls_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgetsls(...) LAPACK_sgetsls_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgetsls(...) LAPACK_sgetsls_base(__VA_ARGS__) -#endif - -#define LAPACK_zgetsls_base LAPACK_GLOBAL(zgetsls,ZGETSLS) -void LAPACK_zgetsls_base( - char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgetsls(...) LAPACK_zgetsls_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgetsls(...) LAPACK_zgetsls_base(__VA_ARGS__) -#endif - -#define LAPACK_cgetsqrhrt LAPACK_GLOBAL(cgetsqrhrt,CGETSQRHRT) -void LAPACK_cgetsqrhrt( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgetsqrhrt LAPACK_GLOBAL(dgetsqrhrt,DGETSQRHRT) -void LAPACK_dgetsqrhrt( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, - double* A, lapack_int const* lda, - double* T, lapack_int const* ldt, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgetsqrhrt LAPACK_GLOBAL(sgetsqrhrt,SGETSQRHRT) -void LAPACK_sgetsqrhrt( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, - float* A, lapack_int const* lda, - float* T, lapack_int const* ldt, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgetsqrhrt LAPACK_GLOBAL(zgetsqrhrt,ZGETSQRHRT) -void LAPACK_zgetsqrhrt( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb1, lapack_int const* nb1, lapack_int const* nb2, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cggbak_base LAPACK_GLOBAL(cggbak,CGGBAK) -void LAPACK_cggbak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float const* lscale, - float const* rscale, lapack_int const* m, - lapack_complex_float* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggbak(...) LAPACK_cggbak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cggbak(...) LAPACK_cggbak_base(__VA_ARGS__) -#endif - -#define LAPACK_dggbak_base LAPACK_GLOBAL(dggbak,DGGBAK) -void LAPACK_dggbak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double const* lscale, - double const* rscale, lapack_int const* m, - double* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggbak(...) LAPACK_dggbak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dggbak(...) LAPACK_dggbak_base(__VA_ARGS__) -#endif - -#define LAPACK_sggbak_base LAPACK_GLOBAL(sggbak,SGGBAK) -void LAPACK_sggbak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float const* lscale, - float const* rscale, lapack_int const* m, - float* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggbak(...) LAPACK_sggbak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sggbak(...) LAPACK_sggbak_base(__VA_ARGS__) -#endif - -#define LAPACK_zggbak_base LAPACK_GLOBAL(zggbak,ZGGBAK) -void LAPACK_zggbak_base( - char const* job, char const* side, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double const* lscale, - double const* rscale, lapack_int const* m, - lapack_complex_double* V, lapack_int const* ldv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggbak(...) LAPACK_zggbak_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zggbak(...) LAPACK_zggbak_base(__VA_ARGS__) -#endif - -#define LAPACK_cggbal_base LAPACK_GLOBAL(cggbal,CGGBAL) -void LAPACK_cggbal_base( - char const* job, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, - float* lscale, - float* rscale, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggbal(...) LAPACK_cggbal_base(__VA_ARGS__, 1) -#else - #define LAPACK_cggbal(...) LAPACK_cggbal_base(__VA_ARGS__) -#endif - -#define LAPACK_dggbal_base LAPACK_GLOBAL(dggbal,DGGBAL) -void LAPACK_dggbal_base( - char const* job, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, - double* lscale, - double* rscale, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggbal(...) LAPACK_dggbal_base(__VA_ARGS__, 1) -#else - #define LAPACK_dggbal(...) LAPACK_dggbal_base(__VA_ARGS__) -#endif - -#define LAPACK_sggbal_base LAPACK_GLOBAL(sggbal,SGGBAL) -void LAPACK_sggbal_base( - char const* job, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, - float* lscale, - float* rscale, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggbal(...) LAPACK_sggbal_base(__VA_ARGS__, 1) -#else - #define LAPACK_sggbal(...) LAPACK_sggbal_base(__VA_ARGS__) -#endif - -#define LAPACK_zggbal_base LAPACK_GLOBAL(zggbal,ZGGBAL) -void LAPACK_zggbal_base( - char const* job, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, lapack_int* ilo, lapack_int* ihi, - double* lscale, - double* rscale, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggbal(...) LAPACK_zggbal_base(__VA_ARGS__, 1) -#else - #define LAPACK_zggbal(...) LAPACK_zggbal_base(__VA_ARGS__) -#endif - -#define LAPACK_cgges_base LAPACK_GLOBAL(cgges,CGGES) -void LAPACK_cgges_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VSL, lapack_int const* ldvsl, - lapack_complex_float* VSR, lapack_int const* ldvsr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgges(...) LAPACK_cgges_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgges(...) LAPACK_cgges_base(__VA_ARGS__) -#endif - -#define LAPACK_dgges_base LAPACK_GLOBAL(dgges,DGGES) -void LAPACK_dgges_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, lapack_int* sdim, - double* alphar, - double* alphai, - double* beta, - double* VSL, lapack_int const* ldvsl, - double* VSR, lapack_int const* ldvsr, - double* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgges(...) LAPACK_dgges_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgges(...) LAPACK_dgges_base(__VA_ARGS__) -#endif - -#define LAPACK_sgges_base LAPACK_GLOBAL(sgges,SGGES) -void LAPACK_sgges_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, lapack_int* sdim, - float* alphar, - float* alphai, - float* beta, - float* VSL, lapack_int const* ldvsl, - float* VSR, lapack_int const* ldvsr, - float* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgges(...) LAPACK_sgges_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgges(...) LAPACK_sgges_base(__VA_ARGS__) -#endif - -#define LAPACK_zgges_base LAPACK_GLOBAL(zgges,ZGGES) -void LAPACK_zgges_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VSL, lapack_int const* ldvsl, - lapack_complex_double* VSR, lapack_int const* ldvsr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgges(...) LAPACK_zgges_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgges(...) LAPACK_zgges_base(__VA_ARGS__) -#endif - -#define LAPACK_cgges3_base LAPACK_GLOBAL(cgges3,CGGES3) -void LAPACK_cgges3_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VSL, lapack_int const* ldvsl, - lapack_complex_float* VSR, lapack_int const* ldvsr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgges3(...) LAPACK_cgges3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cgges3(...) LAPACK_cgges3_base(__VA_ARGS__) -#endif - -#define LAPACK_dgges3_base LAPACK_GLOBAL(dgges3,DGGES3) -void LAPACK_dgges3_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, lapack_int* sdim, - double* alphar, - double* alphai, - double* beta, - double* VSL, lapack_int const* ldvsl, - double* VSR, lapack_int const* ldvsr, - double* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgges3(...) LAPACK_dgges3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dgges3(...) LAPACK_dgges3_base(__VA_ARGS__) -#endif - -#define LAPACK_sgges3_base LAPACK_GLOBAL(sgges3,SGGES3) -void LAPACK_sgges3_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, lapack_int* sdim, - float* alphar, - float* alphai, - float* beta, - float* VSL, lapack_int const* ldvsl, - float* VSR, lapack_int const* ldvsr, - float* work, lapack_int const* lwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgges3(...) LAPACK_sgges3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sgges3(...) LAPACK_sgges3_base(__VA_ARGS__) -#endif - -#define LAPACK_zgges3_base LAPACK_GLOBAL(zgges3,ZGGES3) -void LAPACK_zgges3_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VSL, lapack_int const* ldvsl, - lapack_complex_double* VSR, lapack_int const* ldvsr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgges3(...) LAPACK_zgges3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zgges3(...) LAPACK_zgges3_base(__VA_ARGS__) -#endif - -#define LAPACK_cggesx_base LAPACK_GLOBAL(cggesx,CGGESX) -void LAPACK_cggesx_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_C_SELECT2 selctg, char const* sense, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VSL, lapack_int const* ldvsl, - lapack_complex_float* VSR, lapack_int const* ldvsr, - float* rconde, - float* rcondv, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggesx(...) LAPACK_cggesx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_cggesx(...) LAPACK_cggesx_base(__VA_ARGS__) -#endif - -#define LAPACK_dggesx_base LAPACK_GLOBAL(dggesx,DGGESX) -void LAPACK_dggesx_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_D_SELECT3 selctg, char const* sense, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, lapack_int* sdim, - double* alphar, - double* alphai, - double* beta, - double* VSL, lapack_int const* ldvsl, - double* VSR, lapack_int const* ldvsr, - double* rconde, - double* rcondv, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggesx(...) LAPACK_dggesx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dggesx(...) LAPACK_dggesx_base(__VA_ARGS__) -#endif - -#define LAPACK_sggesx_base LAPACK_GLOBAL(sggesx,SGGESX) -void LAPACK_sggesx_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_S_SELECT3 selctg, char const* sense, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, lapack_int* sdim, - float* alphar, - float* alphai, - float* beta, - float* VSL, lapack_int const* ldvsl, - float* VSR, lapack_int const* ldvsr, - float* rconde, - float* rcondv, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggesx(...) LAPACK_sggesx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_sggesx(...) LAPACK_sggesx_base(__VA_ARGS__) -#endif - -#define LAPACK_zggesx_base LAPACK_GLOBAL(zggesx,ZGGESX) -void LAPACK_zggesx_base( - char const* jobvsl, char const* jobvsr, char const* sort, LAPACK_Z_SELECT2 selctg, char const* sense, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, lapack_int* sdim, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VSL, lapack_int const* ldvsl, - lapack_complex_double* VSR, lapack_int const* ldvsr, - double* rconde, - double* rcondv, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_int const* liwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggesx(...) LAPACK_zggesx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_zggesx(...) LAPACK_zggesx_base(__VA_ARGS__) -#endif - -#define LAPACK_cggev_base LAPACK_GLOBAL(cggev,CGGEV) -void LAPACK_cggev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggev(...) LAPACK_cggev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cggev(...) LAPACK_cggev_base(__VA_ARGS__) -#endif - -#define LAPACK_dggev_base LAPACK_GLOBAL(dggev,DGGEV) -void LAPACK_dggev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* alphar, - double* alphai, - double* beta, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggev(...) LAPACK_dggev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dggev(...) LAPACK_dggev_base(__VA_ARGS__) -#endif - -#define LAPACK_sggev_base LAPACK_GLOBAL(sggev,SGGEV) -void LAPACK_sggev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* alphar, - float* alphai, - float* beta, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggev(...) LAPACK_sggev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sggev(...) LAPACK_sggev_base(__VA_ARGS__) -#endif - -#define LAPACK_zggev_base LAPACK_GLOBAL(zggev,ZGGEV) -void LAPACK_zggev_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggev(...) LAPACK_zggev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zggev(...) LAPACK_zggev_base(__VA_ARGS__) -#endif - -#define LAPACK_cggev3_base LAPACK_GLOBAL(cggev3,CGGEV3) -void LAPACK_cggev3_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggev3(...) LAPACK_cggev3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cggev3(...) LAPACK_cggev3_base(__VA_ARGS__) -#endif - -#define LAPACK_dggev3_base LAPACK_GLOBAL(dggev3,DGGEV3) -void LAPACK_dggev3_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* alphar, - double* alphai, - double* beta, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggev3(...) LAPACK_dggev3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dggev3(...) LAPACK_dggev3_base(__VA_ARGS__) -#endif - -#define LAPACK_sggev3_base LAPACK_GLOBAL(sggev3,SGGEV3) -void LAPACK_sggev3_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* alphar, - float* alphai, - float* beta, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggev3(...) LAPACK_sggev3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sggev3(...) LAPACK_sggev3_base(__VA_ARGS__) -#endif - -#define LAPACK_zggev3_base LAPACK_GLOBAL(zggev3,ZGGEV3) -void LAPACK_zggev3_base( - char const* jobvl, char const* jobvr, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggev3(...) LAPACK_zggev3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zggev3(...) LAPACK_zggev3_base(__VA_ARGS__) -#endif - -#define LAPACK_cggevx_base LAPACK_GLOBAL(cggevx,CGGEVX) -void LAPACK_cggevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - float* lscale, - float* rscale, - float* abnrm, - float* bbnrm, - float* rconde, - float* rcondv, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggevx(...) LAPACK_cggevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_cggevx(...) LAPACK_cggevx_base(__VA_ARGS__) -#endif - -#define LAPACK_dggevx_base LAPACK_GLOBAL(dggevx,DGGEVX) -void LAPACK_dggevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* alphar, - double* alphai, - double* beta, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - double* lscale, - double* rscale, - double* abnrm, - double* bbnrm, - double* rconde, - double* rcondv, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggevx(...) LAPACK_dggevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dggevx(...) LAPACK_dggevx_base(__VA_ARGS__) -#endif - -#define LAPACK_sggevx_base LAPACK_GLOBAL(sggevx,SGGEVX) -void LAPACK_sggevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* alphar, - float* alphai, - float* beta, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - float* lscale, - float* rscale, - float* abnrm, - float* bbnrm, - float* rconde, - float* rcondv, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggevx(...) LAPACK_sggevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_sggevx(...) LAPACK_sggevx_base(__VA_ARGS__) -#endif - -#define LAPACK_zggevx_base LAPACK_GLOBAL(zggevx,ZGGEVX) -void LAPACK_zggevx_base( - char const* balanc, char const* jobvl, char const* jobvr, char const* sense, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int* ilo, lapack_int* ihi, - double* lscale, - double* rscale, - double* abnrm, - double* bbnrm, - double* rconde, - double* rcondv, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_logical* BWORK, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggevx(...) LAPACK_zggevx_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_zggevx(...) LAPACK_zggevx_base(__VA_ARGS__) -#endif - -#define LAPACK_cggglm LAPACK_GLOBAL(cggglm,CGGGLM) -void LAPACK_cggglm( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* D, - lapack_complex_float* X, - lapack_complex_float* Y, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dggglm LAPACK_GLOBAL(dggglm,DGGGLM) -void LAPACK_dggglm( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* D, - double* X, - double* Y, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sggglm LAPACK_GLOBAL(sggglm,SGGGLM) -void LAPACK_sggglm( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* D, - float* X, - float* Y, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zggglm LAPACK_GLOBAL(zggglm,ZGGGLM) -void LAPACK_zggglm( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* D, - lapack_complex_double* X, - lapack_complex_double* Y, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cgghd3_base LAPACK_GLOBAL(cgghd3,CGGHD3) -void LAPACK_cgghd3_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgghd3(...) LAPACK_cgghd3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgghd3(...) LAPACK_cgghd3_base(__VA_ARGS__) -#endif - -#define LAPACK_dgghd3_base LAPACK_GLOBAL(dgghd3,DGGHD3) -void LAPACK_dgghd3_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* Q, lapack_int const* ldq, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgghd3(...) LAPACK_dgghd3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgghd3(...) LAPACK_dgghd3_base(__VA_ARGS__) -#endif - -#define LAPACK_sgghd3_base LAPACK_GLOBAL(sgghd3,SGGHD3) -void LAPACK_sgghd3_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* Q, lapack_int const* ldq, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgghd3(...) LAPACK_sgghd3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgghd3(...) LAPACK_sgghd3_base(__VA_ARGS__) -#endif - -#define LAPACK_zgghd3_base LAPACK_GLOBAL(zgghd3,ZGGHD3) -void LAPACK_zgghd3_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgghd3(...) LAPACK_zgghd3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgghd3(...) LAPACK_zgghd3_base(__VA_ARGS__) -#endif - -#define LAPACK_cgghrd_base LAPACK_GLOBAL(cgghrd,CGGHRD) -void LAPACK_cgghrd_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgghrd(...) LAPACK_cgghrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgghrd(...) LAPACK_cgghrd_base(__VA_ARGS__) -#endif - -#define LAPACK_dgghrd_base LAPACK_GLOBAL(dgghrd,DGGHRD) -void LAPACK_dgghrd_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* Q, lapack_int const* ldq, - double* Z, lapack_int const* ldz, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgghrd(...) LAPACK_dgghrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgghrd(...) LAPACK_dgghrd_base(__VA_ARGS__) -#endif - -#define LAPACK_sgghrd_base LAPACK_GLOBAL(sgghrd,SGGHRD) -void LAPACK_sgghrd_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* Q, lapack_int const* ldq, - float* Z, lapack_int const* ldz, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgghrd(...) LAPACK_sgghrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgghrd(...) LAPACK_sgghrd_base(__VA_ARGS__) -#endif - -#define LAPACK_zgghrd_base LAPACK_GLOBAL(zgghrd,ZGGHRD) -void LAPACK_zgghrd_base( - char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgghrd(...) LAPACK_zgghrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgghrd(...) LAPACK_zgghrd_base(__VA_ARGS__) -#endif - -#define LAPACK_cgglse LAPACK_GLOBAL(cgglse,CGGLSE) -void LAPACK_cgglse( - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* C, - lapack_complex_float* D, - lapack_complex_float* X, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dgglse LAPACK_GLOBAL(dgglse,DGGLSE) -void LAPACK_dgglse( - lapack_int const* m, lapack_int const* n, lapack_int const* p, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* C, - double* D, - double* X, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sgglse LAPACK_GLOBAL(sgglse,SGGLSE) -void LAPACK_sgglse( - lapack_int const* m, lapack_int const* n, lapack_int const* p, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* C, - float* D, - float* X, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zgglse LAPACK_GLOBAL(zgglse,ZGGLSE) -void LAPACK_zgglse( - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* C, - lapack_complex_double* D, - lapack_complex_double* X, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cggqrf LAPACK_GLOBAL(cggqrf,CGGQRF) -void LAPACK_cggqrf( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* taua, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* taub, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dggqrf LAPACK_GLOBAL(dggqrf,DGGQRF) -void LAPACK_dggqrf( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - double* A, lapack_int const* lda, - double* taua, - double* B, lapack_int const* ldb, - double* taub, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sggqrf LAPACK_GLOBAL(sggqrf,SGGQRF) -void LAPACK_sggqrf( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - float* A, lapack_int const* lda, - float* taua, - float* B, lapack_int const* ldb, - float* taub, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zggqrf LAPACK_GLOBAL(zggqrf,ZGGQRF) -void LAPACK_zggqrf( - lapack_int const* n, lapack_int const* m, lapack_int const* p, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* taua, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* taub, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cggrqf LAPACK_GLOBAL(cggrqf,CGGRQF) -void LAPACK_cggrqf( - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* taua, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* taub, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dggrqf LAPACK_GLOBAL(dggrqf,DGGRQF) -void LAPACK_dggrqf( - lapack_int const* m, lapack_int const* p, lapack_int const* n, - double* A, lapack_int const* lda, - double* taua, - double* B, lapack_int const* ldb, - double* taub, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sggrqf LAPACK_GLOBAL(sggrqf,SGGRQF) -void LAPACK_sggrqf( - lapack_int const* m, lapack_int const* p, lapack_int const* n, - float* A, lapack_int const* lda, - float* taua, - float* B, lapack_int const* ldb, - float* taub, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zggrqf LAPACK_GLOBAL(zggrqf,ZGGRQF) -void LAPACK_zggrqf( - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* taua, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* taub, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cggsvd_base LAPACK_GLOBAL(cggsvd,CGGSVD) -void LAPACK_cggsvd_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_int* k, lapack_int* l, - lapack_complex_float* a, lapack_int const* lda, - lapack_complex_float* b, lapack_int const* ldb, - float* alpha, float* beta, - lapack_complex_float* u, lapack_int const* ldu, - lapack_complex_float* v, lapack_int const* ldv, - lapack_complex_float* q, lapack_int const* ldq, - lapack_complex_float* work, float* rwork, - lapack_int* iwork, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggsvd(...) LAPACK_cggsvd_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cggsvd(...) LAPACK_cggsvd_base(__VA_ARGS__) -#endif - -#define LAPACK_sggsvd_base LAPACK_GLOBAL(sggsvd,SGGSVD) -void LAPACK_sggsvd_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_int* k, lapack_int* l, - float* a, lapack_int const* lda, - float* b, lapack_int const* ldb, - float* alpha, float* beta, - float* u, lapack_int const* ldu, - float* v, lapack_int const* ldv, - float* q, lapack_int const* ldq, - float* work, lapack_int* iwork, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggsvd(...) LAPACK_sggsvd_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sggsvd(...) LAPACK_sggsvd_base(__VA_ARGS__) -#endif - -#define LAPACK_dggsvd_base LAPACK_GLOBAL(dggsvd,DGGSVD) -void LAPACK_dggsvd_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_int* k, lapack_int* l, - double* a, lapack_int const* lda, - double* b, lapack_int const* ldb, - double* alpha, double* beta, - double* u, lapack_int const* ldu, - double* v, lapack_int const* ldv, - double* q, lapack_int const* ldq, - double* work, lapack_int* iwork, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggsvd(...) LAPACK_dggsvd_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dggsvd(...) LAPACK_dggsvd_base(__VA_ARGS__) -#endif - -#define LAPACK_zggsvd_base LAPACK_GLOBAL(zggsvd,ZGGSVD) -void LAPACK_zggsvd_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, - lapack_int* k, lapack_int* l, - lapack_complex_double* a, lapack_int const* lda, - lapack_complex_double* b, lapack_int const* ldb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int const* ldu, - lapack_complex_double* v, lapack_int const* ldv, - lapack_complex_double* q, lapack_int const* ldq, - lapack_complex_double* work, double* rwork, - lapack_int* iwork, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggsvd(...) LAPACK_zggsvd_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zggsvd(...) LAPACK_zggsvd_base(__VA_ARGS__) -#endif - -#define LAPACK_cggsvd3_base LAPACK_GLOBAL(cggsvd3,CGGSVD3) -void LAPACK_cggsvd3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* alpha, - float* beta, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* V, lapack_int const* ldv, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggsvd3(...) LAPACK_cggsvd3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cggsvd3(...) LAPACK_cggsvd3_base(__VA_ARGS__) -#endif - -#define LAPACK_dggsvd3_base LAPACK_GLOBAL(dggsvd3,DGGSVD3) -void LAPACK_dggsvd3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* alpha, - double* beta, - double* U, lapack_int const* ldu, - double* V, lapack_int const* ldv, - double* Q, lapack_int const* ldq, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggsvd3(...) LAPACK_dggsvd3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dggsvd3(...) LAPACK_dggsvd3_base(__VA_ARGS__) -#endif - -#define LAPACK_sggsvd3_base LAPACK_GLOBAL(sggsvd3,SGGSVD3) -void LAPACK_sggsvd3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* alpha, - float* beta, - float* U, lapack_int const* ldu, - float* V, lapack_int const* ldv, - float* Q, lapack_int const* ldq, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggsvd3(...) LAPACK_sggsvd3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sggsvd3(...) LAPACK_sggsvd3_base(__VA_ARGS__) -#endif - -#define LAPACK_zggsvd3_base LAPACK_GLOBAL(zggsvd3,ZGGSVD3) -void LAPACK_zggsvd3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* n, lapack_int const* p, lapack_int* k, lapack_int* l, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* alpha, - double* beta, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* V, lapack_int const* ldv, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggsvd3(...) LAPACK_zggsvd3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zggsvd3(...) LAPACK_zggsvd3_base(__VA_ARGS__) -#endif - -#define LAPACK_sggsvp_base LAPACK_GLOBAL(sggsvp,SGGSVP) -void LAPACK_sggsvp_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - float* a, lapack_int const* lda, - float* b, lapack_int const* ldb, - float* tola, float* tolb, - lapack_int* k, lapack_int* l, - float* u, lapack_int const* ldu, - float* v, lapack_int const* ldv, - float* q, lapack_int const* ldq, - lapack_int* iwork, float* tau, - float* work, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggsvp(...) LAPACK_sggsvp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sggsvp(...) LAPACK_sggsvp_base(__VA_ARGS__) -#endif - -#define LAPACK_dggsvp_base LAPACK_GLOBAL(dggsvp,DGGSVP) -void LAPACK_dggsvp_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - double* a, lapack_int const* lda, - double* b, lapack_int const* ldb, - double* tola, double* tolb, - lapack_int* k, lapack_int* l, - double* u, lapack_int const* ldu, - double* v, lapack_int const* ldv, - double* q, lapack_int const* ldq, - lapack_int* iwork, double* tau, - double* work, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggsvp(...) LAPACK_dggsvp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dggsvp(...) LAPACK_dggsvp_base(__VA_ARGS__) -#endif - -#define LAPACK_cggsvp_base LAPACK_GLOBAL(cggsvp,CGGSVP) -void LAPACK_cggsvp_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_float* a, lapack_int const* lda, - lapack_complex_float* b, lapack_int const* ldb, - float* tola, float* tolb, lapack_int* k, lapack_int* l, - lapack_complex_float* u, lapack_int const* ldu, - lapack_complex_float* v, lapack_int const* ldv, - lapack_complex_float* q, lapack_int const* ldq, - lapack_int* iwork, float* rwork, lapack_complex_float* tau, - lapack_complex_float* work, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggsvp(...) LAPACK_cggsvp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cggsvp(...) LAPACK_cggsvp_base(__VA_ARGS__) -#endif - -#define LAPACK_zggsvp_base LAPACK_GLOBAL(zggsvp,ZGGSVP) -void LAPACK_zggsvp_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_double* a, lapack_int const* lda, - lapack_complex_double* b, lapack_int const* ldb, - double* tola, double* tolb, lapack_int* k, lapack_int* l, - lapack_complex_double* u, lapack_int const* ldu, - lapack_complex_double* v, lapack_int const* ldv, - lapack_complex_double* q, lapack_int const* ldq, - lapack_int* iwork, double* rwork, lapack_complex_double* tau, - lapack_complex_double* work, lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggsvp(...) LAPACK_zggsvp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zggsvp(...) LAPACK_zggsvp_base(__VA_ARGS__) -#endif - -#define LAPACK_cggsvp3_base LAPACK_GLOBAL(cggsvp3,CGGSVP3) -void LAPACK_cggsvp3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float const* tola, - float const* tolb, lapack_int* k, lapack_int* l, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* V, lapack_int const* ldv, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_int* iwork, - float* rwork, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cggsvp3(...) LAPACK_cggsvp3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cggsvp3(...) LAPACK_cggsvp3_base(__VA_ARGS__) -#endif - -#define LAPACK_dggsvp3_base LAPACK_GLOBAL(dggsvp3,DGGSVP3) -void LAPACK_dggsvp3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double const* tola, - double const* tolb, lapack_int* k, lapack_int* l, - double* U, lapack_int const* ldu, - double* V, lapack_int const* ldv, - double* Q, lapack_int const* ldq, - lapack_int* iwork, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dggsvp3(...) LAPACK_dggsvp3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dggsvp3(...) LAPACK_dggsvp3_base(__VA_ARGS__) -#endif - -#define LAPACK_sggsvp3_base LAPACK_GLOBAL(sggsvp3,SGGSVP3) -void LAPACK_sggsvp3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float const* tola, - float const* tolb, lapack_int* k, lapack_int* l, - float* U, lapack_int const* ldu, - float* V, lapack_int const* ldv, - float* Q, lapack_int const* ldq, - lapack_int* iwork, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sggsvp3(...) LAPACK_sggsvp3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sggsvp3(...) LAPACK_sggsvp3_base(__VA_ARGS__) -#endif - -#define LAPACK_zggsvp3_base LAPACK_GLOBAL(zggsvp3,ZGGSVP3) -void LAPACK_zggsvp3_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double const* tola, - double const* tolb, lapack_int* k, lapack_int* l, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* V, lapack_int const* ldv, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_int* iwork, - double* rwork, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zggsvp3(...) LAPACK_zggsvp3_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zggsvp3(...) LAPACK_zggsvp3_base(__VA_ARGS__) -#endif - -#define LAPACK_cgtcon_base LAPACK_GLOBAL(cgtcon,CGTCON) -void LAPACK_cgtcon_base( - char const* norm, - lapack_int const* n, - lapack_complex_float const* DL, - lapack_complex_float const* D, - lapack_complex_float const* DU, - lapack_complex_float const* DU2, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgtcon(...) LAPACK_cgtcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgtcon(...) LAPACK_cgtcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dgtcon_base LAPACK_GLOBAL(dgtcon,DGTCON) -void LAPACK_dgtcon_base( - char const* norm, - lapack_int const* n, - double const* DL, - double const* D, - double const* DU, - double const* DU2, lapack_int const* ipiv, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgtcon(...) LAPACK_dgtcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgtcon(...) LAPACK_dgtcon_base(__VA_ARGS__) -#endif - -#define LAPACK_sgtcon_base LAPACK_GLOBAL(sgtcon,SGTCON) -void LAPACK_sgtcon_base( - char const* norm, - lapack_int const* n, - float const* DL, - float const* D, - float const* DU, - float const* DU2, lapack_int const* ipiv, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgtcon(...) LAPACK_sgtcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgtcon(...) LAPACK_sgtcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zgtcon_base LAPACK_GLOBAL(zgtcon,ZGTCON) -void LAPACK_zgtcon_base( - char const* norm, - lapack_int const* n, - lapack_complex_double const* DL, - lapack_complex_double const* D, - lapack_complex_double const* DU, - lapack_complex_double const* DU2, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgtcon(...) LAPACK_zgtcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgtcon(...) LAPACK_zgtcon_base(__VA_ARGS__) -#endif - -#define LAPACK_cgtrfs_base LAPACK_GLOBAL(cgtrfs,CGTRFS) -void LAPACK_cgtrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* DL, - lapack_complex_float const* D, - lapack_complex_float const* DU, - lapack_complex_float const* DLF, - lapack_complex_float const* DF, - lapack_complex_float const* DUF, - lapack_complex_float const* DU2, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgtrfs(...) LAPACK_cgtrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgtrfs(...) LAPACK_cgtrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgtrfs_base LAPACK_GLOBAL(dgtrfs,DGTRFS) -void LAPACK_dgtrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double const* DL, - double const* D, - double const* DU, - double const* DLF, - double const* DF, - double const* DUF, - double const* DU2, lapack_int const* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgtrfs(...) LAPACK_dgtrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgtrfs(...) LAPACK_dgtrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgtrfs_base LAPACK_GLOBAL(sgtrfs,SGTRFS) -void LAPACK_sgtrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float const* DL, - float const* D, - float const* DU, - float const* DLF, - float const* DF, - float const* DUF, - float const* DU2, lapack_int const* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgtrfs(...) LAPACK_sgtrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgtrfs(...) LAPACK_sgtrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgtrfs_base LAPACK_GLOBAL(zgtrfs,ZGTRFS) -void LAPACK_zgtrfs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* DL, - lapack_complex_double const* D, - lapack_complex_double const* DU, - lapack_complex_double const* DLF, - lapack_complex_double const* DF, - lapack_complex_double const* DUF, - lapack_complex_double const* DU2, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgtrfs(...) LAPACK_zgtrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgtrfs(...) LAPACK_zgtrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cgtsv LAPACK_GLOBAL(cgtsv,CGTSV) -void LAPACK_cgtsv( - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* DL, - lapack_complex_float* D, - lapack_complex_float* DU, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_dgtsv LAPACK_GLOBAL(dgtsv,DGTSV) -void LAPACK_dgtsv( - lapack_int const* n, lapack_int const* nrhs, - double* DL, - double* D, - double* DU, - double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_sgtsv LAPACK_GLOBAL(sgtsv,SGTSV) -void LAPACK_sgtsv( - lapack_int const* n, lapack_int const* nrhs, - float* DL, - float* D, - float* DU, - float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_zgtsv LAPACK_GLOBAL(zgtsv,ZGTSV) -void LAPACK_zgtsv( - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* DL, - lapack_complex_double* D, - lapack_complex_double* DU, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_cgtsvx_base LAPACK_GLOBAL(cgtsvx,CGTSVX) -void LAPACK_cgtsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* DL, - lapack_complex_float const* D, - lapack_complex_float const* DU, - lapack_complex_float* DLF, - lapack_complex_float* DF, - lapack_complex_float* DUF, - lapack_complex_float* DU2, lapack_int* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgtsvx(...) LAPACK_cgtsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cgtsvx(...) LAPACK_cgtsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dgtsvx_base LAPACK_GLOBAL(dgtsvx,DGTSVX) -void LAPACK_dgtsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double const* DL, - double const* D, - double const* DU, - double* DLF, - double* DF, - double* DUF, - double* DU2, lapack_int* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgtsvx(...) LAPACK_dgtsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dgtsvx(...) LAPACK_dgtsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sgtsvx_base LAPACK_GLOBAL(sgtsvx,SGTSVX) -void LAPACK_sgtsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float const* DL, - float const* D, - float const* DU, - float* DLF, - float* DF, - float* DUF, - float* DU2, lapack_int* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgtsvx(...) LAPACK_sgtsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sgtsvx(...) LAPACK_sgtsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zgtsvx_base LAPACK_GLOBAL(zgtsvx,ZGTSVX) -void LAPACK_zgtsvx_base( - char const* fact, char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* DL, - lapack_complex_double const* D, - lapack_complex_double const* DU, - lapack_complex_double* DLF, - lapack_complex_double* DF, - lapack_complex_double* DUF, - lapack_complex_double* DU2, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgtsvx(...) LAPACK_zgtsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zgtsvx(...) LAPACK_zgtsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cgttrf LAPACK_GLOBAL(cgttrf,CGTTRF) -void LAPACK_cgttrf( - lapack_int const* n, - lapack_complex_float* DL, - lapack_complex_float* D, - lapack_complex_float* DU, - lapack_complex_float* DU2, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_dgttrf LAPACK_GLOBAL(dgttrf,DGTTRF) -void LAPACK_dgttrf( - lapack_int const* n, - double* DL, - double* D, - double* DU, - double* DU2, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_sgttrf LAPACK_GLOBAL(sgttrf,SGTTRF) -void LAPACK_sgttrf( - lapack_int const* n, - float* DL, - float* D, - float* DU, - float* DU2, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_zgttrf LAPACK_GLOBAL(zgttrf,ZGTTRF) -void LAPACK_zgttrf( - lapack_int const* n, - lapack_complex_double* DL, - lapack_complex_double* D, - lapack_complex_double* DU, - lapack_complex_double* DU2, lapack_int* ipiv, - lapack_int* info ); - -#define LAPACK_cgttrs_base LAPACK_GLOBAL(cgttrs,CGTTRS) -void LAPACK_cgttrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* DL, - lapack_complex_float const* D, - lapack_complex_float const* DU, - lapack_complex_float const* DU2, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cgttrs(...) LAPACK_cgttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cgttrs(...) LAPACK_cgttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dgttrs_base LAPACK_GLOBAL(dgttrs,DGTTRS) -void LAPACK_dgttrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - double const* DL, - double const* D, - double const* DU, - double const* DU2, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dgttrs(...) LAPACK_dgttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dgttrs(...) LAPACK_dgttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_sgttrs_base LAPACK_GLOBAL(sgttrs,SGTTRS) -void LAPACK_sgttrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - float const* DL, - float const* D, - float const* DU, - float const* DU2, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sgttrs(...) LAPACK_sgttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sgttrs(...) LAPACK_sgttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zgttrs_base LAPACK_GLOBAL(zgttrs,ZGTTRS) -void LAPACK_zgttrs_base( - char const* trans, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* DL, - lapack_complex_double const* D, - lapack_complex_double const* DU, - lapack_complex_double const* DU2, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zgttrs(...) LAPACK_zgttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zgttrs(...) LAPACK_zgttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_chbev_base LAPACK_GLOBAL(chbev,CHBEV) -void LAPACK_chbev_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbev(...) LAPACK_chbev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbev(...) LAPACK_chbev_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbev_base LAPACK_GLOBAL(zhbev,ZHBEV) -void LAPACK_zhbev_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbev(...) LAPACK_zhbev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbev(...) LAPACK_zhbev_base(__VA_ARGS__) -#endif - -#define LAPACK_chbev_2stage_base LAPACK_GLOBAL(chbev_2stage,CHBEV_2STAGE) -void LAPACK_chbev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbev_2stage(...) LAPACK_chbev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbev_2stage(...) LAPACK_chbev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbev_2stage_base LAPACK_GLOBAL(zhbev_2stage,ZHBEV_2STAGE) -void LAPACK_zhbev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbev_2stage(...) LAPACK_zhbev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbev_2stage(...) LAPACK_zhbev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chbevd_base LAPACK_GLOBAL(chbevd,CHBEVD) -void LAPACK_chbevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbevd(...) LAPACK_chbevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbevd(...) LAPACK_chbevd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbevd_base LAPACK_GLOBAL(zhbevd,ZHBEVD) -void LAPACK_zhbevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbevd(...) LAPACK_zhbevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbevd(...) LAPACK_zhbevd_base(__VA_ARGS__) -#endif - -#define LAPACK_chbevd_2stage_base LAPACK_GLOBAL(chbevd_2stage,CHBEVD_2STAGE) -void LAPACK_chbevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbevd_2stage(...) LAPACK_chbevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbevd_2stage(...) LAPACK_chbevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbevd_2stage_base LAPACK_GLOBAL(zhbevd_2stage,ZHBEVD_2STAGE) -void LAPACK_zhbevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbevd_2stage(...) LAPACK_zhbevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbevd_2stage(...) LAPACK_zhbevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chbevx_base LAPACK_GLOBAL(chbevx,CHBEVX) -void LAPACK_chbevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbevx(...) LAPACK_chbevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chbevx(...) LAPACK_chbevx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbevx_base LAPACK_GLOBAL(zhbevx,ZHBEVX) -void LAPACK_zhbevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbevx(...) LAPACK_zhbevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhbevx(...) LAPACK_zhbevx_base(__VA_ARGS__) -#endif - -#define LAPACK_chbevx_2stage_base LAPACK_GLOBAL(chbevx_2stage,CHBEVX_2STAGE) -void LAPACK_chbevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbevx_2stage(...) LAPACK_chbevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chbevx_2stage(...) LAPACK_chbevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbevx_2stage_base LAPACK_GLOBAL(zhbevx_2stage,ZHBEVX_2STAGE) -void LAPACK_zhbevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbevx_2stage(...) LAPACK_zhbevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhbevx_2stage(...) LAPACK_zhbevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chbgst_base LAPACK_GLOBAL(chbgst,CHBGST) -void LAPACK_chbgst_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float const* BB, lapack_int const* ldbb, - lapack_complex_float* X, lapack_int const* ldx, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbgst(...) LAPACK_chbgst_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbgst(...) LAPACK_chbgst_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbgst_base LAPACK_GLOBAL(zhbgst,ZHBGST) -void LAPACK_zhbgst_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double const* BB, lapack_int const* ldbb, - lapack_complex_double* X, lapack_int const* ldx, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbgst(...) LAPACK_zhbgst_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbgst(...) LAPACK_zhbgst_base(__VA_ARGS__) -#endif - -#define LAPACK_chbgv_base LAPACK_GLOBAL(chbgv,CHBGV) -void LAPACK_chbgv_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* BB, lapack_int const* ldbb, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbgv(...) LAPACK_chbgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbgv(...) LAPACK_chbgv_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbgv_base LAPACK_GLOBAL(zhbgv,ZHBGV) -void LAPACK_zhbgv_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* BB, lapack_int const* ldbb, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbgv(...) LAPACK_zhbgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbgv(...) LAPACK_zhbgv_base(__VA_ARGS__) -#endif - -#define LAPACK_chbgvd_base LAPACK_GLOBAL(chbgvd,CHBGVD) -void LAPACK_chbgvd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* BB, lapack_int const* ldbb, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbgvd(...) LAPACK_chbgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbgvd(...) LAPACK_chbgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbgvd_base LAPACK_GLOBAL(zhbgvd,ZHBGVD) -void LAPACK_zhbgvd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* BB, lapack_int const* ldbb, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbgvd(...) LAPACK_zhbgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbgvd(...) LAPACK_zhbgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_chbgvx_base LAPACK_GLOBAL(chbgvx,CHBGVX) -void LAPACK_chbgvx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* BB, lapack_int const* ldbb, - lapack_complex_float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbgvx(...) LAPACK_chbgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chbgvx(...) LAPACK_chbgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbgvx_base LAPACK_GLOBAL(zhbgvx,ZHBGVX) -void LAPACK_zhbgvx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* BB, lapack_int const* ldbb, - lapack_complex_double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbgvx(...) LAPACK_zhbgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhbgvx(...) LAPACK_zhbgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_chbtrd_base LAPACK_GLOBAL(chbtrd,CHBTRD) -void LAPACK_chbtrd_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - float* D, - float* E, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chbtrd(...) LAPACK_chbtrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chbtrd(...) LAPACK_chbtrd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhbtrd_base LAPACK_GLOBAL(zhbtrd,ZHBTRD) -void LAPACK_zhbtrd_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - double* D, - double* E, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhbtrd(...) LAPACK_zhbtrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhbtrd(...) LAPACK_zhbtrd_base(__VA_ARGS__) -#endif - -#define LAPACK_checon_base LAPACK_GLOBAL(checon,CHECON) -void LAPACK_checon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_checon(...) LAPACK_checon_base(__VA_ARGS__, 1) -#else - #define LAPACK_checon(...) LAPACK_checon_base(__VA_ARGS__) -#endif - -#define LAPACK_zhecon_base LAPACK_GLOBAL(zhecon,ZHECON) -void LAPACK_zhecon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhecon(...) LAPACK_zhecon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhecon(...) LAPACK_zhecon_base(__VA_ARGS__) -#endif - -#define LAPACK_checon_3_base LAPACK_GLOBAL(checon_3,CHECON_3) -void LAPACK_checon_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_checon_3(...) LAPACK_checon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_checon_3(...) LAPACK_checon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zhecon_3_base LAPACK_GLOBAL(zhecon_3,ZHECON_3) -void LAPACK_zhecon_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhecon_3(...) LAPACK_zhecon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhecon_3(...) LAPACK_zhecon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_cheequb_base LAPACK_GLOBAL(cheequb,CHEEQUB) -void LAPACK_cheequb_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheequb(...) LAPACK_cheequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_cheequb(...) LAPACK_cheequb_base(__VA_ARGS__) -#endif - -#define LAPACK_zheequb_base LAPACK_GLOBAL(zheequb,ZHEEQUB) -void LAPACK_zheequb_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheequb(...) LAPACK_zheequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_zheequb(...) LAPACK_zheequb_base(__VA_ARGS__) -#endif - -#define LAPACK_cheev_base LAPACK_GLOBAL(cheev,CHEEV) -void LAPACK_cheev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheev(...) LAPACK_cheev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cheev(...) LAPACK_cheev_base(__VA_ARGS__) -#endif - -#define LAPACK_zheev_base LAPACK_GLOBAL(zheev,ZHEEV) -void LAPACK_zheev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheev(...) LAPACK_zheev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zheev(...) LAPACK_zheev_base(__VA_ARGS__) -#endif - -#define LAPACK_cheev_2stage_base LAPACK_GLOBAL(cheev_2stage,CHEEV_2STAGE) -void LAPACK_cheev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheev_2stage(...) LAPACK_cheev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cheev_2stage(...) LAPACK_cheev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zheev_2stage_base LAPACK_GLOBAL(zheev_2stage,ZHEEV_2STAGE) -void LAPACK_zheev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheev_2stage(...) LAPACK_zheev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zheev_2stage(...) LAPACK_zheev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevd_base LAPACK_GLOBAL(cheevd,CHEEVD) -void LAPACK_cheevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevd(...) LAPACK_cheevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cheevd(...) LAPACK_cheevd_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevd_base LAPACK_GLOBAL(zheevd,ZHEEVD) -void LAPACK_zheevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevd(...) LAPACK_zheevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zheevd(...) LAPACK_zheevd_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevd_2stage_base LAPACK_GLOBAL(cheevd_2stage,CHEEVD_2STAGE) -void LAPACK_cheevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevd_2stage(...) LAPACK_cheevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cheevd_2stage(...) LAPACK_cheevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevd_2stage_base LAPACK_GLOBAL(zheevd_2stage,ZHEEVD_2STAGE) -void LAPACK_zheevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevd_2stage(...) LAPACK_zheevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zheevd_2stage(...) LAPACK_zheevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevr_base LAPACK_GLOBAL(cheevr,CHEEVR) -void LAPACK_cheevr_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevr(...) LAPACK_cheevr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cheevr(...) LAPACK_cheevr_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevr_base LAPACK_GLOBAL(zheevr,ZHEEVR) -void LAPACK_zheevr_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevr(...) LAPACK_zheevr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zheevr(...) LAPACK_zheevr_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevr_2stage_base LAPACK_GLOBAL(cheevr_2stage,CHEEVR_2STAGE) -void LAPACK_cheevr_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevr_2stage(...) LAPACK_cheevr_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cheevr_2stage(...) LAPACK_cheevr_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevr_2stage_base LAPACK_GLOBAL(zheevr_2stage,ZHEEVR_2STAGE) -void LAPACK_zheevr_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevr_2stage(...) LAPACK_zheevr_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zheevr_2stage(...) LAPACK_zheevr_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevx_base LAPACK_GLOBAL(cheevx,CHEEVX) -void LAPACK_cheevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevx(...) LAPACK_cheevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cheevx(...) LAPACK_cheevx_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevx_base LAPACK_GLOBAL(zheevx,ZHEEVX) -void LAPACK_zheevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevx(...) LAPACK_zheevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zheevx(...) LAPACK_zheevx_base(__VA_ARGS__) -#endif - -#define LAPACK_cheevx_2stage_base LAPACK_GLOBAL(cheevx_2stage,CHEEVX_2STAGE) -void LAPACK_cheevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheevx_2stage(...) LAPACK_cheevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cheevx_2stage(...) LAPACK_cheevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zheevx_2stage_base LAPACK_GLOBAL(zheevx_2stage,ZHEEVX_2STAGE) -void LAPACK_zheevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheevx_2stage(...) LAPACK_zheevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zheevx_2stage(...) LAPACK_zheevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chegst_base LAPACK_GLOBAL(chegst,CHEGST) -void LAPACK_chegst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - const lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chegst(...) LAPACK_chegst_base(__VA_ARGS__, 1) -#else - #define LAPACK_chegst(...) LAPACK_chegst_base(__VA_ARGS__) -#endif - -#define LAPACK_zhegst_base LAPACK_GLOBAL(zhegst,ZHEGST) -void LAPACK_zhegst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - const lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhegst(...) LAPACK_zhegst_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhegst(...) LAPACK_zhegst_base(__VA_ARGS__) -#endif - -#define LAPACK_chegv_base LAPACK_GLOBAL(chegv,CHEGV) -void LAPACK_chegv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chegv(...) LAPACK_chegv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chegv(...) LAPACK_chegv_base(__VA_ARGS__) -#endif - -#define LAPACK_zhegv_base LAPACK_GLOBAL(zhegv,ZHEGV) -void LAPACK_zhegv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhegv(...) LAPACK_zhegv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhegv(...) LAPACK_zhegv_base(__VA_ARGS__) -#endif - -#define LAPACK_chegv_2stage_base LAPACK_GLOBAL(chegv_2stage,CHEGV_2STAGE) -void LAPACK_chegv_2stage_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chegv_2stage(...) LAPACK_chegv_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chegv_2stage(...) LAPACK_chegv_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhegv_2stage_base LAPACK_GLOBAL(zhegv_2stage,ZHEGV_2STAGE) -void LAPACK_zhegv_2stage_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhegv_2stage(...) LAPACK_zhegv_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhegv_2stage(...) LAPACK_zhegv_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chegvd_base LAPACK_GLOBAL(chegvd,CHEGVD) -void LAPACK_chegvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float* W, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chegvd(...) LAPACK_chegvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chegvd(...) LAPACK_chegvd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhegvd_base LAPACK_GLOBAL(zhegvd,ZHEGVD) -void LAPACK_zhegvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double* W, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhegvd(...) LAPACK_zhegvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhegvd(...) LAPACK_zhegvd_base(__VA_ARGS__) -#endif - -#define LAPACK_chegvx_base LAPACK_GLOBAL(chegvx,CHEGVX) -void LAPACK_chegvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chegvx(...) LAPACK_chegvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chegvx(...) LAPACK_chegvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhegvx_base LAPACK_GLOBAL(zhegvx,ZHEGVX) -void LAPACK_zhegvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhegvx(...) LAPACK_zhegvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhegvx(...) LAPACK_zhegvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cherfs_base LAPACK_GLOBAL(cherfs,CHERFS) -void LAPACK_cherfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cherfs(...) LAPACK_cherfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cherfs(...) LAPACK_cherfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zherfs_base LAPACK_GLOBAL(zherfs,ZHERFS) -void LAPACK_zherfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zherfs(...) LAPACK_zherfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zherfs(...) LAPACK_zherfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cherfsx_base LAPACK_GLOBAL(cherfsx,CHERFSX) -void LAPACK_cherfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const float* S, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cherfsx(...) LAPACK_cherfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cherfsx(...) LAPACK_cherfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_zherfsx_base LAPACK_GLOBAL(zherfsx,ZHERFSX) -void LAPACK_zherfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const double* S, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zherfsx(...) LAPACK_zherfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zherfsx(...) LAPACK_zherfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_chesv_base LAPACK_GLOBAL(chesv,CHESV) -void LAPACK_chesv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesv(...) LAPACK_chesv_base(__VA_ARGS__, 1) -#else - #define LAPACK_chesv(...) LAPACK_chesv_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesv_base LAPACK_GLOBAL(zhesv,ZHESV) -void LAPACK_zhesv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesv(...) LAPACK_zhesv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhesv(...) LAPACK_zhesv_base(__VA_ARGS__) -#endif - -#define LAPACK_chesv_aa_base LAPACK_GLOBAL(chesv_aa,CHESV_AA) -void LAPACK_chesv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesv_aa(...) LAPACK_chesv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_chesv_aa(...) LAPACK_chesv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesv_aa_base LAPACK_GLOBAL(zhesv_aa,ZHESV_AA) -void LAPACK_zhesv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesv_aa(...) LAPACK_zhesv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhesv_aa(...) LAPACK_zhesv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_chesv_aa_2stage_base LAPACK_GLOBAL(chesv_aa_2stage,CHESV_AA_2STAGE) -void LAPACK_chesv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesv_aa_2stage(...) LAPACK_chesv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_chesv_aa_2stage(...) LAPACK_chesv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesv_aa_2stage_base LAPACK_GLOBAL(zhesv_aa_2stage,ZHESV_AA_2STAGE) -void LAPACK_zhesv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesv_aa_2stage(...) LAPACK_zhesv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhesv_aa_2stage(...) LAPACK_zhesv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chesv_rk_base LAPACK_GLOBAL(chesv_rk,CHESV_RK) -void LAPACK_chesv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* E, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesv_rk(...) LAPACK_chesv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_chesv_rk(...) LAPACK_chesv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesv_rk_base LAPACK_GLOBAL(zhesv_rk,ZHESV_RK) -void LAPACK_zhesv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* E, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesv_rk(...) LAPACK_zhesv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhesv_rk(...) LAPACK_zhesv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_chesv_rook_base LAPACK_GLOBAL(chesv_rook,CHESV_ROOK) -void LAPACK_chesv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesv_rook(...) LAPACK_chesv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_chesv_rook(...) LAPACK_chesv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesv_rook_base LAPACK_GLOBAL(zhesv_rook,ZHESV_ROOK) -void LAPACK_zhesv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesv_rook(...) LAPACK_zhesv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhesv_rook(...) LAPACK_zhesv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_chesvx_base LAPACK_GLOBAL(chesvx,CHESVX) -void LAPACK_chesvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesvx(...) LAPACK_chesvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chesvx(...) LAPACK_chesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesvx_base LAPACK_GLOBAL(zhesvx,ZHESVX) -void LAPACK_zhesvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesvx(...) LAPACK_zhesvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhesvx(...) LAPACK_zhesvx_base(__VA_ARGS__) -#endif - -#define LAPACK_chesvxx_base LAPACK_GLOBAL(chesvxx,CHESVXX) -void LAPACK_chesvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chesvxx(...) LAPACK_chesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chesvxx(...) LAPACK_chesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhesvxx_base LAPACK_GLOBAL(zhesvxx,ZHESVXX) -void LAPACK_zhesvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhesvxx(...) LAPACK_zhesvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhesvxx(...) LAPACK_zhesvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_cheswapr_base LAPACK_GLOBAL(cheswapr,CHESWAPR) -void LAPACK_cheswapr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cheswapr(...) LAPACK_cheswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cheswapr(...) LAPACK_cheswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_zheswapr_base LAPACK_GLOBAL(zheswapr,ZHESWAPR) -void LAPACK_zheswapr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zheswapr(...) LAPACK_zheswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zheswapr(...) LAPACK_zheswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrd_base LAPACK_GLOBAL(chetrd,CHETRD) -void LAPACK_chetrd_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* D, - float* E, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrd(...) LAPACK_chetrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrd(...) LAPACK_chetrd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrd_base LAPACK_GLOBAL(zhetrd,ZHETRD) -void LAPACK_zhetrd_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* D, - double* E, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrd(...) LAPACK_zhetrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrd(...) LAPACK_zhetrd_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrd_2stage_base LAPACK_GLOBAL(chetrd_2stage,CHETRD_2STAGE) -void LAPACK_chetrd_2stage_base( - char const* vect, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - float* D, - float* E, - lapack_complex_float* tau, - lapack_complex_float* HOUS2, lapack_int const* lhous2, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrd_2stage(...) LAPACK_chetrd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chetrd_2stage(...) LAPACK_chetrd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrd_2stage_base LAPACK_GLOBAL(zhetrd_2stage,ZHETRD_2STAGE) -void LAPACK_zhetrd_2stage_base( - char const* vect, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - double* D, - double* E, - lapack_complex_double* tau, - lapack_complex_double* HOUS2, lapack_int const* lhous2, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrd_2stage(...) LAPACK_zhetrd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhetrd_2stage(...) LAPACK_zhetrd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrf_base LAPACK_GLOBAL(chetrf,CHETRF) -void LAPACK_chetrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrf(...) LAPACK_chetrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrf(...) LAPACK_chetrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrf_base LAPACK_GLOBAL(zhetrf,ZHETRF) -void LAPACK_zhetrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrf(...) LAPACK_zhetrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrf(...) LAPACK_zhetrf_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrf_aa_base LAPACK_GLOBAL(chetrf_aa,CHETRF_AA) -void LAPACK_chetrf_aa_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrf_aa(...) LAPACK_chetrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrf_aa(...) LAPACK_chetrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrf_aa_base LAPACK_GLOBAL(zhetrf_aa,ZHETRF_AA) -void LAPACK_zhetrf_aa_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrf_aa(...) LAPACK_zhetrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrf_aa(...) LAPACK_zhetrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrf_aa_2stage_base LAPACK_GLOBAL(chetrf_aa_2stage,CHETRF_AA_2STAGE) -void LAPACK_chetrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrf_aa_2stage(...) LAPACK_chetrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrf_aa_2stage(...) LAPACK_chetrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrf_aa_2stage_base LAPACK_GLOBAL(zhetrf_aa_2stage,ZHETRF_AA_2STAGE) -void LAPACK_zhetrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrf_aa_2stage(...) LAPACK_zhetrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrf_aa_2stage(...) LAPACK_zhetrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrf_rk_base LAPACK_GLOBAL(chetrf_rk,CHETRF_RK) -void LAPACK_chetrf_rk_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* E, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrf_rk(...) LAPACK_chetrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrf_rk(...) LAPACK_chetrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrf_rk_base LAPACK_GLOBAL(zhetrf_rk,ZHETRF_RK) -void LAPACK_zhetrf_rk_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* E, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrf_rk(...) LAPACK_zhetrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrf_rk(...) LAPACK_zhetrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrf_rook_base LAPACK_GLOBAL(chetrf_rook,CHETRF_ROOK) -void LAPACK_chetrf_rook_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrf_rook(...) LAPACK_chetrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrf_rook(...) LAPACK_chetrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrf_rook_base LAPACK_GLOBAL(zhetrf_rook,ZHETRF_ROOK) -void LAPACK_zhetrf_rook_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrf_rook(...) LAPACK_zhetrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrf_rook(...) LAPACK_zhetrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_chetri_base LAPACK_GLOBAL(chetri,CHETRI) -void LAPACK_chetri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetri(...) LAPACK_chetri_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetri(...) LAPACK_chetri_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetri_base LAPACK_GLOBAL(zhetri,ZHETRI) -void LAPACK_zhetri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetri(...) LAPACK_zhetri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetri(...) LAPACK_zhetri_base(__VA_ARGS__) -#endif - -#define LAPACK_chetri2_base LAPACK_GLOBAL(chetri2,CHETRI2) -void LAPACK_chetri2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetri2(...) LAPACK_chetri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetri2(...) LAPACK_chetri2_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetri2_base LAPACK_GLOBAL(zhetri2,ZHETRI2) -void LAPACK_zhetri2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetri2(...) LAPACK_zhetri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetri2(...) LAPACK_zhetri2_base(__VA_ARGS__) -#endif - -#define LAPACK_chetri2x_base LAPACK_GLOBAL(chetri2x,CHETRI2X) -void LAPACK_chetri2x_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetri2x(...) LAPACK_chetri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetri2x(...) LAPACK_chetri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetri2x_base LAPACK_GLOBAL(zhetri2x,ZHETRI2X) -void LAPACK_zhetri2x_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetri2x(...) LAPACK_zhetri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetri2x(...) LAPACK_zhetri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_chetri_3_base LAPACK_GLOBAL(chetri_3,CHETRI_3) -void LAPACK_chetri_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetri_3(...) LAPACK_chetri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetri_3(...) LAPACK_chetri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetri_3_base LAPACK_GLOBAL(zhetri_3,ZHETRI_3) -void LAPACK_zhetri_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetri_3(...) LAPACK_zhetri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetri_3(...) LAPACK_zhetri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs_base LAPACK_GLOBAL(chetrs,CHETRS) -void LAPACK_chetrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs(...) LAPACK_chetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs(...) LAPACK_chetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs_base LAPACK_GLOBAL(zhetrs,ZHETRS) -void LAPACK_zhetrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs(...) LAPACK_zhetrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs(...) LAPACK_zhetrs_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs2_base LAPACK_GLOBAL(chetrs2,CHETRS2) -void LAPACK_chetrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs2(...) LAPACK_chetrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs2(...) LAPACK_chetrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs2_base LAPACK_GLOBAL(zhetrs2,ZHETRS2) -void LAPACK_zhetrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs2(...) LAPACK_zhetrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs2(...) LAPACK_zhetrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs_3_base LAPACK_GLOBAL(chetrs_3,CHETRS_3) -void LAPACK_chetrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs_3(...) LAPACK_chetrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs_3(...) LAPACK_chetrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs_3_base LAPACK_GLOBAL(zhetrs_3,ZHETRS_3) -void LAPACK_zhetrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs_3(...) LAPACK_zhetrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs_3(...) LAPACK_zhetrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs_aa_base LAPACK_GLOBAL(chetrs_aa,CHETRS_AA) -void LAPACK_chetrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs_aa(...) LAPACK_chetrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs_aa(...) LAPACK_chetrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs_aa_base LAPACK_GLOBAL(zhetrs_aa,ZHETRS_AA) -void LAPACK_zhetrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs_aa(...) LAPACK_zhetrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs_aa(...) LAPACK_zhetrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs_aa_2stage_base LAPACK_GLOBAL(chetrs_aa_2stage,CHETRS_AA_2STAGE) -void LAPACK_chetrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs_aa_2stage(...) LAPACK_chetrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs_aa_2stage(...) LAPACK_chetrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs_aa_2stage_base LAPACK_GLOBAL(zhetrs_aa_2stage,ZHETRS_AA_2STAGE) -void LAPACK_zhetrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs_aa_2stage(...) LAPACK_zhetrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs_aa_2stage(...) LAPACK_zhetrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_chetrs_rook_base LAPACK_GLOBAL(chetrs_rook,CHETRS_ROOK) -void LAPACK_chetrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chetrs_rook(...) LAPACK_chetrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_chetrs_rook(...) LAPACK_chetrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zhetrs_rook_base LAPACK_GLOBAL(zhetrs_rook,ZHETRS_ROOK) -void LAPACK_zhetrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhetrs_rook(...) LAPACK_zhetrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhetrs_rook(...) LAPACK_zhetrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_chfrk_base LAPACK_GLOBAL(chfrk,CHFRK) -void LAPACK_chfrk_base( - char const* transr, char const* uplo, char const* trans, - lapack_int const* n, lapack_int const* k, - float const* alpha, - lapack_complex_float const* A, lapack_int const* lda, - float const* beta, - lapack_complex_float* C -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chfrk(...) LAPACK_chfrk_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chfrk(...) LAPACK_chfrk_base(__VA_ARGS__) -#endif - -#define LAPACK_zhfrk_base LAPACK_GLOBAL(zhfrk,ZHFRK) -void LAPACK_zhfrk_base( - char const* transr, char const* uplo, char const* trans, - lapack_int const* n, lapack_int const* k, - double const* alpha, - lapack_complex_double const* A, lapack_int const* lda, - double const* beta, - lapack_complex_double* C -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhfrk(...) LAPACK_zhfrk_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhfrk(...) LAPACK_zhfrk_base(__VA_ARGS__) -#endif - -#define LAPACK_chgeqz_base LAPACK_GLOBAL(chgeqz,CHGEQZ) -void LAPACK_chgeqz_base( - char const* job, char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* H, lapack_int const* ldh, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chgeqz(...) LAPACK_chgeqz_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chgeqz(...) LAPACK_chgeqz_base(__VA_ARGS__) -#endif - -#define LAPACK_dhgeqz_base LAPACK_GLOBAL(dhgeqz,DHGEQZ) -void LAPACK_dhgeqz_base( - char const* job, char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* H, lapack_int const* ldh, - double* T, lapack_int const* ldt, - double* alphar, - double* alphai, - double* beta, - double* Q, lapack_int const* ldq, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dhgeqz(...) LAPACK_dhgeqz_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dhgeqz(...) LAPACK_dhgeqz_base(__VA_ARGS__) -#endif - -#define LAPACK_shgeqz_base LAPACK_GLOBAL(shgeqz,SHGEQZ) -void LAPACK_shgeqz_base( - char const* job, char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* H, lapack_int const* ldh, - float* T, lapack_int const* ldt, - float* alphar, - float* alphai, - float* beta, - float* Q, lapack_int const* ldq, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_shgeqz(...) LAPACK_shgeqz_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_shgeqz(...) LAPACK_shgeqz_base(__VA_ARGS__) -#endif - -#define LAPACK_zhgeqz_base LAPACK_GLOBAL(zhgeqz,ZHGEQZ) -void LAPACK_zhgeqz_base( - char const* job, char const* compq, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* H, lapack_int const* ldh, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhgeqz(...) LAPACK_zhgeqz_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhgeqz(...) LAPACK_zhgeqz_base(__VA_ARGS__) -#endif - -#define LAPACK_chpcon_base LAPACK_GLOBAL(chpcon,CHPCON) -void LAPACK_chpcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpcon(...) LAPACK_chpcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_chpcon(...) LAPACK_chpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpcon_base LAPACK_GLOBAL(zhpcon,ZHPCON) -void LAPACK_zhpcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpcon(...) LAPACK_zhpcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhpcon(...) LAPACK_zhpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_chpev_base LAPACK_GLOBAL(chpev,CHPEV) -void LAPACK_chpev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpev(...) LAPACK_chpev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chpev(...) LAPACK_chpev_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpev_base LAPACK_GLOBAL(zhpev,ZHPEV) -void LAPACK_zhpev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpev(...) LAPACK_zhpev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhpev(...) LAPACK_zhpev_base(__VA_ARGS__) -#endif - -#define LAPACK_chpevd_base LAPACK_GLOBAL(chpevd,CHPEVD) -void LAPACK_chpevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpevd(...) LAPACK_chpevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chpevd(...) LAPACK_chpevd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpevd_base LAPACK_GLOBAL(zhpevd,ZHPEVD) -void LAPACK_zhpevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpevd(...) LAPACK_zhpevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhpevd(...) LAPACK_zhpevd_base(__VA_ARGS__) -#endif - -#define LAPACK_chpevx_base LAPACK_GLOBAL(chpevx,CHPEVX) -void LAPACK_chpevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpevx(...) LAPACK_chpevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chpevx(...) LAPACK_chpevx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpevx_base LAPACK_GLOBAL(zhpevx,ZHPEVX) -void LAPACK_zhpevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpevx(...) LAPACK_zhpevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhpevx(...) LAPACK_zhpevx_base(__VA_ARGS__) -#endif - -#define LAPACK_chpgst_base LAPACK_GLOBAL(chpgst,CHPGST) -void LAPACK_chpgst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_complex_float const* BP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpgst(...) LAPACK_chpgst_base(__VA_ARGS__, 1) -#else - #define LAPACK_chpgst(...) LAPACK_chpgst_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpgst_base LAPACK_GLOBAL(zhpgst,ZHPGST) -void LAPACK_zhpgst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_complex_double const* BP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpgst(...) LAPACK_zhpgst_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhpgst(...) LAPACK_zhpgst_base(__VA_ARGS__) -#endif - -#define LAPACK_chpgv_base LAPACK_GLOBAL(chpgv,CHPGV) -void LAPACK_chpgv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_complex_float* BP, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpgv(...) LAPACK_chpgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chpgv(...) LAPACK_chpgv_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpgv_base LAPACK_GLOBAL(zhpgv,ZHPGV) -void LAPACK_zhpgv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_complex_double* BP, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpgv(...) LAPACK_zhpgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhpgv(...) LAPACK_zhpgv_base(__VA_ARGS__) -#endif - -#define LAPACK_chpgvd_base LAPACK_GLOBAL(chpgvd,CHPGVD) -void LAPACK_chpgvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_complex_float* BP, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpgvd(...) LAPACK_chpgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chpgvd(...) LAPACK_chpgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpgvd_base LAPACK_GLOBAL(zhpgvd,ZHPGVD) -void LAPACK_zhpgvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_complex_double* BP, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpgvd(...) LAPACK_zhpgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhpgvd(...) LAPACK_zhpgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_chpgvx_base LAPACK_GLOBAL(chpgvx,CHPGVX) -void LAPACK_chpgvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_complex_float* BP, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, - float* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpgvx(...) LAPACK_chpgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chpgvx(...) LAPACK_chpgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpgvx_base LAPACK_GLOBAL(zhpgvx,ZHPGVX) -void LAPACK_zhpgvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_complex_double* BP, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, - double* rwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpgvx(...) LAPACK_zhpgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhpgvx(...) LAPACK_zhpgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_chprfs_base LAPACK_GLOBAL(chprfs,CHPRFS) -void LAPACK_chprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float const* AFP, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chprfs(...) LAPACK_chprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_chprfs(...) LAPACK_chprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zhprfs_base LAPACK_GLOBAL(zhprfs,ZHPRFS) -void LAPACK_zhprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double const* AFP, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhprfs(...) LAPACK_zhprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhprfs(...) LAPACK_zhprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_chpsv_base LAPACK_GLOBAL(chpsv,CHPSV) -void LAPACK_chpsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* AP, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpsv(...) LAPACK_chpsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_chpsv(...) LAPACK_chpsv_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpsv_base LAPACK_GLOBAL(zhpsv,ZHPSV) -void LAPACK_zhpsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* AP, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpsv(...) LAPACK_zhpsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhpsv(...) LAPACK_zhpsv_base(__VA_ARGS__) -#endif - -#define LAPACK_chpsvx_base LAPACK_GLOBAL(chpsvx,CHPSVX) -void LAPACK_chpsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float* AFP, lapack_int* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chpsvx(...) LAPACK_chpsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chpsvx(...) LAPACK_chpsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zhpsvx_base LAPACK_GLOBAL(zhpsvx,ZHPSVX) -void LAPACK_zhpsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double* AFP, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhpsvx(...) LAPACK_zhpsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhpsvx(...) LAPACK_zhpsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_chptrd_base LAPACK_GLOBAL(chptrd,CHPTRD) -void LAPACK_chptrd_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - float* D, - float* E, - lapack_complex_float* tau, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chptrd(...) LAPACK_chptrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_chptrd(...) LAPACK_chptrd_base(__VA_ARGS__) -#endif - -#define LAPACK_zhptrd_base LAPACK_GLOBAL(zhptrd,ZHPTRD) -void LAPACK_zhptrd_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - double* D, - double* E, - lapack_complex_double* tau, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhptrd(...) LAPACK_zhptrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhptrd(...) LAPACK_zhptrd_base(__VA_ARGS__) -#endif - -#define LAPACK_chptrf_base LAPACK_GLOBAL(chptrf,CHPTRF) -void LAPACK_chptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chptrf(...) LAPACK_chptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_chptrf(...) LAPACK_chptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zhptrf_base LAPACK_GLOBAL(zhptrf,ZHPTRF) -void LAPACK_zhptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhptrf(...) LAPACK_zhptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhptrf(...) LAPACK_zhptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_chptri_base LAPACK_GLOBAL(chptri,CHPTRI) -void LAPACK_chptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, lapack_int const* ipiv, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chptri(...) LAPACK_chptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_chptri(...) LAPACK_chptri_base(__VA_ARGS__) -#endif - -#define LAPACK_zhptri_base LAPACK_GLOBAL(zhptri,ZHPTRI) -void LAPACK_zhptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, lapack_int const* ipiv, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhptri(...) LAPACK_zhptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhptri(...) LAPACK_zhptri_base(__VA_ARGS__) -#endif - -#define LAPACK_chptrs_base LAPACK_GLOBAL(chptrs,CHPTRS) -void LAPACK_chptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chptrs(...) LAPACK_chptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_chptrs(...) LAPACK_chptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zhptrs_base LAPACK_GLOBAL(zhptrs,ZHPTRS) -void LAPACK_zhptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhptrs(...) LAPACK_zhptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zhptrs(...) LAPACK_zhptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_chsein_base LAPACK_GLOBAL(chsein,CHSEIN) -void LAPACK_chsein_base( - char const* side, char const* eigsrc, char const* initv, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float const* H, lapack_int const* ldh, - lapack_complex_float* W, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, - float* rwork, lapack_int* IFAILL, lapack_int* IFAILR, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chsein(...) LAPACK_chsein_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_chsein(...) LAPACK_chsein_base(__VA_ARGS__) -#endif - -#define LAPACK_dhsein_base LAPACK_GLOBAL(dhsein,DHSEIN) -void LAPACK_dhsein_base( - char const* side, char const* eigsrc, char const* initv, - lapack_logical* select, - lapack_int const* n, - double const* H, lapack_int const* ldh, - double* WR, - double const* WI, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - double* work, lapack_int* IFAILL, lapack_int* IFAILR, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dhsein(...) LAPACK_dhsein_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dhsein(...) LAPACK_dhsein_base(__VA_ARGS__) -#endif - -#define LAPACK_shsein_base LAPACK_GLOBAL(shsein,SHSEIN) -void LAPACK_shsein_base( - char const* side, char const* eigsrc, char const* initv, - lapack_logical* select, - lapack_int const* n, - float const* H, lapack_int const* ldh, - float* WR, - float const* WI, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - float* work, lapack_int* IFAILL, lapack_int* IFAILR, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_shsein(...) LAPACK_shsein_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_shsein(...) LAPACK_shsein_base(__VA_ARGS__) -#endif - -#define LAPACK_zhsein_base LAPACK_GLOBAL(zhsein,ZHSEIN) -void LAPACK_zhsein_base( - char const* side, char const* eigsrc, char const* initv, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double const* H, lapack_int const* ldh, - lapack_complex_double* W, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, - double* rwork, lapack_int* IFAILL, lapack_int* IFAILR, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhsein(...) LAPACK_zhsein_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zhsein(...) LAPACK_zhsein_base(__VA_ARGS__) -#endif - -#define LAPACK_chseqr_base LAPACK_GLOBAL(chseqr,CHSEQR) -void LAPACK_chseqr_base( - char const* job, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* H, lapack_int const* ldh, - lapack_complex_float* W, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_chseqr(...) LAPACK_chseqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_chseqr(...) LAPACK_chseqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dhseqr_base LAPACK_GLOBAL(dhseqr,DHSEQR) -void LAPACK_dhseqr_base( - char const* job, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* H, lapack_int const* ldh, - double* WR, - double* WI, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dhseqr(...) LAPACK_dhseqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dhseqr(...) LAPACK_dhseqr_base(__VA_ARGS__) -#endif - -#define LAPACK_shseqr_base LAPACK_GLOBAL(shseqr,SHSEQR) -void LAPACK_shseqr_base( - char const* job, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* H, lapack_int const* ldh, - float* WR, - float* WI, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_shseqr(...) LAPACK_shseqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_shseqr(...) LAPACK_shseqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zhseqr_base LAPACK_GLOBAL(zhseqr,ZHSEQR) -void LAPACK_zhseqr_base( - char const* job, char const* compz, - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* H, lapack_int const* ldh, - lapack_complex_double* W, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zhseqr(...) LAPACK_zhseqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zhseqr(...) LAPACK_zhseqr_base(__VA_ARGS__) -#endif - -#define LAPACK_clacgv LAPACK_GLOBAL(clacgv,CLACGV) -void LAPACK_clacgv( - lapack_int const* n, - lapack_complex_float* X, lapack_int const* incx ); - -#define LAPACK_zlacgv LAPACK_GLOBAL(zlacgv,ZLACGV) -void LAPACK_zlacgv( - lapack_int const* n, - lapack_complex_double* X, lapack_int const* incx ); - -#define LAPACK_clacn2 LAPACK_GLOBAL(clacn2,CLACN2) -void LAPACK_clacn2( - lapack_int const* n, - lapack_complex_float* V, - lapack_complex_float* X, - float* est, lapack_int* kase, lapack_int* ISAVE ); - -#define LAPACK_dlacn2 LAPACK_GLOBAL(dlacn2,DLACN2) -void LAPACK_dlacn2( - lapack_int const* n, - double* V, - double* X, lapack_int* ISGN, - double* est, lapack_int* kase, lapack_int* ISAVE ); - -#define LAPACK_slacn2 LAPACK_GLOBAL(slacn2,SLACN2) -void LAPACK_slacn2( - lapack_int const* n, - float* V, - float* X, lapack_int* ISGN, - float* est, lapack_int* kase, lapack_int* ISAVE ); - -#define LAPACK_zlacn2 LAPACK_GLOBAL(zlacn2,ZLACN2) -void LAPACK_zlacn2( - lapack_int const* n, - lapack_complex_double* V, - lapack_complex_double* X, - double* est, lapack_int* kase, lapack_int* ISAVE ); - -#define LAPACK_clacp2_base LAPACK_GLOBAL(clacp2,CLACP2) -void LAPACK_clacp2_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clacp2(...) LAPACK_clacp2_base(__VA_ARGS__, 1) -#else - #define LAPACK_clacp2(...) LAPACK_clacp2_base(__VA_ARGS__) -#endif - -#define LAPACK_zlacp2_base LAPACK_GLOBAL(zlacp2,ZLACP2) -void LAPACK_zlacp2_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlacp2(...) LAPACK_zlacp2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlacp2(...) LAPACK_zlacp2_base(__VA_ARGS__) -#endif - -#define LAPACK_clacpy_base LAPACK_GLOBAL(clacpy,CLACPY) -void LAPACK_clacpy_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clacpy(...) LAPACK_clacpy_base(__VA_ARGS__, 1) -#else - #define LAPACK_clacpy(...) LAPACK_clacpy_base(__VA_ARGS__) -#endif - -#define LAPACK_dlacpy_base LAPACK_GLOBAL(dlacpy,DLACPY) -void LAPACK_dlacpy_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlacpy(...) LAPACK_dlacpy_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlacpy(...) LAPACK_dlacpy_base(__VA_ARGS__) -#endif - -#define LAPACK_slacpy_base LAPACK_GLOBAL(slacpy,SLACPY) -void LAPACK_slacpy_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slacpy(...) LAPACK_slacpy_base(__VA_ARGS__, 1) -#else - #define LAPACK_slacpy(...) LAPACK_slacpy_base(__VA_ARGS__) -#endif - -#define LAPACK_zlacpy_base LAPACK_GLOBAL(zlacpy,ZLACPY) -void LAPACK_zlacpy_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlacpy(...) LAPACK_zlacpy_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlacpy(...) LAPACK_zlacpy_base(__VA_ARGS__) -#endif - -#define LAPACK_clacrm LAPACK_GLOBAL(clacrm,CLACRM) -void LAPACK_clacrm( - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - lapack_complex_float* C, lapack_int const* ldc, - float* rwork ); - -#define LAPACK_zlacrm LAPACK_GLOBAL(zlacrm,ZLACRM) -void LAPACK_zlacrm( - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - lapack_complex_double* C, lapack_int const* ldc, - double* rwork ); - -#define LAPACK_zlag2c LAPACK_GLOBAL(zlag2c,ZLAG2C) -void LAPACK_zlag2c( - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_float* SA, lapack_int const* ldsa, - lapack_int* info ); - -#define LAPACK_slag2d LAPACK_GLOBAL(slag2d,SLAG2D) -void LAPACK_slag2d( - lapack_int const* m, lapack_int const* n, - float const* SA, lapack_int const* ldsa, - double* A, lapack_int const* lda, - lapack_int* info ); - -#define LAPACK_dlag2s LAPACK_GLOBAL(dlag2s,DLAG2S) -void LAPACK_dlag2s( - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - float* SA, lapack_int const* ldsa, - lapack_int* info ); - -#define LAPACK_clag2z LAPACK_GLOBAL(clag2z,CLAG2Z) -void LAPACK_clag2z( - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* SA, lapack_int const* ldsa, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info ); - -#define LAPACK_clagge LAPACK_GLOBAL(clagge,CLAGGE) -void LAPACK_clagge( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* D, - lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dlagge LAPACK_GLOBAL(dlagge,DLAGGE) -void LAPACK_dlagge( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* D, - double* A, lapack_int const* lda, lapack_int* iseed, - double* work, - lapack_int* info ); - -#define LAPACK_slagge LAPACK_GLOBAL(slagge,SLAGGE) -void LAPACK_slagge( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* D, - float* A, lapack_int const* lda, lapack_int* iseed, - float* work, - lapack_int* info ); - -#define LAPACK_zlagge LAPACK_GLOBAL(zlagge,ZLAGGE) -void LAPACK_zlagge( - lapack_int const* m, lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* D, - lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_claghe LAPACK_GLOBAL(claghe,CLAGHE) -void LAPACK_claghe( - lapack_int const* n, lapack_int const* k, - float const* D, - lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_zlaghe LAPACK_GLOBAL(zlaghe,ZLAGHE) -void LAPACK_zlaghe( - lapack_int const* n, lapack_int const* k, - double const* D, - lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_clagsy LAPACK_GLOBAL(clagsy,CLAGSY) -void LAPACK_clagsy( - lapack_int const* n, lapack_int const* k, - float const* D, - lapack_complex_float* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dlagsy LAPACK_GLOBAL(dlagsy,DLAGSY) -void LAPACK_dlagsy( - lapack_int const* n, lapack_int const* k, - double const* D, - double* A, lapack_int const* lda, lapack_int* iseed, - double* work, - lapack_int* info ); - -#define LAPACK_slagsy LAPACK_GLOBAL(slagsy,SLAGSY) -void LAPACK_slagsy( - lapack_int const* n, lapack_int const* k, - float const* D, - float* A, lapack_int const* lda, lapack_int* iseed, - float* work, - lapack_int* info ); - -#define LAPACK_zlagsy LAPACK_GLOBAL(zlagsy,ZLAGSY) -void LAPACK_zlagsy( - lapack_int const* n, lapack_int const* k, - double const* D, - lapack_complex_double* A, lapack_int const* lda, lapack_int* iseed, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_dlamch_base LAPACK_GLOBAL(dlamch,DLAMCH) -double LAPACK_dlamch_base( - char const* cmach -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlamch(...) LAPACK_dlamch_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlamch(...) LAPACK_dlamch_base(__VA_ARGS__) -#endif - -#define LAPACK_slamch_base LAPACK_GLOBAL(slamch,SLAMCH) -lapack_float_return LAPACK_slamch_base( - char const* cmach -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slamch(...) LAPACK_slamch_base(__VA_ARGS__, 1) -#else - #define LAPACK_slamch(...) LAPACK_slamch_base(__VA_ARGS__) -#endif - -#define LAPACK_clangb_base LAPACK_GLOBAL(clangb,CLANGB) -lapack_float_return LAPACK_clangb_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clangb(...) LAPACK_clangb_base(__VA_ARGS__, 1) -#else - #define LAPACK_clangb(...) LAPACK_clangb_base(__VA_ARGS__) -#endif - -#define LAPACK_dlangb_base LAPACK_GLOBAL(dlangb,DLANGB) -double LAPACK_dlangb_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlangb(...) LAPACK_dlangb_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlangb(...) LAPACK_dlangb_base(__VA_ARGS__) -#endif - -#define LAPACK_slangb_base LAPACK_GLOBAL(slangb,SLANGB) -lapack_float_return LAPACK_slangb_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slangb(...) LAPACK_slangb_base(__VA_ARGS__, 1) -#else - #define LAPACK_slangb(...) LAPACK_slangb_base(__VA_ARGS__) -#endif - -#define LAPACK_zlangb_base LAPACK_GLOBAL(zlangb,ZLANGB) -double LAPACK_zlangb_base( - char const* norm, - lapack_int const* n, lapack_int const* kl, lapack_int const* ku, - lapack_complex_double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlangb(...) LAPACK_zlangb_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlangb(...) LAPACK_zlangb_base(__VA_ARGS__) -#endif - -#define LAPACK_clange_base LAPACK_GLOBAL(clange,CLANGE) -lapack_float_return LAPACK_clange_base( - char const* norm, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clange(...) LAPACK_clange_base(__VA_ARGS__, 1) -#else - #define LAPACK_clange(...) LAPACK_clange_base(__VA_ARGS__) -#endif - -#define LAPACK_dlange_base LAPACK_GLOBAL(dlange,DLANGE) -double LAPACK_dlange_base( - char const* norm, - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlange(...) LAPACK_dlange_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlange(...) LAPACK_dlange_base(__VA_ARGS__) -#endif - -#define LAPACK_slange_base LAPACK_GLOBAL(slange,SLANGE) -lapack_float_return LAPACK_slange_base( - char const* norm, - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slange(...) LAPACK_slange_base(__VA_ARGS__, 1) -#else - #define LAPACK_slange(...) LAPACK_slange_base(__VA_ARGS__) -#endif - -#define LAPACK_zlange_base LAPACK_GLOBAL(zlange,ZLANGE) -double LAPACK_zlange_base( - char const* norm, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlange(...) LAPACK_zlange_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlange(...) LAPACK_zlange_base(__VA_ARGS__) -#endif - -#define LAPACK_clangt_base LAPACK_GLOBAL(clangt,CLANGT) -lapack_float_return LAPACK_clangt_base( - char const* norm, - lapack_int const* n, - lapack_complex_float const* DL, - lapack_complex_float const* D, - lapack_complex_float const* DU -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clangt(...) LAPACK_clangt_base(__VA_ARGS__, 1) -#else - #define LAPACK_clangt(...) LAPACK_clangt_base(__VA_ARGS__) -#endif - -#define LAPACK_dlangt_base LAPACK_GLOBAL(dlangt,DLANGT) -double LAPACK_dlangt_base( - char const* norm, - lapack_int const* n, - double const* DL, - double const* D, - double const* DU -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlangt(...) LAPACK_dlangt_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlangt(...) LAPACK_dlangt_base(__VA_ARGS__) -#endif - -#define LAPACK_slangt_base LAPACK_GLOBAL(slangt,SLANGT) -lapack_float_return LAPACK_slangt_base( - char const* norm, - lapack_int const* n, - float const* DL, - float const* D, - float const* DU -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slangt(...) LAPACK_slangt_base(__VA_ARGS__, 1) -#else - #define LAPACK_slangt(...) LAPACK_slangt_base(__VA_ARGS__) -#endif - -#define LAPACK_zlangt_base LAPACK_GLOBAL(zlangt,ZLANGT) -double LAPACK_zlangt_base( - char const* norm, - lapack_int const* n, - lapack_complex_double const* DL, - lapack_complex_double const* D, - lapack_complex_double const* DU -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlangt(...) LAPACK_zlangt_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlangt(...) LAPACK_zlangt_base(__VA_ARGS__) -#endif - -#define LAPACK_clanhb_base LAPACK_GLOBAL(clanhb,CLANHB) -lapack_float_return LAPACK_clanhb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - lapack_complex_float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clanhb(...) LAPACK_clanhb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clanhb(...) LAPACK_clanhb_base(__VA_ARGS__) -#endif - -#define LAPACK_zlanhb_base LAPACK_GLOBAL(zlanhb,ZLANHB) -double LAPACK_zlanhb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - lapack_complex_double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlanhb(...) LAPACK_zlanhb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlanhb(...) LAPACK_zlanhb_base(__VA_ARGS__) -#endif - -#define LAPACK_clanhe_base LAPACK_GLOBAL(clanhe,CLANHE) -lapack_float_return LAPACK_clanhe_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clanhe(...) LAPACK_clanhe_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clanhe(...) LAPACK_clanhe_base(__VA_ARGS__) -#endif - -#define LAPACK_zlanhe_base LAPACK_GLOBAL(zlanhe,ZLANHE) -double LAPACK_zlanhe_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlanhe(...) LAPACK_zlanhe_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlanhe(...) LAPACK_zlanhe_base(__VA_ARGS__) -#endif - -#define LAPACK_clanhp_base LAPACK_GLOBAL(clanhp,CLANHP) -lapack_float_return LAPACK_clanhp_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clanhp(...) LAPACK_clanhp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clanhp(...) LAPACK_clanhp_base(__VA_ARGS__) -#endif - -#define LAPACK_zlanhp_base LAPACK_GLOBAL(zlanhp,ZLANHP) -double LAPACK_zlanhp_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlanhp(...) LAPACK_zlanhp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlanhp(...) LAPACK_zlanhp_base(__VA_ARGS__) -#endif - -#define LAPACK_clanhs_base LAPACK_GLOBAL(clanhs,CLANHS) -lapack_float_return LAPACK_clanhs_base( - char const* norm, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clanhs(...) LAPACK_clanhs_base(__VA_ARGS__, 1) -#else - #define LAPACK_clanhs(...) LAPACK_clanhs_base(__VA_ARGS__) -#endif - -#define LAPACK_dlanhs_base LAPACK_GLOBAL(dlanhs,DLANHS) -double LAPACK_dlanhs_base( - char const* norm, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlanhs(...) LAPACK_dlanhs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlanhs(...) LAPACK_dlanhs_base(__VA_ARGS__) -#endif - -#define LAPACK_slanhs_base LAPACK_GLOBAL(slanhs,SLANHS) -lapack_float_return LAPACK_slanhs_base( - char const* norm, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slanhs(...) LAPACK_slanhs_base(__VA_ARGS__, 1) -#else - #define LAPACK_slanhs(...) LAPACK_slanhs_base(__VA_ARGS__) -#endif - -#define LAPACK_zlanhs_base LAPACK_GLOBAL(zlanhs,ZLANHS) -double LAPACK_zlanhs_base( - char const* norm, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlanhs(...) LAPACK_zlanhs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlanhs(...) LAPACK_zlanhs_base(__VA_ARGS__) -#endif - -#define LAPACK_clanht_base LAPACK_GLOBAL(clanht,CLANHT) -lapack_float_return LAPACK_clanht_base( - char const* norm, - lapack_int const* n, - float const* D, - lapack_complex_float const* E -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clanht(...) LAPACK_clanht_base(__VA_ARGS__, 1) -#else - #define LAPACK_clanht(...) LAPACK_clanht_base(__VA_ARGS__) -#endif - -#define LAPACK_zlanht_base LAPACK_GLOBAL(zlanht,ZLANHT) -double LAPACK_zlanht_base( - char const* norm, - lapack_int const* n, - double const* D, - lapack_complex_double const* E -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlanht(...) LAPACK_zlanht_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlanht(...) LAPACK_zlanht_base(__VA_ARGS__) -#endif - -#define LAPACK_clansb_base LAPACK_GLOBAL(clansb,CLANSB) -lapack_float_return LAPACK_clansb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - lapack_complex_float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clansb(...) LAPACK_clansb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clansb(...) LAPACK_clansb_base(__VA_ARGS__) -#endif - -#define LAPACK_dlansb_base LAPACK_GLOBAL(dlansb,DLANSB) -double LAPACK_dlansb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlansb(...) LAPACK_dlansb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dlansb(...) LAPACK_dlansb_base(__VA_ARGS__) -#endif - -#define LAPACK_slansb_base LAPACK_GLOBAL(slansb,SLANSB) -lapack_float_return LAPACK_slansb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slansb(...) LAPACK_slansb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_slansb(...) LAPACK_slansb_base(__VA_ARGS__) -#endif - -#define LAPACK_zlansb_base LAPACK_GLOBAL(zlansb,ZLANSB) -double LAPACK_zlansb_base( - char const* norm, char const* uplo, - lapack_int const* n, lapack_int const* k, - lapack_complex_double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlansb(...) LAPACK_zlansb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlansb(...) LAPACK_zlansb_base(__VA_ARGS__) -#endif - -#define LAPACK_clansp_base LAPACK_GLOBAL(clansp,CLANSP) -lapack_float_return LAPACK_clansp_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clansp(...) LAPACK_clansp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clansp(...) LAPACK_clansp_base(__VA_ARGS__) -#endif - -#define LAPACK_dlansp_base LAPACK_GLOBAL(dlansp,DLANSP) -double LAPACK_dlansp_base( - char const* norm, char const* uplo, - lapack_int const* n, - double const* AP, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlansp(...) LAPACK_dlansp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dlansp(...) LAPACK_dlansp_base(__VA_ARGS__) -#endif - -#define LAPACK_slansp_base LAPACK_GLOBAL(slansp,SLANSP) -lapack_float_return LAPACK_slansp_base( - char const* norm, char const* uplo, - lapack_int const* n, - float const* AP, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slansp(...) LAPACK_slansp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_slansp(...) LAPACK_slansp_base(__VA_ARGS__) -#endif - -#define LAPACK_zlansp_base LAPACK_GLOBAL(zlansp,ZLANSP) -double LAPACK_zlansp_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlansp(...) LAPACK_zlansp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlansp(...) LAPACK_zlansp_base(__VA_ARGS__) -#endif - -#define LAPACK_dlanst_base LAPACK_GLOBAL(dlanst,DLANST) -double LAPACK_dlanst_base( - char const* norm, - lapack_int const* n, - double const* D, - double const* E -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlanst(...) LAPACK_dlanst_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlanst(...) LAPACK_dlanst_base(__VA_ARGS__) -#endif - -#define LAPACK_slanst_base LAPACK_GLOBAL(slanst,SLANST) -lapack_float_return LAPACK_slanst_base( - char const* norm, - lapack_int const* n, - float const* D, - float const* E -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slanst(...) LAPACK_slanst_base(__VA_ARGS__, 1) -#else - #define LAPACK_slanst(...) LAPACK_slanst_base(__VA_ARGS__) -#endif - -#define LAPACK_clansy_base LAPACK_GLOBAL(clansy,CLANSY) -lapack_float_return LAPACK_clansy_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clansy(...) LAPACK_clansy_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clansy(...) LAPACK_clansy_base(__VA_ARGS__) -#endif - -#define LAPACK_dlansy_base LAPACK_GLOBAL(dlansy,DLANSY) -double LAPACK_dlansy_base( - char const* norm, char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlansy(...) LAPACK_dlansy_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dlansy(...) LAPACK_dlansy_base(__VA_ARGS__) -#endif - -#define LAPACK_slansy_base LAPACK_GLOBAL(slansy,SLANSY) -lapack_float_return LAPACK_slansy_base( - char const* norm, char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slansy(...) LAPACK_slansy_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_slansy(...) LAPACK_slansy_base(__VA_ARGS__) -#endif - -#define LAPACK_zlansy_base LAPACK_GLOBAL(zlansy,ZLANSY) -double LAPACK_zlansy_base( - char const* norm, char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlansy(...) LAPACK_zlansy_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlansy(...) LAPACK_zlansy_base(__VA_ARGS__) -#endif - -#define LAPACK_clantb_base LAPACK_GLOBAL(clantb,CLANTB) -lapack_float_return LAPACK_clantb_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* k, - lapack_complex_float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clantb(...) LAPACK_clantb_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_clantb(...) LAPACK_clantb_base(__VA_ARGS__) -#endif - -#define LAPACK_dlantb_base LAPACK_GLOBAL(dlantb,DLANTB) -double LAPACK_dlantb_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* k, - double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlantb(...) LAPACK_dlantb_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dlantb(...) LAPACK_dlantb_base(__VA_ARGS__) -#endif - -#define LAPACK_slantb_base LAPACK_GLOBAL(slantb,SLANTB) -lapack_float_return LAPACK_slantb_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* k, - float const* AB, lapack_int const* ldab, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slantb(...) LAPACK_slantb_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_slantb(...) LAPACK_slantb_base(__VA_ARGS__) -#endif - -#define LAPACK_zlantb_base LAPACK_GLOBAL(zlantb,ZLANTB) -double LAPACK_zlantb_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* k, - lapack_complex_double const* AB, lapack_int const* ldab, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlantb(...) LAPACK_zlantb_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zlantb(...) LAPACK_zlantb_base(__VA_ARGS__) -#endif - -#define LAPACK_clantp_base LAPACK_GLOBAL(clantp,CLANTP) -lapack_float_return LAPACK_clantp_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float const* AP, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clantp(...) LAPACK_clantp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_clantp(...) LAPACK_clantp_base(__VA_ARGS__) -#endif - -#define LAPACK_dlantp_base LAPACK_GLOBAL(dlantp,DLANTP) -double LAPACK_dlantp_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - double const* AP, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlantp(...) LAPACK_dlantp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dlantp(...) LAPACK_dlantp_base(__VA_ARGS__) -#endif - -#define LAPACK_slantp_base LAPACK_GLOBAL(slantp,SLANTP) -lapack_float_return LAPACK_slantp_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - float const* AP, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slantp(...) LAPACK_slantp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_slantp(...) LAPACK_slantp_base(__VA_ARGS__) -#endif - -#define LAPACK_zlantp_base LAPACK_GLOBAL(zlantp,ZLANTP) -double LAPACK_zlantp_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double const* AP, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlantp(...) LAPACK_zlantp_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zlantp(...) LAPACK_zlantp_base(__VA_ARGS__) -#endif - -#define LAPACK_clantr_base LAPACK_GLOBAL(clantr,CLANTR) -lapack_float_return LAPACK_clantr_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clantr(...) LAPACK_clantr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_clantr(...) LAPACK_clantr_base(__VA_ARGS__) -#endif - -#define LAPACK_dlantr_base LAPACK_GLOBAL(dlantr,DLANTR) -double LAPACK_dlantr_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlantr(...) LAPACK_dlantr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dlantr(...) LAPACK_dlantr_base(__VA_ARGS__) -#endif - -#define LAPACK_slantr_base LAPACK_GLOBAL(slantr,SLANTR) -lapack_float_return LAPACK_slantr_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slantr(...) LAPACK_slantr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_slantr(...) LAPACK_slantr_base(__VA_ARGS__) -#endif - -#define LAPACK_zlantr_base LAPACK_GLOBAL(zlantr,ZLANTR) -double LAPACK_zlantr_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlantr(...) LAPACK_zlantr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zlantr(...) LAPACK_zlantr_base(__VA_ARGS__) -#endif - -#define LAPACK_clapmr LAPACK_GLOBAL(clapmr,CLAPMR) -void LAPACK_clapmr( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - lapack_complex_float* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_dlapmr LAPACK_GLOBAL(dlapmr,DLAPMR) -void LAPACK_dlapmr( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - double* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_slapmr LAPACK_GLOBAL(slapmr,SLAPMR) -void LAPACK_slapmr( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - float* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_zlapmr LAPACK_GLOBAL(zlapmr,ZLAPMR) -void LAPACK_zlapmr( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - lapack_complex_double* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_clapmt LAPACK_GLOBAL(clapmt,CLAPMT) -void LAPACK_clapmt( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - lapack_complex_float* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_dlapmt LAPACK_GLOBAL(dlapmt,DLAPMT) -void LAPACK_dlapmt( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - double* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_slapmt LAPACK_GLOBAL(slapmt,SLAPMT) -void LAPACK_slapmt( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - float* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_zlapmt LAPACK_GLOBAL(zlapmt,ZLAPMT) -void LAPACK_zlapmt( - lapack_logical const* forwrd, lapack_int const* m, lapack_int const* n, - lapack_complex_double* X, lapack_int const* ldx, lapack_int* K ); - -#define LAPACK_dlapy2 LAPACK_GLOBAL(dlapy2,DLAPY2) -double LAPACK_dlapy2( - double const* x, - double const* y ); - -#define LAPACK_slapy2 LAPACK_GLOBAL(slapy2,SLAPY2) -lapack_float_return LAPACK_slapy2( - float const* x, - float const* y ); - -#define LAPACK_dlapy3 LAPACK_GLOBAL(dlapy3,DLAPY3) -double LAPACK_dlapy3( - double const* x, - double const* y, - double const* z ); - -#define LAPACK_slapy3 LAPACK_GLOBAL(slapy3,SLAPY3) -lapack_float_return LAPACK_slapy3( - float const* x, - float const* y, - float const* z ); - -#define LAPACK_clarcm LAPACK_GLOBAL(clarcm,CLARCM) -void LAPACK_clarcm( - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* C, lapack_int const* ldc, - float* rwork ); - -#define LAPACK_zlarcm LAPACK_GLOBAL(zlarcm,ZLARCM) -void LAPACK_zlarcm( - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* C, lapack_int const* ldc, - double* rwork ); - -#define LAPACK_clarf_base LAPACK_GLOBAL(clarf,CLARF) -void LAPACK_clarf_base( - char const* side, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* V, lapack_int const* incv, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clarf(...) LAPACK_clarf_base(__VA_ARGS__, 1) -#else - #define LAPACK_clarf(...) LAPACK_clarf_base(__VA_ARGS__) -#endif - -#define LAPACK_dlarf_base LAPACK_GLOBAL(dlarf,DLARF) -void LAPACK_dlarf_base( - char const* side, - lapack_int const* m, lapack_int const* n, - double const* V, lapack_int const* incv, - double const* tau, - double* C, lapack_int const* ldc, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlarf(...) LAPACK_dlarf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlarf(...) LAPACK_dlarf_base(__VA_ARGS__) -#endif - -#define LAPACK_slarf_base LAPACK_GLOBAL(slarf,SLARF) -void LAPACK_slarf_base( - char const* side, - lapack_int const* m, lapack_int const* n, - float const* V, lapack_int const* incv, - float const* tau, - float* C, lapack_int const* ldc, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slarf(...) LAPACK_slarf_base(__VA_ARGS__, 1) -#else - #define LAPACK_slarf(...) LAPACK_slarf_base(__VA_ARGS__) -#endif - -#define LAPACK_zlarf_base LAPACK_GLOBAL(zlarf,ZLARF) -void LAPACK_zlarf_base( - char const* side, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* V, lapack_int const* incv, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlarf(...) LAPACK_zlarf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlarf(...) LAPACK_zlarf_base(__VA_ARGS__) -#endif - -#define LAPACK_clarfb_base LAPACK_GLOBAL(clarfb,CLARFB) -void LAPACK_clarfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clarfb(...) LAPACK_clarfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_clarfb(...) LAPACK_clarfb_base(__VA_ARGS__) -#endif - -#define LAPACK_dlarfb_base LAPACK_GLOBAL(dlarfb,DLARFB) -void LAPACK_dlarfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* V, lapack_int const* ldv, - double const* T, lapack_int const* ldt, - double* C, lapack_int const* ldc, - double* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlarfb(...) LAPACK_dlarfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dlarfb(...) LAPACK_dlarfb_base(__VA_ARGS__) -#endif - -#define LAPACK_slarfb_base LAPACK_GLOBAL(slarfb,SLARFB) -void LAPACK_slarfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* V, lapack_int const* ldv, - float const* T, lapack_int const* ldt, - float* C, lapack_int const* ldc, - float* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slarfb(...) LAPACK_slarfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_slarfb(...) LAPACK_slarfb_base(__VA_ARGS__) -#endif - -#define LAPACK_zlarfb_base LAPACK_GLOBAL(zlarfb,ZLARFB) -void LAPACK_zlarfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlarfb(...) LAPACK_zlarfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_zlarfb(...) LAPACK_zlarfb_base(__VA_ARGS__) -#endif - -#define LAPACK_clarfg LAPACK_GLOBAL(clarfg,CLARFG) -void LAPACK_clarfg( - lapack_int const* n, - lapack_complex_float* alpha, - lapack_complex_float* X, lapack_int const* incx, - lapack_complex_float* tau ); - -#define LAPACK_dlarfg LAPACK_GLOBAL(dlarfg,DLARFG) -void LAPACK_dlarfg( - lapack_int const* n, - double* alpha, - double* X, lapack_int const* incx, - double* tau ); - -#define LAPACK_slarfg LAPACK_GLOBAL(slarfg,SLARFG) -void LAPACK_slarfg( - lapack_int const* n, - float* alpha, - float* X, lapack_int const* incx, - float* tau ); - -#define LAPACK_zlarfg LAPACK_GLOBAL(zlarfg,ZLARFG) -void LAPACK_zlarfg( - lapack_int const* n, - lapack_complex_double* alpha, - lapack_complex_double* X, lapack_int const* incx, - lapack_complex_double* tau ); - -#define LAPACK_clarft_base LAPACK_GLOBAL(clarft,CLARFT) -void LAPACK_clarft_base( - char const* direct, char const* storev, - lapack_int const* n, lapack_int const* k, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* tau, - lapack_complex_float* T, lapack_int const* ldt -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clarft(...) LAPACK_clarft_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_clarft(...) LAPACK_clarft_base(__VA_ARGS__) -#endif - -#define LAPACK_dlarft_base LAPACK_GLOBAL(dlarft,DLARFT) -void LAPACK_dlarft_base( - char const* direct, char const* storev, - lapack_int const* n, lapack_int const* k, - double const* V, lapack_int const* ldv, - double const* tau, - double* T, lapack_int const* ldt -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlarft(...) LAPACK_dlarft_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dlarft(...) LAPACK_dlarft_base(__VA_ARGS__) -#endif - -#define LAPACK_slarft_base LAPACK_GLOBAL(slarft,SLARFT) -void LAPACK_slarft_base( - char const* direct, char const* storev, - lapack_int const* n, lapack_int const* k, - float const* V, lapack_int const* ldv, - float const* tau, - float* T, lapack_int const* ldt -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slarft(...) LAPACK_slarft_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_slarft(...) LAPACK_slarft_base(__VA_ARGS__) -#endif - -#define LAPACK_zlarft_base LAPACK_GLOBAL(zlarft,ZLARFT) -void LAPACK_zlarft_base( - char const* direct, char const* storev, - lapack_int const* n, lapack_int const* k, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* tau, - lapack_complex_double* T, lapack_int const* ldt -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlarft(...) LAPACK_zlarft_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zlarft(...) LAPACK_zlarft_base(__VA_ARGS__) -#endif - -#define LAPACK_clarfx_base LAPACK_GLOBAL(clarfx,CLARFX) -void LAPACK_clarfx_base( - char const* side, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* V, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clarfx(...) LAPACK_clarfx_base(__VA_ARGS__, 1) -#else - #define LAPACK_clarfx(...) LAPACK_clarfx_base(__VA_ARGS__) -#endif - -#define LAPACK_dlarfx_base LAPACK_GLOBAL(dlarfx,DLARFX) -void LAPACK_dlarfx_base( - char const* side, - lapack_int const* m, lapack_int const* n, - double const* V, - double const* tau, - double* C, lapack_int const* ldc, - double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlarfx(...) LAPACK_dlarfx_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlarfx(...) LAPACK_dlarfx_base(__VA_ARGS__) -#endif - -#define LAPACK_slarfx_base LAPACK_GLOBAL(slarfx,SLARFX) -void LAPACK_slarfx_base( - char const* side, - lapack_int const* m, lapack_int const* n, - float const* V, - float const* tau, - float* C, lapack_int const* ldc, - float* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slarfx(...) LAPACK_slarfx_base(__VA_ARGS__, 1) -#else - #define LAPACK_slarfx(...) LAPACK_slarfx_base(__VA_ARGS__) -#endif - -#define LAPACK_zlarfx_base LAPACK_GLOBAL(zlarfx,ZLARFX) -void LAPACK_zlarfx_base( - char const* side, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* V, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlarfx(...) LAPACK_zlarfx_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlarfx(...) LAPACK_zlarfx_base(__VA_ARGS__) -#endif - -#define LAPACK_clarnv LAPACK_GLOBAL(clarnv,CLARNV) -void LAPACK_clarnv( - lapack_int const* idist, lapack_int* iseed, lapack_int const* n, - lapack_complex_float* X ); - -#define LAPACK_dlarnv LAPACK_GLOBAL(dlarnv,DLARNV) -void LAPACK_dlarnv( - lapack_int const* idist, lapack_int* iseed, lapack_int const* n, - double* X ); - -#define LAPACK_slarnv LAPACK_GLOBAL(slarnv,SLARNV) -void LAPACK_slarnv( - lapack_int const* idist, lapack_int* iseed, lapack_int const* n, - float* X ); - -#define LAPACK_zlarnv LAPACK_GLOBAL(zlarnv,ZLARNV) -void LAPACK_zlarnv( - lapack_int const* idist, lapack_int* iseed, lapack_int const* n, - lapack_complex_double* X ); - -#define LAPACK_dlartgp LAPACK_GLOBAL(dlartgp,DLARTGP) -void LAPACK_dlartgp( - double const* f, - double const* g, - double* cs, - double* sn, - double* r ); - -#define LAPACK_slartgp LAPACK_GLOBAL(slartgp,SLARTGP) -void LAPACK_slartgp( - float const* f, - float const* g, - float* cs, - float* sn, - float* r ); - -#define LAPACK_dlartgs LAPACK_GLOBAL(dlartgs,DLARTGS) -void LAPACK_dlartgs( - double const* x, - double const* y, - double const* sigma, - double* cs, - double* sn ); - -#define LAPACK_slartgs LAPACK_GLOBAL(slartgs,SLARTGS) -void LAPACK_slartgs( - float const* x, - float const* y, - float const* sigma, - float* cs, - float* sn ); - -#define LAPACK_clascl_base LAPACK_GLOBAL(clascl,CLASCL) -void LAPACK_clascl_base( - char const* type, - lapack_int const* kl, lapack_int const* ku, - float const* cfrom, - float const* cto, lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clascl(...) LAPACK_clascl_base(__VA_ARGS__, 1) -#else - #define LAPACK_clascl(...) LAPACK_clascl_base(__VA_ARGS__) -#endif - -#define LAPACK_dlascl_base LAPACK_GLOBAL(dlascl,DLASCL) -void LAPACK_dlascl_base( - char const* type, - lapack_int const* kl, lapack_int const* ku, - double const* cfrom, - double const* cto, lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlascl(...) LAPACK_dlascl_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlascl(...) LAPACK_dlascl_base(__VA_ARGS__) -#endif - -#define LAPACK_slascl_base LAPACK_GLOBAL(slascl,SLASCL) -void LAPACK_slascl_base( - char const* type, - lapack_int const* kl, lapack_int const* ku, - float const* cfrom, - float const* cto, lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slascl(...) LAPACK_slascl_base(__VA_ARGS__, 1) -#else - #define LAPACK_slascl(...) LAPACK_slascl_base(__VA_ARGS__) -#endif - -#define LAPACK_zlascl_base LAPACK_GLOBAL(zlascl,ZLASCL) -void LAPACK_zlascl_base( - char const* type, - lapack_int const* kl, lapack_int const* ku, - double const* cfrom, - double const* cto, lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlascl(...) LAPACK_zlascl_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlascl(...) LAPACK_zlascl_base(__VA_ARGS__) -#endif - -#define LAPACK_claset_base LAPACK_GLOBAL(claset,CLASET) -void LAPACK_claset_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* alpha, - lapack_complex_float const* beta, - lapack_complex_float* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_claset(...) LAPACK_claset_base(__VA_ARGS__, 1) -#else - #define LAPACK_claset(...) LAPACK_claset_base(__VA_ARGS__) -#endif - -#define LAPACK_dlaset_base LAPACK_GLOBAL(dlaset,DLASET) -void LAPACK_dlaset_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - double const* alpha, - double const* beta, - double* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlaset(...) LAPACK_dlaset_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlaset(...) LAPACK_dlaset_base(__VA_ARGS__) -#endif - -#define LAPACK_slaset_base LAPACK_GLOBAL(slaset,SLASET) -void LAPACK_slaset_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - float const* alpha, - float const* beta, - float* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slaset(...) LAPACK_slaset_base(__VA_ARGS__, 1) -#else - #define LAPACK_slaset(...) LAPACK_slaset_base(__VA_ARGS__) -#endif - -#define LAPACK_zlaset_base LAPACK_GLOBAL(zlaset,ZLASET) -void LAPACK_zlaset_base( - char const* uplo, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* alpha, - lapack_complex_double const* beta, - lapack_complex_double* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlaset(...) LAPACK_zlaset_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlaset(...) LAPACK_zlaset_base(__VA_ARGS__) -#endif - -#define LAPACK_dlasrt_base LAPACK_GLOBAL(dlasrt,DLASRT) -void LAPACK_dlasrt_base( - char const* id, - lapack_int const* n, - double* D, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlasrt(...) LAPACK_dlasrt_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlasrt(...) LAPACK_dlasrt_base(__VA_ARGS__) -#endif - -#define LAPACK_slasrt_base LAPACK_GLOBAL(slasrt,SLASRT) -void LAPACK_slasrt_base( - char const* id, - lapack_int const* n, - float* D, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slasrt(...) LAPACK_slasrt_base(__VA_ARGS__, 1) -#else - #define LAPACK_slasrt(...) LAPACK_slasrt_base(__VA_ARGS__) -#endif - -#define LAPACK_classq LAPACK_GLOBAL(classq,CLASSQ) -void LAPACK_classq( - lapack_int const* n, - lapack_complex_float const* X, lapack_int const* incx, - float* scale, - float* sumsq ); - -#define LAPACK_dlassq LAPACK_GLOBAL(dlassq,DLASSQ) -void LAPACK_dlassq( - lapack_int const* n, - double const* X, lapack_int const* incx, - double* scale, - double* sumsq ); - -#define LAPACK_slassq LAPACK_GLOBAL(slassq,SLASSQ) -void LAPACK_slassq( - lapack_int const* n, - float const* X, lapack_int const* incx, - float* scale, - float* sumsq ); - -#define LAPACK_zlassq LAPACK_GLOBAL(zlassq,ZLASSQ) -void LAPACK_zlassq( - lapack_int const* n, - lapack_complex_double const* X, lapack_int const* incx, - double* scale, - double* sumsq ); - -#define LAPACK_claswp LAPACK_GLOBAL(claswp,CLASWP) -lapack_int LAPACK_claswp( - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); - -#define LAPACK_dlaswp LAPACK_GLOBAL(dlaswp,DLASWP) -lapack_int LAPACK_dlaswp( - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); - -#define LAPACK_slaswp LAPACK_GLOBAL(slaswp,SLASWP) -lapack_int LAPACK_slaswp( - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); - -#define LAPACK_zlaswp LAPACK_GLOBAL(zlaswp,ZLASWP) -lapack_int LAPACK_zlaswp( - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* k1, lapack_int const* k2, lapack_int const* ipiv, lapack_int const* incx ); - -#define LAPACK_clatms_base LAPACK_GLOBAL(clatms,CLATMS) -void LAPACK_clatms_base( - lapack_int const* m, lapack_int const* n, char const* dist, - lapack_int* iseed, char const* sym, - float* D, - lapack_int const* mode, - float const* cond, - float const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, - lapack_complex_float* A, - lapack_int const* lda, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clatms(...) LAPACK_clatms_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_clatms(...) LAPACK_clatms_base(__VA_ARGS__) -#endif - -#define LAPACK_dlatms_base LAPACK_GLOBAL(dlatms,DLATMS) -void LAPACK_dlatms_base( - lapack_int const* m, lapack_int const* n, char const* dist, - lapack_int* iseed, char const* sym, - double* D, - lapack_int const* mode, - double const* cond, - double const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, - double* A, - lapack_int const* lda, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlatms(...) LAPACK_dlatms_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dlatms(...) LAPACK_dlatms_base(__VA_ARGS__) -#endif - -#define LAPACK_slatms_base LAPACK_GLOBAL(slatms,SLATMS) -void LAPACK_slatms_base( - lapack_int const* m, lapack_int const* n, char const* dist, - lapack_int* iseed, char const* sym, - float* D, - lapack_int const* mode, - float const* cond, - float const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, - float* A, - lapack_int const* lda, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slatms(...) LAPACK_slatms_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_slatms(...) LAPACK_slatms_base(__VA_ARGS__) -#endif - -#define LAPACK_zlatms_base LAPACK_GLOBAL(zlatms,ZLATMS) -void LAPACK_zlatms_base( - lapack_int const* m, lapack_int const* n, char const* dist, - lapack_int* iseed, char const* sym, - double* D, - lapack_int const* mode, - double const* cond, - double const* dmax, lapack_int const* kl, lapack_int const* ku, char const* pack, - lapack_complex_double* A, - lapack_int const* lda, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlatms(...) LAPACK_zlatms_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zlatms(...) LAPACK_zlatms_base(__VA_ARGS__) -#endif - -#define LAPACK_clauum_base LAPACK_GLOBAL(clauum,CLAUUM) -lapack_int LAPACK_clauum_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_clauum(...) LAPACK_clauum_base(__VA_ARGS__, 1) -#else - #define LAPACK_clauum(...) LAPACK_clauum_base(__VA_ARGS__) -#endif - -#define LAPACK_dlauum_base LAPACK_GLOBAL(dlauum,DLAUUM) -lapack_int LAPACK_dlauum_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dlauum(...) LAPACK_dlauum_base(__VA_ARGS__, 1) -#else - #define LAPACK_dlauum(...) LAPACK_dlauum_base(__VA_ARGS__) -#endif - -#define LAPACK_slauum_base LAPACK_GLOBAL(slauum,SLAUUM) -lapack_int LAPACK_slauum_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_slauum(...) LAPACK_slauum_base(__VA_ARGS__, 1) -#else - #define LAPACK_slauum(...) LAPACK_slauum_base(__VA_ARGS__) -#endif - -#define LAPACK_zlauum_base LAPACK_GLOBAL(zlauum,ZLAUUM) -lapack_int LAPACK_zlauum_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zlauum(...) LAPACK_zlauum_base(__VA_ARGS__, 1) -#else - #define LAPACK_zlauum(...) LAPACK_zlauum_base(__VA_ARGS__) -#endif - -#define LAPACK_ilaver LAPACK_GLOBAL(ilaver,ILAVER) -lapack_int LAPACK_ilaver( - lapack_int* vers_major, lapack_int* vers_minor, lapack_int* vers_patch ); - -#define LAPACK_dopgtr_base LAPACK_GLOBAL(dopgtr,DOPGTR) -void LAPACK_dopgtr_base( - char const* uplo, - lapack_int const* n, - double const* AP, - double const* tau, - double* Q, lapack_int const* ldq, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dopgtr(...) LAPACK_dopgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dopgtr(...) LAPACK_dopgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_sopgtr_base LAPACK_GLOBAL(sopgtr,SOPGTR) -void LAPACK_sopgtr_base( - char const* uplo, - lapack_int const* n, - float const* AP, - float const* tau, - float* Q, lapack_int const* ldq, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sopgtr(...) LAPACK_sopgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_sopgtr(...) LAPACK_sopgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_dopmtr_base LAPACK_GLOBAL(dopmtr,DOPMTR) -void LAPACK_dopmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - double const* AP, - double const* tau, - double* C, lapack_int const* ldc, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dopmtr(...) LAPACK_dopmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dopmtr(...) LAPACK_dopmtr_base(__VA_ARGS__) -#endif - -#define LAPACK_sopmtr_base LAPACK_GLOBAL(sopmtr,SOPMTR) -void LAPACK_sopmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - float const* AP, - float const* tau, - float* C, lapack_int const* ldc, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sopmtr(...) LAPACK_sopmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sopmtr(...) LAPACK_sopmtr_base(__VA_ARGS__) -#endif - -#define LAPACK_dorbdb_base LAPACK_GLOBAL(dorbdb,DORBDB) -void LAPACK_dorbdb_base( - char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - double* X11, lapack_int const* ldx11, - double* X12, lapack_int const* ldx12, - double* X21, lapack_int const* ldx21, - double* X22, lapack_int const* ldx22, - double* theta, - double* phi, - double* TAUP1, - double* TAUP2, - double* TAUQ1, - double* TAUQ2, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dorbdb(...) LAPACK_dorbdb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dorbdb(...) LAPACK_dorbdb_base(__VA_ARGS__) -#endif - -#define LAPACK_sorbdb_base LAPACK_GLOBAL(sorbdb,SORBDB) -void LAPACK_sorbdb_base( - char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - float* X11, lapack_int const* ldx11, - float* X12, lapack_int const* ldx12, - float* X21, lapack_int const* ldx21, - float* X22, lapack_int const* ldx22, - float* theta, - float* phi, - float* TAUP1, - float* TAUP2, - float* TAUQ1, - float* TAUQ2, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sorbdb(...) LAPACK_sorbdb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sorbdb(...) LAPACK_sorbdb_base(__VA_ARGS__) -#endif - -#define LAPACK_dorcsd_base LAPACK_GLOBAL(dorcsd,DORCSD) -void LAPACK_dorcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - double* X11, lapack_int const* ldx11, - double* X12, lapack_int const* ldx12, - double* X21, lapack_int const* ldx21, - double* X22, lapack_int const* ldx22, - double* theta, - double* U1, lapack_int const* ldu1, - double* U2, lapack_int const* ldu2, - double* V1T, lapack_int const* ldv1t, - double* V2T, lapack_int const* ldv2t, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dorcsd(...) LAPACK_dorcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_dorcsd(...) LAPACK_dorcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_sorcsd_base LAPACK_GLOBAL(sorcsd,SORCSD) -void LAPACK_sorcsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - float* X11, lapack_int const* ldx11, - float* X12, lapack_int const* ldx12, - float* X21, lapack_int const* ldx21, - float* X22, lapack_int const* ldx22, - float* theta, - float* U1, lapack_int const* ldu1, - float* U2, lapack_int const* ldu2, - float* V1T, lapack_int const* ldv1t, - float* V2T, lapack_int const* ldv2t, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sorcsd(...) LAPACK_sorcsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_sorcsd(...) LAPACK_sorcsd_base(__VA_ARGS__) -#endif - -#define LAPACK_dorcsd2by1_base LAPACK_GLOBAL(dorcsd2by1,DORCSD2BY1) -void LAPACK_dorcsd2by1_base( - char const* jobu1, char const* jobu2, char const* jobv1t, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - double* X11, lapack_int const* ldx11, - double* X21, lapack_int const* ldx21, - double* theta, - double* U1, lapack_int const* ldu1, - double* U2, lapack_int const* ldu2, - double* V1T, lapack_int const* ldv1t, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dorcsd2by1(...) LAPACK_dorcsd2by1_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dorcsd2by1(...) LAPACK_dorcsd2by1_base(__VA_ARGS__) -#endif - -#define LAPACK_sorcsd2by1_base LAPACK_GLOBAL(sorcsd2by1,SORCSD2BY1) -void LAPACK_sorcsd2by1_base( - char const* jobu1, char const* jobu2, char const* jobv1t, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - float* X11, lapack_int const* ldx11, - float* X21, lapack_int const* ldx21, - float* theta, - float* U1, lapack_int const* ldu1, - float* U2, lapack_int const* ldu2, - float* V1T, lapack_int const* ldv1t, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sorcsd2by1(...) LAPACK_sorcsd2by1_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sorcsd2by1(...) LAPACK_sorcsd2by1_base(__VA_ARGS__) -#endif - -#define LAPACK_dorgbr_base LAPACK_GLOBAL(dorgbr,DORGBR) -void LAPACK_dorgbr_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dorgbr(...) LAPACK_dorgbr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dorgbr(...) LAPACK_dorgbr_base(__VA_ARGS__) -#endif - -#define LAPACK_sorgbr_base LAPACK_GLOBAL(sorgbr,SORGBR) -void LAPACK_sorgbr_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sorgbr(...) LAPACK_sorgbr_base(__VA_ARGS__, 1) -#else - #define LAPACK_sorgbr(...) LAPACK_sorgbr_base(__VA_ARGS__) -#endif - -#define LAPACK_dorghr LAPACK_GLOBAL(dorghr,DORGHR) -void LAPACK_dorghr( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorghr LAPACK_GLOBAL(sorghr,SORGHR) -void LAPACK_sorghr( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorglq LAPACK_GLOBAL(dorglq,DORGLQ) -void LAPACK_dorglq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorglq LAPACK_GLOBAL(sorglq,SORGLQ) -void LAPACK_sorglq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorgql LAPACK_GLOBAL(dorgql,DORGQL) -void LAPACK_dorgql( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorgql LAPACK_GLOBAL(sorgql,SORGQL) -void LAPACK_sorgql( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorgqr LAPACK_GLOBAL(dorgqr,DORGQR) -void LAPACK_dorgqr( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorgqr LAPACK_GLOBAL(sorgqr,SORGQR) -void LAPACK_sorgqr( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorgrq LAPACK_GLOBAL(dorgrq,DORGRQ) -void LAPACK_dorgrq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorgrq LAPACK_GLOBAL(sorgrq,SORGRQ) -void LAPACK_sorgrq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorgtr_base LAPACK_GLOBAL(dorgtr,DORGTR) -void LAPACK_dorgtr_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* tau, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dorgtr(...) LAPACK_dorgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dorgtr(...) LAPACK_dorgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_sorgtr_base LAPACK_GLOBAL(sorgtr,SORGTR) -void LAPACK_sorgtr_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* tau, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sorgtr(...) LAPACK_sorgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_sorgtr(...) LAPACK_sorgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_dorgtsqr_row LAPACK_GLOBAL(dorgtsqr_row,DORGTSQR_ROW) -void LAPACK_dorgtsqr_row( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb, lapack_int const* nb, - double* A, lapack_int const* lda, - double const* T, lapack_int const* ldt, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_sorgtsqr_row LAPACK_GLOBAL(sorgtsqr_row,SORGTSQR_ROW) -void LAPACK_sorgtsqr_row( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb, lapack_int const* nb, - float* A, lapack_int const* lda, - float const* T, lapack_int const* ldt, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dorhr_col LAPACK_GLOBAL(dorhr_col,DORHR_COL) -void LAPACK_dorhr_col( - lapack_int const* m, lapack_int const* n, - lapack_int const* nb, double* A, - lapack_int const* lda, double* T, - lapack_int const* ldt, double* D, - lapack_int* info ); - -#define LAPACK_sorhr_col LAPACK_GLOBAL(sorhr_col,SORHR_COL) -void LAPACK_sorhr_col( - lapack_int const* m, lapack_int const* n, - lapack_int const* nb, float* A, - lapack_int const* lda, float* T, - lapack_int const* ldt, float* D, - lapack_int* info ); - -#define LAPACK_dormbr_base LAPACK_GLOBAL(dormbr,DORMBR) -void LAPACK_dormbr_base( - char const* vect, char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormbr(...) LAPACK_dormbr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dormbr(...) LAPACK_dormbr_base(__VA_ARGS__) -#endif - -#define LAPACK_sormbr_base LAPACK_GLOBAL(sormbr,SORMBR) -void LAPACK_sormbr_base( - char const* vect, char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormbr(...) LAPACK_sormbr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sormbr(...) LAPACK_sormbr_base(__VA_ARGS__) -#endif - -#define LAPACK_dormhr_base LAPACK_GLOBAL(dormhr,DORMHR) -void LAPACK_dormhr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormhr(...) LAPACK_dormhr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormhr(...) LAPACK_dormhr_base(__VA_ARGS__) -#endif - -#define LAPACK_sormhr_base LAPACK_GLOBAL(sormhr,SORMHR) -void LAPACK_sormhr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormhr(...) LAPACK_sormhr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormhr(...) LAPACK_sormhr_base(__VA_ARGS__) -#endif - -#define LAPACK_dormlq_base LAPACK_GLOBAL(dormlq,DORMLQ) -void LAPACK_dormlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormlq(...) LAPACK_dormlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormlq(...) LAPACK_dormlq_base(__VA_ARGS__) -#endif - -#define LAPACK_sormlq_base LAPACK_GLOBAL(sormlq,SORMLQ) -void LAPACK_sormlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormlq(...) LAPACK_sormlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormlq(...) LAPACK_sormlq_base(__VA_ARGS__) -#endif - -#define LAPACK_dormql_base LAPACK_GLOBAL(dormql,DORMQL) -void LAPACK_dormql_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormql(...) LAPACK_dormql_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormql(...) LAPACK_dormql_base(__VA_ARGS__) -#endif - -#define LAPACK_sormql_base LAPACK_GLOBAL(sormql,SORMQL) -void LAPACK_sormql_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormql(...) LAPACK_sormql_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormql(...) LAPACK_sormql_base(__VA_ARGS__) -#endif - -#define LAPACK_dormqr_base LAPACK_GLOBAL(dormqr,DORMQR) -void LAPACK_dormqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormqr(...) LAPACK_dormqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormqr(...) LAPACK_dormqr_base(__VA_ARGS__) -#endif - -#define LAPACK_sormqr_base LAPACK_GLOBAL(sormqr,SORMQR) -void LAPACK_sormqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormqr(...) LAPACK_sormqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormqr(...) LAPACK_sormqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dormrq_base LAPACK_GLOBAL(dormrq,DORMRQ) -void LAPACK_dormrq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormrq(...) LAPACK_dormrq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormrq(...) LAPACK_dormrq_base(__VA_ARGS__) -#endif - -#define LAPACK_sormrq_base LAPACK_GLOBAL(sormrq,SORMRQ) -void LAPACK_sormrq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormrq(...) LAPACK_sormrq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormrq(...) LAPACK_sormrq_base(__VA_ARGS__) -#endif - -#define LAPACK_dormrz_base LAPACK_GLOBAL(dormrz,DORMRZ) -void LAPACK_dormrz_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormrz(...) LAPACK_dormrz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dormrz(...) LAPACK_dormrz_base(__VA_ARGS__) -#endif - -#define LAPACK_sormrz_base LAPACK_GLOBAL(sormrz,SORMRZ) -void LAPACK_sormrz_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormrz(...) LAPACK_sormrz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sormrz(...) LAPACK_sormrz_base(__VA_ARGS__) -#endif - -#define LAPACK_dormtr_base LAPACK_GLOBAL(dormtr,DORMTR) -void LAPACK_dormtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double const* tau, - double* C, lapack_int const* ldc, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dormtr(...) LAPACK_dormtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dormtr(...) LAPACK_dormtr_base(__VA_ARGS__) -#endif - -#define LAPACK_sormtr_base LAPACK_GLOBAL(sormtr,SORMTR) -void LAPACK_sormtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float const* tau, - float* C, lapack_int const* ldc, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sormtr(...) LAPACK_sormtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sormtr(...) LAPACK_sormtr_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbcon_base LAPACK_GLOBAL(cpbcon,CPBCON) -void LAPACK_cpbcon_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float const* AB, lapack_int const* ldab, - float const* anorm, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbcon(...) LAPACK_cpbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbcon(...) LAPACK_cpbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbcon_base LAPACK_GLOBAL(dpbcon,DPBCON) -void LAPACK_dpbcon_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - double const* AB, lapack_int const* ldab, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbcon(...) LAPACK_dpbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbcon(...) LAPACK_dpbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_spbcon_base LAPACK_GLOBAL(spbcon,SPBCON) -void LAPACK_spbcon_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - float const* AB, lapack_int const* ldab, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbcon(...) LAPACK_spbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbcon(...) LAPACK_spbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbcon_base LAPACK_GLOBAL(zpbcon,ZPBCON) -void LAPACK_zpbcon_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double const* AB, lapack_int const* ldab, - double const* anorm, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbcon(...) LAPACK_zpbcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbcon(...) LAPACK_zpbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbequ_base LAPACK_GLOBAL(cpbequ,CPBEQU) -void LAPACK_cpbequ_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float const* AB, lapack_int const* ldab, - float* S, - float* scond, - float* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbequ(...) LAPACK_cpbequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbequ(...) LAPACK_cpbequ_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbequ_base LAPACK_GLOBAL(dpbequ,DPBEQU) -void LAPACK_dpbequ_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - double const* AB, lapack_int const* ldab, - double* S, - double* scond, - double* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbequ(...) LAPACK_dpbequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbequ(...) LAPACK_dpbequ_base(__VA_ARGS__) -#endif - -#define LAPACK_spbequ_base LAPACK_GLOBAL(spbequ,SPBEQU) -void LAPACK_spbequ_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - float const* AB, lapack_int const* ldab, - float* S, - float* scond, - float* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbequ(...) LAPACK_spbequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbequ(...) LAPACK_spbequ_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbequ_base LAPACK_GLOBAL(zpbequ,ZPBEQU) -void LAPACK_zpbequ_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double const* AB, lapack_int const* ldab, - double* S, - double* scond, - double* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbequ(...) LAPACK_zpbequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbequ(...) LAPACK_zpbequ_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbrfs_base LAPACK_GLOBAL(cpbrfs,CPBRFS) -void LAPACK_cpbrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float const* AFB, lapack_int const* ldafb, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbrfs(...) LAPACK_cpbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbrfs(...) LAPACK_cpbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbrfs_base LAPACK_GLOBAL(dpbrfs,DPBRFS) -void LAPACK_dpbrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double const* AFB, lapack_int const* ldafb, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbrfs(...) LAPACK_dpbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbrfs(...) LAPACK_dpbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_spbrfs_base LAPACK_GLOBAL(spbrfs,SPBRFS) -void LAPACK_spbrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float const* AFB, lapack_int const* ldafb, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbrfs(...) LAPACK_spbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbrfs(...) LAPACK_spbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbrfs_base LAPACK_GLOBAL(zpbrfs,ZPBRFS) -void LAPACK_zpbrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double const* AFB, lapack_int const* ldafb, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbrfs(...) LAPACK_zpbrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbrfs(...) LAPACK_zpbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbstf_base LAPACK_GLOBAL(cpbstf,CPBSTF) -void LAPACK_cpbstf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbstf(...) LAPACK_cpbstf_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbstf(...) LAPACK_cpbstf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbstf_base LAPACK_GLOBAL(dpbstf,DPBSTF) -void LAPACK_dpbstf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbstf(...) LAPACK_dpbstf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbstf(...) LAPACK_dpbstf_base(__VA_ARGS__) -#endif - -#define LAPACK_spbstf_base LAPACK_GLOBAL(spbstf,SPBSTF) -void LAPACK_spbstf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbstf(...) LAPACK_spbstf_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbstf(...) LAPACK_spbstf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbstf_base LAPACK_GLOBAL(zpbstf,ZPBSTF) -void LAPACK_zpbstf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbstf(...) LAPACK_zpbstf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbstf(...) LAPACK_zpbstf_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbsv_base LAPACK_GLOBAL(cpbsv,CPBSV) -void LAPACK_cpbsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbsv(...) LAPACK_cpbsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbsv(...) LAPACK_cpbsv_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbsv_base LAPACK_GLOBAL(dpbsv,DPBSV) -void LAPACK_dpbsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double* AB, lapack_int const* ldab, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbsv(...) LAPACK_dpbsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbsv(...) LAPACK_dpbsv_base(__VA_ARGS__) -#endif - -#define LAPACK_spbsv_base LAPACK_GLOBAL(spbsv,SPBSV) -void LAPACK_spbsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float* AB, lapack_int const* ldab, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbsv(...) LAPACK_spbsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbsv(...) LAPACK_spbsv_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbsv_base LAPACK_GLOBAL(zpbsv,ZPBSV) -void LAPACK_zpbsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbsv(...) LAPACK_zpbsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbsv(...) LAPACK_zpbsv_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbsvx_base LAPACK_GLOBAL(cpbsvx,CPBSVX) -void LAPACK_cpbsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_complex_float* AFB, lapack_int const* ldafb, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbsvx(...) LAPACK_cpbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cpbsvx(...) LAPACK_cpbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbsvx_base LAPACK_GLOBAL(dpbsvx,DPBSVX) -void LAPACK_dpbsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double* AB, lapack_int const* ldab, - double* AFB, lapack_int const* ldafb, char* equed, - double* S, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbsvx(...) LAPACK_dpbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dpbsvx(...) LAPACK_dpbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_spbsvx_base LAPACK_GLOBAL(spbsvx,SPBSVX) -void LAPACK_spbsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float* AB, lapack_int const* ldab, - float* AFB, lapack_int const* ldafb, char* equed, - float* S, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbsvx(...) LAPACK_spbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_spbsvx(...) LAPACK_spbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbsvx_base LAPACK_GLOBAL(zpbsvx,ZPBSVX) -void LAPACK_zpbsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_complex_double* AFB, lapack_int const* ldafb, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbsvx(...) LAPACK_zpbsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zpbsvx(...) LAPACK_zpbsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbtrf_base LAPACK_GLOBAL(cpbtrf,CPBTRF) -void LAPACK_cpbtrf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbtrf(...) LAPACK_cpbtrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbtrf(...) LAPACK_cpbtrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbtrf_base LAPACK_GLOBAL(dpbtrf,DPBTRF) -void LAPACK_dpbtrf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbtrf(...) LAPACK_dpbtrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbtrf(...) LAPACK_dpbtrf_base(__VA_ARGS__) -#endif - -#define LAPACK_spbtrf_base LAPACK_GLOBAL(spbtrf,SPBTRF) -void LAPACK_spbtrf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbtrf(...) LAPACK_spbtrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbtrf(...) LAPACK_spbtrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbtrf_base LAPACK_GLOBAL(zpbtrf,ZPBTRF) -void LAPACK_zpbtrf_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double* AB, lapack_int const* ldab, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbtrf(...) LAPACK_zpbtrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbtrf(...) LAPACK_zpbtrf_base(__VA_ARGS__) -#endif - -#define LAPACK_cpbtrs_base LAPACK_GLOBAL(cpbtrs,CPBTRS) -void LAPACK_cpbtrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpbtrs(...) LAPACK_cpbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpbtrs(...) LAPACK_cpbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpbtrs_base LAPACK_GLOBAL(dpbtrs,DPBTRS) -void LAPACK_dpbtrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpbtrs(...) LAPACK_dpbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpbtrs(...) LAPACK_dpbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_spbtrs_base LAPACK_GLOBAL(spbtrs,SPBTRS) -void LAPACK_spbtrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spbtrs(...) LAPACK_spbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_spbtrs(...) LAPACK_spbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpbtrs_base LAPACK_GLOBAL(zpbtrs,ZPBTRS) -void LAPACK_zpbtrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpbtrs(...) LAPACK_zpbtrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpbtrs(...) LAPACK_zpbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cpftrf_base LAPACK_GLOBAL(cpftrf,CPFTRF) -void LAPACK_cpftrf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpftrf(...) LAPACK_cpftrf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cpftrf(...) LAPACK_cpftrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpftrf_base LAPACK_GLOBAL(dpftrf,DPFTRF) -void LAPACK_dpftrf_base( - char const* transr, char const* uplo, - lapack_int const* n, - double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpftrf(...) LAPACK_dpftrf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dpftrf(...) LAPACK_dpftrf_base(__VA_ARGS__) -#endif - -#define LAPACK_spftrf_base LAPACK_GLOBAL(spftrf,SPFTRF) -void LAPACK_spftrf_base( - char const* transr, char const* uplo, - lapack_int const* n, - float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spftrf(...) LAPACK_spftrf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_spftrf(...) LAPACK_spftrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpftrf_base LAPACK_GLOBAL(zpftrf,ZPFTRF) -void LAPACK_zpftrf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpftrf(...) LAPACK_zpftrf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zpftrf(...) LAPACK_zpftrf_base(__VA_ARGS__) -#endif - -#define LAPACK_cpftri_base LAPACK_GLOBAL(cpftri,CPFTRI) -void LAPACK_cpftri_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpftri(...) LAPACK_cpftri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cpftri(...) LAPACK_cpftri_base(__VA_ARGS__) -#endif - -#define LAPACK_dpftri_base LAPACK_GLOBAL(dpftri,DPFTRI) -void LAPACK_dpftri_base( - char const* transr, char const* uplo, - lapack_int const* n, - double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpftri(...) LAPACK_dpftri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dpftri(...) LAPACK_dpftri_base(__VA_ARGS__) -#endif - -#define LAPACK_spftri_base LAPACK_GLOBAL(spftri,SPFTRI) -void LAPACK_spftri_base( - char const* transr, char const* uplo, - lapack_int const* n, - float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spftri(...) LAPACK_spftri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_spftri(...) LAPACK_spftri_base(__VA_ARGS__) -#endif - -#define LAPACK_zpftri_base LAPACK_GLOBAL(zpftri,ZPFTRI) -void LAPACK_zpftri_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpftri(...) LAPACK_zpftri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zpftri(...) LAPACK_zpftri_base(__VA_ARGS__) -#endif - -#define LAPACK_cpftrs_base LAPACK_GLOBAL(cpftrs,CPFTRS) -void LAPACK_cpftrs_base( - char const* transr, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpftrs(...) LAPACK_cpftrs_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cpftrs(...) LAPACK_cpftrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpftrs_base LAPACK_GLOBAL(dpftrs,DPFTRS) -void LAPACK_dpftrs_base( - char const* transr, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpftrs(...) LAPACK_dpftrs_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dpftrs(...) LAPACK_dpftrs_base(__VA_ARGS__) -#endif - -#define LAPACK_spftrs_base LAPACK_GLOBAL(spftrs,SPFTRS) -void LAPACK_spftrs_base( - char const* transr, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spftrs(...) LAPACK_spftrs_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_spftrs(...) LAPACK_spftrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpftrs_base LAPACK_GLOBAL(zpftrs,ZPFTRS) -void LAPACK_zpftrs_base( - char const* transr, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpftrs(...) LAPACK_zpftrs_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zpftrs(...) LAPACK_zpftrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cpocon_base LAPACK_GLOBAL(cpocon,CPOCON) -void LAPACK_cpocon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float const* anorm, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpocon(...) LAPACK_cpocon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpocon(...) LAPACK_cpocon_base(__VA_ARGS__) -#endif - -#define LAPACK_dpocon_base LAPACK_GLOBAL(dpocon,DPOCON) -void LAPACK_dpocon_base( - char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpocon(...) LAPACK_dpocon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpocon(...) LAPACK_dpocon_base(__VA_ARGS__) -#endif - -#define LAPACK_spocon_base LAPACK_GLOBAL(spocon,SPOCON) -void LAPACK_spocon_base( - char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spocon(...) LAPACK_spocon_base(__VA_ARGS__, 1) -#else - #define LAPACK_spocon(...) LAPACK_spocon_base(__VA_ARGS__) -#endif - -#define LAPACK_zpocon_base LAPACK_GLOBAL(zpocon,ZPOCON) -void LAPACK_zpocon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double const* anorm, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpocon(...) LAPACK_zpocon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpocon(...) LAPACK_zpocon_base(__VA_ARGS__) -#endif - -#define LAPACK_cpoequ LAPACK_GLOBAL(cpoequ,CPOEQU) -void LAPACK_cpoequ( - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_int* info ); - -#define LAPACK_dpoequ LAPACK_GLOBAL(dpoequ,DPOEQU) -void LAPACK_dpoequ( - lapack_int const* n, - double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_int* info ); - -#define LAPACK_spoequ LAPACK_GLOBAL(spoequ,SPOEQU) -void LAPACK_spoequ( - lapack_int const* n, - float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_int* info ); - -#define LAPACK_zpoequ LAPACK_GLOBAL(zpoequ,ZPOEQU) -void LAPACK_zpoequ( - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_int* info ); - -#define LAPACK_cpoequb LAPACK_GLOBAL(cpoequb,CPOEQUB) -void LAPACK_cpoequb( - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_int* info ); - -#define LAPACK_dpoequb LAPACK_GLOBAL(dpoequb,DPOEQUB) -void LAPACK_dpoequb( - lapack_int const* n, - double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_int* info ); - -#define LAPACK_spoequb LAPACK_GLOBAL(spoequb,SPOEQUB) -void LAPACK_spoequb( - lapack_int const* n, - float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_int* info ); - -#define LAPACK_zpoequb LAPACK_GLOBAL(zpoequb,ZPOEQUB) -void LAPACK_zpoequb( - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_int* info ); - -#define LAPACK_cporfs_base LAPACK_GLOBAL(cporfs,CPORFS) -void LAPACK_cporfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cporfs(...) LAPACK_cporfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cporfs(...) LAPACK_cporfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dporfs_base LAPACK_GLOBAL(dporfs,DPORFS) -void LAPACK_dporfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dporfs(...) LAPACK_dporfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dporfs(...) LAPACK_dporfs_base(__VA_ARGS__) -#endif - -#define LAPACK_sporfs_base LAPACK_GLOBAL(sporfs,SPORFS) -void LAPACK_sporfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sporfs(...) LAPACK_sporfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_sporfs(...) LAPACK_sporfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zporfs_base LAPACK_GLOBAL(zporfs,ZPORFS) -void LAPACK_zporfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zporfs(...) LAPACK_zporfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zporfs(...) LAPACK_zporfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cporfsx_base LAPACK_GLOBAL(cporfsx,CPORFSX) -void LAPACK_cporfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, - const float* S, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cporfsx(...) LAPACK_cporfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cporfsx(...) LAPACK_cporfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_dporfsx_base LAPACK_GLOBAL(dporfsx,DPORFSX) -void LAPACK_dporfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, - const double* S, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dporfsx(...) LAPACK_dporfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dporfsx(...) LAPACK_dporfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_sporfsx_base LAPACK_GLOBAL(sporfsx,SPORFSX) -void LAPACK_sporfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, - const float* S, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sporfsx(...) LAPACK_sporfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sporfsx(...) LAPACK_sporfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_zporfsx_base LAPACK_GLOBAL(zporfsx,ZPORFSX) -void LAPACK_zporfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, - const double* S, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zporfsx(...) LAPACK_zporfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zporfsx(...) LAPACK_zporfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_cposv_base LAPACK_GLOBAL(cposv,CPOSV) -void LAPACK_cposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cposv(...) LAPACK_cposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_cposv(...) LAPACK_cposv_base(__VA_ARGS__) -#endif - -#define LAPACK_dposv_base LAPACK_GLOBAL(dposv,DPOSV) -void LAPACK_dposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dposv(...) LAPACK_dposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dposv(...) LAPACK_dposv_base(__VA_ARGS__) -#endif - -#define LAPACK_sposv_base LAPACK_GLOBAL(sposv,SPOSV) -void LAPACK_sposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sposv(...) LAPACK_sposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_sposv(...) LAPACK_sposv_base(__VA_ARGS__) -#endif - -#define LAPACK_zposv_base LAPACK_GLOBAL(zposv,ZPOSV) -void LAPACK_zposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zposv(...) LAPACK_zposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zposv(...) LAPACK_zposv_base(__VA_ARGS__) -#endif - -#define LAPACK_dsposv_base LAPACK_GLOBAL(dsposv,DSPOSV) -void LAPACK_dsposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* work, - float* swork, lapack_int* iter, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsposv(...) LAPACK_dsposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsposv(...) LAPACK_dsposv_base(__VA_ARGS__) -#endif - -#define LAPACK_zcposv_base LAPACK_GLOBAL(zcposv,ZCPOSV) -void LAPACK_zcposv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - lapack_complex_double* work, - lapack_complex_float* swork, - double* rwork, lapack_int* iter, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zcposv(...) LAPACK_zcposv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zcposv(...) LAPACK_zcposv_base(__VA_ARGS__) -#endif - -#define LAPACK_cposvx_base LAPACK_GLOBAL(cposvx,CPOSVX) -void LAPACK_cposvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cposvx(...) LAPACK_cposvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cposvx(...) LAPACK_cposvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dposvx_base LAPACK_GLOBAL(dposvx,DPOSVX) -void LAPACK_dposvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, char* equed, - double* S, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dposvx(...) LAPACK_dposvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dposvx(...) LAPACK_dposvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sposvx_base LAPACK_GLOBAL(sposvx,SPOSVX) -void LAPACK_sposvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, char* equed, - float* S, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sposvx(...) LAPACK_sposvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sposvx(...) LAPACK_sposvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zposvx_base LAPACK_GLOBAL(zposvx,ZPOSVX) -void LAPACK_zposvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zposvx(...) LAPACK_zposvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zposvx(...) LAPACK_zposvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cposvxx_base LAPACK_GLOBAL(cposvxx,CPOSVXX) -void LAPACK_cposvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cposvxx(...) LAPACK_cposvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cposvxx(...) LAPACK_cposvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_dposvxx_base LAPACK_GLOBAL(dposvxx,DPOSVXX) -void LAPACK_dposvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, char* equed, - double* S, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dposvxx(...) LAPACK_dposvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dposvxx(...) LAPACK_dposvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_sposvxx_base LAPACK_GLOBAL(sposvxx,SPOSVXX) -void LAPACK_sposvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, char* equed, - float* S, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sposvxx(...) LAPACK_sposvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sposvxx(...) LAPACK_sposvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_zposvxx_base LAPACK_GLOBAL(zposvxx,ZPOSVXX) -void LAPACK_zposvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zposvxx(...) LAPACK_zposvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zposvxx(...) LAPACK_zposvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_cpotf2_base LAPACK_GLOBAL(cpotf2,CPOTF2) -void LAPACK_cpotf2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpotf2(...) LAPACK_cpotf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpotf2(...) LAPACK_cpotf2_base(__VA_ARGS__) -#endif - -#define LAPACK_dpotf2_base LAPACK_GLOBAL(dpotf2,DPOTF2) -void LAPACK_dpotf2_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpotf2(...) LAPACK_dpotf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpotf2(...) LAPACK_dpotf2_base(__VA_ARGS__) -#endif - -#define LAPACK_spotf2_base LAPACK_GLOBAL(spotf2,SPOTF2) -void LAPACK_spotf2_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spotf2(...) LAPACK_spotf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_spotf2(...) LAPACK_spotf2_base(__VA_ARGS__) -#endif - -#define LAPACK_zpotf2_base LAPACK_GLOBAL(zpotf2,ZPOTF2) -void LAPACK_zpotf2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpotf2(...) LAPACK_zpotf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpotf2(...) LAPACK_zpotf2_base(__VA_ARGS__) -#endif - -#define LAPACK_cpotrf_base LAPACK_GLOBAL(cpotrf,CPOTRF) -lapack_int LAPACK_cpotrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpotrf(...) LAPACK_cpotrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpotrf(...) LAPACK_cpotrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpotrf_base LAPACK_GLOBAL(dpotrf,DPOTRF) -lapack_int LAPACK_dpotrf_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpotrf(...) LAPACK_dpotrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpotrf(...) LAPACK_dpotrf_base(__VA_ARGS__) -#endif - -#define LAPACK_spotrf_base LAPACK_GLOBAL(spotrf,SPOTRF) -lapack_int LAPACK_spotrf_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spotrf(...) LAPACK_spotrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_spotrf(...) LAPACK_spotrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpotrf_base LAPACK_GLOBAL(zpotrf,ZPOTRF) -lapack_int LAPACK_zpotrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpotrf(...) LAPACK_zpotrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpotrf(...) LAPACK_zpotrf_base(__VA_ARGS__) -#endif - -#define LAPACK_cpotrf2_base LAPACK_GLOBAL(cpotrf2,CPOTRF2) -void LAPACK_cpotrf2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpotrf2(...) LAPACK_cpotrf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpotrf2(...) LAPACK_cpotrf2_base(__VA_ARGS__) -#endif - -#define LAPACK_dpotrf2_base LAPACK_GLOBAL(dpotrf2,DPOTRF2) -void LAPACK_dpotrf2_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpotrf2(...) LAPACK_dpotrf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpotrf2(...) LAPACK_dpotrf2_base(__VA_ARGS__) -#endif - -#define LAPACK_spotrf2_base LAPACK_GLOBAL(spotrf2,SPOTRF2) -void LAPACK_spotrf2_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spotrf2(...) LAPACK_spotrf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_spotrf2(...) LAPACK_spotrf2_base(__VA_ARGS__) -#endif - -#define LAPACK_zpotrf2_base LAPACK_GLOBAL(zpotrf2,ZPOTRF2) -void LAPACK_zpotrf2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpotrf2(...) LAPACK_zpotrf2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpotrf2(...) LAPACK_zpotrf2_base(__VA_ARGS__) -#endif - -#define LAPACK_cpotri_base LAPACK_GLOBAL(cpotri,CPOTRI) -void LAPACK_cpotri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpotri(...) LAPACK_cpotri_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpotri(...) LAPACK_cpotri_base(__VA_ARGS__) -#endif - -#define LAPACK_dpotri_base LAPACK_GLOBAL(dpotri,DPOTRI) -void LAPACK_dpotri_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpotri(...) LAPACK_dpotri_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpotri(...) LAPACK_dpotri_base(__VA_ARGS__) -#endif - -#define LAPACK_spotri_base LAPACK_GLOBAL(spotri,SPOTRI) -void LAPACK_spotri_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spotri(...) LAPACK_spotri_base(__VA_ARGS__, 1) -#else - #define LAPACK_spotri(...) LAPACK_spotri_base(__VA_ARGS__) -#endif - -#define LAPACK_zpotri_base LAPACK_GLOBAL(zpotri,ZPOTRI) -void LAPACK_zpotri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpotri(...) LAPACK_zpotri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpotri(...) LAPACK_zpotri_base(__VA_ARGS__) -#endif - -#define LAPACK_cpotrs_base LAPACK_GLOBAL(cpotrs,CPOTRS) -void LAPACK_cpotrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpotrs(...) LAPACK_cpotrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpotrs(...) LAPACK_cpotrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpotrs_base LAPACK_GLOBAL(dpotrs,DPOTRS) -void LAPACK_dpotrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpotrs(...) LAPACK_dpotrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpotrs(...) LAPACK_dpotrs_base(__VA_ARGS__) -#endif - -#define LAPACK_spotrs_base LAPACK_GLOBAL(spotrs,SPOTRS) -void LAPACK_spotrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spotrs(...) LAPACK_spotrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_spotrs(...) LAPACK_spotrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpotrs_base LAPACK_GLOBAL(zpotrs,ZPOTRS) -void LAPACK_zpotrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpotrs(...) LAPACK_zpotrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpotrs(...) LAPACK_zpotrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cppcon_base LAPACK_GLOBAL(cppcon,CPPCON) -void LAPACK_cppcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - float const* anorm, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cppcon(...) LAPACK_cppcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cppcon(...) LAPACK_cppcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dppcon_base LAPACK_GLOBAL(dppcon,DPPCON) -void LAPACK_dppcon_base( - char const* uplo, - lapack_int const* n, - double const* AP, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dppcon(...) LAPACK_dppcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dppcon(...) LAPACK_dppcon_base(__VA_ARGS__) -#endif - -#define LAPACK_sppcon_base LAPACK_GLOBAL(sppcon,SPPCON) -void LAPACK_sppcon_base( - char const* uplo, - lapack_int const* n, - float const* AP, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sppcon(...) LAPACK_sppcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_sppcon(...) LAPACK_sppcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zppcon_base LAPACK_GLOBAL(zppcon,ZPPCON) -void LAPACK_zppcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - double const* anorm, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zppcon(...) LAPACK_zppcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zppcon(...) LAPACK_zppcon_base(__VA_ARGS__) -#endif - -#define LAPACK_cppequ_base LAPACK_GLOBAL(cppequ,CPPEQU) -void LAPACK_cppequ_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - float* S, - float* scond, - float* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cppequ(...) LAPACK_cppequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_cppequ(...) LAPACK_cppequ_base(__VA_ARGS__) -#endif - -#define LAPACK_dppequ_base LAPACK_GLOBAL(dppequ,DPPEQU) -void LAPACK_dppequ_base( - char const* uplo, - lapack_int const* n, - double const* AP, - double* S, - double* scond, - double* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dppequ(...) LAPACK_dppequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_dppequ(...) LAPACK_dppequ_base(__VA_ARGS__) -#endif - -#define LAPACK_sppequ_base LAPACK_GLOBAL(sppequ,SPPEQU) -void LAPACK_sppequ_base( - char const* uplo, - lapack_int const* n, - float const* AP, - float* S, - float* scond, - float* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sppequ(...) LAPACK_sppequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_sppequ(...) LAPACK_sppequ_base(__VA_ARGS__) -#endif - -#define LAPACK_zppequ_base LAPACK_GLOBAL(zppequ,ZPPEQU) -void LAPACK_zppequ_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - double* S, - double* scond, - double* amax, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zppequ(...) LAPACK_zppequ_base(__VA_ARGS__, 1) -#else - #define LAPACK_zppequ(...) LAPACK_zppequ_base(__VA_ARGS__) -#endif - -#define LAPACK_cpprfs_base LAPACK_GLOBAL(cpprfs,CPPRFS) -void LAPACK_cpprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float const* AFP, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpprfs(...) LAPACK_cpprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpprfs(...) LAPACK_cpprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpprfs_base LAPACK_GLOBAL(dpprfs,DPPRFS) -void LAPACK_dpprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double const* AFP, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpprfs(...) LAPACK_dpprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpprfs(...) LAPACK_dpprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_spprfs_base LAPACK_GLOBAL(spprfs,SPPRFS) -void LAPACK_spprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float const* AFP, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spprfs(...) LAPACK_spprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_spprfs(...) LAPACK_spprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpprfs_base LAPACK_GLOBAL(zpprfs,ZPPRFS) -void LAPACK_zpprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double const* AFP, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpprfs(...) LAPACK_zpprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpprfs(...) LAPACK_zpprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cppsv_base LAPACK_GLOBAL(cppsv,CPPSV) -void LAPACK_cppsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* AP, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cppsv(...) LAPACK_cppsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_cppsv(...) LAPACK_cppsv_base(__VA_ARGS__) -#endif - -#define LAPACK_dppsv_base LAPACK_GLOBAL(dppsv,DPPSV) -void LAPACK_dppsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* AP, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dppsv(...) LAPACK_dppsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dppsv(...) LAPACK_dppsv_base(__VA_ARGS__) -#endif - -#define LAPACK_sppsv_base LAPACK_GLOBAL(sppsv,SPPSV) -void LAPACK_sppsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* AP, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sppsv(...) LAPACK_sppsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_sppsv(...) LAPACK_sppsv_base(__VA_ARGS__) -#endif - -#define LAPACK_zppsv_base LAPACK_GLOBAL(zppsv,ZPPSV) -void LAPACK_zppsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* AP, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zppsv(...) LAPACK_zppsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zppsv(...) LAPACK_zppsv_base(__VA_ARGS__) -#endif - -#define LAPACK_cppsvx_base LAPACK_GLOBAL(cppsvx,CPPSVX) -void LAPACK_cppsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* AP, - lapack_complex_float* AFP, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cppsvx(...) LAPACK_cppsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cppsvx(...) LAPACK_cppsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dppsvx_base LAPACK_GLOBAL(dppsvx,DPPSVX) -void LAPACK_dppsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* AP, - double* AFP, char* equed, - double* S, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dppsvx(...) LAPACK_dppsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dppsvx(...) LAPACK_dppsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sppsvx_base LAPACK_GLOBAL(sppsvx,SPPSVX) -void LAPACK_sppsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* AP, - float* AFP, char* equed, - float* S, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sppsvx(...) LAPACK_sppsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sppsvx(...) LAPACK_sppsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zppsvx_base LAPACK_GLOBAL(zppsvx,ZPPSVX) -void LAPACK_zppsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* AP, - lapack_complex_double* AFP, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zppsvx(...) LAPACK_zppsvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zppsvx(...) LAPACK_zppsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cpptrf_base LAPACK_GLOBAL(cpptrf,CPPTRF) -void LAPACK_cpptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpptrf(...) LAPACK_cpptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpptrf(...) LAPACK_cpptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpptrf_base LAPACK_GLOBAL(dpptrf,DPPTRF) -void LAPACK_dpptrf_base( - char const* uplo, - lapack_int const* n, - double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpptrf(...) LAPACK_dpptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpptrf(...) LAPACK_dpptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_spptrf_base LAPACK_GLOBAL(spptrf,SPPTRF) -void LAPACK_spptrf_base( - char const* uplo, - lapack_int const* n, - float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spptrf(...) LAPACK_spptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_spptrf(...) LAPACK_spptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpptrf_base LAPACK_GLOBAL(zpptrf,ZPPTRF) -void LAPACK_zpptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpptrf(...) LAPACK_zpptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpptrf(...) LAPACK_zpptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_cpptri_base LAPACK_GLOBAL(cpptri,CPPTRI) -void LAPACK_cpptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpptri(...) LAPACK_cpptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpptri(...) LAPACK_cpptri_base(__VA_ARGS__) -#endif - -#define LAPACK_dpptri_base LAPACK_GLOBAL(dpptri,DPPTRI) -void LAPACK_dpptri_base( - char const* uplo, - lapack_int const* n, - double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpptri(...) LAPACK_dpptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpptri(...) LAPACK_dpptri_base(__VA_ARGS__) -#endif - -#define LAPACK_spptri_base LAPACK_GLOBAL(spptri,SPPTRI) -void LAPACK_spptri_base( - char const* uplo, - lapack_int const* n, - float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spptri(...) LAPACK_spptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_spptri(...) LAPACK_spptri_base(__VA_ARGS__) -#endif - -#define LAPACK_zpptri_base LAPACK_GLOBAL(zpptri,ZPPTRI) -void LAPACK_zpptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpptri(...) LAPACK_zpptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpptri(...) LAPACK_zpptri_base(__VA_ARGS__) -#endif - -#define LAPACK_cpptrs_base LAPACK_GLOBAL(cpptrs,CPPTRS) -void LAPACK_cpptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpptrs(...) LAPACK_cpptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpptrs(...) LAPACK_cpptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpptrs_base LAPACK_GLOBAL(dpptrs,DPPTRS) -void LAPACK_dpptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpptrs(...) LAPACK_dpptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpptrs(...) LAPACK_dpptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_spptrs_base LAPACK_GLOBAL(spptrs,SPPTRS) -void LAPACK_spptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spptrs(...) LAPACK_spptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_spptrs(...) LAPACK_spptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zpptrs_base LAPACK_GLOBAL(zpptrs,ZPPTRS) -void LAPACK_zpptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpptrs(...) LAPACK_zpptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpptrs(...) LAPACK_zpptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_cpstrf_base LAPACK_GLOBAL(cpstrf,CPSTRF) -void LAPACK_cpstrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, - float const* tol, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpstrf(...) LAPACK_cpstrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpstrf(...) LAPACK_cpstrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dpstrf_base LAPACK_GLOBAL(dpstrf,DPSTRF) -void LAPACK_dpstrf_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, - double const* tol, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpstrf(...) LAPACK_dpstrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpstrf(...) LAPACK_dpstrf_base(__VA_ARGS__) -#endif - -#define LAPACK_spstrf_base LAPACK_GLOBAL(spstrf,SPSTRF) -void LAPACK_spstrf_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, - float const* tol, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spstrf(...) LAPACK_spstrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_spstrf(...) LAPACK_spstrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zpstrf_base LAPACK_GLOBAL(zpstrf,ZPSTRF) -void LAPACK_zpstrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* piv, lapack_int* rank, - double const* tol, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpstrf(...) LAPACK_zpstrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpstrf(...) LAPACK_zpstrf_base(__VA_ARGS__) -#endif - -#define LAPACK_cptcon LAPACK_GLOBAL(cptcon,CPTCON) -void LAPACK_cptcon( - lapack_int const* n, - float const* D, - lapack_complex_float const* E, - float const* anorm, - float* rcond, - float* rwork, - lapack_int* info ); - -#define LAPACK_dptcon LAPACK_GLOBAL(dptcon,DPTCON) -void LAPACK_dptcon( - lapack_int const* n, - double const* D, - double const* E, - double const* anorm, - double* rcond, - double* work, - lapack_int* info ); - -#define LAPACK_sptcon LAPACK_GLOBAL(sptcon,SPTCON) -void LAPACK_sptcon( - lapack_int const* n, - float const* D, - float const* E, - float const* anorm, - float* rcond, - float* work, - lapack_int* info ); - -#define LAPACK_zptcon LAPACK_GLOBAL(zptcon,ZPTCON) -void LAPACK_zptcon( - lapack_int const* n, - double const* D, - lapack_complex_double const* E, - double const* anorm, - double* rcond, - double* rwork, - lapack_int* info ); - -#define LAPACK_cpteqr_base LAPACK_GLOBAL(cpteqr,CPTEQR) -void LAPACK_cpteqr_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - lapack_complex_float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpteqr(...) LAPACK_cpteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpteqr(...) LAPACK_cpteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dpteqr_base LAPACK_GLOBAL(dpteqr,DPTEQR) -void LAPACK_dpteqr_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dpteqr(...) LAPACK_dpteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dpteqr(...) LAPACK_dpteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_spteqr_base LAPACK_GLOBAL(spteqr,SPTEQR) -void LAPACK_spteqr_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_spteqr(...) LAPACK_spteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_spteqr(...) LAPACK_spteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zpteqr_base LAPACK_GLOBAL(zpteqr,ZPTEQR) -void LAPACK_zpteqr_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - lapack_complex_double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpteqr(...) LAPACK_zpteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpteqr(...) LAPACK_zpteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_cptrfs_base LAPACK_GLOBAL(cptrfs,CPTRFS) -void LAPACK_cptrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* D, - lapack_complex_float const* E, - float const* DF, - lapack_complex_float const* EF, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cptrfs(...) LAPACK_cptrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cptrfs(...) LAPACK_cptrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dptrfs LAPACK_GLOBAL(dptrfs,DPTRFS) -void LAPACK_dptrfs( - lapack_int const* n, lapack_int const* nrhs, - double const* D, - double const* E, - double const* DF, - double const* EF, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* info ); - -#define LAPACK_sptrfs LAPACK_GLOBAL(sptrfs,SPTRFS) -void LAPACK_sptrfs( - lapack_int const* n, lapack_int const* nrhs, - float const* D, - float const* E, - float const* DF, - float const* EF, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* info ); - -#define LAPACK_zptrfs_base LAPACK_GLOBAL(zptrfs,ZPTRFS) -void LAPACK_zptrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* D, - lapack_complex_double const* E, - double const* DF, - lapack_complex_double const* EF, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zptrfs(...) LAPACK_zptrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zptrfs(...) LAPACK_zptrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cptsv LAPACK_GLOBAL(cptsv,CPTSV) -void LAPACK_cptsv( - lapack_int const* n, lapack_int const* nrhs, - float* D, - lapack_complex_float* E, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_dptsv LAPACK_GLOBAL(dptsv,DPTSV) -void LAPACK_dptsv( - lapack_int const* n, lapack_int const* nrhs, - double* D, - double* E, - double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_sptsv LAPACK_GLOBAL(sptsv,SPTSV) -void LAPACK_sptsv( - lapack_int const* n, lapack_int const* nrhs, - float* D, - float* E, - float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_zptsv LAPACK_GLOBAL(zptsv,ZPTSV) -void LAPACK_zptsv( - lapack_int const* n, lapack_int const* nrhs, - double* D, - lapack_complex_double* E, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_cptsvx_base LAPACK_GLOBAL(cptsvx,CPTSVX) -void LAPACK_cptsvx_base( - char const* fact, - lapack_int const* n, lapack_int const* nrhs, - float const* D, - lapack_complex_float const* E, - float* DF, - lapack_complex_float* EF, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cptsvx(...) LAPACK_cptsvx_base(__VA_ARGS__, 1) -#else - #define LAPACK_cptsvx(...) LAPACK_cptsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dptsvx_base LAPACK_GLOBAL(dptsvx,DPTSVX) -void LAPACK_dptsvx_base( - char const* fact, - lapack_int const* n, lapack_int const* nrhs, - double const* D, - double const* E, - double* DF, - double* EF, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dptsvx(...) LAPACK_dptsvx_base(__VA_ARGS__, 1) -#else - #define LAPACK_dptsvx(...) LAPACK_dptsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sptsvx_base LAPACK_GLOBAL(sptsvx,SPTSVX) -void LAPACK_sptsvx_base( - char const* fact, - lapack_int const* n, lapack_int const* nrhs, - float const* D, - float const* E, - float* DF, - float* EF, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sptsvx(...) LAPACK_sptsvx_base(__VA_ARGS__, 1) -#else - #define LAPACK_sptsvx(...) LAPACK_sptsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zptsvx_base LAPACK_GLOBAL(zptsvx,ZPTSVX) -void LAPACK_zptsvx_base( - char const* fact, - lapack_int const* n, lapack_int const* nrhs, - double const* D, - lapack_complex_double const* E, - double* DF, - lapack_complex_double* EF, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zptsvx(...) LAPACK_zptsvx_base(__VA_ARGS__, 1) -#else - #define LAPACK_zptsvx(...) LAPACK_zptsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_cpttrf LAPACK_GLOBAL(cpttrf,CPTTRF) -void LAPACK_cpttrf( - lapack_int const* n, - float* D, - lapack_complex_float* E, - lapack_int* info ); - -#define LAPACK_dpttrf LAPACK_GLOBAL(dpttrf,DPTTRF) -void LAPACK_dpttrf( - lapack_int const* n, - double* D, - double* E, - lapack_int* info ); - -#define LAPACK_spttrf LAPACK_GLOBAL(spttrf,SPTTRF) -void LAPACK_spttrf( - lapack_int const* n, - float* D, - float* E, - lapack_int* info ); - -#define LAPACK_zpttrf LAPACK_GLOBAL(zpttrf,ZPTTRF) -void LAPACK_zpttrf( - lapack_int const* n, - double* D, - lapack_complex_double* E, - lapack_int* info ); - -#define LAPACK_cpttrs_base LAPACK_GLOBAL(cpttrs,CPTTRS) -void LAPACK_cpttrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* D, - lapack_complex_float const* E, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cpttrs(...) LAPACK_cpttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_cpttrs(...) LAPACK_cpttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dpttrs LAPACK_GLOBAL(dpttrs,DPTTRS) -void LAPACK_dpttrs( - lapack_int const* n, lapack_int const* nrhs, - double const* D, - double const* E, - double* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_spttrs LAPACK_GLOBAL(spttrs,SPTTRS) -void LAPACK_spttrs( - lapack_int const* n, lapack_int const* nrhs, - float const* D, - float const* E, - float* B, lapack_int const* ldb, - lapack_int* info ); - -#define LAPACK_zpttrs_base LAPACK_GLOBAL(zpttrs,ZPTTRS) -void LAPACK_zpttrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* D, - lapack_complex_double const* E, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zpttrs(...) LAPACK_zpttrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zpttrs(...) LAPACK_zpttrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbev_base LAPACK_GLOBAL(dsbev,DSBEV) -void LAPACK_dsbev_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbev(...) LAPACK_dsbev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbev(...) LAPACK_dsbev_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbev_base LAPACK_GLOBAL(ssbev,SSBEV) -void LAPACK_ssbev_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbev(...) LAPACK_ssbev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbev(...) LAPACK_ssbev_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbev_2stage_base LAPACK_GLOBAL(dsbev_2stage,DSBEV_2STAGE) -void LAPACK_dsbev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbev_2stage(...) LAPACK_dsbev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbev_2stage(...) LAPACK_dsbev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbev_2stage_base LAPACK_GLOBAL(ssbev_2stage,SSBEV_2STAGE) -void LAPACK_ssbev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbev_2stage(...) LAPACK_ssbev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbev_2stage(...) LAPACK_ssbev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbevd_base LAPACK_GLOBAL(dsbevd,DSBEVD) -void LAPACK_dsbevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbevd(...) LAPACK_dsbevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbevd(...) LAPACK_dsbevd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbevd_base LAPACK_GLOBAL(ssbevd,SSBEVD) -void LAPACK_ssbevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbevd(...) LAPACK_ssbevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbevd(...) LAPACK_ssbevd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbevd_2stage_base LAPACK_GLOBAL(dsbevd_2stage,DSBEVD_2STAGE) -void LAPACK_dsbevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbevd_2stage(...) LAPACK_dsbevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbevd_2stage(...) LAPACK_dsbevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbevd_2stage_base LAPACK_GLOBAL(ssbevd_2stage,SSBEVD_2STAGE) -void LAPACK_ssbevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbevd_2stage(...) LAPACK_ssbevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbevd_2stage(...) LAPACK_ssbevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbevx_base LAPACK_GLOBAL(dsbevx,DSBEVX) -void LAPACK_dsbevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbevx(...) LAPACK_dsbevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsbevx(...) LAPACK_dsbevx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbevx_base LAPACK_GLOBAL(ssbevx,SSBEVX) -void LAPACK_ssbevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbevx(...) LAPACK_ssbevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssbevx(...) LAPACK_ssbevx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbevx_2stage_base LAPACK_GLOBAL(dsbevx_2stage,DSBEVX_2STAGE) -void LAPACK_dsbevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbevx_2stage(...) LAPACK_dsbevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsbevx_2stage(...) LAPACK_dsbevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbevx_2stage_base LAPACK_GLOBAL(ssbevx_2stage,SSBEVX_2STAGE) -void LAPACK_ssbevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbevx_2stage(...) LAPACK_ssbevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssbevx_2stage(...) LAPACK_ssbevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbgst_base LAPACK_GLOBAL(dsbgst,DSBGST) -void LAPACK_dsbgst_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - double* AB, lapack_int const* ldab, - double const* BB, lapack_int const* ldbb, - double* X, lapack_int const* ldx, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbgst(...) LAPACK_dsbgst_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbgst(...) LAPACK_dsbgst_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbgst_base LAPACK_GLOBAL(ssbgst,SSBGST) -void LAPACK_ssbgst_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - float* AB, lapack_int const* ldab, - float const* BB, lapack_int const* ldbb, - float* X, lapack_int const* ldx, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbgst(...) LAPACK_ssbgst_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbgst(...) LAPACK_ssbgst_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbgv_base LAPACK_GLOBAL(dsbgv,DSBGV) -void LAPACK_dsbgv_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - double* AB, lapack_int const* ldab, - double* BB, lapack_int const* ldbb, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbgv(...) LAPACK_dsbgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbgv(...) LAPACK_dsbgv_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbgv_base LAPACK_GLOBAL(ssbgv,SSBGV) -void LAPACK_ssbgv_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - float* AB, lapack_int const* ldab, - float* BB, lapack_int const* ldbb, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbgv(...) LAPACK_ssbgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbgv(...) LAPACK_ssbgv_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbgvd_base LAPACK_GLOBAL(dsbgvd,DSBGVD) -void LAPACK_dsbgvd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - double* AB, lapack_int const* ldab, - double* BB, lapack_int const* ldbb, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbgvd(...) LAPACK_dsbgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbgvd(...) LAPACK_dsbgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbgvd_base LAPACK_GLOBAL(ssbgvd,SSBGVD) -void LAPACK_ssbgvd_base( - char const* jobz, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - float* AB, lapack_int const* ldab, - float* BB, lapack_int const* ldbb, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbgvd(...) LAPACK_ssbgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbgvd(...) LAPACK_ssbgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbgvx_base LAPACK_GLOBAL(dsbgvx,DSBGVX) -void LAPACK_dsbgvx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - double* AB, lapack_int const* ldab, - double* BB, lapack_int const* ldbb, - double* Q, lapack_int const* ldq, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbgvx(...) LAPACK_dsbgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsbgvx(...) LAPACK_dsbgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbgvx_base LAPACK_GLOBAL(ssbgvx,SSBGVX) -void LAPACK_ssbgvx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, lapack_int const* ka, lapack_int const* kb, - float* AB, lapack_int const* ldab, - float* BB, lapack_int const* ldbb, - float* Q, lapack_int const* ldq, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbgvx(...) LAPACK_ssbgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssbgvx(...) LAPACK_ssbgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsbtrd_base LAPACK_GLOBAL(dsbtrd,DSBTRD) -void LAPACK_dsbtrd_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* kd, - double* AB, lapack_int const* ldab, - double* D, - double* E, - double* Q, lapack_int const* ldq, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsbtrd(...) LAPACK_dsbtrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsbtrd(...) LAPACK_dsbtrd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssbtrd_base LAPACK_GLOBAL(ssbtrd,SSBTRD) -void LAPACK_ssbtrd_base( - char const* vect, char const* uplo, - lapack_int const* n, lapack_int const* kd, - float* AB, lapack_int const* ldab, - float* D, - float* E, - float* Q, lapack_int const* ldq, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssbtrd(...) LAPACK_ssbtrd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssbtrd(...) LAPACK_ssbtrd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsfrk_base LAPACK_GLOBAL(dsfrk,DSFRK) -void LAPACK_dsfrk_base( - char const* transr, char const* uplo, char const* trans, - lapack_int const* n, lapack_int const* k, - double const* alpha, - double const* A, lapack_int const* lda, - double const* beta, - double* C -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsfrk(...) LAPACK_dsfrk_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsfrk(...) LAPACK_dsfrk_base(__VA_ARGS__) -#endif - -#define LAPACK_ssfrk_base LAPACK_GLOBAL(ssfrk,SSFRK) -void LAPACK_ssfrk_base( - char const* transr, char const* uplo, char const* trans, - lapack_int const* n, lapack_int const* k, - float const* alpha, - float const* A, lapack_int const* lda, - float const* beta, - float* C -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssfrk(...) LAPACK_ssfrk_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssfrk(...) LAPACK_ssfrk_base(__VA_ARGS__) -#endif - -#define LAPACK_cspcon_base LAPACK_GLOBAL(cspcon,CSPCON) -void LAPACK_cspcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cspcon(...) LAPACK_cspcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_cspcon(...) LAPACK_cspcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dspcon_base LAPACK_GLOBAL(dspcon,DSPCON) -void LAPACK_dspcon_base( - char const* uplo, - lapack_int const* n, - double const* AP, lapack_int const* ipiv, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspcon(...) LAPACK_dspcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dspcon(...) LAPACK_dspcon_base(__VA_ARGS__) -#endif - -#define LAPACK_sspcon_base LAPACK_GLOBAL(sspcon,SSPCON) -void LAPACK_sspcon_base( - char const* uplo, - lapack_int const* n, - float const* AP, lapack_int const* ipiv, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspcon(...) LAPACK_sspcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_sspcon(...) LAPACK_sspcon_base(__VA_ARGS__) -#endif - -#define LAPACK_zspcon_base LAPACK_GLOBAL(zspcon,ZSPCON) -void LAPACK_zspcon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zspcon(...) LAPACK_zspcon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zspcon(...) LAPACK_zspcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dspev_base LAPACK_GLOBAL(dspev,DSPEV) -void LAPACK_dspev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* AP, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspev(...) LAPACK_dspev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dspev(...) LAPACK_dspev_base(__VA_ARGS__) -#endif - -#define LAPACK_sspev_base LAPACK_GLOBAL(sspev,SSPEV) -void LAPACK_sspev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* AP, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspev(...) LAPACK_sspev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sspev(...) LAPACK_sspev_base(__VA_ARGS__) -#endif - -#define LAPACK_dspevd_base LAPACK_GLOBAL(dspevd,DSPEVD) -void LAPACK_dspevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* AP, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspevd(...) LAPACK_dspevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dspevd(...) LAPACK_dspevd_base(__VA_ARGS__) -#endif - -#define LAPACK_sspevd_base LAPACK_GLOBAL(sspevd,SSPEVD) -void LAPACK_sspevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* AP, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspevd(...) LAPACK_sspevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sspevd(...) LAPACK_sspevd_base(__VA_ARGS__) -#endif - -#define LAPACK_dspevx_base LAPACK_GLOBAL(dspevx,DSPEVX) -void LAPACK_dspevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* AP, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspevx(...) LAPACK_dspevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dspevx(...) LAPACK_dspevx_base(__VA_ARGS__) -#endif - -#define LAPACK_sspevx_base LAPACK_GLOBAL(sspevx,SSPEVX) -void LAPACK_sspevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* AP, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspevx(...) LAPACK_sspevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sspevx(...) LAPACK_sspevx_base(__VA_ARGS__) -#endif - -#define LAPACK_dspgst_base LAPACK_GLOBAL(dspgst,DSPGST) -void LAPACK_dspgst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - double* AP, - double const* BP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspgst(...) LAPACK_dspgst_base(__VA_ARGS__, 1) -#else - #define LAPACK_dspgst(...) LAPACK_dspgst_base(__VA_ARGS__) -#endif - -#define LAPACK_sspgst_base LAPACK_GLOBAL(sspgst,SSPGST) -void LAPACK_sspgst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - float* AP, - float const* BP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspgst(...) LAPACK_sspgst_base(__VA_ARGS__, 1) -#else - #define LAPACK_sspgst(...) LAPACK_sspgst_base(__VA_ARGS__) -#endif - -#define LAPACK_dspgv_base LAPACK_GLOBAL(dspgv,DSPGV) -void LAPACK_dspgv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - double* AP, - double* BP, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspgv(...) LAPACK_dspgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dspgv(...) LAPACK_dspgv_base(__VA_ARGS__) -#endif - -#define LAPACK_sspgv_base LAPACK_GLOBAL(sspgv,SSPGV) -void LAPACK_sspgv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - float* AP, - float* BP, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspgv(...) LAPACK_sspgv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sspgv(...) LAPACK_sspgv_base(__VA_ARGS__) -#endif - -#define LAPACK_dspgvd_base LAPACK_GLOBAL(dspgvd,DSPGVD) -void LAPACK_dspgvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - double* AP, - double* BP, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspgvd(...) LAPACK_dspgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dspgvd(...) LAPACK_dspgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_sspgvd_base LAPACK_GLOBAL(sspgvd,SSPGVD) -void LAPACK_sspgvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - float* AP, - float* BP, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspgvd(...) LAPACK_sspgvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sspgvd(...) LAPACK_sspgvd_base(__VA_ARGS__) -#endif - -#define LAPACK_dspgvx_base LAPACK_GLOBAL(dspgvx,DSPGVX) -void LAPACK_dspgvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* AP, - double* BP, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspgvx(...) LAPACK_dspgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dspgvx(...) LAPACK_dspgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sspgvx_base LAPACK_GLOBAL(sspgvx,SSPGVX) -void LAPACK_sspgvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* AP, - float* BP, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspgvx(...) LAPACK_sspgvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_sspgvx(...) LAPACK_sspgvx_base(__VA_ARGS__) -#endif - -#define LAPACK_csprfs_base LAPACK_GLOBAL(csprfs,CSPRFS) -void LAPACK_csprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float const* AFP, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csprfs(...) LAPACK_csprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_csprfs(...) LAPACK_csprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dsprfs_base LAPACK_GLOBAL(dsprfs,DSPRFS) -void LAPACK_dsprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double const* AFP, lapack_int const* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsprfs(...) LAPACK_dsprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsprfs(...) LAPACK_dsprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ssprfs_base LAPACK_GLOBAL(ssprfs,SSPRFS) -void LAPACK_ssprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float const* AFP, lapack_int const* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssprfs(...) LAPACK_ssprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssprfs(...) LAPACK_ssprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zsprfs_base LAPACK_GLOBAL(zsprfs,ZSPRFS) -void LAPACK_zsprfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double const* AFP, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsprfs(...) LAPACK_zsprfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsprfs(...) LAPACK_zsprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_cspsv_base LAPACK_GLOBAL(cspsv,CSPSV) -void LAPACK_cspsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* AP, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cspsv(...) LAPACK_cspsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_cspsv(...) LAPACK_cspsv_base(__VA_ARGS__) -#endif - -#define LAPACK_dspsv_base LAPACK_GLOBAL(dspsv,DSPSV) -void LAPACK_dspsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* AP, lapack_int* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspsv(...) LAPACK_dspsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dspsv(...) LAPACK_dspsv_base(__VA_ARGS__) -#endif - -#define LAPACK_sspsv_base LAPACK_GLOBAL(sspsv,SSPSV) -void LAPACK_sspsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* AP, lapack_int* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspsv(...) LAPACK_sspsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_sspsv(...) LAPACK_sspsv_base(__VA_ARGS__) -#endif - -#define LAPACK_zspsv_base LAPACK_GLOBAL(zspsv,ZSPSV) -void LAPACK_zspsv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* AP, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zspsv(...) LAPACK_zspsv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zspsv(...) LAPACK_zspsv_base(__VA_ARGS__) -#endif - -#define LAPACK_cspsvx_base LAPACK_GLOBAL(cspsvx,CSPSVX) -void LAPACK_cspsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float* AFP, lapack_int* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cspsvx(...) LAPACK_cspsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cspsvx(...) LAPACK_cspsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dspsvx_base LAPACK_GLOBAL(dspsvx,DSPSVX) -void LAPACK_dspsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double* AFP, lapack_int* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dspsvx(...) LAPACK_dspsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dspsvx(...) LAPACK_dspsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_sspsvx_base LAPACK_GLOBAL(sspsvx,SSPSVX) -void LAPACK_sspsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float* AFP, lapack_int* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sspsvx(...) LAPACK_sspsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sspsvx(...) LAPACK_sspsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zspsvx_base LAPACK_GLOBAL(zspsvx,ZSPSVX) -void LAPACK_zspsvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double* AFP, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zspsvx(...) LAPACK_zspsvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zspsvx(...) LAPACK_zspsvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsptrd_base LAPACK_GLOBAL(dsptrd,DSPTRD) -void LAPACK_dsptrd_base( - char const* uplo, - lapack_int const* n, - double* AP, - double* D, - double* E, - double* tau, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsptrd(...) LAPACK_dsptrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsptrd(...) LAPACK_dsptrd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssptrd_base LAPACK_GLOBAL(ssptrd,SSPTRD) -void LAPACK_ssptrd_base( - char const* uplo, - lapack_int const* n, - float* AP, - float* D, - float* E, - float* tau, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssptrd(...) LAPACK_ssptrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssptrd(...) LAPACK_ssptrd_base(__VA_ARGS__) -#endif - -#define LAPACK_csptrf_base LAPACK_GLOBAL(csptrf,CSPTRF) -void LAPACK_csptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csptrf(...) LAPACK_csptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_csptrf(...) LAPACK_csptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dsptrf_base LAPACK_GLOBAL(dsptrf,DSPTRF) -void LAPACK_dsptrf_base( - char const* uplo, - lapack_int const* n, - double* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsptrf(...) LAPACK_dsptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsptrf(...) LAPACK_dsptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_ssptrf_base LAPACK_GLOBAL(ssptrf,SSPTRF) -void LAPACK_ssptrf_base( - char const* uplo, - lapack_int const* n, - float* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssptrf(...) LAPACK_ssptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssptrf(...) LAPACK_ssptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zsptrf_base LAPACK_GLOBAL(zsptrf,ZSPTRF) -void LAPACK_zsptrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, lapack_int* ipiv, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsptrf(...) LAPACK_zsptrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsptrf(...) LAPACK_zsptrf_base(__VA_ARGS__) -#endif - -#define LAPACK_csptri_base LAPACK_GLOBAL(csptri,CSPTRI) -void LAPACK_csptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* AP, lapack_int const* ipiv, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csptri(...) LAPACK_csptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_csptri(...) LAPACK_csptri_base(__VA_ARGS__) -#endif - -#define LAPACK_dsptri_base LAPACK_GLOBAL(dsptri,DSPTRI) -void LAPACK_dsptri_base( - char const* uplo, - lapack_int const* n, - double* AP, lapack_int const* ipiv, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsptri(...) LAPACK_dsptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsptri(...) LAPACK_dsptri_base(__VA_ARGS__) -#endif - -#define LAPACK_ssptri_base LAPACK_GLOBAL(ssptri,SSPTRI) -void LAPACK_ssptri_base( - char const* uplo, - lapack_int const* n, - float* AP, lapack_int const* ipiv, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssptri(...) LAPACK_ssptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssptri(...) LAPACK_ssptri_base(__VA_ARGS__) -#endif - -#define LAPACK_zsptri_base LAPACK_GLOBAL(zsptri,ZSPTRI) -void LAPACK_zsptri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* AP, lapack_int const* ipiv, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsptri(...) LAPACK_zsptri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsptri(...) LAPACK_zsptri_base(__VA_ARGS__) -#endif - -#define LAPACK_csptrs_base LAPACK_GLOBAL(csptrs,CSPTRS) -void LAPACK_csptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csptrs(...) LAPACK_csptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_csptrs(...) LAPACK_csptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dsptrs_base LAPACK_GLOBAL(dsptrs,DSPTRS) -void LAPACK_dsptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsptrs(...) LAPACK_dsptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsptrs(...) LAPACK_dsptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ssptrs_base LAPACK_GLOBAL(ssptrs,SSPTRS) -void LAPACK_ssptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssptrs(...) LAPACK_ssptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssptrs(...) LAPACK_ssptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zsptrs_base LAPACK_GLOBAL(zsptrs,ZSPTRS) -void LAPACK_zsptrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsptrs(...) LAPACK_zsptrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsptrs(...) LAPACK_zsptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dstebz_base LAPACK_GLOBAL(dstebz,DSTEBZ) -void LAPACK_dstebz_base( - char const* range, char const* order, - lapack_int const* n, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, - double const* D, - double const* E, lapack_int* m, lapack_int* nsplit, - double* W, lapack_int* IBLOCK, lapack_int* ISPLIT, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstebz(...) LAPACK_dstebz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dstebz(...) LAPACK_dstebz_base(__VA_ARGS__) -#endif - -#define LAPACK_sstebz_base LAPACK_GLOBAL(sstebz,SSTEBZ) -void LAPACK_sstebz_base( - char const* range, char const* order, - lapack_int const* n, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, - float const* D, - float const* E, lapack_int* m, lapack_int* nsplit, - float* W, lapack_int* IBLOCK, lapack_int* ISPLIT, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstebz(...) LAPACK_sstebz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sstebz(...) LAPACK_sstebz_base(__VA_ARGS__) -#endif - -#define LAPACK_cstedc_base LAPACK_GLOBAL(cstedc,CSTEDC) -void LAPACK_cstedc_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - lapack_complex_float* Z, lapack_int const* ldz, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cstedc(...) LAPACK_cstedc_base(__VA_ARGS__, 1) -#else - #define LAPACK_cstedc(...) LAPACK_cstedc_base(__VA_ARGS__) -#endif - -#define LAPACK_dstedc_base LAPACK_GLOBAL(dstedc,DSTEDC) -void LAPACK_dstedc_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstedc(...) LAPACK_dstedc_base(__VA_ARGS__, 1) -#else - #define LAPACK_dstedc(...) LAPACK_dstedc_base(__VA_ARGS__) -#endif - -#define LAPACK_sstedc_base LAPACK_GLOBAL(sstedc,SSTEDC) -void LAPACK_sstedc_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstedc(...) LAPACK_sstedc_base(__VA_ARGS__, 1) -#else - #define LAPACK_sstedc(...) LAPACK_sstedc_base(__VA_ARGS__) -#endif - -#define LAPACK_zstedc_base LAPACK_GLOBAL(zstedc,ZSTEDC) -void LAPACK_zstedc_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - lapack_complex_double* Z, lapack_int const* ldz, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zstedc(...) LAPACK_zstedc_base(__VA_ARGS__, 1) -#else - #define LAPACK_zstedc(...) LAPACK_zstedc_base(__VA_ARGS__) -#endif - -#define LAPACK_cstegr_base LAPACK_GLOBAL(cstegr,CSTEGR) -void LAPACK_cstegr_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cstegr(...) LAPACK_cstegr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cstegr(...) LAPACK_cstegr_base(__VA_ARGS__) -#endif - -#define LAPACK_dstegr_base LAPACK_GLOBAL(dstegr,DSTEGR) -void LAPACK_dstegr_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstegr(...) LAPACK_dstegr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dstegr(...) LAPACK_dstegr_base(__VA_ARGS__) -#endif - -#define LAPACK_sstegr_base LAPACK_GLOBAL(sstegr,SSTEGR) -void LAPACK_sstegr_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstegr(...) LAPACK_sstegr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sstegr(...) LAPACK_sstegr_base(__VA_ARGS__) -#endif - -#define LAPACK_zstegr_base LAPACK_GLOBAL(zstegr,ZSTEGR) -void LAPACK_zstegr_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zstegr(...) LAPACK_zstegr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zstegr(...) LAPACK_zstegr_base(__VA_ARGS__) -#endif - -#define LAPACK_cstein LAPACK_GLOBAL(cstein,CSTEIN) -void LAPACK_cstein( - lapack_int const* n, - float const* D, - float const* E, lapack_int const* m, - float const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, - lapack_complex_float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info ); - -#define LAPACK_dstein LAPACK_GLOBAL(dstein,DSTEIN) -void LAPACK_dstein( - lapack_int const* n, - double const* D, - double const* E, lapack_int const* m, - double const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info ); - -#define LAPACK_sstein LAPACK_GLOBAL(sstein,SSTEIN) -void LAPACK_sstein( - lapack_int const* n, - float const* D, - float const* E, lapack_int const* m, - float const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info ); - -#define LAPACK_zstein LAPACK_GLOBAL(zstein,ZSTEIN) -void LAPACK_zstein( - lapack_int const* n, - double const* D, - double const* E, lapack_int const* m, - double const* W, lapack_int const* IBLOCK, lapack_int const* ISPLIT, - lapack_complex_double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info ); - -#define LAPACK_cstemr_base LAPACK_GLOBAL(cstemr,CSTEMR) -void LAPACK_cstemr_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, - float* W, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cstemr(...) LAPACK_cstemr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cstemr(...) LAPACK_cstemr_base(__VA_ARGS__) -#endif - -#define LAPACK_dstemr_base LAPACK_GLOBAL(dstemr,DSTEMR) -void LAPACK_dstemr_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstemr(...) LAPACK_dstemr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dstemr(...) LAPACK_dstemr_base(__VA_ARGS__) -#endif - -#define LAPACK_sstemr_base LAPACK_GLOBAL(sstemr,SSTEMR) -void LAPACK_sstemr_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstemr(...) LAPACK_sstemr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sstemr(...) LAPACK_sstemr_base(__VA_ARGS__) -#endif - -#define LAPACK_zstemr_base LAPACK_GLOBAL(zstemr,ZSTEMR) -void LAPACK_zstemr_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, lapack_int* m, - double* W, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int const* nzc, lapack_int* ISUPPZ, lapack_logical* tryrac, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zstemr(...) LAPACK_zstemr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zstemr(...) LAPACK_zstemr_base(__VA_ARGS__) -#endif - -#define LAPACK_csteqr_base LAPACK_GLOBAL(csteqr,CSTEQR) -void LAPACK_csteqr_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - lapack_complex_float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csteqr(...) LAPACK_csteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_csteqr(...) LAPACK_csteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dsteqr_base LAPACK_GLOBAL(dsteqr,DSTEQR) -void LAPACK_dsteqr_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsteqr(...) LAPACK_dsteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsteqr(...) LAPACK_dsteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_ssteqr_base LAPACK_GLOBAL(ssteqr,SSTEQR) -void LAPACK_ssteqr_base( - char const* compz, - lapack_int const* n, - float* D, - float* E, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssteqr(...) LAPACK_ssteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssteqr(...) LAPACK_ssteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zsteqr_base LAPACK_GLOBAL(zsteqr,ZSTEQR) -void LAPACK_zsteqr_base( - char const* compz, - lapack_int const* n, - double* D, - double* E, - lapack_complex_double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsteqr(...) LAPACK_zsteqr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsteqr(...) LAPACK_zsteqr_base(__VA_ARGS__) -#endif - -#define LAPACK_dsterf LAPACK_GLOBAL(dsterf,DSTERF) -void LAPACK_dsterf( - lapack_int const* n, - double* D, - double* E, - lapack_int* info ); - -#define LAPACK_ssterf LAPACK_GLOBAL(ssterf,SSTERF) -void LAPACK_ssterf( - lapack_int const* n, - float* D, - float* E, - lapack_int* info ); - -#define LAPACK_dstev_base LAPACK_GLOBAL(dstev,DSTEV) -void LAPACK_dstev_base( - char const* jobz, - lapack_int const* n, - double* D, - double* E, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstev(...) LAPACK_dstev_base(__VA_ARGS__, 1) -#else - #define LAPACK_dstev(...) LAPACK_dstev_base(__VA_ARGS__) -#endif - -#define LAPACK_sstev_base LAPACK_GLOBAL(sstev,SSTEV) -void LAPACK_sstev_base( - char const* jobz, - lapack_int const* n, - float* D, - float* E, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstev(...) LAPACK_sstev_base(__VA_ARGS__, 1) -#else - #define LAPACK_sstev(...) LAPACK_sstev_base(__VA_ARGS__) -#endif - -#define LAPACK_dstevd_base LAPACK_GLOBAL(dstevd,DSTEVD) -void LAPACK_dstevd_base( - char const* jobz, - lapack_int const* n, - double* D, - double* E, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstevd(...) LAPACK_dstevd_base(__VA_ARGS__, 1) -#else - #define LAPACK_dstevd(...) LAPACK_dstevd_base(__VA_ARGS__) -#endif - -#define LAPACK_sstevd_base LAPACK_GLOBAL(sstevd,SSTEVD) -void LAPACK_sstevd_base( - char const* jobz, - lapack_int const* n, - float* D, - float* E, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstevd(...) LAPACK_sstevd_base(__VA_ARGS__, 1) -#else - #define LAPACK_sstevd(...) LAPACK_sstevd_base(__VA_ARGS__) -#endif - -#define LAPACK_dstevr_base LAPACK_GLOBAL(dstevr,DSTEVR) -void LAPACK_dstevr_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstevr(...) LAPACK_dstevr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dstevr(...) LAPACK_dstevr_base(__VA_ARGS__) -#endif - -#define LAPACK_sstevr_base LAPACK_GLOBAL(sstevr,SSTEVR) -void LAPACK_sstevr_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstevr(...) LAPACK_sstevr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sstevr(...) LAPACK_sstevr_base(__VA_ARGS__) -#endif - -#define LAPACK_dstevx_base LAPACK_GLOBAL(dstevx,DSTEVX) -void LAPACK_dstevx_base( - char const* jobz, char const* range, - lapack_int const* n, - double* D, - double* E, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dstevx(...) LAPACK_dstevx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dstevx(...) LAPACK_dstevx_base(__VA_ARGS__) -#endif - -#define LAPACK_sstevx_base LAPACK_GLOBAL(sstevx,SSTEVX) -void LAPACK_sstevx_base( - char const* jobz, char const* range, - lapack_int const* n, - float* D, - float* E, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_sstevx(...) LAPACK_sstevx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_sstevx(...) LAPACK_sstevx_base(__VA_ARGS__) -#endif - -#define LAPACK_csycon_base LAPACK_GLOBAL(csycon,CSYCON) -void LAPACK_csycon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csycon(...) LAPACK_csycon_base(__VA_ARGS__, 1) -#else - #define LAPACK_csycon(...) LAPACK_csycon_base(__VA_ARGS__) -#endif - -#define LAPACK_dsycon_base LAPACK_GLOBAL(dsycon,DSYCON) -void LAPACK_dsycon_base( - char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, lapack_int const* ipiv, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsycon(...) LAPACK_dsycon_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsycon(...) LAPACK_dsycon_base(__VA_ARGS__) -#endif - -#define LAPACK_ssycon_base LAPACK_GLOBAL(ssycon,SSYCON) -void LAPACK_ssycon_base( - char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, lapack_int const* ipiv, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssycon(...) LAPACK_ssycon_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssycon(...) LAPACK_ssycon_base(__VA_ARGS__) -#endif - -#define LAPACK_zsycon_base LAPACK_GLOBAL(zsycon,ZSYCON) -void LAPACK_zsycon_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsycon(...) LAPACK_zsycon_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsycon(...) LAPACK_zsycon_base(__VA_ARGS__) -#endif - -#define LAPACK_csycon_3_base LAPACK_GLOBAL(csycon_3,CSYCON_3) -void LAPACK_csycon_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - float const* anorm, - float* rcond, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csycon_3(...) LAPACK_csycon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_csycon_3(...) LAPACK_csycon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_dsycon_3_base LAPACK_GLOBAL(dsycon_3,DSYCON_3) -void LAPACK_dsycon_3_base( - char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double const* E, lapack_int const* ipiv, - double const* anorm, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsycon_3(...) LAPACK_dsycon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsycon_3(...) LAPACK_dsycon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_ssycon_3_base LAPACK_GLOBAL(ssycon_3,SSYCON_3) -void LAPACK_ssycon_3_base( - char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float const* E, lapack_int const* ipiv, - float const* anorm, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssycon_3(...) LAPACK_ssycon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssycon_3(...) LAPACK_ssycon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zsycon_3_base LAPACK_GLOBAL(zsycon_3,ZSYCON_3) -void LAPACK_zsycon_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - double const* anorm, - double* rcond, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsycon_3(...) LAPACK_zsycon_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsycon_3(...) LAPACK_zsycon_3_base(__VA_ARGS__) -#endif - -#define LAPACK_csyconv_base LAPACK_GLOBAL(csyconv,CSYCONV) -void LAPACK_csyconv_base( - char const* uplo, char const* way, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* E, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyconv(...) LAPACK_csyconv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_csyconv(...) LAPACK_csyconv_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyconv_base LAPACK_GLOBAL(dsyconv,DSYCONV) -void LAPACK_dsyconv_base( - char const* uplo, char const* way, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* ipiv, - double* E, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyconv(...) LAPACK_dsyconv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyconv(...) LAPACK_dsyconv_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyconv_base LAPACK_GLOBAL(ssyconv,SSYCONV) -void LAPACK_ssyconv_base( - char const* uplo, char const* way, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* ipiv, - float* E, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyconv(...) LAPACK_ssyconv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyconv(...) LAPACK_ssyconv_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyconv_base LAPACK_GLOBAL(zsyconv,ZSYCONV) -void LAPACK_zsyconv_base( - char const* uplo, char const* way, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* E, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyconv(...) LAPACK_zsyconv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zsyconv(...) LAPACK_zsyconv_base(__VA_ARGS__) -#endif - -#define LAPACK_csyequb_base LAPACK_GLOBAL(csyequb,CSYEQUB) -void LAPACK_csyequb_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyequb(...) LAPACK_csyequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_csyequb(...) LAPACK_csyequb_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyequb_base LAPACK_GLOBAL(dsyequb,DSYEQUB) -void LAPACK_dsyequb_base( - char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyequb(...) LAPACK_dsyequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsyequb(...) LAPACK_dsyequb_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyequb_base LAPACK_GLOBAL(ssyequb,SSYEQUB) -void LAPACK_ssyequb_base( - char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* S, - float* scond, - float* amax, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyequb(...) LAPACK_ssyequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssyequb(...) LAPACK_ssyequb_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyequb_base LAPACK_GLOBAL(zsyequb,ZSYEQUB) -void LAPACK_zsyequb_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* S, - double* scond, - double* amax, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyequb(...) LAPACK_zsyequb_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsyequb(...) LAPACK_zsyequb_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyev_base LAPACK_GLOBAL(dsyev,DSYEV) -void LAPACK_dsyev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* W, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyev(...) LAPACK_dsyev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyev(...) LAPACK_dsyev_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyev_base LAPACK_GLOBAL(ssyev,SSYEV) -void LAPACK_ssyev_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* W, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyev(...) LAPACK_ssyev_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyev(...) LAPACK_ssyev_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyev_2stage_base LAPACK_GLOBAL(dsyev_2stage,DSYEV_2STAGE) -void LAPACK_dsyev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* W, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyev_2stage(...) LAPACK_dsyev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyev_2stage(...) LAPACK_dsyev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyev_2stage_base LAPACK_GLOBAL(ssyev_2stage,SSYEV_2STAGE) -void LAPACK_ssyev_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* W, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyev_2stage(...) LAPACK_ssyev_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyev_2stage(...) LAPACK_ssyev_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevd_base LAPACK_GLOBAL(dsyevd,DSYEVD) -void LAPACK_dsyevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* W, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevd(...) LAPACK_dsyevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyevd(...) LAPACK_dsyevd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevd_base LAPACK_GLOBAL(ssyevd,SSYEVD) -void LAPACK_ssyevd_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* W, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevd(...) LAPACK_ssyevd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyevd(...) LAPACK_ssyevd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevd_2stage_base LAPACK_GLOBAL(dsyevd_2stage,DSYEVD_2STAGE) -void LAPACK_dsyevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* W, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevd_2stage(...) LAPACK_dsyevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyevd_2stage(...) LAPACK_dsyevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevd_2stage_base LAPACK_GLOBAL(ssyevd_2stage,SSYEVD_2STAGE) -void LAPACK_ssyevd_2stage_base( - char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* W, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevd_2stage(...) LAPACK_ssyevd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyevd_2stage(...) LAPACK_ssyevd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevr_base LAPACK_GLOBAL(dsyevr,DSYEVR) -void LAPACK_dsyevr_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevr(...) LAPACK_dsyevr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsyevr(...) LAPACK_dsyevr_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevr_base LAPACK_GLOBAL(ssyevr,SSYEVR) -void LAPACK_ssyevr_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevr(...) LAPACK_ssyevr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssyevr(...) LAPACK_ssyevr_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevr_2stage_base LAPACK_GLOBAL(dsyevr_2stage,DSYEVR_2STAGE) -void LAPACK_dsyevr_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevr_2stage(...) LAPACK_dsyevr_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsyevr_2stage(...) LAPACK_dsyevr_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevr_2stage_base LAPACK_GLOBAL(ssyevr_2stage,SSYEVR_2STAGE) -void LAPACK_ssyevr_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, lapack_int* ISUPPZ, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevr_2stage(...) LAPACK_ssyevr_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssyevr_2stage(...) LAPACK_ssyevr_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevx_base LAPACK_GLOBAL(dsyevx,DSYEVX) -void LAPACK_dsyevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevx(...) LAPACK_dsyevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsyevx(...) LAPACK_dsyevx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevx_base LAPACK_GLOBAL(ssyevx,SSYEVX) -void LAPACK_ssyevx_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevx(...) LAPACK_ssyevx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssyevx(...) LAPACK_ssyevx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyevx_2stage_base LAPACK_GLOBAL(dsyevx_2stage,DSYEVX_2STAGE) -void LAPACK_dsyevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyevx_2stage(...) LAPACK_dsyevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsyevx_2stage(...) LAPACK_dsyevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyevx_2stage_base LAPACK_GLOBAL(ssyevx_2stage,SSYEVX_2STAGE) -void LAPACK_ssyevx_2stage_base( - char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyevx_2stage(...) LAPACK_ssyevx_2stage_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssyevx_2stage(...) LAPACK_ssyevx_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsygst_base LAPACK_GLOBAL(dsygst,DSYGST) -void LAPACK_dsygst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsygst(...) LAPACK_dsygst_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsygst(...) LAPACK_dsygst_base(__VA_ARGS__) -#endif - -#define LAPACK_ssygst_base LAPACK_GLOBAL(ssygst,SSYGST) -void LAPACK_ssygst_base( - lapack_int const* itype, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssygst(...) LAPACK_ssygst_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssygst(...) LAPACK_ssygst_base(__VA_ARGS__) -#endif - -#define LAPACK_dsygv_base LAPACK_GLOBAL(dsygv,DSYGV) -void LAPACK_dsygv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* W, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsygv(...) LAPACK_dsygv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsygv(...) LAPACK_dsygv_base(__VA_ARGS__) -#endif - -#define LAPACK_ssygv_base LAPACK_GLOBAL(ssygv,SSYGV) -void LAPACK_ssygv_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* W, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssygv(...) LAPACK_ssygv_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssygv(...) LAPACK_ssygv_base(__VA_ARGS__) -#endif - -#define LAPACK_dsygv_2stage_base LAPACK_GLOBAL(dsygv_2stage,DSYGV_2STAGE) -void LAPACK_dsygv_2stage_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* W, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsygv_2stage(...) LAPACK_dsygv_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsygv_2stage(...) LAPACK_dsygv_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssygv_2stage_base LAPACK_GLOBAL(ssygv_2stage,SSYGV_2STAGE) -void LAPACK_ssygv_2stage_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* W, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssygv_2stage(...) LAPACK_ssygv_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssygv_2stage(...) LAPACK_ssygv_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsygvd_base LAPACK_GLOBAL(dsygvd,DSYGVD) -void LAPACK_dsygvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* W, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsygvd(...) LAPACK_dsygvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsygvd(...) LAPACK_dsygvd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssygvd_base LAPACK_GLOBAL(ssygvd,SSYGVD) -void LAPACK_ssygvd_base( - lapack_int const* itype, char const* jobz, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* W, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssygvd(...) LAPACK_ssygvd_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssygvd(...) LAPACK_ssygvd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsygvx_base LAPACK_GLOBAL(dsygvx,DSYGVX) -void LAPACK_dsygvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double const* vl, - double const* vu, lapack_int const* il, lapack_int const* iu, - double const* abstol, lapack_int* m, - double* W, - double* Z, lapack_int const* ldz, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsygvx(...) LAPACK_dsygvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsygvx(...) LAPACK_dsygvx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssygvx_base LAPACK_GLOBAL(ssygvx,SSYGVX) -void LAPACK_ssygvx_base( - lapack_int const* itype, char const* jobz, char const* range, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float const* vl, - float const* vu, lapack_int const* il, lapack_int const* iu, - float const* abstol, lapack_int* m, - float* W, - float* Z, lapack_int const* ldz, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int* IFAIL, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssygvx(...) LAPACK_ssygvx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssygvx(...) LAPACK_ssygvx_base(__VA_ARGS__) -#endif - -#define LAPACK_csyr_base LAPACK_GLOBAL(csyr,CSYR) -void LAPACK_csyr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* alpha, - lapack_complex_float const* X, lapack_int const* incx, - lapack_complex_float* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyr(...) LAPACK_csyr_base(__VA_ARGS__, 1) -#else - #define LAPACK_csyr(...) LAPACK_csyr_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyr_base LAPACK_GLOBAL(zsyr,ZSYR) -void LAPACK_zsyr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* alpha, - lapack_complex_double const* X, lapack_int const* incx, - lapack_complex_double* A, lapack_int const* lda -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyr(...) LAPACK_zsyr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsyr(...) LAPACK_zsyr_base(__VA_ARGS__) -#endif - -#define LAPACK_csyrfs_base LAPACK_GLOBAL(csyrfs,CSYRFS) -void LAPACK_csyrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyrfs(...) LAPACK_csyrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_csyrfs(...) LAPACK_csyrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyrfs_base LAPACK_GLOBAL(dsyrfs,DSYRFS) -void LAPACK_dsyrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyrfs(...) LAPACK_dsyrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsyrfs(...) LAPACK_dsyrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyrfs_base LAPACK_GLOBAL(ssyrfs,SSYRFS) -void LAPACK_ssyrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyrfs(...) LAPACK_ssyrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssyrfs(...) LAPACK_ssyrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyrfs_base LAPACK_GLOBAL(zsyrfs,ZSYRFS) -void LAPACK_zsyrfs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyrfs(...) LAPACK_zsyrfs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsyrfs(...) LAPACK_zsyrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_csyrfsx_base LAPACK_GLOBAL(csyrfsx,CSYRFSX) -void LAPACK_csyrfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const float* S, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyrfsx(...) LAPACK_csyrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_csyrfsx(...) LAPACK_csyrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyrfsx_base LAPACK_GLOBAL(dsyrfsx,DSYRFSX) -void LAPACK_dsyrfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const double* S, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyrfsx(...) LAPACK_dsyrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsyrfsx(...) LAPACK_dsyrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyrfsx_base LAPACK_GLOBAL(ssyrfsx,SSYRFSX) -void LAPACK_ssyrfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const float* S, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyrfsx(...) LAPACK_ssyrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssyrfsx(...) LAPACK_ssyrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyrfsx_base LAPACK_GLOBAL(zsyrfsx,ZSYRFSX) -void LAPACK_zsyrfsx_base( - char const* uplo, char const* equed, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* AF, lapack_int const* ldaf, lapack_int const* ipiv, - const double* S, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyrfsx(...) LAPACK_zsyrfsx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zsyrfsx(...) LAPACK_zsyrfsx_base(__VA_ARGS__) -#endif - -#define LAPACK_csysv_base LAPACK_GLOBAL(csysv,CSYSV) -void LAPACK_csysv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysv(...) LAPACK_csysv_base(__VA_ARGS__, 1) -#else - #define LAPACK_csysv(...) LAPACK_csysv_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysv_base LAPACK_GLOBAL(dsysv,DSYSV) -void LAPACK_dsysv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysv(...) LAPACK_dsysv_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsysv(...) LAPACK_dsysv_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysv_base LAPACK_GLOBAL(ssysv,SSYSV) -void LAPACK_ssysv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysv(...) LAPACK_ssysv_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssysv(...) LAPACK_ssysv_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysv_base LAPACK_GLOBAL(zsysv,ZSYSV) -void LAPACK_zsysv_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysv(...) LAPACK_zsysv_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsysv(...) LAPACK_zsysv_base(__VA_ARGS__) -#endif - -#define LAPACK_csysv_aa_base LAPACK_GLOBAL(csysv_aa,CSYSV_AA) -void LAPACK_csysv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysv_aa(...) LAPACK_csysv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_csysv_aa(...) LAPACK_csysv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysv_aa_base LAPACK_GLOBAL(dsysv_aa,DSYSV_AA) -void LAPACK_dsysv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysv_aa(...) LAPACK_dsysv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsysv_aa(...) LAPACK_dsysv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysv_aa_base LAPACK_GLOBAL(ssysv_aa,SSYSV_AA) -void LAPACK_ssysv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysv_aa(...) LAPACK_ssysv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssysv_aa(...) LAPACK_ssysv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysv_aa_base LAPACK_GLOBAL(zsysv_aa,ZSYSV_AA) -void LAPACK_zsysv_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysv_aa(...) LAPACK_zsysv_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsysv_aa(...) LAPACK_zsysv_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_csysv_aa_2stage_base LAPACK_GLOBAL(csysv_aa_2stage,CSYSV_AA_2STAGE) -void LAPACK_csysv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysv_aa_2stage(...) LAPACK_csysv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_csysv_aa_2stage(...) LAPACK_csysv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysv_aa_2stage_base LAPACK_GLOBAL(dsysv_aa_2stage,DSYSV_AA_2STAGE) -void LAPACK_dsysv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysv_aa_2stage(...) LAPACK_dsysv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsysv_aa_2stage(...) LAPACK_dsysv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysv_aa_2stage_base LAPACK_GLOBAL(ssysv_aa_2stage,SSYSV_AA_2STAGE) -void LAPACK_ssysv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysv_aa_2stage(...) LAPACK_ssysv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssysv_aa_2stage(...) LAPACK_ssysv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysv_aa_2stage_base LAPACK_GLOBAL(zsysv_aa_2stage,ZSYSV_AA_2STAGE) -void LAPACK_zsysv_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysv_aa_2stage(...) LAPACK_zsysv_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsysv_aa_2stage(...) LAPACK_zsysv_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_csysv_rk_base LAPACK_GLOBAL(csysv_rk,CSYSV_RK) -void LAPACK_csysv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* E, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysv_rk(...) LAPACK_csysv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_csysv_rk(...) LAPACK_csysv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysv_rk_base LAPACK_GLOBAL(dsysv_rk,DSYSV_RK) -void LAPACK_dsysv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* E, lapack_int* ipiv, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysv_rk(...) LAPACK_dsysv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsysv_rk(...) LAPACK_dsysv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysv_rk_base LAPACK_GLOBAL(ssysv_rk,SSYSV_RK) -void LAPACK_ssysv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* E, lapack_int* ipiv, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysv_rk(...) LAPACK_ssysv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssysv_rk(...) LAPACK_ssysv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysv_rk_base LAPACK_GLOBAL(zsysv_rk,ZSYSV_RK) -void LAPACK_zsysv_rk_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* E, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysv_rk(...) LAPACK_zsysv_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsysv_rk(...) LAPACK_zsysv_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_csysv_rook_base LAPACK_GLOBAL(csysv_rook,CSYSV_ROOK) -void LAPACK_csysv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysv_rook(...) LAPACK_csysv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_csysv_rook(...) LAPACK_csysv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysv_rook_base LAPACK_GLOBAL(dsysv_rook,DSYSV_ROOK) -void LAPACK_dsysv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysv_rook(...) LAPACK_dsysv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsysv_rook(...) LAPACK_dsysv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysv_rook_base LAPACK_GLOBAL(ssysv_rook,SSYSV_ROOK) -void LAPACK_ssysv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysv_rook(...) LAPACK_ssysv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssysv_rook(...) LAPACK_ssysv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysv_rook_base LAPACK_GLOBAL(zsysv_rook,ZSYSV_ROOK) -void LAPACK_zsysv_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysv_rook(...) LAPACK_zsysv_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsysv_rook(...) LAPACK_zsysv_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_csysvx_base LAPACK_GLOBAL(csysvx,CSYSVX) -void LAPACK_csysvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysvx(...) LAPACK_csysvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_csysvx(...) LAPACK_csysvx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysvx_base LAPACK_GLOBAL(dsysvx,DSYSVX) -void LAPACK_dsysvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, lapack_int* ipiv, - double const* B, lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysvx(...) LAPACK_dsysvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsysvx(...) LAPACK_dsysvx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysvx_base LAPACK_GLOBAL(ssysvx,SSYSVX) -void LAPACK_ssysvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, lapack_int* ipiv, - float const* B, lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* ferr, - float* berr, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysvx(...) LAPACK_ssysvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssysvx(...) LAPACK_ssysvx_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysvx_base LAPACK_GLOBAL(zsysvx,ZSYSVX) -void LAPACK_zsysvx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* ferr, - double* berr, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysvx(...) LAPACK_zsysvx_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zsysvx(...) LAPACK_zsysvx_base(__VA_ARGS__) -#endif - -#define LAPACK_csysvxx_base LAPACK_GLOBAL(csysvxx,CSYSVXX) -void LAPACK_csysvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* S, - lapack_complex_float* B, - lapack_int const* ldb, - lapack_complex_float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csysvxx(...) LAPACK_csysvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_csysvxx(...) LAPACK_csysvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_dsysvxx_base LAPACK_GLOBAL(dsysvxx,DSYSVXX) -void LAPACK_dsysvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double* A, lapack_int const* lda, - double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* S, - double* B, - lapack_int const* ldb, - double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsysvxx(...) LAPACK_dsysvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dsysvxx(...) LAPACK_dsysvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_ssysvxx_base LAPACK_GLOBAL(ssysvxx,SSYSVXX) -void LAPACK_ssysvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float* A, lapack_int const* lda, - float* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - float* S, - float* B, - lapack_int const* ldb, - float* X, lapack_int const* ldx, - float* rcond, - float* rpvgrw, - float* berr, lapack_int const* n_err_bnds, - float* err_bnds_norm, - float* err_bnds_comp, lapack_int const* nparams, - float* params, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssysvxx(...) LAPACK_ssysvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ssysvxx(...) LAPACK_ssysvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_zsysvxx_base LAPACK_GLOBAL(zsysvxx,ZSYSVXX) -void LAPACK_zsysvxx_base( - char const* fact, char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* AF, lapack_int const* ldaf, lapack_int* ipiv, char* equed, - double* S, - lapack_complex_double* B, - lapack_int const* ldb, - lapack_complex_double* X, lapack_int const* ldx, - double* rcond, - double* rpvgrw, - double* berr, lapack_int const* n_err_bnds, - double* err_bnds_norm, - double* err_bnds_comp, lapack_int const* nparams, - double* params, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsysvxx(...) LAPACK_zsysvxx_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zsysvxx(...) LAPACK_zsysvxx_base(__VA_ARGS__) -#endif - -#define LAPACK_csyswapr_base LAPACK_GLOBAL(csyswapr,CSYSWAPR) -void LAPACK_csyswapr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csyswapr(...) LAPACK_csyswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_csyswapr(...) LAPACK_csyswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_dsyswapr_base LAPACK_GLOBAL(dsyswapr,DSYSWAPR) -void LAPACK_dsyswapr_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsyswapr(...) LAPACK_dsyswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsyswapr(...) LAPACK_dsyswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_ssyswapr_base LAPACK_GLOBAL(ssyswapr,SSYSWAPR) -void LAPACK_ssyswapr_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssyswapr(...) LAPACK_ssyswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssyswapr(...) LAPACK_ssyswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_zsyswapr_base LAPACK_GLOBAL(zsyswapr,ZSYSWAPR) -void LAPACK_zsyswapr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* i1, lapack_int const* i2 -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsyswapr(...) LAPACK_zsyswapr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsyswapr(...) LAPACK_zsyswapr_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrd_base LAPACK_GLOBAL(dsytrd,DSYTRD) -void LAPACK_dsytrd_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* D, - double* E, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrd(...) LAPACK_dsytrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrd(...) LAPACK_dsytrd_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrd_base LAPACK_GLOBAL(ssytrd,SSYTRD) -void LAPACK_ssytrd_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* D, - float* E, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrd(...) LAPACK_ssytrd_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrd(...) LAPACK_ssytrd_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrd_2stage_base LAPACK_GLOBAL(dsytrd_2stage,DSYTRD_2STAGE) -void LAPACK_dsytrd_2stage_base( - char const* vect, char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* D, - double* E, - double* tau, - double* HOUS2, lapack_int const* lhous2, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrd_2stage(...) LAPACK_dsytrd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dsytrd_2stage(...) LAPACK_dsytrd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrd_2stage_base LAPACK_GLOBAL(ssytrd_2stage,SSYTRD_2STAGE) -void LAPACK_ssytrd_2stage_base( - char const* vect, char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* D, - float* E, - float* tau, - float* HOUS2, lapack_int const* lhous2, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrd_2stage(...) LAPACK_ssytrd_2stage_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ssytrd_2stage(...) LAPACK_ssytrd_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrf_base LAPACK_GLOBAL(csytrf,CSYTRF) -void LAPACK_csytrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrf(...) LAPACK_csytrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrf(...) LAPACK_csytrf_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrf_base LAPACK_GLOBAL(dsytrf,DSYTRF) -void LAPACK_dsytrf_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrf(...) LAPACK_dsytrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrf(...) LAPACK_dsytrf_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrf_base LAPACK_GLOBAL(ssytrf,SSYTRF) -void LAPACK_ssytrf_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrf(...) LAPACK_ssytrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrf(...) LAPACK_ssytrf_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrf_base LAPACK_GLOBAL(zsytrf,ZSYTRF) -void LAPACK_zsytrf_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrf(...) LAPACK_zsytrf_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrf(...) LAPACK_zsytrf_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrf_aa_base LAPACK_GLOBAL(csytrf_aa,CSYTRF_AA) -void LAPACK_csytrf_aa_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrf_aa(...) LAPACK_csytrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrf_aa(...) LAPACK_csytrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrf_aa_base LAPACK_GLOBAL(dsytrf_aa,DSYTRF_AA) -void LAPACK_dsytrf_aa_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrf_aa(...) LAPACK_dsytrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrf_aa(...) LAPACK_dsytrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrf_aa_base LAPACK_GLOBAL(ssytrf_aa,SSYTRF_AA) -void LAPACK_ssytrf_aa_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrf_aa(...) LAPACK_ssytrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrf_aa(...) LAPACK_ssytrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrf_aa_base LAPACK_GLOBAL(zsytrf_aa,ZSYTRF_AA) -void LAPACK_zsytrf_aa_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrf_aa(...) LAPACK_zsytrf_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrf_aa(...) LAPACK_zsytrf_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrf_aa_2stage_base LAPACK_GLOBAL(csytrf_aa_2stage,CSYTRF_AA_2STAGE) -void LAPACK_csytrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrf_aa_2stage(...) LAPACK_csytrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrf_aa_2stage(...) LAPACK_csytrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrf_aa_2stage_base LAPACK_GLOBAL(dsytrf_aa_2stage,DSYTRF_AA_2STAGE) -void LAPACK_dsytrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrf_aa_2stage(...) LAPACK_dsytrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrf_aa_2stage(...) LAPACK_dsytrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrf_aa_2stage_base LAPACK_GLOBAL(ssytrf_aa_2stage,SSYTRF_AA_2STAGE) -void LAPACK_ssytrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrf_aa_2stage(...) LAPACK_ssytrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrf_aa_2stage(...) LAPACK_ssytrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrf_aa_2stage_base LAPACK_GLOBAL(zsytrf_aa_2stage,ZSYTRF_AA_2STAGE) -void LAPACK_zsytrf_aa_2stage_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrf_aa_2stage(...) LAPACK_zsytrf_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrf_aa_2stage(...) LAPACK_zsytrf_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrf_rk_base LAPACK_GLOBAL(csytrf_rk,CSYTRF_RK) -void LAPACK_csytrf_rk_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* E, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrf_rk(...) LAPACK_csytrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrf_rk(...) LAPACK_csytrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrf_rk_base LAPACK_GLOBAL(dsytrf_rk,DSYTRF_RK) -void LAPACK_dsytrf_rk_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double* E, lapack_int* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrf_rk(...) LAPACK_dsytrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrf_rk(...) LAPACK_dsytrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrf_rk_base LAPACK_GLOBAL(ssytrf_rk,SSYTRF_RK) -void LAPACK_ssytrf_rk_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float* E, lapack_int* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrf_rk(...) LAPACK_ssytrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrf_rk(...) LAPACK_ssytrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrf_rk_base LAPACK_GLOBAL(zsytrf_rk,ZSYTRF_RK) -void LAPACK_zsytrf_rk_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* E, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrf_rk(...) LAPACK_zsytrf_rk_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrf_rk(...) LAPACK_zsytrf_rk_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrf_rook_base LAPACK_GLOBAL(csytrf_rook,CSYTRF_ROOK) -void LAPACK_csytrf_rook_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrf_rook(...) LAPACK_csytrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrf_rook(...) LAPACK_csytrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrf_rook_base LAPACK_GLOBAL(dsytrf_rook,DSYTRF_ROOK) -void LAPACK_dsytrf_rook_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrf_rook(...) LAPACK_dsytrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrf_rook(...) LAPACK_dsytrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrf_rook_base LAPACK_GLOBAL(ssytrf_rook,SSYTRF_ROOK) -void LAPACK_ssytrf_rook_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrf_rook(...) LAPACK_ssytrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrf_rook(...) LAPACK_ssytrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrf_rook_base LAPACK_GLOBAL(zsytrf_rook,ZSYTRF_ROOK) -void LAPACK_zsytrf_rook_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrf_rook(...) LAPACK_zsytrf_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrf_rook(...) LAPACK_zsytrf_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_csytri_base LAPACK_GLOBAL(csytri,CSYTRI) -void LAPACK_csytri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytri(...) LAPACK_csytri_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytri(...) LAPACK_csytri_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytri_base LAPACK_GLOBAL(dsytri,DSYTRI) -void LAPACK_dsytri_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* ipiv, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytri(...) LAPACK_dsytri_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytri(...) LAPACK_dsytri_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytri_base LAPACK_GLOBAL(ssytri,SSYTRI) -void LAPACK_ssytri_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* ipiv, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytri(...) LAPACK_ssytri_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytri(...) LAPACK_ssytri_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytri_base LAPACK_GLOBAL(zsytri,ZSYTRI) -void LAPACK_zsytri_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytri(...) LAPACK_zsytri_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytri(...) LAPACK_zsytri_base(__VA_ARGS__) -#endif - -#define LAPACK_csytri2_base LAPACK_GLOBAL(csytri2,CSYTRI2) -void LAPACK_csytri2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytri2(...) LAPACK_csytri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytri2(...) LAPACK_csytri2_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytri2_base LAPACK_GLOBAL(dsytri2,DSYTRI2) -void LAPACK_dsytri2_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytri2(...) LAPACK_dsytri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytri2(...) LAPACK_dsytri2_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytri2_base LAPACK_GLOBAL(ssytri2,SSYTRI2) -void LAPACK_ssytri2_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytri2(...) LAPACK_ssytri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytri2(...) LAPACK_ssytri2_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytri2_base LAPACK_GLOBAL(zsytri2,ZSYTRI2) -void LAPACK_zsytri2_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytri2(...) LAPACK_zsytri2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytri2(...) LAPACK_zsytri2_base(__VA_ARGS__) -#endif - -#define LAPACK_csytri2x_base LAPACK_GLOBAL(csytri2x,CSYTRI2X) -void LAPACK_csytri2x_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytri2x(...) LAPACK_csytri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytri2x(...) LAPACK_csytri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytri2x_base LAPACK_GLOBAL(dsytri2x,DSYTRI2X) -void LAPACK_dsytri2x_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, lapack_int const* ipiv, - double* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytri2x(...) LAPACK_dsytri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytri2x(...) LAPACK_dsytri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytri2x_base LAPACK_GLOBAL(ssytri2x,SSYTRI2X) -void LAPACK_ssytri2x_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, lapack_int const* ipiv, - float* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytri2x(...) LAPACK_ssytri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytri2x(...) LAPACK_ssytri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytri2x_base LAPACK_GLOBAL(zsytri2x,ZSYTRI2X) -void LAPACK_zsytri2x_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* nb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytri2x(...) LAPACK_zsytri2x_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytri2x(...) LAPACK_zsytri2x_base(__VA_ARGS__) -#endif - -#define LAPACK_csytri_3_base LAPACK_GLOBAL(csytri_3,CSYTRI_3) -void LAPACK_csytri_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytri_3(...) LAPACK_csytri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytri_3(...) LAPACK_csytri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytri_3_base LAPACK_GLOBAL(dsytri_3,DSYTRI_3) -void LAPACK_dsytri_3_base( - char const* uplo, - lapack_int const* n, - double* A, lapack_int const* lda, - double const* E, lapack_int const* ipiv, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytri_3(...) LAPACK_dsytri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytri_3(...) LAPACK_dsytri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytri_3_base LAPACK_GLOBAL(ssytri_3,SSYTRI_3) -void LAPACK_ssytri_3_base( - char const* uplo, - lapack_int const* n, - float* A, lapack_int const* lda, - float const* E, lapack_int const* ipiv, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytri_3(...) LAPACK_ssytri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytri_3(...) LAPACK_ssytri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytri_3_base LAPACK_GLOBAL(zsytri_3,ZSYTRI_3) -void LAPACK_zsytri_3_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytri_3(...) LAPACK_zsytri_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytri_3(...) LAPACK_zsytri_3_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs_base LAPACK_GLOBAL(csytrs,CSYTRS) -void LAPACK_csytrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs(...) LAPACK_csytrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs(...) LAPACK_csytrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs_base LAPACK_GLOBAL(dsytrs,DSYTRS) -void LAPACK_dsytrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs(...) LAPACK_dsytrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs(...) LAPACK_dsytrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs_base LAPACK_GLOBAL(ssytrs,SSYTRS) -void LAPACK_ssytrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs(...) LAPACK_ssytrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs(...) LAPACK_ssytrs_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs_base LAPACK_GLOBAL(zsytrs,ZSYTRS) -void LAPACK_zsytrs_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs(...) LAPACK_zsytrs_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs(...) LAPACK_zsytrs_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs2_base LAPACK_GLOBAL(csytrs2,CSYTRS2) -void LAPACK_csytrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - const lapack_complex_float* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs2(...) LAPACK_csytrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs2(...) LAPACK_csytrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs2_base LAPACK_GLOBAL(dsytrs2,DSYTRS2) -void LAPACK_dsytrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - const double* A, lapack_int const* lda, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs2(...) LAPACK_dsytrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs2(...) LAPACK_dsytrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs2_base LAPACK_GLOBAL(ssytrs2,SSYTRS2) -void LAPACK_ssytrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - const float* A, lapack_int const* lda, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs2(...) LAPACK_ssytrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs2(...) LAPACK_ssytrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs2_base LAPACK_GLOBAL(zsytrs2,ZSYTRS2) -void LAPACK_zsytrs2_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - const lapack_complex_double* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs2(...) LAPACK_zsytrs2_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs2(...) LAPACK_zsytrs2_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs_3_base LAPACK_GLOBAL(csytrs_3,CSYTRS_3) -void LAPACK_csytrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* E, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs_3(...) LAPACK_csytrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs_3(...) LAPACK_csytrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs_3_base LAPACK_GLOBAL(dsytrs_3,DSYTRS_3) -void LAPACK_dsytrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* E, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs_3(...) LAPACK_dsytrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs_3(...) LAPACK_dsytrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs_3_base LAPACK_GLOBAL(ssytrs_3,SSYTRS_3) -void LAPACK_ssytrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* E, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs_3(...) LAPACK_ssytrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs_3(...) LAPACK_ssytrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs_3_base LAPACK_GLOBAL(zsytrs_3,ZSYTRS_3) -void LAPACK_zsytrs_3_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* E, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs_3(...) LAPACK_zsytrs_3_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs_3(...) LAPACK_zsytrs_3_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs_aa_base LAPACK_GLOBAL(csytrs_aa,CSYTRS_AA) -void LAPACK_csytrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs_aa(...) LAPACK_csytrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs_aa(...) LAPACK_csytrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs_aa_base LAPACK_GLOBAL(dsytrs_aa,DSYTRS_AA) -void LAPACK_dsytrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs_aa(...) LAPACK_dsytrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs_aa(...) LAPACK_dsytrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs_aa_base LAPACK_GLOBAL(ssytrs_aa,SSYTRS_AA) -void LAPACK_ssytrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs_aa(...) LAPACK_ssytrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs_aa(...) LAPACK_ssytrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs_aa_base LAPACK_GLOBAL(zsytrs_aa,ZSYTRS_AA) -void LAPACK_zsytrs_aa_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs_aa(...) LAPACK_zsytrs_aa_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs_aa(...) LAPACK_zsytrs_aa_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs_aa_2stage_base LAPACK_GLOBAL(csytrs_aa_2stage,CSYTRS_AA_2STAGE) -void LAPACK_csytrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs_aa_2stage(...) LAPACK_csytrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs_aa_2stage(...) LAPACK_csytrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs_aa_2stage_base LAPACK_GLOBAL(dsytrs_aa_2stage,DSYTRS_AA_2STAGE) -void LAPACK_dsytrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs_aa_2stage(...) LAPACK_dsytrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs_aa_2stage(...) LAPACK_dsytrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs_aa_2stage_base LAPACK_GLOBAL(ssytrs_aa_2stage,SSYTRS_AA_2STAGE) -void LAPACK_ssytrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs_aa_2stage(...) LAPACK_ssytrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs_aa_2stage(...) LAPACK_ssytrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs_aa_2stage_base LAPACK_GLOBAL(zsytrs_aa_2stage,ZSYTRS_AA_2STAGE) -void LAPACK_zsytrs_aa_2stage_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* TB, lapack_int const* ltb, lapack_int const* ipiv, lapack_int const* ipiv2, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs_aa_2stage(...) LAPACK_zsytrs_aa_2stage_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs_aa_2stage(...) LAPACK_zsytrs_aa_2stage_base(__VA_ARGS__) -#endif - -#define LAPACK_csytrs_rook_base LAPACK_GLOBAL(csytrs_rook,CSYTRS_ROOK) -void LAPACK_csytrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_csytrs_rook(...) LAPACK_csytrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_csytrs_rook(...) LAPACK_csytrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_dsytrs_rook_base LAPACK_GLOBAL(dsytrs_rook,DSYTRS_ROOK) -void LAPACK_dsytrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, lapack_int const* ipiv, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dsytrs_rook(...) LAPACK_dsytrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_dsytrs_rook(...) LAPACK_dsytrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_ssytrs_rook_base LAPACK_GLOBAL(ssytrs_rook,SSYTRS_ROOK) -void LAPACK_ssytrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, lapack_int const* ipiv, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ssytrs_rook(...) LAPACK_ssytrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_ssytrs_rook(...) LAPACK_ssytrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_zsytrs_rook_base LAPACK_GLOBAL(zsytrs_rook,ZSYTRS_ROOK) -void LAPACK_zsytrs_rook_base( - char const* uplo, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, lapack_int const* ipiv, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zsytrs_rook(...) LAPACK_zsytrs_rook_base(__VA_ARGS__, 1) -#else - #define LAPACK_zsytrs_rook(...) LAPACK_zsytrs_rook_base(__VA_ARGS__) -#endif - -#define LAPACK_ctbcon_base LAPACK_GLOBAL(ctbcon,CTBCON) -void LAPACK_ctbcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* kd, - lapack_complex_float const* AB, lapack_int const* ldab, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctbcon(...) LAPACK_ctbcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctbcon(...) LAPACK_ctbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dtbcon_base LAPACK_GLOBAL(dtbcon,DTBCON) -void LAPACK_dtbcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* kd, - double const* AB, lapack_int const* ldab, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtbcon(...) LAPACK_dtbcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtbcon(...) LAPACK_dtbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_stbcon_base LAPACK_GLOBAL(stbcon,STBCON) -void LAPACK_stbcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* kd, - float const* AB, lapack_int const* ldab, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stbcon(...) LAPACK_stbcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stbcon(...) LAPACK_stbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ztbcon_base LAPACK_GLOBAL(ztbcon,ZTBCON) -void LAPACK_ztbcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, lapack_int const* kd, - lapack_complex_double const* AB, lapack_int const* ldab, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztbcon(...) LAPACK_ztbcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztbcon(...) LAPACK_ztbcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ctbrfs_base LAPACK_GLOBAL(ctbrfs,CTBRFS) -void LAPACK_ctbrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctbrfs(...) LAPACK_ctbrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctbrfs(...) LAPACK_ctbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtbrfs_base LAPACK_GLOBAL(dtbrfs,DTBRFS) -void LAPACK_dtbrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double const* B, lapack_int const* ldb, - double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtbrfs(...) LAPACK_dtbrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtbrfs(...) LAPACK_dtbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_stbrfs_base LAPACK_GLOBAL(stbrfs,STBRFS) -void LAPACK_stbrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float const* B, lapack_int const* ldb, - float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stbrfs(...) LAPACK_stbrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stbrfs(...) LAPACK_stbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztbrfs_base LAPACK_GLOBAL(ztbrfs,ZTBRFS) -void LAPACK_ztbrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztbrfs(...) LAPACK_ztbrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztbrfs(...) LAPACK_ztbrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctbtrs_base LAPACK_GLOBAL(ctbtrs,CTBTRS) -void LAPACK_ctbtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_float const* AB, lapack_int const* ldab, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctbtrs(...) LAPACK_ctbtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctbtrs(...) LAPACK_ctbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtbtrs_base LAPACK_GLOBAL(dtbtrs,DTBTRS) -void LAPACK_dtbtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - double const* AB, lapack_int const* ldab, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtbtrs(...) LAPACK_dtbtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtbtrs(...) LAPACK_dtbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_stbtrs_base LAPACK_GLOBAL(stbtrs,STBTRS) -void LAPACK_stbtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - float const* AB, lapack_int const* ldab, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stbtrs(...) LAPACK_stbtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stbtrs(...) LAPACK_stbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztbtrs_base LAPACK_GLOBAL(ztbtrs,ZTBTRS) -void LAPACK_ztbtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* kd, lapack_int const* nrhs, - lapack_complex_double const* AB, lapack_int const* ldab, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztbtrs(...) LAPACK_ztbtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztbtrs(...) LAPACK_ztbtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctfsm_base LAPACK_GLOBAL(ctfsm,CTFSM) -void LAPACK_ctfsm_base( - char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* alpha, - lapack_complex_float const* A, - lapack_complex_float* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctfsm(...) LAPACK_ctfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_ctfsm(...) LAPACK_ctfsm_base(__VA_ARGS__) -#endif - -#define LAPACK_dtfsm_base LAPACK_GLOBAL(dtfsm,DTFSM) -void LAPACK_dtfsm_base( - char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, - lapack_int const* m, lapack_int const* n, - double const* alpha, - double const* A, - double* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtfsm(...) LAPACK_dtfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_dtfsm(...) LAPACK_dtfsm_base(__VA_ARGS__) -#endif - -#define LAPACK_stfsm_base LAPACK_GLOBAL(stfsm,STFSM) -void LAPACK_stfsm_base( - char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, - lapack_int const* m, lapack_int const* n, - float const* alpha, - float const* A, - float* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stfsm(...) LAPACK_stfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_stfsm(...) LAPACK_stfsm_base(__VA_ARGS__) -#endif - -#define LAPACK_ztfsm_base LAPACK_GLOBAL(ztfsm,ZTFSM) -void LAPACK_ztfsm_base( - char const* transr, char const* side, char const* uplo, char const* trans, char const* diag, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* alpha, - lapack_complex_double const* A, - lapack_complex_double* B, lapack_int const* ldb -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztfsm(...) LAPACK_ztfsm_base(__VA_ARGS__, 1, 1, 1, 1, 1) -#else - #define LAPACK_ztfsm(...) LAPACK_ztfsm_base(__VA_ARGS__) -#endif - -#define LAPACK_ctftri_base LAPACK_GLOBAL(ctftri,CTFTRI) -void LAPACK_ctftri_base( - char const* transr, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctftri(...) LAPACK_ctftri_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctftri(...) LAPACK_ctftri_base(__VA_ARGS__) -#endif - -#define LAPACK_dtftri_base LAPACK_GLOBAL(dtftri,DTFTRI) -void LAPACK_dtftri_base( - char const* transr, char const* uplo, char const* diag, - lapack_int const* n, - double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtftri(...) LAPACK_dtftri_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtftri(...) LAPACK_dtftri_base(__VA_ARGS__) -#endif - -#define LAPACK_stftri_base LAPACK_GLOBAL(stftri,STFTRI) -void LAPACK_stftri_base( - char const* transr, char const* uplo, char const* diag, - lapack_int const* n, - float* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stftri(...) LAPACK_stftri_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stftri(...) LAPACK_stftri_base(__VA_ARGS__) -#endif - -#define LAPACK_ztftri_base LAPACK_GLOBAL(ztftri,ZTFTRI) -void LAPACK_ztftri_base( - char const* transr, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double* A, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztftri(...) LAPACK_ztftri_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztftri(...) LAPACK_ztftri_base(__VA_ARGS__) -#endif - -#define LAPACK_ctfttp_base LAPACK_GLOBAL(ctfttp,CTFTTP) -void LAPACK_ctfttp_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float const* ARF, - lapack_complex_float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctfttp(...) LAPACK_ctfttp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctfttp(...) LAPACK_ctfttp_base(__VA_ARGS__) -#endif - -#define LAPACK_dtfttp_base LAPACK_GLOBAL(dtfttp,DTFTTP) -void LAPACK_dtfttp_base( - char const* transr, char const* uplo, - lapack_int const* n, - double const* ARF, - double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtfttp(...) LAPACK_dtfttp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtfttp(...) LAPACK_dtfttp_base(__VA_ARGS__) -#endif - -#define LAPACK_stfttp_base LAPACK_GLOBAL(stfttp,STFTTP) -void LAPACK_stfttp_base( - char const* transr, char const* uplo, - lapack_int const* n, - float const* ARF, - float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stfttp(...) LAPACK_stfttp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stfttp(...) LAPACK_stfttp_base(__VA_ARGS__) -#endif - -#define LAPACK_ztfttp_base LAPACK_GLOBAL(ztfttp,ZTFTTP) -void LAPACK_ztfttp_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double const* ARF, - lapack_complex_double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztfttp(...) LAPACK_ztfttp_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztfttp(...) LAPACK_ztfttp_base(__VA_ARGS__) -#endif - -#define LAPACK_ctfttr_base LAPACK_GLOBAL(ctfttr,CTFTTR) -void LAPACK_ctfttr_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float const* ARF, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctfttr(...) LAPACK_ctfttr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctfttr(...) LAPACK_ctfttr_base(__VA_ARGS__) -#endif - -#define LAPACK_dtfttr_base LAPACK_GLOBAL(dtfttr,DTFTTR) -void LAPACK_dtfttr_base( - char const* transr, char const* uplo, - lapack_int const* n, - double const* ARF, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtfttr(...) LAPACK_dtfttr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtfttr(...) LAPACK_dtfttr_base(__VA_ARGS__) -#endif - -#define LAPACK_stfttr_base LAPACK_GLOBAL(stfttr,STFTTR) -void LAPACK_stfttr_base( - char const* transr, char const* uplo, - lapack_int const* n, - float const* ARF, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stfttr(...) LAPACK_stfttr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stfttr(...) LAPACK_stfttr_base(__VA_ARGS__) -#endif - -#define LAPACK_ztfttr_base LAPACK_GLOBAL(ztfttr,ZTFTTR) -void LAPACK_ztfttr_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double const* ARF, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztfttr(...) LAPACK_ztfttr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztfttr(...) LAPACK_ztfttr_base(__VA_ARGS__) -#endif - -#define LAPACK_ctgevc_base LAPACK_GLOBAL(ctgevc,CTGEVC) -void LAPACK_ctgevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float const* S, lapack_int const* lds, - lapack_complex_float const* P, lapack_int const* ldp, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctgevc(...) LAPACK_ctgevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctgevc(...) LAPACK_ctgevc_base(__VA_ARGS__) -#endif - -#define LAPACK_dtgevc_base LAPACK_GLOBAL(dtgevc,DTGEVC) -void LAPACK_dtgevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - double const* S, lapack_int const* lds, - double const* P, lapack_int const* ldp, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtgevc(...) LAPACK_dtgevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtgevc(...) LAPACK_dtgevc_base(__VA_ARGS__) -#endif - -#define LAPACK_stgevc_base LAPACK_GLOBAL(stgevc,STGEVC) -void LAPACK_stgevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - float const* S, lapack_int const* lds, - float const* P, lapack_int const* ldp, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stgevc(...) LAPACK_stgevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stgevc(...) LAPACK_stgevc_base(__VA_ARGS__) -#endif - -#define LAPACK_ztgevc_base LAPACK_GLOBAL(ztgevc,ZTGEVC) -void LAPACK_ztgevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double const* S, lapack_int const* lds, - lapack_complex_double const* P, lapack_int const* ldp, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztgevc(...) LAPACK_ztgevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztgevc(...) LAPACK_ztgevc_base(__VA_ARGS__) -#endif - -#define LAPACK_ctgexc LAPACK_GLOBAL(ctgexc,CTGEXC) -void LAPACK_ctgexc( - lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int const* ifst, lapack_int* ilst, - lapack_int* info ); - -#define LAPACK_dtgexc LAPACK_GLOBAL(dtgexc,DTGEXC) -void LAPACK_dtgexc( - lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* Q, lapack_int const* ldq, - double* Z, lapack_int const* ldz, lapack_int* ifst, lapack_int* ilst, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_stgexc LAPACK_GLOBAL(stgexc,STGEXC) -void LAPACK_stgexc( - lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* Q, lapack_int const* ldq, - float* Z, lapack_int const* ldz, lapack_int* ifst, lapack_int* ilst, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_ztgexc LAPACK_GLOBAL(ztgexc,ZTGEXC) -void LAPACK_ztgexc( - lapack_logical const* wantq, lapack_logical const* wantz, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int const* ifst, lapack_int* ilst, - lapack_int* info ); - -#define LAPACK_ctgsen LAPACK_GLOBAL(ctgsen,CTGSEN) -void LAPACK_ctgsen( - lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* Z, lapack_int const* ldz, lapack_int* m, - float* pl, - float* pr, - float* DIF, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info ); - -#define LAPACK_dtgsen LAPACK_GLOBAL(dtgsen,DTGSEN) -void LAPACK_dtgsen( - lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* alphar, - double* alphai, - double* beta, - double* Q, lapack_int const* ldq, - double* Z, lapack_int const* ldz, lapack_int* m, - double* pl, - double* pr, - double* DIF, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info ); - -#define LAPACK_stgsen LAPACK_GLOBAL(stgsen,STGSEN) -void LAPACK_stgsen( - lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* alphar, - float* alphai, - float* beta, - float* Q, lapack_int const* ldq, - float* Z, lapack_int const* ldz, lapack_int* m, - float* pl, - float* pr, - float* DIF, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info ); - -#define LAPACK_ztgsen LAPACK_GLOBAL(ztgsen,ZTGSEN) -void LAPACK_ztgsen( - lapack_int const* ijob, lapack_logical const* wantq, lapack_logical const* wantz, lapack_logical const* select, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* Z, lapack_int const* ldz, lapack_int* m, - double* pl, - double* pr, - double* DIF, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info ); - -#define LAPACK_ctgsja_base LAPACK_GLOBAL(ctgsja,CTGSJA) -void LAPACK_ctgsja_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - float const* tola, - float const* tolb, - float* alpha, - float* beta, - lapack_complex_float* U, lapack_int const* ldu, - lapack_complex_float* V, lapack_int const* ldv, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* work, lapack_int* ncycle, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctgsja(...) LAPACK_ctgsja_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctgsja(...) LAPACK_ctgsja_base(__VA_ARGS__) -#endif - -#define LAPACK_dtgsja_base LAPACK_GLOBAL(dtgsja,DTGSJA) -void LAPACK_dtgsja_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double const* tola, - double const* tolb, - double* alpha, - double* beta, - double* U, lapack_int const* ldu, - double* V, lapack_int const* ldv, - double* Q, lapack_int const* ldq, - double* work, lapack_int* ncycle, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtgsja(...) LAPACK_dtgsja_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtgsja(...) LAPACK_dtgsja_base(__VA_ARGS__) -#endif - -#define LAPACK_stgsja_base LAPACK_GLOBAL(stgsja,STGSJA) -void LAPACK_stgsja_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float const* tola, - float const* tolb, - float* alpha, - float* beta, - float* U, lapack_int const* ldu, - float* V, lapack_int const* ldv, - float* Q, lapack_int const* ldq, - float* work, lapack_int* ncycle, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stgsja(...) LAPACK_stgsja_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stgsja(...) LAPACK_stgsja_base(__VA_ARGS__) -#endif - -#define LAPACK_ztgsja_base LAPACK_GLOBAL(ztgsja,ZTGSJA) -void LAPACK_ztgsja_base( - char const* jobu, char const* jobv, char const* jobq, - lapack_int const* m, lapack_int const* p, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - double const* tola, - double const* tolb, - double* alpha, - double* beta, - lapack_complex_double* U, lapack_int const* ldu, - lapack_complex_double* V, lapack_int const* ldv, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* work, lapack_int* ncycle, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztgsja(...) LAPACK_ztgsja_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztgsja(...) LAPACK_ztgsja_base(__VA_ARGS__) -#endif - -#define LAPACK_ctgsna_base LAPACK_GLOBAL(ctgsna,CTGSNA) -void LAPACK_ctgsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float const* VL, lapack_int const* ldvl, - lapack_complex_float const* VR, lapack_int const* ldvr, - float* S, - float* DIF, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctgsna(...) LAPACK_ctgsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctgsna(...) LAPACK_ctgsna_base(__VA_ARGS__) -#endif - -#define LAPACK_dtgsna_base LAPACK_GLOBAL(dtgsna,DTGSNA) -void LAPACK_dtgsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double const* VL, lapack_int const* ldvl, - double const* VR, lapack_int const* ldvr, - double* S, - double* DIF, lapack_int const* mm, lapack_int* m, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtgsna(...) LAPACK_dtgsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtgsna(...) LAPACK_dtgsna_base(__VA_ARGS__) -#endif - -#define LAPACK_stgsna_base LAPACK_GLOBAL(stgsna,STGSNA) -void LAPACK_stgsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - float const* VL, lapack_int const* ldvl, - float const* VR, lapack_int const* ldvr, - float* S, - float* DIF, lapack_int const* mm, lapack_int* m, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stgsna(...) LAPACK_stgsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stgsna(...) LAPACK_stgsna_base(__VA_ARGS__) -#endif - -#define LAPACK_ztgsna_base LAPACK_GLOBAL(ztgsna,ZTGSNA) -void LAPACK_ztgsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double const* VL, lapack_int const* ldvl, - lapack_complex_double const* VR, lapack_int const* ldvr, - double* S, - double* DIF, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztgsna(...) LAPACK_ztgsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztgsna(...) LAPACK_ztgsna_base(__VA_ARGS__) -#endif - -#define LAPACK_ctgsyl_base LAPACK_GLOBAL(ctgsyl,CTGSYL) -void LAPACK_ctgsyl_base( - char const* trans, - lapack_int const* ijob, lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float const* D, lapack_int const* ldd, - lapack_complex_float const* E, lapack_int const* lde, - lapack_complex_float* F, lapack_int const* ldf, - float* dif, - float* scale, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctgsyl(...) LAPACK_ctgsyl_base(__VA_ARGS__, 1) -#else - #define LAPACK_ctgsyl(...) LAPACK_ctgsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_dtgsyl_base LAPACK_GLOBAL(dtgsyl,DTGSYL) -void LAPACK_dtgsyl_base( - char const* trans, - lapack_int const* ijob, lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double* C, lapack_int const* ldc, - double const* D, lapack_int const* ldd, - double const* E, lapack_int const* lde, - double* F, lapack_int const* ldf, - double* dif, - double* scale, - double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtgsyl(...) LAPACK_dtgsyl_base(__VA_ARGS__, 1) -#else - #define LAPACK_dtgsyl(...) LAPACK_dtgsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_stgsyl_base LAPACK_GLOBAL(stgsyl,STGSYL) -void LAPACK_stgsyl_base( - char const* trans, - lapack_int const* ijob, lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - float* C, lapack_int const* ldc, - float const* D, lapack_int const* ldd, - float const* E, lapack_int const* lde, - float* F, lapack_int const* ldf, - float* dif, - float* scale, - float* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stgsyl(...) LAPACK_stgsyl_base(__VA_ARGS__, 1) -#else - #define LAPACK_stgsyl(...) LAPACK_stgsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_ztgsyl_base LAPACK_GLOBAL(ztgsyl,ZTGSYL) -void LAPACK_ztgsyl_base( - char const* trans, - lapack_int const* ijob, lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double const* D, lapack_int const* ldd, - lapack_complex_double const* E, lapack_int const* lde, - lapack_complex_double* F, lapack_int const* ldf, - double* dif, - double* scale, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztgsyl(...) LAPACK_ztgsyl_base(__VA_ARGS__, 1) -#else - #define LAPACK_ztgsyl(...) LAPACK_ztgsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_ctpcon_base LAPACK_GLOBAL(ctpcon,CTPCON) -void LAPACK_ctpcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float const* AP, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctpcon(...) LAPACK_ctpcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctpcon(...) LAPACK_ctpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dtpcon_base LAPACK_GLOBAL(dtpcon,DTPCON) -void LAPACK_dtpcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - double const* AP, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtpcon(...) LAPACK_dtpcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtpcon(...) LAPACK_dtpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_stpcon_base LAPACK_GLOBAL(stpcon,STPCON) -void LAPACK_stpcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - float const* AP, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stpcon(...) LAPACK_stpcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stpcon(...) LAPACK_stpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ztpcon_base LAPACK_GLOBAL(ztpcon,ZTPCON) -void LAPACK_ztpcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double const* AP, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztpcon(...) LAPACK_ztpcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztpcon(...) LAPACK_ztpcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ctplqt LAPACK_GLOBAL(ctplqt,CTPLQT) -void LAPACK_ctplqt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dtplqt LAPACK_GLOBAL(dtplqt,DTPLQT) -void LAPACK_dtplqt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* T, lapack_int const* ldt, - double* work, - lapack_int* info ); - -#define LAPACK_stplqt LAPACK_GLOBAL(stplqt,STPLQT) -void LAPACK_stplqt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* T, lapack_int const* ldt, - float* work, - lapack_int* info ); - -#define LAPACK_ztplqt LAPACK_GLOBAL(ztplqt,ZTPLQT) -void LAPACK_ztplqt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* mb, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_ctplqt2 LAPACK_GLOBAL(ctplqt2,CTPLQT2) -void LAPACK_ctplqt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_dtplqt2 LAPACK_GLOBAL(dtplqt2,DTPLQT2) -void LAPACK_dtplqt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_stplqt2 LAPACK_GLOBAL(stplqt2,STPLQT2) -void LAPACK_stplqt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_ztplqt2 LAPACK_GLOBAL(ztplqt2,ZTPLQT2) -void LAPACK_ztplqt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_ctpmlqt_base LAPACK_GLOBAL(ctpmlqt,CTPMLQT) -void LAPACK_ctpmlqt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctpmlqt(...) LAPACK_ctpmlqt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctpmlqt(...) LAPACK_ctpmlqt_base(__VA_ARGS__) -#endif - -#define LAPACK_dtpmlqt_base LAPACK_GLOBAL(dtpmlqt,DTPMLQT) -void LAPACK_dtpmlqt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, - double const* V, lapack_int const* ldv, - double const* T, lapack_int const* ldt, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtpmlqt(...) LAPACK_dtpmlqt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtpmlqt(...) LAPACK_dtpmlqt_base(__VA_ARGS__) -#endif - -#define LAPACK_stpmlqt_base LAPACK_GLOBAL(stpmlqt,STPMLQT) -void LAPACK_stpmlqt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, - float const* V, lapack_int const* ldv, - float const* T, lapack_int const* ldt, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stpmlqt(...) LAPACK_stpmlqt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stpmlqt(...) LAPACK_stpmlqt_base(__VA_ARGS__) -#endif - -#define LAPACK_ztpmlqt_base LAPACK_GLOBAL(ztpmlqt,ZTPMLQT) -void LAPACK_ztpmlqt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* mb, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztpmlqt(...) LAPACK_ztpmlqt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztpmlqt(...) LAPACK_ztpmlqt_base(__VA_ARGS__) -#endif - -#define LAPACK_ctpmqrt_base LAPACK_GLOBAL(ctpmqrt,CTPMQRT) -void LAPACK_ctpmqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctpmqrt(...) LAPACK_ctpmqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctpmqrt(...) LAPACK_ctpmqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_dtpmqrt_base LAPACK_GLOBAL(dtpmqrt,DTPMQRT) -void LAPACK_dtpmqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, - double const* V, lapack_int const* ldv, - double const* T, lapack_int const* ldt, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtpmqrt(...) LAPACK_dtpmqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtpmqrt(...) LAPACK_dtpmqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_stpmqrt_base LAPACK_GLOBAL(stpmqrt,STPMQRT) -void LAPACK_stpmqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, - float const* V, lapack_int const* ldv, - float const* T, lapack_int const* ldt, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stpmqrt(...) LAPACK_stpmqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stpmqrt(...) LAPACK_stpmqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_ztpmqrt_base LAPACK_GLOBAL(ztpmqrt,ZTPMQRT) -void LAPACK_ztpmqrt_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, lapack_int const* nb, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztpmqrt(...) LAPACK_ztpmqrt_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztpmqrt(...) LAPACK_ztpmqrt_base(__VA_ARGS__) -#endif - -#define LAPACK_ctpqrt LAPACK_GLOBAL(ctpqrt,CTPQRT) -void LAPACK_ctpqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* work, - lapack_int* info ); - -#define LAPACK_dtpqrt LAPACK_GLOBAL(dtpqrt,DTPQRT) -void LAPACK_dtpqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* T, lapack_int const* ldt, - double* work, - lapack_int* info ); - -#define LAPACK_stpqrt LAPACK_GLOBAL(stpqrt,STPQRT) -void LAPACK_stpqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* T, lapack_int const* ldt, - float* work, - lapack_int* info ); - -#define LAPACK_ztpqrt LAPACK_GLOBAL(ztpqrt,ZTPQRT) -void LAPACK_ztpqrt( - lapack_int const* m, lapack_int const* n, lapack_int const* l, lapack_int const* nb, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* work, - lapack_int* info ); - -#define LAPACK_ctpqrt2 LAPACK_GLOBAL(ctpqrt2,CTPQRT2) -void LAPACK_ctpqrt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_dtpqrt2 LAPACK_GLOBAL(dtpqrt2,DTPQRT2) -void LAPACK_dtpqrt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_stpqrt2 LAPACK_GLOBAL(stpqrt2,STPQRT2) -void LAPACK_stpqrt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_ztpqrt2 LAPACK_GLOBAL(ztpqrt2,ZTPQRT2) -void LAPACK_ztpqrt2( - lapack_int const* m, lapack_int const* n, lapack_int const* l, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* T, lapack_int const* ldt, - lapack_int* info ); - -#define LAPACK_ctprfb_base LAPACK_GLOBAL(ctprfb,CTPRFB) -void LAPACK_ctprfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_float const* V, lapack_int const* ldv, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_complex_float* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctprfb(...) LAPACK_ctprfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_ctprfb(...) LAPACK_ctprfb_base(__VA_ARGS__) -#endif - -#define LAPACK_dtprfb_base LAPACK_GLOBAL(dtprfb,DTPRFB) -void LAPACK_dtprfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - double const* V, lapack_int const* ldv, - double const* T, lapack_int const* ldt, - double* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - double* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtprfb(...) LAPACK_dtprfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_dtprfb(...) LAPACK_dtprfb_base(__VA_ARGS__) -#endif - -#define LAPACK_stprfb_base LAPACK_GLOBAL(stprfb,STPRFB) -void LAPACK_stprfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - float const* V, lapack_int const* ldv, - float const* T, lapack_int const* ldt, - float* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - float* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stprfb(...) LAPACK_stprfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_stprfb(...) LAPACK_stprfb_base(__VA_ARGS__) -#endif - -#define LAPACK_ztprfb_base LAPACK_GLOBAL(ztprfb,ZTPRFB) -void LAPACK_ztprfb_base( - char const* side, char const* trans, char const* direct, char const* storev, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_double const* V, lapack_int const* ldv, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_complex_double* work, lapack_int const* ldwork -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztprfb(...) LAPACK_ztprfb_base(__VA_ARGS__, 1, 1, 1, 1) -#else - #define LAPACK_ztprfb(...) LAPACK_ztprfb_base(__VA_ARGS__) -#endif - -#define LAPACK_ctprfs_base LAPACK_GLOBAL(ctprfs,CTPRFS) -void LAPACK_ctprfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctprfs(...) LAPACK_ctprfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctprfs(...) LAPACK_ctprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtprfs_base LAPACK_GLOBAL(dtprfs,DTPRFS) -void LAPACK_dtprfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double const* B, lapack_int const* ldb, - double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtprfs(...) LAPACK_dtprfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtprfs(...) LAPACK_dtprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_stprfs_base LAPACK_GLOBAL(stprfs,STPRFS) -void LAPACK_stprfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float const* B, lapack_int const* ldb, - float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stprfs(...) LAPACK_stprfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stprfs(...) LAPACK_stprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztprfs_base LAPACK_GLOBAL(ztprfs,ZTPRFS) -void LAPACK_ztprfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztprfs(...) LAPACK_ztprfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztprfs(...) LAPACK_ztprfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctptri_base LAPACK_GLOBAL(ctptri,CTPTRI) -void LAPACK_ctptri_base( - char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctptri(...) LAPACK_ctptri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctptri(...) LAPACK_ctptri_base(__VA_ARGS__) -#endif - -#define LAPACK_dtptri_base LAPACK_GLOBAL(dtptri,DTPTRI) -void LAPACK_dtptri_base( - char const* uplo, char const* diag, - lapack_int const* n, - double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtptri(...) LAPACK_dtptri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtptri(...) LAPACK_dtptri_base(__VA_ARGS__) -#endif - -#define LAPACK_stptri_base LAPACK_GLOBAL(stptri,STPTRI) -void LAPACK_stptri_base( - char const* uplo, char const* diag, - lapack_int const* n, - float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stptri(...) LAPACK_stptri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stptri(...) LAPACK_stptri_base(__VA_ARGS__) -#endif - -#define LAPACK_ztptri_base LAPACK_GLOBAL(ztptri,ZTPTRI) -void LAPACK_ztptri_base( - char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztptri(...) LAPACK_ztptri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztptri(...) LAPACK_ztptri_base(__VA_ARGS__) -#endif - -#define LAPACK_ctptrs_base LAPACK_GLOBAL(ctptrs,CTPTRS) -void LAPACK_ctptrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* AP, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctptrs(...) LAPACK_ctptrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctptrs(...) LAPACK_ctptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtptrs_base LAPACK_GLOBAL(dtptrs,DTPTRS) -void LAPACK_dtptrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - double const* AP, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtptrs(...) LAPACK_dtptrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtptrs(...) LAPACK_dtptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_stptrs_base LAPACK_GLOBAL(stptrs,STPTRS) -void LAPACK_stptrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - float const* AP, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stptrs(...) LAPACK_stptrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_stptrs(...) LAPACK_stptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztptrs_base LAPACK_GLOBAL(ztptrs,ZTPTRS) -void LAPACK_ztptrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* AP, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztptrs(...) LAPACK_ztptrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztptrs(...) LAPACK_ztptrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctpttf_base LAPACK_GLOBAL(ctpttf,CTPTTF) -void LAPACK_ctpttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - lapack_complex_float* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctpttf(...) LAPACK_ctpttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctpttf(...) LAPACK_ctpttf_base(__VA_ARGS__) -#endif - -#define LAPACK_dtpttf_base LAPACK_GLOBAL(dtpttf,DTPTTF) -void LAPACK_dtpttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - double const* AP, - double* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtpttf(...) LAPACK_dtpttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtpttf(...) LAPACK_dtpttf_base(__VA_ARGS__) -#endif - -#define LAPACK_stpttf_base LAPACK_GLOBAL(stpttf,STPTTF) -void LAPACK_stpttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - float const* AP, - float* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stpttf(...) LAPACK_stpttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_stpttf(...) LAPACK_stpttf_base(__VA_ARGS__) -#endif - -#define LAPACK_ztpttf_base LAPACK_GLOBAL(ztpttf,ZTPTTF) -void LAPACK_ztpttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - lapack_complex_double* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztpttf(...) LAPACK_ztpttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztpttf(...) LAPACK_ztpttf_base(__VA_ARGS__) -#endif - -#define LAPACK_ctpttr_base LAPACK_GLOBAL(ctpttr,CTPTTR) -void LAPACK_ctpttr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctpttr(...) LAPACK_ctpttr_base(__VA_ARGS__, 1) -#else - #define LAPACK_ctpttr(...) LAPACK_ctpttr_base(__VA_ARGS__) -#endif - -#define LAPACK_dtpttr_base LAPACK_GLOBAL(dtpttr,DTPTTR) -void LAPACK_dtpttr_base( - char const* uplo, - lapack_int const* n, - double const* AP, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtpttr(...) LAPACK_dtpttr_base(__VA_ARGS__, 1) -#else - #define LAPACK_dtpttr(...) LAPACK_dtpttr_base(__VA_ARGS__) -#endif - -#define LAPACK_stpttr_base LAPACK_GLOBAL(stpttr,STPTTR) -void LAPACK_stpttr_base( - char const* uplo, - lapack_int const* n, - float const* AP, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_stpttr(...) LAPACK_stpttr_base(__VA_ARGS__, 1) -#else - #define LAPACK_stpttr(...) LAPACK_stpttr_base(__VA_ARGS__) -#endif - -#define LAPACK_ztpttr_base LAPACK_GLOBAL(ztpttr,ZTPTTR) -void LAPACK_ztpttr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztpttr(...) LAPACK_ztpttr_base(__VA_ARGS__, 1) -#else - #define LAPACK_ztpttr(...) LAPACK_ztpttr_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrcon_base LAPACK_GLOBAL(ctrcon,CTRCON) -void LAPACK_ctrcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - float* rcond, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrcon(...) LAPACK_ctrcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctrcon(...) LAPACK_ctrcon_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrcon_base LAPACK_GLOBAL(dtrcon,DTRCON) -void LAPACK_dtrcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* rcond, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrcon(...) LAPACK_dtrcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtrcon(...) LAPACK_dtrcon_base(__VA_ARGS__) -#endif - -#define LAPACK_strcon_base LAPACK_GLOBAL(strcon,STRCON) -void LAPACK_strcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* rcond, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strcon(...) LAPACK_strcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_strcon(...) LAPACK_strcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrcon_base LAPACK_GLOBAL(ztrcon,ZTRCON) -void LAPACK_ztrcon_base( - char const* norm, char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - double* rcond, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrcon(...) LAPACK_ztrcon_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztrcon(...) LAPACK_ztrcon_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrevc_base LAPACK_GLOBAL(ctrevc,CTREVC) -void LAPACK_ctrevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrevc(...) LAPACK_ctrevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrevc(...) LAPACK_ctrevc_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrevc_base LAPACK_GLOBAL(dtrevc,DTREVC) -void LAPACK_dtrevc_base( - char const* side, char const* howmny, - lapack_logical* select, - lapack_int const* n, - double const* T, lapack_int const* ldt, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrevc(...) LAPACK_dtrevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrevc(...) LAPACK_dtrevc_base(__VA_ARGS__) -#endif - -#define LAPACK_strevc_base LAPACK_GLOBAL(strevc,STREVC) -void LAPACK_strevc_base( - char const* side, char const* howmny, - lapack_logical* select, - lapack_int const* n, - float const* T, lapack_int const* ldt, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strevc(...) LAPACK_strevc_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strevc(...) LAPACK_strevc_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrevc_base LAPACK_GLOBAL(ztrevc,ZTREVC) -void LAPACK_ztrevc_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__, (size_t)1, 1) -#else - #define LAPACK_ztrevc(...) LAPACK_ztrevc_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrevc3_base LAPACK_GLOBAL(ctrevc3,CTREVC3) -void LAPACK_ctrevc3_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* VL, lapack_int const* ldvl, - lapack_complex_float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrevc3(...) LAPACK_ctrevc3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrevc3(...) LAPACK_ctrevc3_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrevc3_base LAPACK_GLOBAL(dtrevc3,DTREVC3) -void LAPACK_dtrevc3_base( - char const* side, char const* howmny, - lapack_logical* select, - lapack_int const* n, - double const* T, lapack_int const* ldt, - double* VL, lapack_int const* ldvl, - double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrevc3(...) LAPACK_dtrevc3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrevc3(...) LAPACK_dtrevc3_base(__VA_ARGS__) -#endif - -#define LAPACK_strevc3_base LAPACK_GLOBAL(strevc3,STREVC3) -void LAPACK_strevc3_base( - char const* side, char const* howmny, - lapack_logical* select, - lapack_int const* n, - float const* T, lapack_int const* ldt, - float* VL, lapack_int const* ldvl, - float* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strevc3(...) LAPACK_strevc3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strevc3(...) LAPACK_strevc3_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrevc3_base LAPACK_GLOBAL(ztrevc3,ZTREVC3) -void LAPACK_ztrevc3_base( - char const* side, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* VL, lapack_int const* ldvl, - lapack_complex_double* VR, lapack_int const* ldvr, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrevc3(...) LAPACK_ztrevc3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrevc3(...) LAPACK_ztrevc3_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrexc_base LAPACK_GLOBAL(ctrexc,CTREXC) -void LAPACK_ctrexc_base( - char const* compq, - lapack_int const* n, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* Q, lapack_int const* ldq, lapack_int const* ifst, lapack_int const* ilst, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrexc(...) LAPACK_ctrexc_base(__VA_ARGS__, 1) -#else - #define LAPACK_ctrexc(...) LAPACK_ctrexc_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrexc_base LAPACK_GLOBAL(dtrexc,DTREXC) -void LAPACK_dtrexc_base( - char const* compq, - lapack_int const* n, - double* T, lapack_int const* ldt, - double* Q, lapack_int const* ldq, lapack_int* ifst, lapack_int* ilst, - double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrexc(...) LAPACK_dtrexc_base(__VA_ARGS__, 1) -#else - #define LAPACK_dtrexc(...) LAPACK_dtrexc_base(__VA_ARGS__) -#endif - -#define LAPACK_strexc_base LAPACK_GLOBAL(strexc,STREXC) -void LAPACK_strexc_base( - char const* compq, - lapack_int const* n, - float* T, lapack_int const* ldt, - float* Q, lapack_int const* ldq, lapack_int* ifst, lapack_int* ilst, - float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strexc(...) LAPACK_strexc_base(__VA_ARGS__, 1) -#else - #define LAPACK_strexc(...) LAPACK_strexc_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrexc_base LAPACK_GLOBAL(ztrexc,ZTREXC) -void LAPACK_ztrexc_base( - char const* compq, - lapack_int const* n, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* Q, lapack_int const* ldq, lapack_int const* ifst, lapack_int const* ilst, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrexc(...) LAPACK_ztrexc_base(__VA_ARGS__, 1) -#else - #define LAPACK_ztrexc(...) LAPACK_ztrexc_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrrfs_base LAPACK_GLOBAL(ctrrfs,CTRRFS) -void LAPACK_ctrrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - lapack_complex_float* work, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrrfs(...) LAPACK_ctrrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctrrfs(...) LAPACK_ctrrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrrfs_base LAPACK_GLOBAL(dtrrfs,DTRRFS) -void LAPACK_dtrrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - double* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrrfs(...) LAPACK_dtrrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtrrfs(...) LAPACK_dtrrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_strrfs_base LAPACK_GLOBAL(strrfs,STRRFS) -void LAPACK_strrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - float const* X, lapack_int const* ldx, - float* ferr, - float* berr, - float* work, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strrfs(...) LAPACK_strrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_strrfs(...) LAPACK_strrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrrfs_base LAPACK_GLOBAL(ztrrfs,ZTRRFS) -void LAPACK_ztrrfs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double const* X, lapack_int const* ldx, - double* ferr, - double* berr, - lapack_complex_double* work, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrrfs(...) LAPACK_ztrrfs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztrrfs(...) LAPACK_ztrrfs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrsen_base LAPACK_GLOBAL(ctrsen,CTRSEN) -void LAPACK_ctrsen_base( - char const* job, char const* compq, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float* T, lapack_int const* ldt, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* W, lapack_int* m, - float* s, - float* sep, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrsen(...) LAPACK_ctrsen_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrsen(...) LAPACK_ctrsen_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrsen_base LAPACK_GLOBAL(dtrsen,DTRSEN) -void LAPACK_dtrsen_base( - char const* job, char const* compq, - lapack_logical const* select, - lapack_int const* n, - double* T, lapack_int const* ldt, - double* Q, lapack_int const* ldq, - double* WR, - double* WI, lapack_int* m, - double* s, - double* sep, - double* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrsen(...) LAPACK_dtrsen_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrsen(...) LAPACK_dtrsen_base(__VA_ARGS__) -#endif - -#define LAPACK_strsen_base LAPACK_GLOBAL(strsen,STRSEN) -void LAPACK_strsen_base( - char const* job, char const* compq, - lapack_logical const* select, - lapack_int const* n, - float* T, lapack_int const* ldt, - float* Q, lapack_int const* ldq, - float* WR, - float* WI, lapack_int* m, - float* s, - float* sep, - float* work, lapack_int const* lwork, - lapack_int* iwork, lapack_int const* liwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strsen(...) LAPACK_strsen_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strsen(...) LAPACK_strsen_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrsen_base LAPACK_GLOBAL(ztrsen,ZTRSEN) -void LAPACK_ztrsen_base( - char const* job, char const* compq, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double* T, lapack_int const* ldt, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* W, lapack_int* m, - double* s, - double* sep, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrsen(...) LAPACK_ztrsen_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrsen(...) LAPACK_ztrsen_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrsna_base LAPACK_GLOBAL(ctrsna,CTRSNA) -void LAPACK_ctrsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float const* VL, lapack_int const* ldvl, - lapack_complex_float const* VR, lapack_int const* ldvr, - float* S, - float* SEP, lapack_int const* mm, lapack_int* m, - lapack_complex_float* work, lapack_int const* ldwork, - float* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrsna(...) LAPACK_ctrsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrsna(...) LAPACK_ctrsna_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrsna_base LAPACK_GLOBAL(dtrsna,DTRSNA) -void LAPACK_dtrsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - double const* T, lapack_int const* ldt, - double const* VL, lapack_int const* ldvl, - double const* VR, lapack_int const* ldvr, - double* S, - double* SEP, lapack_int const* mm, lapack_int* m, - double* work, lapack_int const* ldwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrsna(...) LAPACK_dtrsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrsna(...) LAPACK_dtrsna_base(__VA_ARGS__) -#endif - -#define LAPACK_strsna_base LAPACK_GLOBAL(strsna,STRSNA) -void LAPACK_strsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - float const* T, lapack_int const* ldt, - float const* VL, lapack_int const* ldvl, - float const* VR, lapack_int const* ldvr, - float* S, - float* SEP, lapack_int const* mm, lapack_int* m, - float* work, lapack_int const* ldwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strsna(...) LAPACK_strsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strsna(...) LAPACK_strsna_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrsna_base LAPACK_GLOBAL(ztrsna,ZTRSNA) -void LAPACK_ztrsna_base( - char const* job, char const* howmny, - lapack_logical const* select, - lapack_int const* n, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double const* VL, lapack_int const* ldvl, - lapack_complex_double const* VR, lapack_int const* ldvr, - double* S, - double* SEP, lapack_int const* mm, lapack_int* m, - lapack_complex_double* work, lapack_int const* ldwork, - double* rwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrsna(...) LAPACK_ztrsna_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrsna(...) LAPACK_ztrsna_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrsyl_base LAPACK_GLOBAL(ctrsyl,CTRSYL) -void LAPACK_ctrsyl_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* C, lapack_int const* ldc, - float* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrsyl(...) LAPACK_ctrsyl_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrsyl(...) LAPACK_ctrsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrsyl_base LAPACK_GLOBAL(dtrsyl,DTRSYL) -void LAPACK_dtrsyl_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double* C, lapack_int const* ldc, - double* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrsyl(...) LAPACK_dtrsyl_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrsyl(...) LAPACK_dtrsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_strsyl_base LAPACK_GLOBAL(strsyl,STRSYL) -void LAPACK_strsyl_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - float* C, lapack_int const* ldc, - float* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strsyl(...) LAPACK_strsyl_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strsyl(...) LAPACK_strsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrsyl_base LAPACK_GLOBAL(ztrsyl,ZTRSYL) -void LAPACK_ztrsyl_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* C, lapack_int const* ldc, - double* scale, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrsyl(...) LAPACK_ztrsyl_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrsyl(...) LAPACK_ztrsyl_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrsyl3_base LAPACK_GLOBAL(ctrsyl3,CTRSYL3) -void LAPACK_ctrsyl3_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* B, lapack_int const* ldb, - lapack_complex_float* C, lapack_int const* ldc, float* scale, - float* swork, lapack_int const *ldswork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrsyl3(...) LAPACK_ctrsyl3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrsyl3(...) LAPACK_ctrsyl3_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrsyl3_base LAPACK_GLOBAL(dtrsyl3,DTRSYL3) -void LAPACK_dtrsyl3_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - double const* A, lapack_int const* lda, - double const* B, lapack_int const* ldb, - double* C, lapack_int const* ldc, double* scale, - lapack_int* iwork, lapack_int const* liwork, - double* swork, lapack_int const *ldswork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrsyl3(...) LAPACK_dtrsyl3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrsyl3(...) LAPACK_dtrsyl3_base(__VA_ARGS__) -#endif - -#define LAPACK_strsyl3_base LAPACK_GLOBAL(strsyl3,STRSYL3) -void LAPACK_strsyl3_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - float const* A, lapack_int const* lda, - float const* B, lapack_int const* ldb, - float* C, lapack_int const* ldc, float* scale, - lapack_int* iwork, lapack_int const* liwork, - float* swork, lapack_int const *ldswork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strsyl3(...) LAPACK_strsyl3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strsyl3(...) LAPACK_strsyl3_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrsyl3_base LAPACK_GLOBAL(ztrsyl3,ZTRSYL3) -void LAPACK_ztrsyl3_base( - char const* trana, char const* tranb, - lapack_int const* isgn, lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* B, lapack_int const* ldb, - lapack_complex_double* C, lapack_int const* ldc, double* scale, - double* swork, lapack_int const *ldswork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrsyl3(...) LAPACK_ztrsyl3_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrsyl3(...) LAPACK_ztrsyl3_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrtri_base LAPACK_GLOBAL(ctrtri,CTRTRI) -lapack_int LAPACK_ctrtri_base( - char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrtri(...) LAPACK_ctrtri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrtri(...) LAPACK_ctrtri_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrtri_base LAPACK_GLOBAL(dtrtri,DTRTRI) -lapack_int LAPACK_dtrtri_base( - char const* uplo, char const* diag, - lapack_int const* n, - double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrtri(...) LAPACK_dtrtri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrtri(...) LAPACK_dtrtri_base(__VA_ARGS__) -#endif - -#define LAPACK_strtri_base LAPACK_GLOBAL(strtri,STRTRI) -lapack_int LAPACK_strtri_base( - char const* uplo, char const* diag, - lapack_int const* n, - float* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strtri(...) LAPACK_strtri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strtri(...) LAPACK_strtri_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrtri_base LAPACK_GLOBAL(ztrtri,ZTRTRI) -lapack_int LAPACK_ztrtri_base( - char const* uplo, char const* diag, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrtri(...) LAPACK_ztrtri_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrtri(...) LAPACK_ztrtri_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrtrs_base LAPACK_GLOBAL(ctrtrs,CTRTRS) -void LAPACK_ctrtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrtrs(...) LAPACK_ctrtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ctrtrs(...) LAPACK_ctrtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrtrs_base LAPACK_GLOBAL(dtrtrs,DTRTRS) -void LAPACK_dtrtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - double const* A, lapack_int const* lda, - double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrtrs(...) LAPACK_dtrtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_dtrtrs(...) LAPACK_dtrtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_strtrs_base LAPACK_GLOBAL(strtrs,STRTRS) -void LAPACK_strtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - float const* A, lapack_int const* lda, - float* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strtrs(...) LAPACK_strtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_strtrs(...) LAPACK_strtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrtrs_base LAPACK_GLOBAL(ztrtrs,ZTRTRS) -void LAPACK_ztrtrs_base( - char const* uplo, char const* trans, char const* diag, - lapack_int const* n, lapack_int const* nrhs, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* B, lapack_int const* ldb, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrtrs(...) LAPACK_ztrtrs_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_ztrtrs(...) LAPACK_ztrtrs_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrttf_base LAPACK_GLOBAL(ctrttf,CTRTTF) -void LAPACK_ctrttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrttf(...) LAPACK_ctrttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ctrttf(...) LAPACK_ctrttf_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrttf_base LAPACK_GLOBAL(dtrttf,DTRTTF) -void LAPACK_dtrttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrttf(...) LAPACK_dtrttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_dtrttf(...) LAPACK_dtrttf_base(__VA_ARGS__) -#endif - -#define LAPACK_strttf_base LAPACK_GLOBAL(strttf,STRTTF) -void LAPACK_strttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strttf(...) LAPACK_strttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_strttf(...) LAPACK_strttf_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrttf_base LAPACK_GLOBAL(ztrttf,ZTRTTF) -void LAPACK_ztrttf_base( - char const* transr, char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* ARF, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrttf(...) LAPACK_ztrttf_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_ztrttf(...) LAPACK_ztrttf_base(__VA_ARGS__) -#endif - -#define LAPACK_ctrttp_base LAPACK_GLOBAL(ctrttp,CTRTTP) -void LAPACK_ctrttp_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ctrttp(...) LAPACK_ctrttp_base(__VA_ARGS__, 1) -#else - #define LAPACK_ctrttp(...) LAPACK_ctrttp_base(__VA_ARGS__) -#endif - -#define LAPACK_dtrttp_base LAPACK_GLOBAL(dtrttp,DTRTTP) -void LAPACK_dtrttp_base( - char const* uplo, - lapack_int const* n, - double const* A, lapack_int const* lda, - double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_dtrttp(...) LAPACK_dtrttp_base(__VA_ARGS__, 1) -#else - #define LAPACK_dtrttp(...) LAPACK_dtrttp_base(__VA_ARGS__) -#endif - -#define LAPACK_strttp_base LAPACK_GLOBAL(strttp,STRTTP) -void LAPACK_strttp_base( - char const* uplo, - lapack_int const* n, - float const* A, lapack_int const* lda, - float* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_strttp(...) LAPACK_strttp_base(__VA_ARGS__, 1) -#else - #define LAPACK_strttp(...) LAPACK_strttp_base(__VA_ARGS__) -#endif - -#define LAPACK_ztrttp_base LAPACK_GLOBAL(ztrttp,ZTRTTP) -void LAPACK_ztrttp_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double* AP, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_ztrttp(...) LAPACK_ztrttp_base(__VA_ARGS__, 1) -#else - #define LAPACK_ztrttp(...) LAPACK_ztrttp_base(__VA_ARGS__) -#endif - -#define LAPACK_ctzrzf LAPACK_GLOBAL(ctzrzf,CTZRZF) -void LAPACK_ctzrzf( - lapack_int const* m, lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_dtzrzf LAPACK_GLOBAL(dtzrzf,DTZRZF) -void LAPACK_dtzrzf( - lapack_int const* m, lapack_int const* n, - double* A, lapack_int const* lda, - double* tau, - double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_stzrzf LAPACK_GLOBAL(stzrzf,STZRZF) -void LAPACK_stzrzf( - lapack_int const* m, lapack_int const* n, - float* A, lapack_int const* lda, - float* tau, - float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_ztzrzf LAPACK_GLOBAL(ztzrzf,ZTZRZF) -void LAPACK_ztzrzf( - lapack_int const* m, lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cunbdb_base LAPACK_GLOBAL(cunbdb,CUNBDB) -void LAPACK_cunbdb_base( - char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_float* X11, lapack_int const* ldx11, - lapack_complex_float* X12, lapack_int const* ldx12, - lapack_complex_float* X21, lapack_int const* ldx21, - lapack_complex_float* X22, lapack_int const* ldx22, - float* theta, - float* phi, - lapack_complex_float* TAUP1, - lapack_complex_float* TAUP2, - lapack_complex_float* TAUQ1, - lapack_complex_float* TAUQ2, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunbdb(...) LAPACK_cunbdb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunbdb(...) LAPACK_cunbdb_base(__VA_ARGS__) -#endif - -#define LAPACK_zunbdb_base LAPACK_GLOBAL(zunbdb,ZUNBDB) -void LAPACK_zunbdb_base( - char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_double* X11, lapack_int const* ldx11, - lapack_complex_double* X12, lapack_int const* ldx12, - lapack_complex_double* X21, lapack_int const* ldx21, - lapack_complex_double* X22, lapack_int const* ldx22, - double* theta, - double* phi, - lapack_complex_double* TAUP1, - lapack_complex_double* TAUP2, - lapack_complex_double* TAUQ1, - lapack_complex_double* TAUQ2, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunbdb(...) LAPACK_zunbdb_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunbdb(...) LAPACK_zunbdb_base(__VA_ARGS__) -#endif - -#define LAPACK_cuncsd_base LAPACK_GLOBAL(cuncsd,CUNCSD) -void LAPACK_cuncsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_float* X11, lapack_int const* ldx11, - lapack_complex_float* X12, lapack_int const* ldx12, - lapack_complex_float* X21, lapack_int const* ldx21, - lapack_complex_float* X22, lapack_int const* ldx22, - float* theta, - lapack_complex_float* U1, lapack_int const* ldu1, - lapack_complex_float* U2, lapack_int const* ldu2, - lapack_complex_float* V1T, lapack_int const* ldv1t, - lapack_complex_float* V2T, lapack_int const* ldv2t, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cuncsd(...) LAPACK_cuncsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_cuncsd(...) LAPACK_cuncsd_base(__VA_ARGS__) -#endif - -#define LAPACK_zuncsd_base LAPACK_GLOBAL(zuncsd,ZUNCSD) -void LAPACK_zuncsd_base( - char const* jobu1, char const* jobu2, char const* jobv1t, char const* jobv2t, char const* trans, char const* signs, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_double* X11, lapack_int const* ldx11, - lapack_complex_double* X12, lapack_int const* ldx12, - lapack_complex_double* X21, lapack_int const* ldx21, - lapack_complex_double* X22, lapack_int const* ldx22, - double* theta, - lapack_complex_double* U1, lapack_int const* ldu1, - lapack_complex_double* U2, lapack_int const* ldu2, - lapack_complex_double* V1T, lapack_int const* ldv1t, - lapack_complex_double* V2T, lapack_int const* ldv2t, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zuncsd(...) LAPACK_zuncsd_base(__VA_ARGS__, 1, 1, 1, 1, 1, 1) -#else - #define LAPACK_zuncsd(...) LAPACK_zuncsd_base(__VA_ARGS__) -#endif - -#define LAPACK_cuncsd2by1_base LAPACK_GLOBAL(cuncsd2by1,CUNCSD2BY1) -void LAPACK_cuncsd2by1_base( - char const* jobu1, char const* jobu2, char const* jobv1t, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_float* X11, lapack_int const* ldx11, - lapack_complex_float* X21, lapack_int const* ldx21, - float* theta, - lapack_complex_float* U1, lapack_int const* ldu1, - lapack_complex_float* U2, lapack_int const* ldu2, - lapack_complex_float* V1T, lapack_int const* ldv1t, - lapack_complex_float* work, lapack_int const* lwork, - float* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cuncsd2by1(...) LAPACK_cuncsd2by1_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cuncsd2by1(...) LAPACK_cuncsd2by1_base(__VA_ARGS__) -#endif - -#define LAPACK_zuncsd2by1_base LAPACK_GLOBAL(zuncsd2by1,ZUNCSD2BY1) -void LAPACK_zuncsd2by1_base( - char const* jobu1, char const* jobu2, char const* jobv1t, - lapack_int const* m, lapack_int const* p, lapack_int const* q, - lapack_complex_double* X11, lapack_int const* ldx11, - lapack_complex_double* X21, lapack_int const* ldx21, - double* theta, - lapack_complex_double* U1, lapack_int const* ldu1, - lapack_complex_double* U2, lapack_int const* ldu2, - lapack_complex_double* V1T, lapack_int const* ldv1t, - lapack_complex_double* work, lapack_int const* lwork, - double* rwork, lapack_int const* lrwork, - lapack_int* iwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zuncsd2by1(...) LAPACK_zuncsd2by1_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zuncsd2by1(...) LAPACK_zuncsd2by1_base(__VA_ARGS__) -#endif - -#define LAPACK_cungbr_base LAPACK_GLOBAL(cungbr,CUNGBR) -void LAPACK_cungbr_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cungbr(...) LAPACK_cungbr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cungbr(...) LAPACK_cungbr_base(__VA_ARGS__) -#endif - -#define LAPACK_zungbr_base LAPACK_GLOBAL(zungbr,ZUNGBR) -void LAPACK_zungbr_base( - char const* vect, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zungbr(...) LAPACK_zungbr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zungbr(...) LAPACK_zungbr_base(__VA_ARGS__) -#endif - -#define LAPACK_cunghr LAPACK_GLOBAL(cunghr,CUNGHR) -void LAPACK_cunghr( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zunghr LAPACK_GLOBAL(zunghr,ZUNGHR) -void LAPACK_zunghr( - lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cunglq LAPACK_GLOBAL(cunglq,CUNGLQ) -void LAPACK_cunglq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zunglq LAPACK_GLOBAL(zunglq,ZUNGLQ) -void LAPACK_zunglq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cungql LAPACK_GLOBAL(cungql,CUNGQL) -void LAPACK_cungql( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zungql LAPACK_GLOBAL(zungql,ZUNGQL) -void LAPACK_zungql( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cungqr LAPACK_GLOBAL(cungqr,CUNGQR) -void LAPACK_cungqr( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zungqr LAPACK_GLOBAL(zungqr,ZUNGQR) -void LAPACK_zungqr( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cungrq LAPACK_GLOBAL(cungrq,CUNGRQ) -void LAPACK_cungrq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zungrq LAPACK_GLOBAL(zungrq,ZUNGRQ) -void LAPACK_zungrq( - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cungtr_base LAPACK_GLOBAL(cungtr,CUNGTR) -void LAPACK_cungtr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cungtr(...) LAPACK_cungtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cungtr(...) LAPACK_cungtr_base(__VA_ARGS__) -#endif - -#define LAPACK_zungtr_base LAPACK_GLOBAL(zungtr,ZUNGTR) -void LAPACK_zungtr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zungtr(...) LAPACK_zungtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zungtr(...) LAPACK_zungtr_base(__VA_ARGS__) -#endif - -#define LAPACK_cungtsqr_row LAPACK_GLOBAL(cungtsqr_row,CUNGTSQR_ROW) -void LAPACK_cungtsqr_row( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb, lapack_int const* nb, - lapack_complex_float* A, lapack_int const* lda, - lapack_complex_float const* T, lapack_int const* ldt, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_zungtsqr_row LAPACK_GLOBAL(zungtsqr_row,ZUNGTSQR_ROW) -void LAPACK_zungtsqr_row( - lapack_int const* m, lapack_int const* n, - lapack_int const* mb, lapack_int const* nb, - lapack_complex_double* A, lapack_int const* lda, - lapack_complex_double const* T, lapack_int const* ldt, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info ); - -#define LAPACK_cunhr_col LAPACK_GLOBAL(cunhr_col,CUNHR_COL) -void LAPACK_cunhr_col( - lapack_int const* m, lapack_int const* n, - lapack_int const* nb, lapack_complex_float* A, - lapack_int const* lda, lapack_complex_float* T, - lapack_int const* ldt, lapack_complex_float* D, - lapack_int* info ); - -#define LAPACK_zunhr_col LAPACK_GLOBAL(zunhr_col,ZUNHR_COL) -void LAPACK_zunhr_col( - lapack_int const* m, lapack_int const* n, - lapack_int const* nb, lapack_complex_double* A, - lapack_int const* lda, lapack_complex_double* T, - lapack_int const* ldt, lapack_complex_double* D, - lapack_int* info ); - -#define LAPACK_cunmbr_base LAPACK_GLOBAL(cunmbr,CUNMBR) -void LAPACK_cunmbr_base( - char const* vect, char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmbr(...) LAPACK_cunmbr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cunmbr(...) LAPACK_cunmbr_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmbr_base LAPACK_GLOBAL(zunmbr,ZUNMBR) -void LAPACK_zunmbr_base( - char const* vect, char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmbr(...) LAPACK_zunmbr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zunmbr(...) LAPACK_zunmbr_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmhr_base LAPACK_GLOBAL(cunmhr,CUNMHR) -void LAPACK_cunmhr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmhr(...) LAPACK_cunmhr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmhr(...) LAPACK_cunmhr_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmhr_base LAPACK_GLOBAL(zunmhr,ZUNMHR) -void LAPACK_zunmhr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* ilo, lapack_int const* ihi, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmhr(...) LAPACK_zunmhr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmhr(...) LAPACK_zunmhr_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmlq_base LAPACK_GLOBAL(cunmlq,CUNMLQ) -void LAPACK_cunmlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmlq(...) LAPACK_cunmlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmlq(...) LAPACK_cunmlq_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmlq_base LAPACK_GLOBAL(zunmlq,ZUNMLQ) -void LAPACK_zunmlq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmlq(...) LAPACK_zunmlq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmlq(...) LAPACK_zunmlq_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmql_base LAPACK_GLOBAL(cunmql,CUNMQL) -void LAPACK_cunmql_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmql(...) LAPACK_cunmql_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmql(...) LAPACK_cunmql_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmql_base LAPACK_GLOBAL(zunmql,ZUNMQL) -void LAPACK_zunmql_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmql(...) LAPACK_zunmql_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmql(...) LAPACK_zunmql_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmqr_base LAPACK_GLOBAL(cunmqr,CUNMQR) -void LAPACK_cunmqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmqr(...) LAPACK_cunmqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmqr(...) LAPACK_cunmqr_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmqr_base LAPACK_GLOBAL(zunmqr,ZUNMQR) -void LAPACK_zunmqr_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmqr(...) LAPACK_zunmqr_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmqr(...) LAPACK_zunmqr_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmrq_base LAPACK_GLOBAL(cunmrq,CUNMRQ) -void LAPACK_cunmrq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmrq(...) LAPACK_cunmrq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmrq(...) LAPACK_cunmrq_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmrq_base LAPACK_GLOBAL(zunmrq,ZUNMRQ) -void LAPACK_zunmrq_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmrq(...) LAPACK_zunmrq_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmrq(...) LAPACK_zunmrq_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmrz_base LAPACK_GLOBAL(cunmrz,CUNMRZ) -void LAPACK_cunmrz_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmrz(...) LAPACK_cunmrz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_cunmrz(...) LAPACK_cunmrz_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmrz_base LAPACK_GLOBAL(zunmrz,ZUNMRZ) -void LAPACK_zunmrz_base( - char const* side, char const* trans, - lapack_int const* m, lapack_int const* n, lapack_int const* k, lapack_int const* l, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmrz(...) LAPACK_zunmrz_base(__VA_ARGS__, 1, 1) -#else - #define LAPACK_zunmrz(...) LAPACK_zunmrz_base(__VA_ARGS__) -#endif - -#define LAPACK_cunmtr_base LAPACK_GLOBAL(cunmtr,CUNMTR) -void LAPACK_cunmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* A, lapack_int const* lda, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cunmtr(...) LAPACK_cunmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cunmtr(...) LAPACK_cunmtr_base(__VA_ARGS__) -#endif - -#define LAPACK_zunmtr_base LAPACK_GLOBAL(zunmtr,ZUNMTR) -void LAPACK_zunmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* A, lapack_int const* lda, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, lapack_int const* lwork, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zunmtr(...) LAPACK_zunmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zunmtr(...) LAPACK_zunmtr_base(__VA_ARGS__) -#endif - -#define LAPACK_cupgtr_base LAPACK_GLOBAL(cupgtr,CUPGTR) -void LAPACK_cupgtr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_float const* AP, - lapack_complex_float const* tau, - lapack_complex_float* Q, lapack_int const* ldq, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cupgtr(...) LAPACK_cupgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_cupgtr(...) LAPACK_cupgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_zupgtr_base LAPACK_GLOBAL(zupgtr,ZUPGTR) -void LAPACK_zupgtr_base( - char const* uplo, - lapack_int const* n, - lapack_complex_double const* AP, - lapack_complex_double const* tau, - lapack_complex_double* Q, lapack_int const* ldq, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zupgtr(...) LAPACK_zupgtr_base(__VA_ARGS__, 1) -#else - #define LAPACK_zupgtr(...) LAPACK_zupgtr_base(__VA_ARGS__) -#endif - -#define LAPACK_cupmtr_base LAPACK_GLOBAL(cupmtr,CUPMTR) -void LAPACK_cupmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - lapack_complex_float const* AP, - lapack_complex_float const* tau, - lapack_complex_float* C, lapack_int const* ldc, - lapack_complex_float* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_cupmtr(...) LAPACK_cupmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_cupmtr(...) LAPACK_cupmtr_base(__VA_ARGS__) -#endif - -#define LAPACK_zupmtr_base LAPACK_GLOBAL(zupmtr,ZUPMTR) -void LAPACK_zupmtr_base( - char const* side, char const* uplo, char const* trans, - lapack_int const* m, lapack_int const* n, - lapack_complex_double const* AP, - lapack_complex_double const* tau, - lapack_complex_double* C, lapack_int const* ldc, - lapack_complex_double* work, - lapack_int* info -#ifdef LAPACK_FORTRAN_STRLEN_END - , FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN -#endif -); -#ifdef LAPACK_FORTRAN_STRLEN_END - #define LAPACK_zupmtr(...) LAPACK_zupmtr_base(__VA_ARGS__, 1, 1, 1) -#else - #define LAPACK_zupmtr(...) LAPACK_zupmtr_base(__VA_ARGS__) -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LAPACK_H */ diff --git a/install/include/lapacke.h b/install/include/lapacke.h deleted file mode 100644 index 377e2a6bbc..0000000000 --- a/install/include/lapacke.h +++ /dev/null @@ -1,12888 +0,0 @@ -/***************************************************************************** - Copyright (c) 2014, Intel Corp. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. -****************************************************************************** -* Contents: Native C interface to LAPACK -* Author: Intel Corporation -*****************************************************************************/ - -#ifndef _LAPACKE_H_ -#define _LAPACKE_H_ - -#include "lapack.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifndef LAPACKE_malloc -#define LAPACKE_malloc( size ) malloc( size ) -#endif -#ifndef LAPACKE_free -#define LAPACKE_free( p ) free( p ) -#endif - -#define LAPACK_C2INT( x ) (lapack_int)(*((float*)&x )) -#define LAPACK_Z2INT( x ) (lapack_int)(*((double*)&x )) - -#define LAPACK_ROW_MAJOR 101 -#define LAPACK_COL_MAJOR 102 - -#define LAPACK_WORK_MEMORY_ERROR -1010 -#define LAPACK_TRANSPOSE_MEMORY_ERROR -1011 - -lapack_complex_float lapack_make_complex_float( float re, float im ); -lapack_complex_double lapack_make_complex_double( double re, double im ); - -/* C-LAPACK function prototypes */ - -lapack_int LAPACKE_sbdsdc( int matrix_layout, char uplo, char compq, - lapack_int n, float* d, float* e, float* u, - lapack_int ldu, float* vt, lapack_int ldvt, float* q, - lapack_int* iq ); -lapack_int LAPACKE_dbdsdc( int matrix_layout, char uplo, char compq, - lapack_int n, double* d, double* e, double* u, - lapack_int ldu, double* vt, lapack_int ldvt, - double* q, lapack_int* iq ); - -lapack_int LAPACKE_sbdsqr( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - float* d, float* e, float* vt, lapack_int ldvt, - float* u, lapack_int ldu, float* c, lapack_int ldc ); -lapack_int LAPACKE_dbdsqr( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - double* d, double* e, double* vt, lapack_int ldvt, - double* u, lapack_int ldu, double* c, - lapack_int ldc ); -lapack_int LAPACKE_cbdsqr( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - float* d, float* e, lapack_complex_float* vt, - lapack_int ldvt, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* c, - lapack_int ldc ); -lapack_int LAPACKE_zbdsqr( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - double* d, double* e, lapack_complex_double* vt, - lapack_int ldvt, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* c, - lapack_int ldc ); -lapack_int LAPACKE_sbdsvdx( int matrix_layout, char uplo, char jobz, char range, - lapack_int n, float* d, float* e, - float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, float* z, lapack_int ldz, - lapack_int* superb ); -lapack_int LAPACKE_dbdsvdx( int matrix_layout, char uplo, char jobz, char range, - lapack_int n, double* d, double* e, - double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, double* z, lapack_int ldz, - lapack_int* superb ); -lapack_int LAPACKE_sdisna( char job, lapack_int m, lapack_int n, const float* d, - float* sep ); -lapack_int LAPACKE_ddisna( char job, lapack_int m, lapack_int n, - const double* d, double* sep ); - -lapack_int LAPACKE_sgbbrd( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, float* ab, lapack_int ldab, float* d, - float* e, float* q, lapack_int ldq, float* pt, - lapack_int ldpt, float* c, lapack_int ldc ); -lapack_int LAPACKE_dgbbrd( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, double* ab, lapack_int ldab, - double* d, double* e, double* q, lapack_int ldq, - double* pt, lapack_int ldpt, double* c, - lapack_int ldc ); -lapack_int LAPACKE_cgbbrd( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, lapack_complex_float* ab, - lapack_int ldab, float* d, float* e, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* pt, lapack_int ldpt, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zgbbrd( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, lapack_complex_double* ab, - lapack_int ldab, double* d, double* e, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* pt, lapack_int ldpt, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_sgbcon( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, const lapack_int* ipiv, float anorm, - float* rcond ); -lapack_int LAPACKE_dgbcon( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, const lapack_int* ipiv, - double anorm, double* rcond ); -lapack_int LAPACKE_cgbcon( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zgbcon( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, lapack_int ldab, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_sgbequ( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, float* r, float* c, float* rowcnd, - float* colcnd, float* amax ); -lapack_int LAPACKE_dgbequ( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); -lapack_int LAPACKE_cgbequ( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - float* r, float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_zgbequ( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, lapack_int ldab, - double* r, double* c, double* rowcnd, double* colcnd, - double* amax ); - -lapack_int LAPACKE_sgbequb( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, float* r, float* c, float* rowcnd, - float* colcnd, float* amax ); -lapack_int LAPACKE_dgbequb( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); -lapack_int LAPACKE_cgbequb( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - float* r, float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_zgbequb( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, lapack_int ldab, - double* r, double* c, double* rowcnd, - double* colcnd, double* amax ); - -lapack_int LAPACKE_sgbrfs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const float* ab, lapack_int ldab, const float* afb, - lapack_int ldafb, const lapack_int* ipiv, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_dgbrfs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const double* ab, lapack_int ldab, const double* afb, - lapack_int ldafb, const lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr ); -lapack_int LAPACKE_cgbrfs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* afb, lapack_int ldafb, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zgbrfs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - const lapack_complex_double* afb, lapack_int ldafb, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sgbrfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const float* ab, lapack_int ldab, - const float* afb, lapack_int ldafb, - const lapack_int* ipiv, const float* r, - const float* c, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dgbrfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const double* ab, lapack_int ldab, - const double* afb, lapack_int ldafb, - const lapack_int* ipiv, const double* r, - const double* c, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); -lapack_int LAPACKE_cgbrfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const lapack_complex_float* ab, - lapack_int ldab, const lapack_complex_float* afb, - lapack_int ldafb, const lapack_int* ipiv, - const float* r, const float* c, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_zgbrfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const lapack_complex_double* ab, - lapack_int ldab, const lapack_complex_double* afb, - lapack_int ldafb, const lapack_int* ipiv, - const double* r, const double* c, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); - -lapack_int LAPACKE_sgbsv( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, float* ab, - lapack_int ldab, lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgbsv( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, double* ab, - lapack_int ldab, lapack_int* ipiv, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cgbsv( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgbsv( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sgbsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, float* ab, lapack_int ldab, - float* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, float* r, float* c, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* rpivot ); -lapack_int LAPACKE_dgbsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, double* ab, lapack_int ldab, - double* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, double* r, double* c, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* rpivot ); -lapack_int LAPACKE_cgbsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - float* r, float* c, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, float* rpivot ); -lapack_int LAPACKE_zgbsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - double* r, double* c, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, double* rpivot ); - -lapack_int LAPACKE_sgbsvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, float* ab, lapack_int ldab, - float* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, float* r, float* c, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dgbsvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, double* ab, lapack_int ldab, - double* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, double* r, double* c, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); -lapack_int LAPACKE_cgbsvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - float* r, float* c, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_zgbsvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - double* r, double* c, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* rpvgrw, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); - -lapack_int LAPACKE_sgbtrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, float* ab, - lapack_int ldab, lapack_int* ipiv ); -lapack_int LAPACKE_dgbtrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, double* ab, - lapack_int ldab, lapack_int* ipiv ); -lapack_int LAPACKE_cgbtrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - lapack_complex_float* ab, lapack_int ldab, - lapack_int* ipiv ); -lapack_int LAPACKE_zgbtrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - lapack_complex_double* ab, lapack_int ldab, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgbtrs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const float* ab, lapack_int ldab, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dgbtrs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const double* ab, lapack_int ldab, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_cgbtrs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgbtrs( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - const lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sgebak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const float* scale, - lapack_int m, float* v, lapack_int ldv ); -lapack_int LAPACKE_dgebak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const double* scale, - lapack_int m, double* v, lapack_int ldv ); -lapack_int LAPACKE_cgebak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const float* scale, - lapack_int m, lapack_complex_float* v, - lapack_int ldv ); -lapack_int LAPACKE_zgebak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const double* scale, - lapack_int m, lapack_complex_double* v, - lapack_int ldv ); - -lapack_int LAPACKE_sgebal( int matrix_layout, char job, lapack_int n, float* a, - lapack_int lda, lapack_int* ilo, lapack_int* ihi, - float* scale ); -lapack_int LAPACKE_dgebal( int matrix_layout, char job, lapack_int n, double* a, - lapack_int lda, lapack_int* ilo, lapack_int* ihi, - double* scale ); -lapack_int LAPACKE_cgebal( int matrix_layout, char job, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ilo, lapack_int* ihi, float* scale ); -lapack_int LAPACKE_zgebal( int matrix_layout, char job, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ilo, lapack_int* ihi, double* scale ); - -lapack_int LAPACKE_sgebrd( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* d, float* e, - float* tauq, float* taup ); -lapack_int LAPACKE_dgebrd( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* d, double* e, - double* tauq, double* taup ); -lapack_int LAPACKE_cgebrd( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* d, - float* e, lapack_complex_float* tauq, - lapack_complex_float* taup ); -lapack_int LAPACKE_zgebrd( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, double* d, - double* e, lapack_complex_double* tauq, - lapack_complex_double* taup ); - -lapack_int LAPACKE_sgecon( int matrix_layout, char norm, lapack_int n, - const float* a, lapack_int lda, float anorm, - float* rcond ); -lapack_int LAPACKE_dgecon( int matrix_layout, char norm, lapack_int n, - const double* a, lapack_int lda, double anorm, - double* rcond ); -lapack_int LAPACKE_cgecon( int matrix_layout, char norm, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float anorm, float* rcond ); -lapack_int LAPACKE_zgecon( int matrix_layout, char norm, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double anorm, double* rcond ); - -lapack_int LAPACKE_sgeequ( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, float* r, float* c, - float* rowcnd, float* colcnd, float* amax ); -lapack_int LAPACKE_dgeequ( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, double* r, - double* c, double* rowcnd, double* colcnd, - double* amax ); -lapack_int LAPACKE_cgeequ( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* r, float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_zgeequ( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* r, double* c, double* rowcnd, double* colcnd, - double* amax ); - -lapack_int LAPACKE_sgeequb( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, float* r, float* c, - float* rowcnd, float* colcnd, float* amax ); -lapack_int LAPACKE_dgeequb( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, double* r, - double* c, double* rowcnd, double* colcnd, - double* amax ); -lapack_int LAPACKE_cgeequb( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* r, float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_zgeequb( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* r, double* c, double* rowcnd, - double* colcnd, double* amax ); - -lapack_int LAPACKE_sgees( int matrix_layout, char jobvs, char sort, - LAPACK_S_SELECT2 select, lapack_int n, float* a, - lapack_int lda, lapack_int* sdim, float* wr, - float* wi, float* vs, lapack_int ldvs ); -lapack_int LAPACKE_dgees( int matrix_layout, char jobvs, char sort, - LAPACK_D_SELECT2 select, lapack_int n, double* a, - lapack_int lda, lapack_int* sdim, double* wr, - double* wi, double* vs, lapack_int ldvs ); -lapack_int LAPACKE_cgees( int matrix_layout, char jobvs, char sort, - LAPACK_C_SELECT1 select, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* sdim, lapack_complex_float* w, - lapack_complex_float* vs, lapack_int ldvs ); -lapack_int LAPACKE_zgees( int matrix_layout, char jobvs, char sort, - LAPACK_Z_SELECT1 select, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* sdim, lapack_complex_double* w, - lapack_complex_double* vs, lapack_int ldvs ); - -lapack_int LAPACKE_sgeesx( int matrix_layout, char jobvs, char sort, - LAPACK_S_SELECT2 select, char sense, lapack_int n, - float* a, lapack_int lda, lapack_int* sdim, - float* wr, float* wi, float* vs, lapack_int ldvs, - float* rconde, float* rcondv ); -lapack_int LAPACKE_dgeesx( int matrix_layout, char jobvs, char sort, - LAPACK_D_SELECT2 select, char sense, lapack_int n, - double* a, lapack_int lda, lapack_int* sdim, - double* wr, double* wi, double* vs, lapack_int ldvs, - double* rconde, double* rcondv ); -lapack_int LAPACKE_cgeesx( int matrix_layout, char jobvs, char sort, - LAPACK_C_SELECT1 select, char sense, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* sdim, lapack_complex_float* w, - lapack_complex_float* vs, lapack_int ldvs, - float* rconde, float* rcondv ); -lapack_int LAPACKE_zgeesx( int matrix_layout, char jobvs, char sort, - LAPACK_Z_SELECT1 select, char sense, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* sdim, lapack_complex_double* w, - lapack_complex_double* vs, lapack_int ldvs, - double* rconde, double* rcondv ); - -lapack_int LAPACKE_sgeev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, float* a, lapack_int lda, float* wr, - float* wi, float* vl, lapack_int ldvl, float* vr, - lapack_int ldvr ); -lapack_int LAPACKE_dgeev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, double* a, lapack_int lda, double* wr, - double* wi, double* vl, lapack_int ldvl, double* vr, - lapack_int ldvr ); -lapack_int LAPACKE_cgeev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_float* a, lapack_int lda, - lapack_complex_float* w, lapack_complex_float* vl, - lapack_int ldvl, lapack_complex_float* vr, - lapack_int ldvr ); -lapack_int LAPACKE_zgeev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* w, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr ); - -lapack_int LAPACKE_sgeevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, float* a, - lapack_int lda, float* wr, float* wi, float* vl, - lapack_int ldvl, float* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, float* scale, - float* abnrm, float* rconde, float* rcondv ); -lapack_int LAPACKE_dgeevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, double* a, - lapack_int lda, double* wr, double* wi, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, double* scale, - double* abnrm, double* rconde, double* rcondv ); -lapack_int LAPACKE_cgeevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* w, lapack_complex_float* vl, - lapack_int ldvl, lapack_complex_float* vr, - lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, - float* scale, float* abnrm, float* rconde, - float* rcondv ); -lapack_int LAPACKE_zgeevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* w, lapack_complex_double* vl, - lapack_int ldvl, lapack_complex_double* vr, - lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, - double* scale, double* abnrm, double* rconde, - double* rcondv ); - -lapack_int LAPACKE_sgehrd( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, float* a, lapack_int lda, - float* tau ); -lapack_int LAPACKE_dgehrd( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, double* a, lapack_int lda, - double* tau ); -lapack_int LAPACKE_cgehrd( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tau ); -lapack_int LAPACKE_zgehrd( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tau ); - -lapack_int LAPACKE_sgejsv( int matrix_layout, char joba, char jobu, char jobv, - char jobr, char jobt, char jobp, lapack_int m, - lapack_int n, float* a, lapack_int lda, float* sva, - float* u, lapack_int ldu, float* v, lapack_int ldv, - float* stat, lapack_int* istat ); -lapack_int LAPACKE_dgejsv( int matrix_layout, char joba, char jobu, char jobv, - char jobr, char jobt, char jobp, lapack_int m, - lapack_int n, double* a, lapack_int lda, double* sva, - double* u, lapack_int ldu, double* v, lapack_int ldv, - double* stat, lapack_int* istat ); -lapack_int LAPACKE_cgejsv( int matrix_layout, char joba, char jobu, char jobv, - char jobr, char jobt, char jobp, lapack_int m, - lapack_int n, lapack_complex_float* a, lapack_int lda, float* sva, - lapack_complex_float* u, lapack_int ldu, lapack_complex_float* v, lapack_int ldv, - float* stat, lapack_int* istat ); -lapack_int LAPACKE_zgejsv( int matrix_layout, char joba, char jobu, char jobv, - char jobr, char jobt, char jobp, lapack_int m, - lapack_int n, lapack_complex_double* a, lapack_int lda, double* sva, - lapack_complex_double* u, lapack_int ldu, lapack_complex_double* v, lapack_int ldv, - double* stat, lapack_int* istat ); - -lapack_int LAPACKE_sgelq2( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgelq2( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgelq2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgelq2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgelqf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgelqf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgelqf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgelqf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgels( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* b, lapack_int ldb ); -lapack_int LAPACKE_dgels( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* b, lapack_int ldb ); -lapack_int LAPACKE_cgels( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zgels( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sgelsd( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_dgelsd( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* s, double rcond, - lapack_int* rank ); -lapack_int LAPACKE_cgelsd( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_zgelsd( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* s, double rcond, - lapack_int* rank ); - -lapack_int LAPACKE_sgelss( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_dgelss( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* s, double rcond, - lapack_int* rank ); -lapack_int LAPACKE_cgelss( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_zgelss( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* s, double rcond, - lapack_int* rank ); - -lapack_int LAPACKE_sgelsy( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, float* b, - lapack_int ldb, lapack_int* jpvt, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_dgelsy( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, lapack_int* jpvt, - double rcond, lapack_int* rank ); -lapack_int LAPACKE_cgelsy( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_int* jpvt, float rcond, - lapack_int* rank ); -lapack_int LAPACKE_zgelsy( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_int* jpvt, double rcond, - lapack_int* rank ); - -lapack_int LAPACKE_sgeqlf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgeqlf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgeqlf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqlf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgeqp3( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* jpvt, - float* tau ); -lapack_int LAPACKE_dgeqp3( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* jpvt, - double* tau ); -lapack_int LAPACKE_cgeqp3( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqp3( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_double* tau ); - -lapack_int LAPACKE_sgeqpf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* jpvt, - float* tau ); -lapack_int LAPACKE_dgeqpf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* jpvt, - double* tau ); -lapack_int LAPACKE_cgeqpf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqpf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_double* tau ); - -lapack_int LAPACKE_sgeqr2( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgeqr2( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgeqr2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqr2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgeqrf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgeqrf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgeqrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgeqrfp( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgeqrfp( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgeqrfp( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgeqrfp( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgerfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dgerfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr ); -lapack_int LAPACKE_cgerfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zgerfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sgerfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* r, - const float* c, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dgerfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* r, - const double* c, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); -lapack_int LAPACKE_cgerfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* r, - const float* c, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_zgerfsx( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* r, - const double* c, const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); - -lapack_int LAPACKE_sgerqf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dgerqf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_cgerqf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_zgerqf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_sgesdd( int matrix_layout, char jobz, lapack_int m, - lapack_int n, float* a, lapack_int lda, float* s, - float* u, lapack_int ldu, float* vt, - lapack_int ldvt ); -lapack_int LAPACKE_dgesdd( int matrix_layout, char jobz, lapack_int m, - lapack_int n, double* a, lapack_int lda, double* s, - double* u, lapack_int ldu, double* vt, - lapack_int ldvt ); -lapack_int LAPACKE_cgesdd( int matrix_layout, char jobz, lapack_int m, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* s, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* vt, - lapack_int ldvt ); -lapack_int LAPACKE_zgesdd( int matrix_layout, char jobz, lapack_int m, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* s, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* vt, - lapack_int ldvt ); - -lapack_int LAPACKE_sgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - float* a, lapack_int lda, lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - double* a, lapack_int lda, lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); -lapack_int LAPACKE_dsgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - double* a, lapack_int lda, lapack_int* ipiv, - double* b, lapack_int ldb, double* x, lapack_int ldx, - lapack_int* iter ); -lapack_int LAPACKE_zcgesv( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, lapack_int* iter ); - -lapack_int LAPACKE_sgesvd( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, float* a, lapack_int lda, - float* s, float* u, lapack_int ldu, float* vt, - lapack_int ldvt, float* superb ); -lapack_int LAPACKE_dgesvd( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* s, double* u, lapack_int ldu, - double* vt, lapack_int ldvt, double* superb ); -lapack_int LAPACKE_cgesvd( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float* s, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* vt, - lapack_int ldvt, float* superb ); -lapack_int LAPACKE_zgesvd( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double* s, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* vt, - lapack_int ldvt, double* superb ); - -lapack_int LAPACKE_sgesvdx( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, float* u, lapack_int ldu, - float* vt, lapack_int ldvt, - lapack_int* superb ); -lapack_int LAPACKE_dgesvdx( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, double* u, lapack_int ldu, - double* vt, lapack_int ldvt, - lapack_int* superb ); -lapack_int LAPACKE_cgesvdx( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* vt, lapack_int ldvt, - lapack_int* superb ); -lapack_int LAPACKE_zgesvdx( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* vt, lapack_int ldvt, - lapack_int* superb ); - -lapack_int LAPACKE_sgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, float* a, lapack_int lda, - float* s, float* u, lapack_int ldu, float* v, - lapack_int ldv, lapack_int* numrank ); -lapack_int LAPACKE_dgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* s, double* u, lapack_int ldu, - double* v, lapack_int ldv, lapack_int* numrank); -lapack_int LAPACKE_cgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float* s, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, - lapack_int ldv, lapack_int* numrank ); -lapack_int LAPACKE_zgesvdq( int matrix_layout, char joba, char jobp, char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double* s, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, - lapack_int ldv, lapack_int* numrank ); - -lapack_int LAPACKE_sgesvj( int matrix_layout, char joba, char jobu, char jobv, - lapack_int m, lapack_int n, float* a, lapack_int lda, - float* sva, lapack_int mv, float* v, lapack_int ldv, - float* stat ); -lapack_int LAPACKE_dgesvj( int matrix_layout, char joba, char jobu, char jobv, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* sva, lapack_int mv, - double* v, lapack_int ldv, double* stat ); -lapack_int LAPACKE_cgesvj( int matrix_layout, char joba, char jobu, char jobv, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float* sva, lapack_int mv, - lapack_complex_float* v, lapack_int ldv, float* stat ); -lapack_int LAPACKE_zgesvj( int matrix_layout, char joba, char jobu, char jobv, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double* sva, lapack_int mv, - lapack_complex_double* v, lapack_int ldv, double* stat ); - -lapack_int LAPACKE_sgesvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, float* c, - float* b, lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* rpivot ); -lapack_int LAPACKE_dgesvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, double* c, - double* b, lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* rpivot ); -lapack_int LAPACKE_cgesvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, float* c, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* rpivot ); -lapack_int LAPACKE_zgesvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, double* c, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* rpivot ); - -lapack_int LAPACKE_sgesvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, float* c, - float* b, lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dgesvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, double* c, - double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* rpvgrw, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); -lapack_int LAPACKE_cgesvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, float* c, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_zgesvxx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, double* c, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); - -lapack_int LAPACKE_sgetf2( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetf2( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetf2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetf2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetrf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetrf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetrf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetrf2( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetrf2( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetrf2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetrf2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetri( int matrix_layout, lapack_int n, float* a, - lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_dgetri( int matrix_layout, lapack_int n, double* a, - lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_cgetri( int matrix_layout, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_zgetri( int matrix_layout, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv ); - -lapack_int LAPACKE_sgetrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dgetrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_cgetrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zgetrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sggbak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const float* lscale, - const float* rscale, lapack_int m, float* v, - lapack_int ldv ); -lapack_int LAPACKE_dggbak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const double* lscale, - const double* rscale, lapack_int m, double* v, - lapack_int ldv ); -lapack_int LAPACKE_cggbak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const float* lscale, - const float* rscale, lapack_int m, - lapack_complex_float* v, lapack_int ldv ); -lapack_int LAPACKE_zggbak( int matrix_layout, char job, char side, lapack_int n, - lapack_int ilo, lapack_int ihi, const double* lscale, - const double* rscale, lapack_int m, - lapack_complex_double* v, lapack_int ldv ); - -lapack_int LAPACKE_sggbal( int matrix_layout, char job, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, float* lscale, - float* rscale ); -lapack_int LAPACKE_dggbal( int matrix_layout, char job, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, double* lscale, - double* rscale ); -lapack_int LAPACKE_cggbal( int matrix_layout, char job, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, float* lscale, - float* rscale ); -lapack_int LAPACKE_zggbal( int matrix_layout, char job, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, double* lscale, - double* rscale ); - -lapack_int LAPACKE_sgges( int matrix_layout, char jobvsl, char jobvsr, char sort, - LAPACK_S_SELECT3 selctg, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - lapack_int* sdim, float* alphar, float* alphai, - float* beta, float* vsl, lapack_int ldvsl, float* vsr, - lapack_int ldvsr ); -lapack_int LAPACKE_dgges( int matrix_layout, char jobvsl, char jobvsr, char sort, - LAPACK_D_SELECT3 selctg, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - lapack_int* sdim, double* alphar, double* alphai, - double* beta, double* vsl, lapack_int ldvsl, - double* vsr, lapack_int ldvsr ); -lapack_int LAPACKE_cgges( int matrix_layout, char jobvsl, char jobvsr, char sort, - LAPACK_C_SELECT2 selctg, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_float* alpha, - lapack_complex_float* beta, lapack_complex_float* vsl, - lapack_int ldvsl, lapack_complex_float* vsr, - lapack_int ldvsr ); -lapack_int LAPACKE_zgges( int matrix_layout, char jobvsl, char jobvsr, char sort, - LAPACK_Z_SELECT2 selctg, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr ); - -lapack_int LAPACKE_sgges3( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_S_SELECT3 selctg, lapack_int n, - float* a, lapack_int lda, float* b, lapack_int ldb, - lapack_int* sdim, float* alphar, float* alphai, - float* beta, float* vsl, lapack_int ldvsl, - float* vsr, lapack_int ldvsr ); -lapack_int LAPACKE_dgges3( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_D_SELECT3 selctg, lapack_int n, - double* a, lapack_int lda, double* b, lapack_int ldb, - lapack_int* sdim, double* alphar, double* alphai, - double* beta, double* vsl, lapack_int ldvsl, - double* vsr, lapack_int ldvsr ); -lapack_int LAPACKE_cgges3( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_C_SELECT2 selctg, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vsl, lapack_int ldvsl, - lapack_complex_float* vsr, lapack_int ldvsr ); -lapack_int LAPACKE_zgges3( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_Z_SELECT2 selctg, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr ); - -lapack_int LAPACKE_sggesx( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_S_SELECT3 selctg, char sense, - lapack_int n, float* a, lapack_int lda, float* b, - lapack_int ldb, lapack_int* sdim, float* alphar, - float* alphai, float* beta, float* vsl, - lapack_int ldvsl, float* vsr, lapack_int ldvsr, - float* rconde, float* rcondv ); -lapack_int LAPACKE_dggesx( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_D_SELECT3 selctg, char sense, - lapack_int n, double* a, lapack_int lda, double* b, - lapack_int ldb, lapack_int* sdim, double* alphar, - double* alphai, double* beta, double* vsl, - lapack_int ldvsl, double* vsr, lapack_int ldvsr, - double* rconde, double* rcondv ); -lapack_int LAPACKE_cggesx( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_C_SELECT2 selctg, char sense, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_int* sdim, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vsl, lapack_int ldvsl, - lapack_complex_float* vsr, lapack_int ldvsr, - float* rconde, float* rcondv ); -lapack_int LAPACKE_zggesx( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_Z_SELECT2 selctg, char sense, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_int* sdim, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr, - double* rconde, double* rcondv ); - -lapack_int LAPACKE_sggev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, float* a, lapack_int lda, float* b, - lapack_int ldb, float* alphar, float* alphai, - float* beta, float* vl, lapack_int ldvl, float* vr, - lapack_int ldvr ); -lapack_int LAPACKE_dggev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, double* a, lapack_int lda, double* b, - lapack_int ldb, double* alphar, double* alphai, - double* beta, double* vl, lapack_int ldvl, double* vr, - lapack_int ldvr ); -lapack_int LAPACKE_cggev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, lapack_complex_float* vl, - lapack_int ldvl, lapack_complex_float* vr, - lapack_int ldvr ); -lapack_int LAPACKE_zggev( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr ); - -lapack_int LAPACKE_sggev3( int matrix_layout, char jobvl, char jobvr, - lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, - float* alphar, float* alphai, float* beta, - float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr ); -lapack_int LAPACKE_dggev3( int matrix_layout, char jobvl, char jobvr, - lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, - double* alphar, double* alphai, double* beta, - double* vl, lapack_int ldvl, - double* vr, lapack_int ldvr ); -lapack_int LAPACKE_cggev3( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr ); -lapack_int LAPACKE_zggev3( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr ); - -lapack_int LAPACKE_sggevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* alphar, float* alphai, float* beta, float* vl, - lapack_int ldvl, float* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, float* lscale, - float* rscale, float* abnrm, float* bbnrm, - float* rconde, float* rcondv ); -lapack_int LAPACKE_dggevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* alphar, double* alphai, double* beta, - double* vl, lapack_int ldvl, double* vr, - lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, - double* lscale, double* rscale, double* abnrm, - double* bbnrm, double* rconde, double* rcondv ); -lapack_int LAPACKE_cggevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, lapack_complex_float* vl, - lapack_int ldvl, lapack_complex_float* vr, - lapack_int ldvr, lapack_int* ilo, lapack_int* ihi, - float* lscale, float* rscale, float* abnrm, - float* bbnrm, float* rconde, float* rcondv ); -lapack_int LAPACKE_zggevx( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, double* lscale, - double* rscale, double* abnrm, double* bbnrm, - double* rconde, double* rcondv ); - -lapack_int LAPACKE_sggglm( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, float* a, lapack_int lda, float* b, - lapack_int ldb, float* d, float* x, float* y ); -lapack_int LAPACKE_dggglm( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, double* a, lapack_int lda, double* b, - lapack_int ldb, double* d, double* x, double* y ); -lapack_int LAPACKE_cggglm( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* d, - lapack_complex_float* x, lapack_complex_float* y ); -lapack_int LAPACKE_zggglm( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* d, - lapack_complex_double* x, lapack_complex_double* y ); - -lapack_int LAPACKE_sgghrd( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* a, lapack_int lda, float* b, lapack_int ldb, - float* q, lapack_int ldq, float* z, lapack_int ldz ); -lapack_int LAPACKE_dgghrd( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* a, lapack_int lda, double* b, lapack_int ldb, - double* q, lapack_int ldq, double* z, - lapack_int ldz ); -lapack_int LAPACKE_cgghrd( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zgghrd( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_sgghd3( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* a, lapack_int lda, float* b, lapack_int ldb, - float* q, lapack_int ldq, float* z, lapack_int ldz ); -lapack_int LAPACKE_dgghd3( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* a, lapack_int lda, double* b, lapack_int ldb, - double* q, lapack_int ldq, double* z, - lapack_int ldz ); -lapack_int LAPACKE_cgghd3( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zgghd3( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_sgglse( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, float* a, lapack_int lda, float* b, - lapack_int ldb, float* c, float* d, float* x ); -lapack_int LAPACKE_dgglse( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, double* a, lapack_int lda, double* b, - lapack_int ldb, double* c, double* d, double* x ); -lapack_int LAPACKE_cgglse( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_complex_float* d, lapack_complex_float* x ); -lapack_int LAPACKE_zgglse( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_complex_double* d, lapack_complex_double* x ); - -lapack_int LAPACKE_sggqrf( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, float* a, lapack_int lda, float* taua, - float* b, lapack_int ldb, float* taub ); -lapack_int LAPACKE_dggqrf( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, double* a, lapack_int lda, - double* taua, double* b, lapack_int ldb, - double* taub ); -lapack_int LAPACKE_cggqrf( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* taua, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* taub ); -lapack_int LAPACKE_zggqrf( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* taua, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* taub ); - -lapack_int LAPACKE_sggrqf( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, float* a, lapack_int lda, float* taua, - float* b, lapack_int ldb, float* taub ); -lapack_int LAPACKE_dggrqf( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, double* a, lapack_int lda, - double* taua, double* b, lapack_int ldb, - double* taub ); -lapack_int LAPACKE_cggrqf( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* taua, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* taub ); -lapack_int LAPACKE_zggrqf( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* taua, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* taub ); - -lapack_int LAPACKE_sggsvd( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* alpha, float* beta, float* u, lapack_int ldu, - float* v, lapack_int ldv, float* q, lapack_int ldq, - lapack_int* iwork ); -lapack_int LAPACKE_dggsvd( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* alpha, double* beta, double* u, - lapack_int ldu, double* v, lapack_int ldv, double* q, - lapack_int ldq, lapack_int* iwork ); -lapack_int LAPACKE_cggsvd( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float* alpha, float* beta, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, - lapack_int ldv, lapack_complex_float* q, - lapack_int ldq, lapack_int* iwork ); -lapack_int LAPACKE_zggsvd( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_int* iwork ); - -lapack_int LAPACKE_sggsvd3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* alpha, float* beta, float* u, lapack_int ldu, - float* v, lapack_int ldv, float* q, lapack_int ldq, - lapack_int* iwork ); -lapack_int LAPACKE_dggsvd3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* alpha, double* beta, double* u, - lapack_int ldu, double* v, lapack_int ldv, double* q, - lapack_int ldq, lapack_int* iwork ); -lapack_int LAPACKE_cggsvd3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float* alpha, float* beta, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, - lapack_int ldv, lapack_complex_float* q, - lapack_int ldq, lapack_int* iwork ); -lapack_int LAPACKE_zggsvd3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int n, lapack_int p, - lapack_int* k, lapack_int* l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_int* iwork ); - -lapack_int LAPACKE_sggsvp( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, float* u, - lapack_int ldu, float* v, lapack_int ldv, float* q, - lapack_int ldq ); -lapack_int LAPACKE_dggsvp( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double tola, double tolb, lapack_int* k, - lapack_int* l, double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq ); -lapack_int LAPACKE_cggsvp( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq ); -lapack_int LAPACKE_zggsvp( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double tola, double tolb, lapack_int* k, - lapack_int* l, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, - lapack_int ldv, lapack_complex_double* q, - lapack_int ldq ); - -lapack_int LAPACKE_sggsvp3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, float* u, - lapack_int ldu, float* v, lapack_int ldv, float* q, - lapack_int ldq ); -lapack_int LAPACKE_dggsvp3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double tola, double tolb, lapack_int* k, - lapack_int* l, double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq ); -lapack_int LAPACKE_cggsvp3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq ); -lapack_int LAPACKE_zggsvp3( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double tola, double tolb, lapack_int* k, - lapack_int* l, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, - lapack_int ldv, lapack_complex_double* q, - lapack_int ldq ); - -lapack_int LAPACKE_sgtcon( char norm, lapack_int n, const float* dl, - const float* d, const float* du, const float* du2, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_dgtcon( char norm, lapack_int n, const double* dl, - const double* d, const double* du, const double* du2, - const lapack_int* ipiv, double anorm, - double* rcond ); -lapack_int LAPACKE_cgtcon( char norm, lapack_int n, - const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* du2, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zgtcon( char norm, lapack_int n, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* du2, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_sgtrfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* dl, const float* d, - const float* du, const float* dlf, const float* df, - const float* duf, const float* du2, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dgtrfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* dl, const double* d, - const double* du, const double* dlf, - const double* df, const double* duf, - const double* du2, const lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr ); -lapack_int LAPACKE_cgtrfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* dlf, - const lapack_complex_float* df, - const lapack_complex_float* duf, - const lapack_complex_float* du2, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zgtrfs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* dlf, - const lapack_complex_double* df, - const lapack_complex_double* duf, - const lapack_complex_double* du2, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, - float* dl, float* d, float* du, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, - double* dl, double* d, double* du, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_float* dl, lapack_complex_float* d, - lapack_complex_float* du, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgtsv( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* dl, lapack_complex_double* d, - lapack_complex_double* du, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sgtsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, const float* dl, - const float* d, const float* du, float* dlf, - float* df, float* duf, float* du2, lapack_int* ipiv, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dgtsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, const double* dl, - const double* d, const double* du, double* dlf, - double* df, double* duf, double* du2, - lapack_int* ipiv, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* ferr, double* berr ); -lapack_int LAPACKE_cgtsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - lapack_complex_float* dlf, lapack_complex_float* df, - lapack_complex_float* duf, lapack_complex_float* du2, - lapack_int* ipiv, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_zgtsvx( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - lapack_complex_double* dlf, - lapack_complex_double* df, - lapack_complex_double* duf, - lapack_complex_double* du2, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_sgttrf( lapack_int n, float* dl, float* d, float* du, - float* du2, lapack_int* ipiv ); -lapack_int LAPACKE_dgttrf( lapack_int n, double* dl, double* d, double* du, - double* du2, lapack_int* ipiv ); -lapack_int LAPACKE_cgttrf( lapack_int n, lapack_complex_float* dl, - lapack_complex_float* d, lapack_complex_float* du, - lapack_complex_float* du2, lapack_int* ipiv ); -lapack_int LAPACKE_zgttrf( lapack_int n, lapack_complex_double* dl, - lapack_complex_double* d, lapack_complex_double* du, - lapack_complex_double* du2, lapack_int* ipiv ); - -lapack_int LAPACKE_sgttrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* dl, const float* d, - const float* du, const float* du2, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dgttrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* dl, const double* d, - const double* du, const double* du2, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_cgttrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* du2, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgttrs( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* du2, - const lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_chbev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab, float* w, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhbev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab, double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_chbevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab, float* w, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhbevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab, double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_chbevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_zhbevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* q, lapack_int ldq, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chbgst( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* bb, lapack_int ldbb, - lapack_complex_float* x, lapack_int ldx ); -lapack_int LAPACKE_zhbgst( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - const lapack_complex_double* bb, lapack_int ldbb, - lapack_complex_double* x, lapack_int ldx ); - -lapack_int LAPACKE_chbgv( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* bb, lapack_int ldbb, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhbgv( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* bb, lapack_int ldbb, double* w, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* bb, lapack_int ldbb, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* bb, lapack_int ldbb, - double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_chbgvx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* bb, lapack_int ldbb, - lapack_complex_float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_zhbgvx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* bb, lapack_int ldbb, - lapack_complex_double* q, lapack_int ldq, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chbtrd( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab, float* d, float* e, - lapack_complex_float* q, lapack_int ldq ); -lapack_int LAPACKE_zhbtrd( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab, double* d, double* e, - lapack_complex_double* q, lapack_int ldq ); - -lapack_int LAPACKE_checon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zhecon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_cheequb( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zheequb( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_cheev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_zheev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_cheevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_zheevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* w ); - -lapack_int LAPACKE_cheevr( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_zheevr( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, lapack_int ldz, - lapack_int* isuppz ); - -lapack_int LAPACKE_cheevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_zheevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chegst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhegst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_chegv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* w ); -lapack_int LAPACKE_zhegv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* w ); - -lapack_int LAPACKE_chegvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* w ); -lapack_int LAPACKE_zhegvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* w ); - -lapack_int LAPACKE_chegvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_zhegvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_cherfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zherfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_cherfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* s, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_zherfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* s, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); - -lapack_int LAPACKE_chesv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhesv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chesvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* af, - lapack_int ldaf, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zhesvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* af, - lapack_int ldaf, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_chesvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_zhesvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); - -lapack_int LAPACKE_chetrd( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* d, - float* e, lapack_complex_float* tau ); -lapack_int LAPACKE_zhetrd( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, double* d, - double* e, lapack_complex_double* tau ); - -lapack_int LAPACKE_chetrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zhetrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_chetri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_zhetri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv ); - -lapack_int LAPACKE_chetrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chfrk( int matrix_layout, char transr, char uplo, char trans, - lapack_int n, lapack_int k, float alpha, - const lapack_complex_float* a, lapack_int lda, - float beta, lapack_complex_float* c ); -lapack_int LAPACKE_zhfrk( int matrix_layout, char transr, char uplo, char trans, - lapack_int n, lapack_int k, double alpha, - const lapack_complex_double* a, lapack_int lda, - double beta, lapack_complex_double* c ); - -lapack_int LAPACKE_shgeqz( int matrix_layout, char job, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* h, lapack_int ldh, float* t, lapack_int ldt, - float* alphar, float* alphai, float* beta, float* q, - lapack_int ldq, float* z, lapack_int ldz ); -lapack_int LAPACKE_dhgeqz( int matrix_layout, char job, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* h, lapack_int ldh, double* t, lapack_int ldt, - double* alphar, double* alphai, double* beta, - double* q, lapack_int ldq, double* z, - lapack_int ldz ); -lapack_int LAPACKE_chgeqz( int matrix_layout, char job, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* h, lapack_int ldh, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* alpha, - lapack_complex_float* beta, lapack_complex_float* q, - lapack_int ldq, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhgeqz( int matrix_layout, char job, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* h, lapack_int ldh, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chpcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zhpcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_chpev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* ap, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhpev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* ap, double* w, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chpevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* ap, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhpevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* ap, double* w, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chpevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_float* ap, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_zhpevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_double* ap, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chpgst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_float* ap, - const lapack_complex_float* bp ); -lapack_int LAPACKE_zhpgst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_double* ap, - const lapack_complex_double* bp ); - -lapack_int LAPACKE_chpgv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* ap, - lapack_complex_float* bp, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhpgv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_double* ap, - lapack_complex_double* bp, double* w, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chpgvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* ap, - lapack_complex_float* bp, float* w, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zhpgvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_double* ap, - lapack_complex_double* bp, double* w, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_chpgvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_float* ap, lapack_complex_float* bp, - float vl, float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_zhpgvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_double* ap, lapack_complex_double* bp, - double vl, double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zhprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_chpsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhpsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_chpsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - lapack_complex_float* afp, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zhpsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - lapack_complex_double* afp, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_chptrd( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, float* d, float* e, - lapack_complex_float* tau ); -lapack_int LAPACKE_zhptrd( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, double* d, double* e, - lapack_complex_double* tau ); - -lapack_int LAPACKE_chptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, lapack_int* ipiv ); -lapack_int LAPACKE_zhptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, lapack_int* ipiv ); - -lapack_int LAPACKE_chptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, const lapack_int* ipiv ); -lapack_int LAPACKE_zhptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, const lapack_int* ipiv ); - -lapack_int LAPACKE_chptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - const lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_shsein( int matrix_layout, char job, char eigsrc, char initv, - lapack_logical* select, lapack_int n, const float* h, - lapack_int ldh, float* wr, const float* wi, - float* vl, lapack_int ldvl, float* vr, - lapack_int ldvr, lapack_int mm, lapack_int* m, - lapack_int* ifaill, lapack_int* ifailr ); -lapack_int LAPACKE_dhsein( int matrix_layout, char job, char eigsrc, char initv, - lapack_logical* select, lapack_int n, - const double* h, lapack_int ldh, double* wr, - const double* wi, double* vl, lapack_int ldvl, - double* vr, lapack_int ldvr, lapack_int mm, - lapack_int* m, lapack_int* ifaill, - lapack_int* ifailr ); -lapack_int LAPACKE_chsein( int matrix_layout, char job, char eigsrc, char initv, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* h, lapack_int ldh, - lapack_complex_float* w, lapack_complex_float* vl, - lapack_int ldvl, lapack_complex_float* vr, - lapack_int ldvr, lapack_int mm, lapack_int* m, - lapack_int* ifaill, lapack_int* ifailr ); -lapack_int LAPACKE_zhsein( int matrix_layout, char job, char eigsrc, char initv, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* h, lapack_int ldh, - lapack_complex_double* w, lapack_complex_double* vl, - lapack_int ldvl, lapack_complex_double* vr, - lapack_int ldvr, lapack_int mm, lapack_int* m, - lapack_int* ifaill, lapack_int* ifailr ); - -lapack_int LAPACKE_shseqr( int matrix_layout, char job, char compz, lapack_int n, - lapack_int ilo, lapack_int ihi, float* h, - lapack_int ldh, float* wr, float* wi, float* z, - lapack_int ldz ); -lapack_int LAPACKE_dhseqr( int matrix_layout, char job, char compz, lapack_int n, - lapack_int ilo, lapack_int ihi, double* h, - lapack_int ldh, double* wr, double* wi, double* z, - lapack_int ldz ); -lapack_int LAPACKE_chseqr( int matrix_layout, char job, char compz, lapack_int n, - lapack_int ilo, lapack_int ihi, - lapack_complex_float* h, lapack_int ldh, - lapack_complex_float* w, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhseqr( int matrix_layout, char job, char compz, lapack_int n, - lapack_int ilo, lapack_int ihi, - lapack_complex_double* h, lapack_int ldh, - lapack_complex_double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_clacgv( lapack_int n, lapack_complex_float* x, - lapack_int incx ); -lapack_int LAPACKE_zlacgv( lapack_int n, lapack_complex_double* x, - lapack_int incx ); - -lapack_int LAPACKE_slacn2( lapack_int n, float* v, float* x, lapack_int* isgn, - float* est, lapack_int* kase, lapack_int* isave ); -lapack_int LAPACKE_dlacn2( lapack_int n, double* v, double* x, lapack_int* isgn, - double* est, lapack_int* kase, lapack_int* isave ); -lapack_int LAPACKE_clacn2( lapack_int n, lapack_complex_float* v, - lapack_complex_float* x, - float* est, lapack_int* kase, lapack_int* isave ); -lapack_int LAPACKE_zlacn2( lapack_int n, lapack_complex_double* v, - lapack_complex_double* x, - double* est, lapack_int* kase, lapack_int* isave ); - -lapack_int LAPACKE_slacpy( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const float* a, lapack_int lda, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dlacpy( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const double* a, lapack_int lda, double* b, - lapack_int ldb ); -lapack_int LAPACKE_clacpy( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zlacpy( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_clacp2( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zlacp2( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_zlag2c( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_float* sa, lapack_int ldsa ); - -lapack_int LAPACKE_slag2d( int matrix_layout, lapack_int m, lapack_int n, - const float* sa, lapack_int ldsa, double* a, - lapack_int lda ); - -lapack_int LAPACKE_dlag2s( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, float* sa, - lapack_int ldsa ); - -lapack_int LAPACKE_clag2z( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* sa, lapack_int ldsa, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_slagge( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* d, - float* a, lapack_int lda, lapack_int* iseed ); -lapack_int LAPACKE_dlagge( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* d, - double* a, lapack_int lda, lapack_int* iseed ); -lapack_int LAPACKE_clagge( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* d, - lapack_complex_float* a, lapack_int lda, - lapack_int* iseed ); -lapack_int LAPACKE_zlagge( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* d, - lapack_complex_double* a, lapack_int lda, - lapack_int* iseed ); - -float LAPACKE_slamch( char cmach ); -double LAPACKE_dlamch( char cmach ); - -float LAPACKE_slangb( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab ); -double LAPACKE_dlangb( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab ); -float LAPACKE_clangb( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab ); -double LAPACKE_zlangb( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, lapack_int ldab ); - -float LAPACKE_slange( int matrix_layout, char norm, lapack_int m, - lapack_int n, const float* a, lapack_int lda ); -double LAPACKE_dlange( int matrix_layout, char norm, lapack_int m, - lapack_int n, const double* a, lapack_int lda ); -float LAPACKE_clange( int matrix_layout, char norm, lapack_int m, - lapack_int n, const lapack_complex_float* a, - lapack_int lda ); -double LAPACKE_zlange( int matrix_layout, char norm, lapack_int m, - lapack_int n, const lapack_complex_double* a, - lapack_int lda ); - -float LAPACKE_clanhe( int matrix_layout, char norm, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda ); -double LAPACKE_zlanhe( int matrix_layout, char norm, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_clacrm( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, - lapack_int lda, const float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_int ldc ); -lapack_int LAPACKE_zlacrm( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, - lapack_int lda, const double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_int ldc ); - -lapack_int LAPACKE_clarcm( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, - const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_int ldc ); -lapack_int LAPACKE_zlarcm( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, - const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_int ldc ); - -float LAPACKE_slansy( int matrix_layout, char norm, char uplo, lapack_int n, - const float* a, lapack_int lda ); -double LAPACKE_dlansy( int matrix_layout, char norm, char uplo, lapack_int n, - const double* a, lapack_int lda ); -float LAPACKE_clansy( int matrix_layout, char norm, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda ); -double LAPACKE_zlansy( int matrix_layout, char norm, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda ); - -float LAPACKE_slantr( int matrix_layout, char norm, char uplo, char diag, - lapack_int m, lapack_int n, const float* a, - lapack_int lda ); -double LAPACKE_dlantr( int matrix_layout, char norm, char uplo, char diag, - lapack_int m, lapack_int n, const double* a, - lapack_int lda ); -float LAPACKE_clantr( int matrix_layout, char norm, char uplo, char diag, - lapack_int m, lapack_int n, const lapack_complex_float* a, - lapack_int lda ); -double LAPACKE_zlantr( int matrix_layout, char norm, char uplo, char diag, - lapack_int m, lapack_int n, const lapack_complex_double* a, - lapack_int lda ); - - -lapack_int LAPACKE_slarfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, const float* v, lapack_int ldv, - const float* t, lapack_int ldt, float* c, - lapack_int ldc ); -lapack_int LAPACKE_dlarfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, const double* v, lapack_int ldv, - const double* t, lapack_int ldt, double* c, - lapack_int ldc ); -lapack_int LAPACKE_clarfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, const lapack_complex_float* v, - lapack_int ldv, const lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* c, - lapack_int ldc ); -lapack_int LAPACKE_zlarfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, const lapack_complex_double* v, - lapack_int ldv, const lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* c, - lapack_int ldc ); - -lapack_int LAPACKE_slarfg( lapack_int n, float* alpha, float* x, - lapack_int incx, float* tau ); -lapack_int LAPACKE_dlarfg( lapack_int n, double* alpha, double* x, - lapack_int incx, double* tau ); -lapack_int LAPACKE_clarfg( lapack_int n, lapack_complex_float* alpha, - lapack_complex_float* x, lapack_int incx, - lapack_complex_float* tau ); -lapack_int LAPACKE_zlarfg( lapack_int n, lapack_complex_double* alpha, - lapack_complex_double* x, lapack_int incx, - lapack_complex_double* tau ); - -lapack_int LAPACKE_slarft( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, const float* v, - lapack_int ldv, const float* tau, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dlarft( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, const double* v, - lapack_int ldv, const double* tau, double* t, - lapack_int ldt ); -lapack_int LAPACKE_clarft( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* tau, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zlarft( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* tau, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_slarfx( int matrix_layout, char side, lapack_int m, - lapack_int n, const float* v, float tau, float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_dlarfx( int matrix_layout, char side, lapack_int m, - lapack_int n, const double* v, double tau, double* c, - lapack_int ldc, double* work ); -lapack_int LAPACKE_clarfx( int matrix_layout, char side, lapack_int m, - lapack_int n, const lapack_complex_float* v, - lapack_complex_float tau, lapack_complex_float* c, - lapack_int ldc, lapack_complex_float* work ); -lapack_int LAPACKE_zlarfx( int matrix_layout, char side, lapack_int m, - lapack_int n, const lapack_complex_double* v, - lapack_complex_double tau, lapack_complex_double* c, - lapack_int ldc, lapack_complex_double* work ); - -lapack_int LAPACKE_slarnv( lapack_int idist, lapack_int* iseed, lapack_int n, - float* x ); -lapack_int LAPACKE_dlarnv( lapack_int idist, lapack_int* iseed, lapack_int n, - double* x ); -lapack_int LAPACKE_clarnv( lapack_int idist, lapack_int* iseed, lapack_int n, - lapack_complex_float* x ); -lapack_int LAPACKE_zlarnv( lapack_int idist, lapack_int* iseed, lapack_int n, - lapack_complex_double* x ); - -lapack_int LAPACKE_slascl( int matrix_layout, char type, lapack_int kl, - lapack_int ku, float cfrom, float cto, - lapack_int m, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlascl( int matrix_layout, char type, lapack_int kl, - lapack_int ku, double cfrom, double cto, - lapack_int m, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_clascl( int matrix_layout, char type, lapack_int kl, - lapack_int ku, float cfrom, float cto, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda ); -lapack_int LAPACKE_zlascl( int matrix_layout, char type, lapack_int kl, - lapack_int ku, double cfrom, double cto, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda ); - -lapack_int LAPACKE_slaset( int matrix_layout, char uplo, lapack_int m, - lapack_int n, float alpha, float beta, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlaset( int matrix_layout, char uplo, lapack_int m, - lapack_int n, double alpha, double beta, double* a, - lapack_int lda ); -lapack_int LAPACKE_claset( int matrix_layout, char uplo, lapack_int m, - lapack_int n, lapack_complex_float alpha, - lapack_complex_float beta, lapack_complex_float* a, - lapack_int lda ); -lapack_int LAPACKE_zlaset( int matrix_layout, char uplo, lapack_int m, - lapack_int n, lapack_complex_double alpha, - lapack_complex_double beta, lapack_complex_double* a, - lapack_int lda ); - -lapack_int LAPACKE_slasrt( char id, lapack_int n, float* d ); -lapack_int LAPACKE_dlasrt( char id, lapack_int n, double* d ); - -lapack_int LAPACKE_slassq( lapack_int n, float* x, lapack_int incx, float* scale, float* sumsq ); -lapack_int LAPACKE_dlassq( lapack_int n, double* x, lapack_int incx, double* scale, double* sumsq ); -lapack_int LAPACKE_classq( lapack_int n, lapack_complex_float* x, lapack_int incx, float* scale, float* sumsq ); -lapack_int LAPACKE_zlassq( lapack_int n, lapack_complex_double* x, lapack_int incx, double* scale, double* sumsq ); - -lapack_int LAPACKE_slaswp( int matrix_layout, lapack_int n, float* a, - lapack_int lda, lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); -lapack_int LAPACKE_dlaswp( int matrix_layout, lapack_int n, double* a, - lapack_int lda, lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); -lapack_int LAPACKE_claswp( int matrix_layout, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int k1, lapack_int k2, const lapack_int* ipiv, - lapack_int incx ); -lapack_int LAPACKE_zlaswp( int matrix_layout, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int k1, lapack_int k2, const lapack_int* ipiv, - lapack_int incx ); - -lapack_int LAPACKE_slatms( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, float* d, - lapack_int mode, float cond, float dmax, - lapack_int kl, lapack_int ku, char pack, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlatms( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, double* d, - lapack_int mode, double cond, double dmax, - lapack_int kl, lapack_int ku, char pack, double* a, - lapack_int lda ); -lapack_int LAPACKE_clatms( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, float* d, - lapack_int mode, float cond, float dmax, - lapack_int kl, lapack_int ku, char pack, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zlatms( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, double* d, - lapack_int mode, double cond, double dmax, - lapack_int kl, lapack_int ku, char pack, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_slauum( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlauum( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_clauum( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zlauum( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_sopgtr( int matrix_layout, char uplo, lapack_int n, - const float* ap, const float* tau, float* q, - lapack_int ldq ); -lapack_int LAPACKE_dopgtr( int matrix_layout, char uplo, lapack_int n, - const double* ap, const double* tau, double* q, - lapack_int ldq ); - -lapack_int LAPACKE_sopmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, const float* ap, - const float* tau, float* c, lapack_int ldc ); -lapack_int LAPACKE_dopmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, const double* ap, - const double* tau, double* c, lapack_int ldc ); - -lapack_int LAPACKE_sorgbr( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorgbr( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, double* a, - lapack_int lda, const double* tau ); - -lapack_int LAPACKE_sorghr( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorghr( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, double* a, lapack_int lda, - const double* tau ); - -lapack_int LAPACKE_sorglq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorglq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau ); - -lapack_int LAPACKE_sorgql( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorgql( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau ); - -lapack_int LAPACKE_sorgqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorgqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau ); - -lapack_int LAPACKE_sorgrq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau ); -lapack_int LAPACKE_dorgrq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau ); - -lapack_int LAPACKE_sorgtr( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, const float* tau ); -lapack_int LAPACKE_dorgtr( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, const double* tau ); - -lapack_int LAPACKE_sorgtsqr_row( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - float* a, lapack_int lda, - const float* t, lapack_int ldt ); -lapack_int LAPACKE_dorgtsqr_row( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - double* a, lapack_int lda, - const double* t, lapack_int ldt ); - -lapack_int LAPACKE_sormbr( int matrix_layout, char vect, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, const float* tau, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dormbr( int matrix_layout, char vect, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, const double* tau, - double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormhr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc ); -lapack_int LAPACKE_dormhr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, const float* tau, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dormlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, const double* tau, - double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormql( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, const float* tau, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dormql( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, const double* tau, - double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, const float* tau, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dormqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, const double* tau, - double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormrq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, const float* tau, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dormrq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, const double* tau, - double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormrz( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc ); -lapack_int LAPACKE_dormrz( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc ); - -lapack_int LAPACKE_sormtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, const float* a, - lapack_int lda, const float* tau, float* c, - lapack_int ldc ); -lapack_int LAPACKE_dormtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, const double* a, - lapack_int lda, const double* tau, double* c, - lapack_int ldc ); - -lapack_int LAPACKE_spbcon( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const float* ab, lapack_int ldab, - float anorm, float* rcond ); -lapack_int LAPACKE_dpbcon( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const double* ab, lapack_int ldab, - double anorm, double* rcond ); -lapack_int LAPACKE_cpbcon( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_float* ab, - lapack_int ldab, float anorm, float* rcond ); -lapack_int LAPACKE_zpbcon( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_double* ab, - lapack_int ldab, double anorm, double* rcond ); - -lapack_int LAPACKE_spbequ( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const float* ab, lapack_int ldab, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_dpbequ( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const double* ab, lapack_int ldab, - double* s, double* scond, double* amax ); -lapack_int LAPACKE_cpbequ( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_float* ab, - lapack_int ldab, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_zpbequ( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_double* ab, - lapack_int ldab, double* s, double* scond, - double* amax ); - -lapack_int LAPACKE_spbrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const float* ab, - lapack_int ldab, const float* afb, lapack_int ldafb, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_dpbrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const double* ab, - lapack_int ldab, const double* afb, lapack_int ldafb, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr ); -lapack_int LAPACKE_cpbrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* afb, lapack_int ldafb, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zpbrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - const lapack_complex_double* afb, lapack_int ldafb, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_spbstf( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, float* bb, lapack_int ldbb ); -lapack_int LAPACKE_dpbstf( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, double* bb, lapack_int ldbb ); -lapack_int LAPACKE_cpbstf( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, lapack_complex_float* bb, - lapack_int ldbb ); -lapack_int LAPACKE_zpbstf( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, lapack_complex_double* bb, - lapack_int ldbb ); - -lapack_int LAPACKE_spbsv( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, float* ab, - lapack_int ldab, float* b, lapack_int ldb ); -lapack_int LAPACKE_dpbsv( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, double* ab, - lapack_int ldab, double* b, lapack_int ldb ); -lapack_int LAPACKE_cpbsv( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpbsv( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spbsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, float* ab, - lapack_int ldab, float* afb, lapack_int ldafb, - char* equed, float* s, float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, double* ab, - lapack_int ldab, double* afb, lapack_int ldafb, - char* equed, double* s, double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* ferr, double* berr ); -lapack_int LAPACKE_cpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* afb, lapack_int ldafb, - char* equed, float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_zpbsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* afb, lapack_int ldafb, - char* equed, double* s, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr ); - -lapack_int LAPACKE_spbtrf( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab ); -lapack_int LAPACKE_dpbtrf( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab ); -lapack_int LAPACKE_cpbtrf( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab ); -lapack_int LAPACKE_zpbtrf( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab ); - -lapack_int LAPACKE_spbtrs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const float* ab, - lapack_int ldab, float* b, lapack_int ldb ); -lapack_int LAPACKE_dpbtrs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const double* ab, - lapack_int ldab, double* b, lapack_int ldb ); -lapack_int LAPACKE_cpbtrs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpbtrs( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spftrf( int matrix_layout, char transr, char uplo, - lapack_int n, float* a ); -lapack_int LAPACKE_dpftrf( int matrix_layout, char transr, char uplo, - lapack_int n, double* a ); -lapack_int LAPACKE_cpftrf( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_float* a ); -lapack_int LAPACKE_zpftrf( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_double* a ); - -lapack_int LAPACKE_spftri( int matrix_layout, char transr, char uplo, - lapack_int n, float* a ); -lapack_int LAPACKE_dpftri( int matrix_layout, char transr, char uplo, - lapack_int n, double* a ); -lapack_int LAPACKE_cpftri( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_float* a ); -lapack_int LAPACKE_zpftri( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_double* a ); - -lapack_int LAPACKE_spftrs( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, const float* a, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dpftrs( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, const double* a, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cpftrs( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpftrs( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spocon( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float anorm, - float* rcond ); -lapack_int LAPACKE_dpocon( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double anorm, - double* rcond ); -lapack_int LAPACKE_cpocon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float anorm, float* rcond ); -lapack_int LAPACKE_zpocon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double anorm, double* rcond ); - -lapack_int LAPACKE_spoequ( int matrix_layout, lapack_int n, const float* a, - lapack_int lda, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dpoequ( int matrix_layout, lapack_int n, const double* a, - lapack_int lda, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cpoequ( int matrix_layout, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zpoequ( int matrix_layout, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_spoequb( int matrix_layout, lapack_int n, const float* a, - lapack_int lda, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dpoequb( int matrix_layout, lapack_int n, const double* a, - lapack_int lda, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cpoequb( int matrix_layout, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zpoequb( int matrix_layout, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_sporfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dporfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const double* af, lapack_int ldaf, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr ); -lapack_int LAPACKE_cporfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_zporfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* ferr, double* berr ); - -lapack_int LAPACKE_sporfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, lapack_int ldaf, - const float* s, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dporfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, lapack_int ldaf, - const double* s, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); -lapack_int LAPACKE_cporfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, lapack_int ldaf, - const float* s, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_zporfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, lapack_int ldaf, - const double* s, const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); - -lapack_int LAPACKE_sposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); -lapack_int LAPACKE_dsposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* x, lapack_int ldx, - lapack_int* iter ); -lapack_int LAPACKE_zcposv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, lapack_int* iter ); - -lapack_int LAPACKE_sposvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, float* af, - lapack_int ldaf, char* equed, float* s, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_dposvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* af, lapack_int ldaf, char* equed, double* s, - double* b, lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); -lapack_int LAPACKE_cposvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* af, - lapack_int ldaf, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zposvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* af, - lapack_int ldaf, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_sposvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - char* equed, float* s, float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, - float* rpvgrw, float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_dposvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - char* equed, double* s, double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* rpvgrw, double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); -lapack_int LAPACKE_cposvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - char* equed, float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_zposvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - char* equed, double* s, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* rpvgrw, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); - -lapack_int LAPACKE_spotrf2( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dpotrf2( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_cpotrf2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotrf2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotrf( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dpotrf( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_cpotrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotri( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dpotri( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_cpotri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dpotrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cpotrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zpotrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sppcon( int matrix_layout, char uplo, lapack_int n, - const float* ap, float anorm, float* rcond ); -lapack_int LAPACKE_dppcon( int matrix_layout, char uplo, lapack_int n, - const double* ap, double anorm, double* rcond ); -lapack_int LAPACKE_cppcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, float anorm, - float* rcond ); -lapack_int LAPACKE_zppcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, double anorm, - double* rcond ); - -lapack_int LAPACKE_sppequ( int matrix_layout, char uplo, lapack_int n, - const float* ap, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dppequ( int matrix_layout, char uplo, lapack_int n, - const double* ap, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cppequ( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, float* s, - float* scond, float* amax ); -lapack_int LAPACKE_zppequ( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, double* s, - double* scond, double* amax ); - -lapack_int LAPACKE_spprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, const float* afp, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_dpprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, const double* afp, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr ); -lapack_int LAPACKE_cpprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zpprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sppsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* ap, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dppsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* ap, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cppsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zppsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sppsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, float* ap, float* afp, char* equed, - float* s, float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dppsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, double* ap, double* afp, - char* equed, double* s, double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* ferr, double* berr ); -lapack_int LAPACKE_cppsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_complex_float* afp, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zppsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_complex_double* afp, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_spptrf( int matrix_layout, char uplo, lapack_int n, - float* ap ); -lapack_int LAPACKE_dpptrf( int matrix_layout, char uplo, lapack_int n, - double* ap ); -lapack_int LAPACKE_cpptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap ); -lapack_int LAPACKE_zpptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap ); - -lapack_int LAPACKE_spptri( int matrix_layout, char uplo, lapack_int n, - float* ap ); -lapack_int LAPACKE_dpptri( int matrix_layout, char uplo, lapack_int n, - double* ap ); -lapack_int LAPACKE_cpptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap ); -lapack_int LAPACKE_zpptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap ); - -lapack_int LAPACKE_spptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dpptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cpptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spstrf( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, lapack_int* piv, lapack_int* rank, - float tol ); -lapack_int LAPACKE_dpstrf( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, lapack_int* piv, lapack_int* rank, - double tol ); -lapack_int LAPACKE_cpstrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* piv, lapack_int* rank, float tol ); -lapack_int LAPACKE_zpstrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* piv, lapack_int* rank, double tol ); - -lapack_int LAPACKE_sptcon( lapack_int n, const float* d, const float* e, - float anorm, float* rcond ); -lapack_int LAPACKE_dptcon( lapack_int n, const double* d, const double* e, - double anorm, double* rcond ); -lapack_int LAPACKE_cptcon( lapack_int n, const float* d, - const lapack_complex_float* e, float anorm, - float* rcond ); -lapack_int LAPACKE_zptcon( lapack_int n, const double* d, - const lapack_complex_double* e, double anorm, - double* rcond ); - -lapack_int LAPACKE_spteqr( int matrix_layout, char compz, lapack_int n, float* d, - float* e, float* z, lapack_int ldz ); -lapack_int LAPACKE_dpteqr( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz ); -lapack_int LAPACKE_cpteqr( int matrix_layout, char compz, lapack_int n, float* d, - float* e, lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zpteqr( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_sptrfs( int matrix_layout, lapack_int n, lapack_int nrhs, - const float* d, const float* e, const float* df, - const float* ef, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_dptrfs( int matrix_layout, lapack_int n, lapack_int nrhs, - const double* d, const double* e, const double* df, - const double* ef, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* ferr, - double* berr ); -lapack_int LAPACKE_cptrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, const float* df, - const lapack_complex_float* ef, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zptrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, const double* df, - const lapack_complex_double* ef, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sptsv( int matrix_layout, lapack_int n, lapack_int nrhs, - float* d, float* e, float* b, lapack_int ldb ); -lapack_int LAPACKE_dptsv( int matrix_layout, lapack_int n, lapack_int nrhs, - double* d, double* e, double* b, lapack_int ldb ); -lapack_int LAPACKE_cptsv( int matrix_layout, lapack_int n, lapack_int nrhs, - float* d, lapack_complex_float* e, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zptsv( int matrix_layout, lapack_int n, lapack_int nrhs, - double* d, lapack_complex_double* e, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sptsvx( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const float* d, const float* e, - float* df, float* ef, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dptsvx( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const double* d, const double* e, - double* df, double* ef, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); -lapack_int LAPACKE_cptsvx( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, float* df, - lapack_complex_float* ef, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zptsvx( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, double* df, - lapack_complex_double* ef, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_spttrf( lapack_int n, float* d, float* e ); -lapack_int LAPACKE_dpttrf( lapack_int n, double* d, double* e ); -lapack_int LAPACKE_cpttrf( lapack_int n, float* d, lapack_complex_float* e ); -lapack_int LAPACKE_zpttrf( lapack_int n, double* d, lapack_complex_double* e ); - -lapack_int LAPACKE_spttrs( int matrix_layout, lapack_int n, lapack_int nrhs, - const float* d, const float* e, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dpttrs( int matrix_layout, lapack_int n, lapack_int nrhs, - const double* d, const double* e, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cpttrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpttrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssbev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab, float* w, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbev( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab, double* w, - double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab, float* w, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbevd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsbevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* q, lapack_int ldq, - double vl, double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssbgst( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, float* ab, - lapack_int ldab, const float* bb, lapack_int ldbb, - float* x, lapack_int ldx ); -lapack_int LAPACKE_dsbgst( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, double* ab, - lapack_int ldab, const double* bb, lapack_int ldbb, - double* x, lapack_int ldx ); - -lapack_int LAPACKE_ssbgv( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, float* ab, - lapack_int ldab, float* bb, lapack_int ldbb, float* w, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbgv( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, double* ab, - lapack_int ldab, double* bb, lapack_int ldbb, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, float* ab, - lapack_int ldab, float* bb, lapack_int ldbb, - float* w, float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbgvd( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int ka, lapack_int kb, double* ab, - lapack_int ldab, double* bb, lapack_int ldbb, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbgvx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - float* ab, lapack_int ldab, float* bb, - lapack_int ldbb, float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsbgvx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - double* ab, lapack_int ldab, double* bb, - lapack_int ldbb, double* q, lapack_int ldq, - double vl, double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssbtrd( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab, float* d, - float* e, float* q, lapack_int ldq ); -lapack_int LAPACKE_dsbtrd( int matrix_layout, char vect, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab, - double* d, double* e, double* q, lapack_int ldq ); - -lapack_int LAPACKE_ssfrk( int matrix_layout, char transr, char uplo, char trans, - lapack_int n, lapack_int k, float alpha, - const float* a, lapack_int lda, float beta, - float* c ); -lapack_int LAPACKE_dsfrk( int matrix_layout, char transr, char uplo, char trans, - lapack_int n, lapack_int k, double alpha, - const double* a, lapack_int lda, double beta, - double* c ); - -lapack_int LAPACKE_sspcon( int matrix_layout, char uplo, lapack_int n, - const float* ap, const lapack_int* ipiv, float anorm, - float* rcond ); -lapack_int LAPACKE_dspcon( int matrix_layout, char uplo, lapack_int n, - const double* ap, const lapack_int* ipiv, - double anorm, double* rcond ); -lapack_int LAPACKE_cspcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zspcon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_sspev( int matrix_layout, char jobz, char uplo, lapack_int n, - float* ap, float* w, float* z, lapack_int ldz ); -lapack_int LAPACKE_dspev( int matrix_layout, char jobz, char uplo, lapack_int n, - double* ap, double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sspevd( int matrix_layout, char jobz, char uplo, lapack_int n, - float* ap, float* w, float* z, lapack_int ldz ); -lapack_int LAPACKE_dspevd( int matrix_layout, char jobz, char uplo, lapack_int n, - double* ap, double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sspevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, float* ap, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dspevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, double* ap, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_sspgst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, float* ap, const float* bp ); -lapack_int LAPACKE_dspgst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, double* ap, const double* bp ); - -lapack_int LAPACKE_sspgv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* ap, float* bp, - float* w, float* z, lapack_int ldz ); -lapack_int LAPACKE_dspgv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* ap, double* bp, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sspgvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* ap, float* bp, - float* w, float* z, lapack_int ldz ); -lapack_int LAPACKE_dspgvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* ap, double* bp, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sspgvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, float* ap, - float* bp, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, float* w, - float* z, lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_dspgvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, double* ap, - double* bp, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_ssprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, const float* afp, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dsprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, const double* afp, - const lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr ); -lapack_int LAPACKE_csprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zsprfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_sspsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* ap, lapack_int* ipiv, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dspsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* ap, lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cspsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zspsv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sspsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, float* afp, - lapack_int* ipiv, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dspsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, double* afp, - lapack_int* ipiv, const double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* ferr, double* berr ); -lapack_int LAPACKE_cspsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - lapack_complex_float* afp, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zspsvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - lapack_complex_double* afp, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_ssptrd( int matrix_layout, char uplo, lapack_int n, float* ap, - float* d, float* e, float* tau ); -lapack_int LAPACKE_dsptrd( int matrix_layout, char uplo, lapack_int n, - double* ap, double* d, double* e, double* tau ); - -lapack_int LAPACKE_ssptrf( int matrix_layout, char uplo, lapack_int n, float* ap, - lapack_int* ipiv ); -lapack_int LAPACKE_dsptrf( int matrix_layout, char uplo, lapack_int n, - double* ap, lapack_int* ipiv ); -lapack_int LAPACKE_csptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, lapack_int* ipiv ); -lapack_int LAPACKE_zsptrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, lapack_int* ipiv ); - -lapack_int LAPACKE_ssptri( int matrix_layout, char uplo, lapack_int n, float* ap, - const lapack_int* ipiv ); -lapack_int LAPACKE_dsptri( int matrix_layout, char uplo, lapack_int n, - double* ap, const lapack_int* ipiv ); -lapack_int LAPACKE_csptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, const lapack_int* ipiv ); -lapack_int LAPACKE_zsptri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, const lapack_int* ipiv ); - -lapack_int LAPACKE_ssptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_csptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zsptrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* ap, - const lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sstebz( char range, char order, lapack_int n, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - const float* d, const float* e, lapack_int* m, - lapack_int* nsplit, float* w, lapack_int* iblock, - lapack_int* isplit ); -lapack_int LAPACKE_dstebz( char range, char order, lapack_int n, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, const double* d, const double* e, - lapack_int* m, lapack_int* nsplit, double* w, - lapack_int* iblock, lapack_int* isplit ); - -lapack_int LAPACKE_sstedc( int matrix_layout, char compz, lapack_int n, float* d, - float* e, float* z, lapack_int ldz ); -lapack_int LAPACKE_dstedc( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz ); -lapack_int LAPACKE_cstedc( int matrix_layout, char compz, lapack_int n, float* d, - float* e, lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zstedc( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_sstegr( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_dstegr( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz ); -lapack_int LAPACKE_cstegr( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* isuppz ); -lapack_int LAPACKE_zstegr( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* isuppz ); - -lapack_int LAPACKE_sstein( int matrix_layout, lapack_int n, const float* d, - const float* e, lapack_int m, const float* w, - const lapack_int* iblock, const lapack_int* isplit, - float* z, lapack_int ldz, lapack_int* ifailv ); -lapack_int LAPACKE_dstein( int matrix_layout, lapack_int n, const double* d, - const double* e, lapack_int m, const double* w, - const lapack_int* iblock, const lapack_int* isplit, - double* z, lapack_int ldz, lapack_int* ifailv ); -lapack_int LAPACKE_cstein( int matrix_layout, lapack_int n, const float* d, - const float* e, lapack_int m, const float* w, - const lapack_int* iblock, const lapack_int* isplit, - lapack_complex_float* z, lapack_int ldz, - lapack_int* ifailv ); -lapack_int LAPACKE_zstein( int matrix_layout, lapack_int n, const double* d, - const double* e, lapack_int m, const double* w, - const lapack_int* iblock, const lapack_int* isplit, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifailv ); - -lapack_int LAPACKE_sstemr( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* m, - float* w, float* z, lapack_int ldz, lapack_int nzc, - lapack_int* isuppz, lapack_logical* tryrac ); -lapack_int LAPACKE_dstemr( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - lapack_int* m, double* w, double* z, lapack_int ldz, - lapack_int nzc, lapack_int* isuppz, - lapack_logical* tryrac ); -lapack_int LAPACKE_cstemr( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* m, - float* w, lapack_complex_float* z, lapack_int ldz, - lapack_int nzc, lapack_int* isuppz, - lapack_logical* tryrac ); -lapack_int LAPACKE_zstemr( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - lapack_int* m, double* w, lapack_complex_double* z, - lapack_int ldz, lapack_int nzc, lapack_int* isuppz, - lapack_logical* tryrac ); - -lapack_int LAPACKE_ssteqr( int matrix_layout, char compz, lapack_int n, float* d, - float* e, float* z, lapack_int ldz ); -lapack_int LAPACKE_dsteqr( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz ); -lapack_int LAPACKE_csteqr( int matrix_layout, char compz, lapack_int n, float* d, - float* e, lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zsteqr( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_ssterf( lapack_int n, float* d, float* e ); -lapack_int LAPACKE_dsterf( lapack_int n, double* d, double* e ); - -lapack_int LAPACKE_sstev( int matrix_layout, char jobz, lapack_int n, float* d, - float* e, float* z, lapack_int ldz ); -lapack_int LAPACKE_dstev( int matrix_layout, char jobz, lapack_int n, double* d, - double* e, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sstevd( int matrix_layout, char jobz, lapack_int n, float* d, - float* e, float* z, lapack_int ldz ); -lapack_int LAPACKE_dstevd( int matrix_layout, char jobz, lapack_int n, double* d, - double* e, double* z, lapack_int ldz ); - -lapack_int LAPACKE_sstevr( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_dstevr( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz ); - -lapack_int LAPACKE_sstevx( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dstevx( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssycon( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_dsycon( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond ); -lapack_int LAPACKE_csycon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zsycon( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond ); - -lapack_int LAPACKE_ssyequb( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float* s, - float* scond, float* amax ); -lapack_int LAPACKE_dsyequb( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double* s, - double* scond, double* amax ); -lapack_int LAPACKE_csyequb( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zsyequb( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_ssyev( int matrix_layout, char jobz, char uplo, lapack_int n, - float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_dsyev( int matrix_layout, char jobz, char uplo, lapack_int n, - double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_ssyevd( int matrix_layout, char jobz, char uplo, lapack_int n, - float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_dsyevd( int matrix_layout, char jobz, char uplo, lapack_int n, - double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_ssyevr( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, float* a, lapack_int lda, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_dsyevr( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, double* a, lapack_int lda, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz ); - -lapack_int LAPACKE_ssyevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, float* a, lapack_int lda, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsyevx( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, double* a, lapack_int lda, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssygst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, float* a, lapack_int lda, - const float* b, lapack_int ldb ); -lapack_int LAPACKE_dsygst( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, double* a, lapack_int lda, - const double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssygv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, float* w ); -lapack_int LAPACKE_dsygv( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double* w ); - -lapack_int LAPACKE_ssygvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, float* w ); -lapack_int LAPACKE_dsygvd( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double* w ); - -lapack_int LAPACKE_ssygvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsygvx( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssyrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dsyrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr ); -lapack_int LAPACKE_csyrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_zsyrfs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_ssyrfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* s, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dsyrfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* s, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); -lapack_int LAPACKE_csyrfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* s, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params ); -lapack_int LAPACKE_zsyrfsx( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, lapack_int ldaf, - const lapack_int* ipiv, const double* s, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params ); - -lapack_int LAPACKE_ssysv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsysv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_csysv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsysv( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssysvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - float* af, lapack_int ldaf, lapack_int* ipiv, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr ); -lapack_int LAPACKE_dsysvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - double* af, lapack_int ldaf, lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr ); -lapack_int LAPACKE_csysvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* af, - lapack_int ldaf, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr ); -lapack_int LAPACKE_zsysvx( int matrix_layout, char fact, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* af, - lapack_int ldaf, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr ); - -lapack_int LAPACKE_ssysvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_dsysvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); -lapack_int LAPACKE_csysvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params ); -lapack_int LAPACKE_zsysvxx( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params ); - -lapack_int LAPACKE_ssytrd( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, float* d, float* e, float* tau ); -lapack_int LAPACKE_dsytrd( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, double* d, double* e, double* tau ); - -lapack_int LAPACKE_ssytrf( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dsytrf( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_csytrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zsytrf( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_ssytri( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_dsytri( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_csytri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_zsytri( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv ); - -lapack_int LAPACKE_ssytrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stbcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, lapack_int kd, const float* ab, - lapack_int ldab, float* rcond ); -lapack_int LAPACKE_dtbcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, lapack_int kd, const double* ab, - lapack_int ldab, double* rcond ); -lapack_int LAPACKE_ctbcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_float* ab, lapack_int ldab, - float* rcond ); -lapack_int LAPACKE_ztbcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_double* ab, lapack_int ldab, - double* rcond ); - -lapack_int LAPACKE_stbrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const float* ab, lapack_int ldab, const float* b, - lapack_int ldb, const float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_dtbrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const double* ab, lapack_int ldab, const double* b, - lapack_int ldb, const double* x, lapack_int ldx, - double* ferr, double* berr ); -lapack_int LAPACKE_ctbrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_ztbrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_stbtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const float* ab, lapack_int ldab, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dtbtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const double* ab, lapack_int ldab, double* b, - lapack_int ldb ); -lapack_int LAPACKE_ctbtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztbtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stfsm( int matrix_layout, char transr, char side, char uplo, - char trans, char diag, lapack_int m, lapack_int n, - float alpha, const float* a, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dtfsm( int matrix_layout, char transr, char side, char uplo, - char trans, char diag, lapack_int m, lapack_int n, - double alpha, const double* a, double* b, - lapack_int ldb ); -lapack_int LAPACKE_ctfsm( int matrix_layout, char transr, char side, char uplo, - char trans, char diag, lapack_int m, lapack_int n, - lapack_complex_float alpha, - const lapack_complex_float* a, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztfsm( int matrix_layout, char transr, char side, char uplo, - char trans, char diag, lapack_int m, lapack_int n, - lapack_complex_double alpha, - const lapack_complex_double* a, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stftri( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, float* a ); -lapack_int LAPACKE_dtftri( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, double* a ); -lapack_int LAPACKE_ctftri( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, lapack_complex_float* a ); -lapack_int LAPACKE_ztftri( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, lapack_complex_double* a ); - -lapack_int LAPACKE_stfttp( int matrix_layout, char transr, char uplo, - lapack_int n, const float* arf, float* ap ); -lapack_int LAPACKE_dtfttp( int matrix_layout, char transr, char uplo, - lapack_int n, const double* arf, double* ap ); -lapack_int LAPACKE_ctfttp( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* arf, - lapack_complex_float* ap ); -lapack_int LAPACKE_ztfttp( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* arf, - lapack_complex_double* ap ); - -lapack_int LAPACKE_stfttr( int matrix_layout, char transr, char uplo, - lapack_int n, const float* arf, float* a, - lapack_int lda ); -lapack_int LAPACKE_dtfttr( int matrix_layout, char transr, char uplo, - lapack_int n, const double* arf, double* a, - lapack_int lda ); -lapack_int LAPACKE_ctfttr( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* arf, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_ztfttr( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* arf, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_stgevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const float* s, lapack_int lds, const float* p, - lapack_int ldp, float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, lapack_int mm, - lapack_int* m ); -lapack_int LAPACKE_dtgevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const double* s, lapack_int lds, const double* p, - lapack_int ldp, double* vl, lapack_int ldvl, - double* vr, lapack_int ldvr, lapack_int mm, - lapack_int* m ); -lapack_int LAPACKE_ctgevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* s, lapack_int lds, - const lapack_complex_float* p, lapack_int ldp, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ztgevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* s, lapack_int lds, - const lapack_complex_double* p, lapack_int ldp, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m ); - -lapack_int LAPACKE_stgexc( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, float* q, - lapack_int ldq, float* z, lapack_int ldz, - lapack_int* ifst, lapack_int* ilst ); -lapack_int LAPACKE_dtgexc( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, double* q, - lapack_int ldq, double* z, lapack_int ldz, - lapack_int* ifst, lapack_int* ilst ); -lapack_int LAPACKE_ctgexc( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz, - lapack_int ifst, lapack_int ilst ); -lapack_int LAPACKE_ztgexc( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_int ifst, lapack_int ilst ); - -lapack_int LAPACKE_stgsen( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* alphar, float* alphai, float* beta, float* q, - lapack_int ldq, float* z, lapack_int ldz, - lapack_int* m, float* pl, float* pr, float* dif ); -lapack_int LAPACKE_dtgsen( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - double* a, lapack_int lda, double* b, lapack_int ldb, - double* alphar, double* alphai, double* beta, - double* q, lapack_int ldq, double* z, lapack_int ldz, - lapack_int* m, double* pl, double* pr, double* dif ); -lapack_int LAPACKE_ctgsen( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, lapack_complex_float* q, - lapack_int ldq, lapack_complex_float* z, - lapack_int ldz, lapack_int* m, float* pl, float* pr, - float* dif ); -lapack_int LAPACKE_ztgsen( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_int* m, double* pl, double* pr, double* dif ); - -lapack_int LAPACKE_stgsja( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_int k, lapack_int l, float* a, lapack_int lda, - float* b, lapack_int ldb, float tola, float tolb, - float* alpha, float* beta, float* u, lapack_int ldu, - float* v, lapack_int ldv, float* q, lapack_int ldq, - lapack_int* ncycle ); -lapack_int LAPACKE_dtgsja( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_int k, lapack_int l, double* a, - lapack_int lda, double* b, lapack_int ldb, - double tola, double tolb, double* alpha, - double* beta, double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq, - lapack_int* ncycle ); -lapack_int LAPACKE_ctgsja( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_int k, lapack_int l, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float tola, float tolb, float* alpha, - float* beta, lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq, - lapack_int* ncycle ); -lapack_int LAPACKE_ztgsja( int matrix_layout, char jobu, char jobv, char jobq, - lapack_int m, lapack_int p, lapack_int n, - lapack_int k, lapack_int l, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double tola, double tolb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_int* ncycle ); - -lapack_int LAPACKE_stgsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, const float* vl, lapack_int ldvl, - const float* vr, lapack_int ldvr, float* s, - float* dif, lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_dtgsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const double* a, lapack_int lda, const double* b, - lapack_int ldb, const double* vl, lapack_int ldvl, - const double* vr, lapack_int ldvr, double* s, - double* dif, lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ctgsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* vl, lapack_int ldvl, - const lapack_complex_float* vr, lapack_int ldvr, - float* s, float* dif, lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ztgsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* vl, lapack_int ldvl, - const lapack_complex_double* vr, lapack_int ldvr, - double* s, double* dif, lapack_int mm, - lapack_int* m ); - -lapack_int LAPACKE_stgsyl( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, const float* a, - lapack_int lda, const float* b, lapack_int ldb, - float* c, lapack_int ldc, const float* d, - lapack_int ldd, const float* e, lapack_int lde, - float* f, lapack_int ldf, float* scale, float* dif ); -lapack_int LAPACKE_dtgsyl( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, const double* a, - lapack_int lda, const double* b, lapack_int ldb, - double* c, lapack_int ldc, const double* d, - lapack_int ldd, const double* e, lapack_int lde, - double* f, lapack_int ldf, double* scale, - double* dif ); -lapack_int LAPACKE_ctgsyl( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* c, lapack_int ldc, - const lapack_complex_float* d, lapack_int ldd, - const lapack_complex_float* e, lapack_int lde, - lapack_complex_float* f, lapack_int ldf, - float* scale, float* dif ); -lapack_int LAPACKE_ztgsyl( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - const lapack_complex_double* d, lapack_int ldd, - const lapack_complex_double* e, lapack_int lde, - lapack_complex_double* f, lapack_int ldf, - double* scale, double* dif ); - -lapack_int LAPACKE_stpcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const float* ap, float* rcond ); -lapack_int LAPACKE_dtpcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const double* ap, double* rcond ); -lapack_int LAPACKE_ctpcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const lapack_complex_float* ap, - float* rcond ); -lapack_int LAPACKE_ztpcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const lapack_complex_double* ap, - double* rcond ); - -lapack_int LAPACKE_stprfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const float* ap, - const float* b, lapack_int ldb, const float* x, - lapack_int ldx, float* ferr, float* berr ); -lapack_int LAPACKE_dtprfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const double* ap, - const double* b, lapack_int ldb, const double* x, - lapack_int ldx, double* ferr, double* berr ); -lapack_int LAPACKE_ctprfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_ztprfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_stptri( int matrix_layout, char uplo, char diag, lapack_int n, - float* ap ); -lapack_int LAPACKE_dtptri( int matrix_layout, char uplo, char diag, lapack_int n, - double* ap ); -lapack_int LAPACKE_ctptri( int matrix_layout, char uplo, char diag, lapack_int n, - lapack_complex_float* ap ); -lapack_int LAPACKE_ztptri( int matrix_layout, char uplo, char diag, lapack_int n, - lapack_complex_double* ap ); - -lapack_int LAPACKE_stptrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const float* ap, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dtptrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const double* ap, - double* b, lapack_int ldb ); -lapack_int LAPACKE_ctptrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztptrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stpttf( int matrix_layout, char transr, char uplo, - lapack_int n, const float* ap, float* arf ); -lapack_int LAPACKE_dtpttf( int matrix_layout, char transr, char uplo, - lapack_int n, const double* ap, double* arf ); -lapack_int LAPACKE_ctpttf( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* ap, - lapack_complex_float* arf ); -lapack_int LAPACKE_ztpttf( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* ap, - lapack_complex_double* arf ); - -lapack_int LAPACKE_stpttr( int matrix_layout, char uplo, lapack_int n, - const float* ap, float* a, lapack_int lda ); -lapack_int LAPACKE_dtpttr( int matrix_layout, char uplo, lapack_int n, - const double* ap, double* a, lapack_int lda ); -lapack_int LAPACKE_ctpttr( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_ztpttr( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_strcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const float* a, lapack_int lda, - float* rcond ); -lapack_int LAPACKE_dtrcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const double* a, lapack_int lda, - double* rcond ); -lapack_int LAPACKE_ctrcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, float* rcond ); -lapack_int LAPACKE_ztrcon( int matrix_layout, char norm, char uplo, char diag, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, double* rcond ); - -lapack_int LAPACKE_strevc( int matrix_layout, char side, char howmny, - lapack_logical* select, lapack_int n, const float* t, - lapack_int ldt, float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, lapack_int mm, - lapack_int* m ); -lapack_int LAPACKE_dtrevc( int matrix_layout, char side, char howmny, - lapack_logical* select, lapack_int n, - const double* t, lapack_int ldt, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ctrevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ztrevc( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m ); - -lapack_int LAPACKE_strexc( int matrix_layout, char compq, lapack_int n, float* t, - lapack_int ldt, float* q, lapack_int ldq, - lapack_int* ifst, lapack_int* ilst ); -lapack_int LAPACKE_dtrexc( int matrix_layout, char compq, lapack_int n, - double* t, lapack_int ldt, double* q, lapack_int ldq, - lapack_int* ifst, lapack_int* ilst ); -lapack_int LAPACKE_ctrexc( int matrix_layout, char compq, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* q, lapack_int ldq, - lapack_int ifst, lapack_int ilst ); -lapack_int LAPACKE_ztrexc( int matrix_layout, char compq, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* q, lapack_int ldq, - lapack_int ifst, lapack_int ilst ); - -lapack_int LAPACKE_strrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* b, lapack_int ldb, - const float* x, lapack_int ldx, float* ferr, - float* berr ); -lapack_int LAPACKE_dtrrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* b, lapack_int ldb, - const double* x, lapack_int ldx, double* ferr, - double* berr ); -lapack_int LAPACKE_ctrrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr ); -lapack_int LAPACKE_ztrrfs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr ); - -lapack_int LAPACKE_strsen( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, float* t, - lapack_int ldt, float* q, lapack_int ldq, float* wr, - float* wi, lapack_int* m, float* s, float* sep ); -lapack_int LAPACKE_dtrsen( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - double* t, lapack_int ldt, double* q, lapack_int ldq, - double* wr, double* wi, lapack_int* m, double* s, - double* sep ); -lapack_int LAPACKE_ctrsen( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* w, lapack_int* m, float* s, - float* sep ); -lapack_int LAPACKE_ztrsen( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* w, lapack_int* m, double* s, - double* sep ); - -lapack_int LAPACKE_strsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const float* t, lapack_int ldt, const float* vl, - lapack_int ldvl, const float* vr, lapack_int ldvr, - float* s, float* sep, lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_dtrsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const double* t, lapack_int ldt, const double* vl, - lapack_int ldvl, const double* vr, lapack_int ldvr, - double* s, double* sep, lapack_int mm, - lapack_int* m ); -lapack_int LAPACKE_ctrsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* t, lapack_int ldt, - const lapack_complex_float* vl, lapack_int ldvl, - const lapack_complex_float* vr, lapack_int ldvr, - float* s, float* sep, lapack_int mm, lapack_int* m ); -lapack_int LAPACKE_ztrsna( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* t, lapack_int ldt, - const lapack_complex_double* vl, lapack_int ldvl, - const lapack_complex_double* vr, lapack_int ldvr, - double* s, double* sep, lapack_int mm, - lapack_int* m ); - -lapack_int LAPACKE_strsyl( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, float* c, lapack_int ldc, - float* scale ); -lapack_int LAPACKE_dtrsyl( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const double* a, lapack_int lda, const double* b, - lapack_int ldb, double* c, lapack_int ldc, - double* scale ); -lapack_int LAPACKE_ctrsyl( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* c, lapack_int ldc, - float* scale ); -lapack_int LAPACKE_ztrsyl( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - double* scale ); - -lapack_int LAPACKE_strsyl3( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, float* c, lapack_int ldc, - float* scale ); -lapack_int LAPACKE_dtrsyl3( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const double* a, lapack_int lda, const double* b, - lapack_int ldb, double* c, lapack_int ldc, - double* scale ); -lapack_int LAPACKE_ztrsyl3( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - double* scale ); - -lapack_int LAPACKE_strtri( int matrix_layout, char uplo, char diag, lapack_int n, - float* a, lapack_int lda ); -lapack_int LAPACKE_dtrtri( int matrix_layout, char uplo, char diag, lapack_int n, - double* a, lapack_int lda ); -lapack_int LAPACKE_ctrtri( int matrix_layout, char uplo, char diag, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_ztrtri( int matrix_layout, char uplo, char diag, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_strtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, float* b, lapack_int ldb ); -lapack_int LAPACKE_dtrtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, double* b, lapack_int ldb ); -lapack_int LAPACKE_ctrtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztrtrs( int matrix_layout, char uplo, char trans, char diag, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_strttf( int matrix_layout, char transr, char uplo, - lapack_int n, const float* a, lapack_int lda, - float* arf ); -lapack_int LAPACKE_dtrttf( int matrix_layout, char transr, char uplo, - lapack_int n, const double* a, lapack_int lda, - double* arf ); -lapack_int LAPACKE_ctrttf( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* arf ); -lapack_int LAPACKE_ztrttf( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* arf ); - -lapack_int LAPACKE_strttp( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float* ap ); -lapack_int LAPACKE_dtrttp( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double* ap ); -lapack_int LAPACKE_ctrttp( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* ap ); -lapack_int LAPACKE_ztrttp( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* ap ); - -lapack_int LAPACKE_stzrzf( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau ); -lapack_int LAPACKE_dtzrzf( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau ); -lapack_int LAPACKE_ctzrzf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau ); -lapack_int LAPACKE_ztzrzf( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau ); - -lapack_int LAPACKE_cungbr( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zungbr( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cunghr( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zunghr( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cunglq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zunglq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cungql( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zungql( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cungqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zungqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cungrq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau ); -lapack_int LAPACKE_zungrq( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau ); - -lapack_int LAPACKE_cungtr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau ); -lapack_int LAPACKE_zungtr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau ); - -lapack_int LAPACKE_cungtsqr_row( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zungtsqr_row( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_cunmbr( int matrix_layout, char vect, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmbr( int matrix_layout, char vect, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmhr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmhr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmql( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmql( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmrq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmrq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmrz( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmrz( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cunmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zunmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_cupgtr( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_complex_float* tau, - lapack_complex_float* q, lapack_int ldq ); -lapack_int LAPACKE_zupgtr( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_complex_double* tau, - lapack_complex_double* q, lapack_int ldq ); - -lapack_int LAPACKE_cupmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, - const lapack_complex_float* ap, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zupmtr( int matrix_layout, char side, char uplo, char trans, - lapack_int m, lapack_int n, - const lapack_complex_double* ap, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_sbdsdc_work( int matrix_layout, char uplo, char compq, - lapack_int n, float* d, float* e, float* u, - lapack_int ldu, float* vt, lapack_int ldvt, - float* q, lapack_int* iq, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dbdsdc_work( int matrix_layout, char uplo, char compq, - lapack_int n, double* d, double* e, double* u, - lapack_int ldu, double* vt, lapack_int ldvt, - double* q, lapack_int* iq, double* work, - lapack_int* iwork ); - -lapack_int LAPACKE_sbdsvdx_work( int matrix_layout, char uplo, char jobz, char range, - lapack_int n, float* d, float* e, - float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, float* z, lapack_int ldz, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dbdsvdx_work( int matrix_layout, char uplo, char jobz, char range, - lapack_int n, double* d, double* e, - double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, double* z, lapack_int ldz, - double* work, lapack_int* iwork ); - -lapack_int LAPACKE_sbdsqr_work( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - float* d, float* e, float* vt, lapack_int ldvt, - float* u, lapack_int ldu, float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_dbdsqr_work( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - double* d, double* e, double* vt, - lapack_int ldvt, double* u, lapack_int ldu, - double* c, lapack_int ldc, double* work ); -lapack_int LAPACKE_cbdsqr_work( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - float* d, float* e, lapack_complex_float* vt, - lapack_int ldvt, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_zbdsqr_work( int matrix_layout, char uplo, lapack_int n, - lapack_int ncvt, lapack_int nru, lapack_int ncc, - double* d, double* e, lapack_complex_double* vt, - lapack_int ldvt, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* c, - lapack_int ldc, double* work ); - -lapack_int LAPACKE_sdisna_work( char job, lapack_int m, lapack_int n, - const float* d, float* sep ); -lapack_int LAPACKE_ddisna_work( char job, lapack_int m, lapack_int n, - const double* d, double* sep ); - -lapack_int LAPACKE_sgbbrd_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, float* ab, lapack_int ldab, - float* d, float* e, float* q, lapack_int ldq, - float* pt, lapack_int ldpt, float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_dgbbrd_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, double* ab, lapack_int ldab, - double* d, double* e, double* q, lapack_int ldq, - double* pt, lapack_int ldpt, double* c, - lapack_int ldc, double* work ); -lapack_int LAPACKE_cgbbrd_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, lapack_complex_float* ab, - lapack_int ldab, float* d, float* e, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* pt, lapack_int ldpt, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgbbrd_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int ncc, lapack_int kl, - lapack_int ku, lapack_complex_double* ab, - lapack_int ldab, double* d, double* e, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* pt, lapack_int ldpt, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgbcon_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, const lapack_int* ipiv, - float anorm, float* rcond, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgbcon_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, const lapack_int* ipiv, - double anorm, double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgbcon_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgbcon_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, - lapack_int ldab, const lapack_int* ipiv, - double anorm, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgbequ_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, float* r, float* c, - float* rowcnd, float* colcnd, float* amax ); -lapack_int LAPACKE_dgbequ_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); -lapack_int LAPACKE_cgbequ_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - float* r, float* c, float* rowcnd, - float* colcnd, float* amax ); -lapack_int LAPACKE_zgbequ_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); - -lapack_int LAPACKE_sgbequb_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, float* r, float* c, - float* rowcnd, float* colcnd, float* amax ); -lapack_int LAPACKE_dgbequb_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); -lapack_int LAPACKE_cgbequb_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, - lapack_int ldab, float* r, float* c, - float* rowcnd, float* colcnd, float* amax ); -lapack_int LAPACKE_zgbequb_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, - lapack_int ldab, double* r, double* c, - double* rowcnd, double* colcnd, double* amax ); - -lapack_int LAPACKE_sgbrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const float* ab, lapack_int ldab, - const float* afb, lapack_int ldafb, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgbrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const double* ab, lapack_int ldab, - const double* afb, lapack_int ldafb, - const lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgbrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* afb, - lapack_int ldafb, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgbrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, - const lapack_complex_double* afb, - lapack_int ldafb, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgbrfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const float* ab, - lapack_int ldab, const float* afb, - lapack_int ldafb, const lapack_int* ipiv, - const float* r, const float* c, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgbrfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, const double* ab, - lapack_int ldab, const double* afb, - lapack_int ldafb, const lapack_int* ipiv, - const double* r, const double* c, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgbrfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, - const lapack_complex_float* ab, - lapack_int ldab, - const lapack_complex_float* afb, - lapack_int ldafb, const lapack_int* ipiv, - const float* r, const float* c, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgbrfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, - const lapack_complex_double* afb, - lapack_int ldafb, const lapack_int* ipiv, - const double* r, const double* c, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, float* ab, - lapack_int ldab, lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, double* ab, - lapack_int ldab, lapack_int* ipiv, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgbsv_work( int matrix_layout, lapack_int n, lapack_int kl, - lapack_int ku, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sgbsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, float* ab, lapack_int ldab, - float* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, float* r, float* c, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dgbsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, double* ab, lapack_int ldab, - double* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, double* r, double* c, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cgbsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - float* r, float* c, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgbsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* afb, - lapack_int ldafb, lapack_int* ipiv, char* equed, - double* r, double* c, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sgbsvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, float* ab, lapack_int ldab, - float* afb, lapack_int ldafb, lapack_int* ipiv, - char* equed, float* r, float* c, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgbsvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, double* ab, lapack_int ldab, - double* afb, lapack_int ldafb, - lapack_int* ipiv, char* equed, double* r, - double* c, double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgbsvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* afb, - lapack_int ldafb, lapack_int* ipiv, - char* equed, float* r, float* c, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgbsvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int kl, lapack_int ku, - lapack_int nrhs, lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* afb, - lapack_int ldafb, lapack_int* ipiv, - char* equed, double* r, double* c, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, float* ab, - lapack_int ldab, lapack_int* ipiv ); -lapack_int LAPACKE_dgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, double* ab, - lapack_int ldab, lapack_int* ipiv ); -lapack_int LAPACKE_cgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - lapack_complex_float* ab, lapack_int ldab, - lapack_int* ipiv ); -lapack_int LAPACKE_zgbtrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - lapack_complex_double* ab, lapack_int ldab, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgbtrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const float* ab, lapack_int ldab, - const lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgbtrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const double* ab, lapack_int ldab, - const lapack_int* ipiv, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cgbtrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgbtrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int kl, lapack_int ku, lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sgebak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const float* scale, lapack_int m, float* v, - lapack_int ldv ); -lapack_int LAPACKE_dgebak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const double* scale, lapack_int m, double* v, - lapack_int ldv ); -lapack_int LAPACKE_cgebak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const float* scale, lapack_int m, - lapack_complex_float* v, lapack_int ldv ); -lapack_int LAPACKE_zgebak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const double* scale, lapack_int m, - lapack_complex_double* v, lapack_int ldv ); - -lapack_int LAPACKE_sgebal_work( int matrix_layout, char job, lapack_int n, - float* a, lapack_int lda, lapack_int* ilo, - lapack_int* ihi, float* scale ); -lapack_int LAPACKE_dgebal_work( int matrix_layout, char job, lapack_int n, - double* a, lapack_int lda, lapack_int* ilo, - lapack_int* ihi, double* scale ); -lapack_int LAPACKE_cgebal_work( int matrix_layout, char job, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ilo, lapack_int* ihi, - float* scale ); -lapack_int LAPACKE_zgebal_work( int matrix_layout, char job, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ilo, lapack_int* ihi, - double* scale ); - -lapack_int LAPACKE_sgebrd_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* d, float* e, - float* tauq, float* taup, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dgebrd_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* d, double* e, - double* tauq, double* taup, double* work, - lapack_int lwork ); -lapack_int LAPACKE_cgebrd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float* d, float* e, lapack_complex_float* tauq, - lapack_complex_float* taup, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgebrd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* d, double* e, - lapack_complex_double* tauq, - lapack_complex_double* taup, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgecon_work( int matrix_layout, char norm, lapack_int n, - const float* a, lapack_int lda, float anorm, - float* rcond, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dgecon_work( int matrix_layout, char norm, lapack_int n, - const double* a, lapack_int lda, double anorm, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgecon_work( int matrix_layout, char norm, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float anorm, float* rcond, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgecon_work( int matrix_layout, char norm, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double anorm, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgeequ_work( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, float* r, - float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_dgeequ_work( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, double* r, - double* c, double* rowcnd, double* colcnd, - double* amax ); -lapack_int LAPACKE_cgeequ_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* r, float* c, float* rowcnd, - float* colcnd, float* amax ); -lapack_int LAPACKE_zgeequ_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* r, double* c, double* rowcnd, - double* colcnd, double* amax ); - -lapack_int LAPACKE_sgeequb_work( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, float* r, - float* c, float* rowcnd, float* colcnd, - float* amax ); -lapack_int LAPACKE_dgeequb_work( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, double* r, - double* c, double* rowcnd, double* colcnd, - double* amax ); -lapack_int LAPACKE_cgeequb_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* r, float* c, float* rowcnd, - float* colcnd, float* amax ); -lapack_int LAPACKE_zgeequb_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* r, double* c, double* rowcnd, - double* colcnd, double* amax ); - -lapack_int LAPACKE_sgees_work( int matrix_layout, char jobvs, char sort, - LAPACK_S_SELECT2 select, lapack_int n, float* a, - lapack_int lda, lapack_int* sdim, float* wr, - float* wi, float* vs, lapack_int ldvs, - float* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_dgees_work( int matrix_layout, char jobvs, char sort, - LAPACK_D_SELECT2 select, lapack_int n, double* a, - lapack_int lda, lapack_int* sdim, double* wr, - double* wi, double* vs, lapack_int ldvs, - double* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_cgees_work( int matrix_layout, char jobvs, char sort, - LAPACK_C_SELECT1 select, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* sdim, lapack_complex_float* w, - lapack_complex_float* vs, lapack_int ldvs, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_logical* bwork ); -lapack_int LAPACKE_zgees_work( int matrix_layout, char jobvs, char sort, - LAPACK_Z_SELECT1 select, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* sdim, lapack_complex_double* w, - lapack_complex_double* vs, lapack_int ldvs, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_logical* bwork ); - -lapack_int LAPACKE_sgeesx_work( int matrix_layout, char jobvs, char sort, - LAPACK_S_SELECT2 select, char sense, - lapack_int n, float* a, lapack_int lda, - lapack_int* sdim, float* wr, float* wi, - float* vs, lapack_int ldvs, float* rconde, - float* rcondv, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork, - lapack_logical* bwork ); -lapack_int LAPACKE_dgeesx_work( int matrix_layout, char jobvs, char sort, - LAPACK_D_SELECT2 select, char sense, - lapack_int n, double* a, lapack_int lda, - lapack_int* sdim, double* wr, double* wi, - double* vs, lapack_int ldvs, double* rconde, - double* rcondv, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork, - lapack_logical* bwork ); -lapack_int LAPACKE_cgeesx_work( int matrix_layout, char jobvs, char sort, - LAPACK_C_SELECT1 select, char sense, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_int* sdim, - lapack_complex_float* w, - lapack_complex_float* vs, lapack_int ldvs, - float* rconde, float* rcondv, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_logical* bwork ); -lapack_int LAPACKE_zgeesx_work( int matrix_layout, char jobvs, char sort, - LAPACK_Z_SELECT1 select, char sense, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_int* sdim, - lapack_complex_double* w, - lapack_complex_double* vs, lapack_int ldvs, - double* rconde, double* rcondv, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_logical* bwork ); - -lapack_int LAPACKE_sgeev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, float* a, lapack_int lda, - float* wr, float* wi, float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dgeev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, double* a, lapack_int lda, - double* wr, double* wi, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* w, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zgeev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* w, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_sgeevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, float* a, - lapack_int lda, float* wr, float* wi, float* vl, - lapack_int ldvl, float* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, float* scale, - float* abnrm, float* rconde, float* rcondv, - float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dgeevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, double* a, - lapack_int lda, double* wr, double* wi, - double* vl, lapack_int ldvl, double* vr, - lapack_int ldvr, lapack_int* ilo, - lapack_int* ihi, double* scale, double* abnrm, - double* rconde, double* rcondv, double* work, - lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_cgeevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* w, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, float* scale, - float* abnrm, float* rconde, float* rcondv, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zgeevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* w, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, double* scale, - double* abnrm, double* rconde, double* rcondv, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_sgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, float* a, lapack_int lda, - float* tau, float* work, lapack_int lwork ); -lapack_int LAPACKE_dgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, double* a, lapack_int lda, - double* tau, double* work, lapack_int lwork ); -lapack_int LAPACKE_cgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgehrd_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgejsv_work( int matrix_layout, char joba, char jobu, - char jobv, char jobr, char jobt, char jobp, - lapack_int m, lapack_int n, float* a, - lapack_int lda, float* sva, float* u, - lapack_int ldu, float* v, lapack_int ldv, - float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dgejsv_work( int matrix_layout, char joba, char jobu, - char jobv, char jobr, char jobt, char jobp, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* sva, double* u, - lapack_int ldu, double* v, lapack_int ldv, - double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_cgejsv_work( int matrix_layout, char joba, char jobu, - char jobv, char jobr, char jobt, char jobp, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float* sva, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* cwork, lapack_int lwork, - float* work, lapack_int lrwork, - lapack_int* iwork ); -lapack_int LAPACKE_zgejsv_work( int matrix_layout, char joba, char jobu, - char jobv, char jobr, char jobt, char jobp, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double* sva, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* cwork, lapack_int lwork, - double* work, lapack_int lrwork, - lapack_int* iwork ); - -lapack_int LAPACKE_sgelq2_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work ); -lapack_int LAPACKE_dgelq2_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work ); -lapack_int LAPACKE_cgelq2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work ); -lapack_int LAPACKE_zgelq2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work ); - -lapack_int LAPACKE_sgelqf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgelqf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgelqf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgelqf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgels_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgels_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgels_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgels_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgelsd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* b, lapack_int ldb, float* s, float rcond, - lapack_int* rank, float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dgelsd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* s, - double rcond, lapack_int* rank, double* work, - lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_cgelsd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int* iwork ); -lapack_int LAPACKE_zgelsd_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* s, double rcond, - lapack_int* rank, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int* iwork ); - -lapack_int LAPACKE_sgelss_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* b, lapack_int ldb, float* s, float rcond, - lapack_int* rank, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dgelss_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* s, - double rcond, lapack_int* rank, double* work, - lapack_int lwork ); -lapack_int LAPACKE_cgelss_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* s, float rcond, - lapack_int* rank, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zgelss_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* s, double rcond, - lapack_int* rank, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -lapack_int LAPACKE_sgelsy_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* b, lapack_int ldb, lapack_int* jpvt, - float rcond, lapack_int* rank, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dgelsy_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, lapack_int* jpvt, - double rcond, lapack_int* rank, double* work, - lapack_int lwork ); -lapack_int LAPACKE_cgelsy_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_int* jpvt, float rcond, - lapack_int* rank, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zgelsy_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_int* jpvt, double rcond, - lapack_int* rank, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -lapack_int LAPACKE_sgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgeqlf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* jpvt, - float* tau, float* work, lapack_int lwork ); -lapack_int LAPACKE_dgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* jpvt, - double* tau, double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zgeqp3_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_sgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* jpvt, - float* tau, float* work ); -lapack_int LAPACKE_dgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* jpvt, - double* tau, double* work ); -lapack_int LAPACKE_cgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_float* tau, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgeqpf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* jpvt, lapack_complex_double* tau, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work ); -lapack_int LAPACKE_dgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work ); -lapack_int LAPACKE_cgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work ); -lapack_int LAPACKE_zgeqr2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work ); - -lapack_int LAPACKE_sgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgeqrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgeqrfp_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sgerfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgerfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cgerfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgerfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgerfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, - lapack_int ldaf, const lapack_int* ipiv, - const float* r, const float* c, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgerfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* r, const double* c, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgerfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const float* r, const float* c, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgerfsx_work( int matrix_layout, char trans, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* r, const double* c, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sgerqf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgerqf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgerqf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgerqf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgesdd_work( int matrix_layout, char jobz, lapack_int m, - lapack_int n, float* a, lapack_int lda, - float* s, float* u, lapack_int ldu, float* vt, - lapack_int ldvt, float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dgesdd_work( int matrix_layout, char jobz, lapack_int m, - lapack_int n, double* a, lapack_int lda, - double* s, double* u, lapack_int ldu, - double* vt, lapack_int ldvt, double* work, - lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_cgesdd_work( int matrix_layout, char jobz, lapack_int m, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* s, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* vt, lapack_int ldvt, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int* iwork ); -lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* s, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* vt, lapack_int ldvt, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int* iwork ); - -lapack_int LAPACKE_sgedmd_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobf, lapack_int whtsvd, - lapack_int m, lapack_int n, float* x, - lapack_int ldx, float* y, lapack_int ldy, - lapack_int nrnk, float* tol, lapack_int k, - float* reig, float* imeig, - float* z, lapack_int ldz, float* res, - float* b, lapack_int ldb, float* w, - lapack_int ldw, float* s, lapack_int lds, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_dgedmd_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobf, lapack_int whtsvd, - lapack_int m, lapack_int n, double* x, - lapack_int ldx, double* y, lapack_int ldy, - lapack_int nrnk, double* tol, lapack_int k, - double* reig, double *imeig, - double* z, lapack_int ldz, double* res, - double* b, lapack_int ldb, double* w, - lapack_int ldw, double* s, lapack_int lds, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_cgedmd_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobf, lapack_int whtsvd, - lapack_int m, lapack_int n, - lapack_complex_float* x, lapack_int ldx, - lapack_complex_float* y, lapack_int ldy, - lapack_int nrnk, float* tol, lapack_int k, - lapack_complex_float* eigs, - lapack_complex_float* z, lapack_int ldz, - float* res, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* w, lapack_int ldw, - lapack_complex_float* s, lapack_int lds, - lapack_complex_float* zwork, lapack_int lzwork, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_zgedmd_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobf, lapack_int whtsvd, - lapack_int m, lapack_int n, - lapack_complex_double* x, lapack_int ldx, - lapack_complex_double* y, lapack_int ldy, - lapack_int nrnk, double* tol, lapack_int k, - lapack_complex_double* eigs, - lapack_complex_double* z, lapack_int ldz, - double* res, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* w, lapack_int ldw, - lapack_complex_double* s, lapack_int lds, - lapack_complex_double* zwork, lapack_int lzwork, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_sgedmdq_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobq, char jobt, char jobf, - lapack_int whtsvd, lapack_int m, lapack_int n, - float* f, lapack_int ldf, float* x, - lapack_int ldx, float* y, lapack_int ldy, - lapack_int nrnk, float* tol, lapack_int k, - float* reig, float *imeig, float* z, - lapack_int ldz, float* res, float* b, - lapack_int ldb, float* v, lapack_int ldv, - float* s, lapack_int lds, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_dgedmdq_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobq, char jobt, char jobf, - lapack_int whtsvd, lapack_int m, lapack_int n, - double* f, lapack_int ldf, double* x, - lapack_int ldx, double* y, lapack_int ldy, - lapack_int nrnk, double* tol, lapack_int k, - double* reig, double* imeig, double* z, - lapack_int ldz, double* res, double* b, - lapack_int ldb, double* v, lapack_int ldv, - double* s, lapack_int lds, double* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_cgedmdq_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobq, char jobt, char jobf, - lapack_int whtsvd, lapack_int m, lapack_int n, - lapack_complex_float* f, lapack_int ldf, - lapack_complex_float* x, lapack_int ldx, - lapack_complex_float* y, lapack_int ldy, - lapack_int nrnk, float* tol, lapack_int k, - lapack_complex_float* eigs, - lapack_complex_float* z, lapack_int ldz, - float* res, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* s, lapack_int lds, - lapack_complex_float* zwork, lapack_int lzwork, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork); - -lapack_int LAPACKE_zgedmdq_work( int matrix_layout, char jobs, char jobz, - char jobr, char jobq, char jobt, char jobf, - lapack_int whtsvd, lapack_int m, lapack_int n, - lapack_complex_double* f, lapack_int ldf, - lapack_complex_double* x, lapack_int ldx, - lapack_complex_double* y, lapack_int ldy, - lapack_int nrnk, double* tol, lapack_int k, - lapack_complex_double* eigs, - lapack_complex_double* z, lapack_int ldz, - double* res, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* s, lapack_int lds, - lapack_complex_double* zwork, lapack_int lzwork, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork); - -lapack_int LAPACKE_sgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - float* a, lapack_int lda, lapack_int* ipiv, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - double* a, lapack_int lda, lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); -lapack_int LAPACKE_dsgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - double* a, lapack_int lda, lapack_int* ipiv, - double* b, lapack_int ldb, double* x, - lapack_int ldx, double* work, float* swork, - lapack_int* iter ); -lapack_int LAPACKE_zcgesv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, lapack_complex_double* work, - lapack_complex_float* swork, double* rwork, - lapack_int* iter ); - -lapack_int LAPACKE_sgesvd_work( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, float* a, - lapack_int lda, float* s, float* u, - lapack_int ldu, float* vt, lapack_int ldvt, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgesvd_work( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* s, double* u, - lapack_int ldu, double* vt, lapack_int ldvt, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgesvd_work( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float* s, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* vt, - lapack_int ldvt, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zgesvd_work( int matrix_layout, char jobu, char jobvt, - lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* s, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* vt, - lapack_int ldvt, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -lapack_int LAPACKE_sgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, float* u, lapack_int ldu, - float* vt, lapack_int ldvt, - float* work, lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_dgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, double* u, lapack_int ldu, - double* vt, lapack_int ldvt, - double* work, lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_cgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, lapack_int* ns, - float* s, lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* vt, lapack_int ldvt, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int* iwork ); -lapack_int LAPACKE_zgesvdx_work( int matrix_layout, char jobu, char jobvt, char range, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, lapack_int* ns, - double* s, lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* vt, lapack_int ldvt, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int* iwork ); - -lapack_int LAPACKE_sgesvdq_work( int matrix_layout, char joba, char jobp, - char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, float* a, - lapack_int lda, float* s, float* u, - lapack_int ldu, float* v, lapack_int ldv, - lapack_int* numrank, - lapack_int* iwork, lapack_int liwork, - float* work, lapack_int lwork, - float* rwork, lapack_int lrwork); -lapack_int LAPACKE_dgesvdq_work( int matrix_layout, char joba, char jobp, - char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, double* a, - lapack_int lda, double* s, double* u, - lapack_int ldu, double* v, lapack_int ldv, - lapack_int* numrank, - lapack_int* iwork, lapack_int liwork, - double* work, lapack_int lwork, - double* rwork, lapack_int lrwork); -lapack_int LAPACKE_cgesvdq_work( int matrix_layout, char joba, char jobp, - char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float* s, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, - lapack_int ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int liwork, - lapack_complex_float* cwork, lapack_int lcwork, - float* rwork, lapack_int lrwork); -lapack_int LAPACKE_zgesvdq_work( int matrix_layout, char joba, char jobp, - char jobr, char jobu, char jobv, - lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* s, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, - lapack_int ldv, lapack_int* numrank, - lapack_int* iwork, lapack_int liwork, - lapack_complex_double* cwork, lapack_int lcwork, - double* rwork, lapack_int lrwork); - -lapack_int LAPACKE_sgesvj_work( int matrix_layout, char joba, char jobu, - char jobv, lapack_int m, lapack_int n, float* a, - lapack_int lda, float* sva, lapack_int mv, - float* v, lapack_int ldv, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dgesvj_work( int matrix_layout, char joba, char jobu, - char jobv, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* sva, - lapack_int mv, double* v, lapack_int ldv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgesvj_work( int matrix_layout, char joba, char jobu, - char jobv, lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda, float* sva, lapack_int mv, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* cwork, lapack_int lwork, - float* rwork,lapack_int lrwork ); -lapack_int LAPACKE_zgesvj_work( int matrix_layout, char joba, char jobu, - char jobv, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, double* sva, - lapack_int mv, lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* cwork, lapack_int lwork, - double* rwork, lapack_int lrwork ); - -lapack_int LAPACKE_sgesvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, - float* c, float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dgesvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, - double* c, double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, double* work, lapack_int* iwork ); -lapack_int LAPACKE_cgesvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, - float* c, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zgesvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, - double* c, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sgesvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, - float* c, float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgesvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, - double* c, double* b, lapack_int ldb, - double* x, lapack_int ldx, double* rcond, - double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgesvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* r, - float* c, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgesvxx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* r, - double* c, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* rpvgrw, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgetf2_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetf2_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetf2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetf2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetrf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetrf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetrf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_cgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zgetrf2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_sgetri_work( int matrix_layout, lapack_int n, float* a, - lapack_int lda, const lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgetri_work( int matrix_layout, lapack_int n, double* a, - lapack_int lda, const lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgetri_work( int matrix_layout, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgetri_work( int matrix_layout, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgetrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgetrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cgetrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zgetrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sggbak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const float* lscale, const float* rscale, - lapack_int m, float* v, lapack_int ldv ); -lapack_int LAPACKE_dggbak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const double* lscale, const double* rscale, - lapack_int m, double* v, lapack_int ldv ); -lapack_int LAPACKE_cggbak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const float* lscale, const float* rscale, - lapack_int m, lapack_complex_float* v, - lapack_int ldv ); -lapack_int LAPACKE_zggbak_work( int matrix_layout, char job, char side, - lapack_int n, lapack_int ilo, lapack_int ihi, - const double* lscale, const double* rscale, - lapack_int m, lapack_complex_double* v, - lapack_int ldv ); - -lapack_int LAPACKE_sggbal_work( int matrix_layout, char job, lapack_int n, - float* a, lapack_int lda, float* b, - lapack_int ldb, lapack_int* ilo, - lapack_int* ihi, float* lscale, float* rscale, - float* work ); -lapack_int LAPACKE_dggbal_work( int matrix_layout, char job, lapack_int n, - double* a, lapack_int lda, double* b, - lapack_int ldb, lapack_int* ilo, - lapack_int* ihi, double* lscale, double* rscale, - double* work ); -lapack_int LAPACKE_cggbal_work( int matrix_layout, char job, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, float* lscale, - float* rscale, float* work ); -lapack_int LAPACKE_zggbal_work( int matrix_layout, char job, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* ilo, lapack_int* ihi, - double* lscale, double* rscale, double* work ); - -lapack_int LAPACKE_sgges_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_S_SELECT3 selctg, lapack_int n, - float* a, lapack_int lda, float* b, - lapack_int ldb, lapack_int* sdim, float* alphar, - float* alphai, float* beta, float* vsl, - lapack_int ldvsl, float* vsr, lapack_int ldvsr, - float* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_dgges_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_D_SELECT3 selctg, lapack_int n, - double* a, lapack_int lda, double* b, - lapack_int ldb, lapack_int* sdim, double* alphar, - double* alphai, double* beta, double* vsl, - lapack_int ldvsl, double* vsr, lapack_int ldvsr, - double* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_cgges_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_C_SELECT2 selctg, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vsl, lapack_int ldvsl, - lapack_complex_float* vsr, lapack_int ldvsr, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_logical* bwork ); -lapack_int LAPACKE_zgges_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_Z_SELECT2 selctg, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_logical* bwork ); - -lapack_int LAPACKE_sgges3_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_S_SELECT3 selctg, - lapack_int n, - float* a, lapack_int lda, - float* b, lapack_int ldb, lapack_int* sdim, - float* alphar, float* alphai, float* beta, - float* vsl, lapack_int ldvsl, - float* vsr, lapack_int ldvsr, - float* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_dgges3_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_D_SELECT3 selctg, - lapack_int n, - double* a, lapack_int lda, - double* b, lapack_int ldb, lapack_int* sdim, - double* alphar, double* alphai, double* beta, - double* vsl, lapack_int ldvsl, - double* vsr, lapack_int ldvsr, - double* work, lapack_int lwork, - lapack_logical* bwork ); -lapack_int LAPACKE_cgges3_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_C_SELECT2 selctg, - lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vsl, lapack_int ldvsl, - lapack_complex_float* vsr, lapack_int ldvsr, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_logical* bwork ); -lapack_int LAPACKE_zgges3_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_Z_SELECT2 selctg, - lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_int* sdim, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_logical* bwork ); - -lapack_int LAPACKE_sggesx_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_S_SELECT3 selctg, char sense, - lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, lapack_int* sdim, - float* alphar, float* alphai, float* beta, - float* vsl, lapack_int ldvsl, float* vsr, - lapack_int ldvsr, float* rconde, float* rcondv, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork, - lapack_logical* bwork ); -lapack_int LAPACKE_dggesx_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_D_SELECT3 selctg, char sense, - lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, lapack_int* sdim, - double* alphar, double* alphai, double* beta, - double* vsl, lapack_int ldvsl, double* vsr, - lapack_int ldvsr, double* rconde, - double* rcondv, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork, - lapack_logical* bwork ); -lapack_int LAPACKE_cggesx_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_C_SELECT2 selctg, char sense, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_int* sdim, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vsl, lapack_int ldvsl, - lapack_complex_float* vsr, lapack_int ldvsr, - float* rconde, float* rcondv, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int* iwork, - lapack_int liwork, lapack_logical* bwork ); -lapack_int LAPACKE_zggesx_work( int matrix_layout, char jobvsl, char jobvsr, - char sort, LAPACK_Z_SELECT2 selctg, char sense, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_int* sdim, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vsl, lapack_int ldvsl, - lapack_complex_double* vsr, lapack_int ldvsr, - double* rconde, double* rcondv, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int* iwork, - lapack_int liwork, lapack_logical* bwork ); - -lapack_int LAPACKE_sggev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, float* a, lapack_int lda, float* b, - lapack_int ldb, float* alphar, float* alphai, - float* beta, float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dggev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double* alphar, - double* alphai, double* beta, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cggev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zggev_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_sggev3_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - float* a, lapack_int lda, - float* b, lapack_int ldb, - float* alphar, float* alphai, float* beta, - float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dggev3_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - double* a, lapack_int lda, - double* b, lapack_int ldb, - double* alphar, double* alphai, double* beta, - double* vl, lapack_int ldvl, - double* vr, lapack_int ldvr, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cggev3_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zggev3_work( int matrix_layout, char jobvl, char jobvr, - lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_sggevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* alphar, float* alphai, float* beta, - float* vl, lapack_int ldvl, float* vr, - lapack_int ldvr, lapack_int* ilo, - lapack_int* ihi, float* lscale, float* rscale, - float* abnrm, float* bbnrm, float* rconde, - float* rcondv, float* work, lapack_int lwork, - lapack_int* iwork, lapack_logical* bwork ); -lapack_int LAPACKE_dggevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* alphar, double* alphai, double* beta, - double* vl, lapack_int ldvl, double* vr, - lapack_int ldvr, lapack_int* ilo, - lapack_int* ihi, double* lscale, double* rscale, - double* abnrm, double* bbnrm, double* rconde, - double* rcondv, double* work, lapack_int lwork, - lapack_int* iwork, lapack_logical* bwork ); -lapack_int LAPACKE_cggevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, float* lscale, - float* rscale, float* abnrm, float* bbnrm, - float* rconde, float* rcondv, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int* iwork, - lapack_logical* bwork ); -lapack_int LAPACKE_zggevx_work( int matrix_layout, char balanc, char jobvl, - char jobvr, char sense, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int* ilo, lapack_int* ihi, - double* lscale, double* rscale, double* abnrm, - double* bbnrm, double* rconde, double* rcondv, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int* iwork, - lapack_logical* bwork ); - -lapack_int LAPACKE_sggglm_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, float* a, lapack_int lda, - float* b, lapack_int ldb, float* d, float* x, - float* y, float* work, lapack_int lwork ); -lapack_int LAPACKE_dggglm_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, double* a, lapack_int lda, - double* b, lapack_int ldb, double* d, double* x, - double* y, double* work, lapack_int lwork ); -lapack_int LAPACKE_cggglm_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* d, - lapack_complex_float* x, - lapack_complex_float* y, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zggglm_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* d, - lapack_complex_double* x, - lapack_complex_double* y, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgghrd_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* a, lapack_int lda, float* b, - lapack_int ldb, float* q, lapack_int ldq, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dgghrd_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* a, lapack_int lda, double* b, - lapack_int ldb, double* q, lapack_int ldq, - double* z, lapack_int ldz ); -lapack_int LAPACKE_cgghrd_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz ); -lapack_int LAPACKE_zgghrd_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz ); - -lapack_int LAPACKE_sgghd3_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* a, lapack_int lda, - float* b, lapack_int ldb, - float* q, lapack_int ldq, - float* z, lapack_int ldz, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgghd3_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* a, lapack_int lda, - double* b, lapack_int ldb, - double* q, lapack_int ldq, - double* z, lapack_int ldz, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgghd3_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgghd3_work( int matrix_layout, char compq, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sgglse_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, float* a, lapack_int lda, - float* b, lapack_int ldb, float* c, float* d, - float* x, float* work, lapack_int lwork ); -lapack_int LAPACKE_dgglse_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, double* a, lapack_int lda, - double* b, lapack_int ldb, double* c, double* d, - double* x, double* work, lapack_int lwork ); -lapack_int LAPACKE_cgglse_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_complex_float* d, - lapack_complex_float* x, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgglse_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_complex_double* d, - lapack_complex_double* x, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sggqrf_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, float* a, lapack_int lda, - float* taua, float* b, lapack_int ldb, - float* taub, float* work, lapack_int lwork ); -lapack_int LAPACKE_dggqrf_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, double* a, lapack_int lda, - double* taua, double* b, lapack_int ldb, - double* taub, double* work, lapack_int lwork ); -lapack_int LAPACKE_cggqrf_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* taua, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* taub, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zggqrf_work( int matrix_layout, lapack_int n, lapack_int m, - lapack_int p, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* taua, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* taub, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sggrqf_work( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, float* a, lapack_int lda, - float* taua, float* b, lapack_int ldb, - float* taub, float* work, lapack_int lwork ); -lapack_int LAPACKE_dggrqf_work( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, double* a, lapack_int lda, - double* taua, double* b, lapack_int ldb, - double* taub, double* work, lapack_int lwork ); -lapack_int LAPACKE_cggrqf_work( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* taua, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* taub, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zggrqf_work( int matrix_layout, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* taua, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* taub, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sggsvd_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - float* a, lapack_int lda, float* b, - lapack_int ldb, float* alpha, float* beta, - float* u, lapack_int ldu, float* v, - lapack_int ldv, float* q, lapack_int ldq, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dggsvd_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - double* a, lapack_int lda, double* b, - lapack_int ldb, double* alpha, double* beta, - double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cggsvd_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float* alpha, float* beta, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* work, float* rwork, - lapack_int* iwork ); -lapack_int LAPACKE_zggsvd_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* work, double* rwork, - lapack_int* iwork ); - -lapack_int LAPACKE_sggsvd3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - float* a, lapack_int lda, float* b, - lapack_int ldb, float* alpha, float* beta, - float* u, lapack_int ldu, float* v, - lapack_int ldv, float* q, lapack_int ldq, - float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dggsvd3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - double* a, lapack_int lda, double* b, - lapack_int ldb, double* alpha, double* beta, - double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq, - double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_cggsvd3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float* alpha, float* beta, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int* iwork ); -lapack_int LAPACKE_zggsvd3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int n, - lapack_int p, lapack_int* k, lapack_int* l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* alpha, double* beta, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int* iwork ); - -lapack_int LAPACKE_sggsvp_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, - float* u, lapack_int ldu, float* v, - lapack_int ldv, float* q, lapack_int ldq, - lapack_int* iwork, float* tau, float* work ); -lapack_int LAPACKE_dggsvp_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double tola, - double tolb, lapack_int* k, lapack_int* l, - double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq, - lapack_int* iwork, double* tau, double* work ); -lapack_int LAPACKE_cggsvp_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float tola, float tolb, - lapack_int* k, lapack_int* l, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq, - lapack_int* iwork, float* rwork, - lapack_complex_float* tau, - lapack_complex_float* work ); -lapack_int LAPACKE_zggsvp_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double tola, double tolb, - lapack_int* k, lapack_int* l, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_int* iwork, double* rwork, - lapack_complex_double* tau, - lapack_complex_double* work ); - -lapack_int LAPACKE_sggsvp3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, float tola, - float tolb, lapack_int* k, lapack_int* l, - float* u, lapack_int ldu, float* v, - lapack_int ldv, float* q, lapack_int ldq, - lapack_int* iwork, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dggsvp3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double tola, - double tolb, lapack_int* k, lapack_int* l, - double* u, lapack_int ldu, double* v, - lapack_int ldv, double* q, lapack_int ldq, - lapack_int* iwork, double* tau, double* work, - lapack_int lwork ); -lapack_int LAPACKE_cggsvp3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float tola, float tolb, - lapack_int* k, lapack_int* l, - lapack_complex_float* u, lapack_int ldu, - lapack_complex_float* v, lapack_int ldv, - lapack_complex_float* q, lapack_int ldq, - lapack_int* iwork, float* rwork, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zggsvp3_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double tola, double tolb, - lapack_int* k, lapack_int* l, - lapack_complex_double* u, lapack_int ldu, - lapack_complex_double* v, lapack_int ldv, - lapack_complex_double* q, lapack_int ldq, - lapack_int* iwork, double* rwork, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgtcon_work( char norm, lapack_int n, const float* dl, - const float* d, const float* du, - const float* du2, const lapack_int* ipiv, - float anorm, float* rcond, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgtcon_work( char norm, lapack_int n, const double* dl, - const double* d, const double* du, - const double* du2, const lapack_int* ipiv, - double anorm, double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgtcon_work( char norm, lapack_int n, - const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* du2, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zgtcon_work( char norm, lapack_int n, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* du2, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_sgtrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* dl, - const float* d, const float* du, - const float* dlf, const float* df, - const float* duf, const float* du2, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dgtrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* dl, - const double* d, const double* du, - const double* dlf, const double* df, - const double* duf, const double* du2, - const lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cgtrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* dlf, - const lapack_complex_float* df, - const lapack_complex_float* duf, - const lapack_complex_float* du2, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgtrfs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* dlf, - const lapack_complex_double* df, - const lapack_complex_double* duf, - const lapack_complex_double* du2, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - float* dl, float* d, float* du, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - double* dl, double* d, double* du, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_float* dl, - lapack_complex_float* d, - lapack_complex_float* du, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zgtsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - lapack_complex_double* dl, - lapack_complex_double* d, - lapack_complex_double* du, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sgtsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, const float* dl, - const float* d, const float* du, float* dlf, - float* df, float* duf, float* du2, - lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dgtsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, const double* dl, - const double* d, const double* du, double* dlf, - double* df, double* duf, double* du2, - lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cgtsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - lapack_complex_float* dlf, - lapack_complex_float* df, - lapack_complex_float* duf, - lapack_complex_float* du2, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zgtsvx_work( int matrix_layout, char fact, char trans, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - lapack_complex_double* dlf, - lapack_complex_double* df, - lapack_complex_double* duf, - lapack_complex_double* du2, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sgttrf_work( lapack_int n, float* dl, float* d, float* du, - float* du2, lapack_int* ipiv ); -lapack_int LAPACKE_dgttrf_work( lapack_int n, double* dl, double* d, double* du, - double* du2, lapack_int* ipiv ); -lapack_int LAPACKE_cgttrf_work( lapack_int n, lapack_complex_float* dl, - lapack_complex_float* d, - lapack_complex_float* du, - lapack_complex_float* du2, lapack_int* ipiv ); -lapack_int LAPACKE_zgttrf_work( lapack_int n, lapack_complex_double* dl, - lapack_complex_double* d, - lapack_complex_double* du, - lapack_complex_double* du2, lapack_int* ipiv ); - -lapack_int LAPACKE_sgttrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const float* dl, - const float* d, const float* du, - const float* du2, const lapack_int* ipiv, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dgttrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const double* dl, - const double* d, const double* du, - const double* du2, const lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cgttrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, const lapack_complex_float* dl, - const lapack_complex_float* d, - const lapack_complex_float* du, - const lapack_complex_float* du2, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zgttrs_work( int matrix_layout, char trans, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* dl, - const lapack_complex_double* d, - const lapack_complex_double* du, - const lapack_complex_double* du2, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chbev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zhbev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chbevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zhbevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_chbevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* q, lapack_int ldq, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - float* rwork, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_zhbevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* q, lapack_int ldq, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - double* rwork, lapack_int* iwork, - lapack_int* ifail ); - -lapack_int LAPACKE_chbgst_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* bb, lapack_int ldbb, - lapack_complex_float* x, lapack_int ldx, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zhbgst_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - const lapack_complex_double* bb, - lapack_int ldbb, lapack_complex_double* x, - lapack_int ldx, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chbgv_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* bb, lapack_int ldbb, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zhbgv_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* bb, lapack_int ldbb, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chbgvd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* bb, lapack_int ldbb, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zhbgvd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* bb, lapack_int ldbb, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_chbgvx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int ka, - lapack_int kb, lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* bb, - lapack_int ldbb, lapack_complex_float* q, - lapack_int ldq, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zhbgvx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int ka, - lapack_int kb, lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* bb, - lapack_int ldbb, lapack_complex_double* q, - lapack_int ldq, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_chbtrd_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - float* d, float* e, lapack_complex_float* q, - lapack_int ldq, lapack_complex_float* work ); -lapack_int LAPACKE_zhbtrd_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - double* d, double* e, lapack_complex_double* q, - lapack_int ldq, lapack_complex_double* work ); - -lapack_int LAPACKE_checon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zhecon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_cheequb_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax, - lapack_complex_float* work ); -lapack_int LAPACKE_zheequb_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax, - lapack_complex_double* work ); - -lapack_int LAPACKE_cheev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zheev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* w, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_cheevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_zheevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* w, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_cheevr_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* isuppz, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_zheevr_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_int* isuppz, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_cheevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zheevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_chegst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhegst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_chegv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zhegv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* w, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -lapack_int LAPACKE_chegvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float* w, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zhegvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* w, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_chegvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zhegvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_cherfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zherfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_cherfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const float* s, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zherfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* s, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chesv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhesv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_chesvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zhesvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_chesvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zhesvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chetrd_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float* d, float* e, lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhetrd_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* d, double* e, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_chetrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zhetrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_chetri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work ); -lapack_int LAPACKE_zhetri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work ); - -lapack_int LAPACKE_chetrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chfrk_work( int matrix_layout, char transr, char uplo, - char trans, lapack_int n, lapack_int k, - float alpha, const lapack_complex_float* a, - lapack_int lda, float beta, - lapack_complex_float* c ); -lapack_int LAPACKE_zhfrk_work( int matrix_layout, char transr, char uplo, - char trans, lapack_int n, lapack_int k, - double alpha, const lapack_complex_double* a, - lapack_int lda, double beta, - lapack_complex_double* c ); - -lapack_int LAPACKE_shgeqz_work( int matrix_layout, char job, char compq, - char compz, lapack_int n, lapack_int ilo, - lapack_int ihi, float* h, lapack_int ldh, - float* t, lapack_int ldt, float* alphar, - float* alphai, float* beta, float* q, - lapack_int ldq, float* z, lapack_int ldz, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dhgeqz_work( int matrix_layout, char job, char compq, - char compz, lapack_int n, lapack_int ilo, - lapack_int ihi, double* h, lapack_int ldh, - double* t, lapack_int ldt, double* alphar, - double* alphai, double* beta, double* q, - lapack_int ldq, double* z, lapack_int ldz, - double* work, lapack_int lwork ); -lapack_int LAPACKE_chgeqz_work( int matrix_layout, char job, char compq, - char compz, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_float* h, - lapack_int ldh, lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zhgeqz_work( int matrix_layout, char job, char compq, - char compz, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_double* h, - lapack_int ldh, lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_chpcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zhpcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_chpev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* ap, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zhpev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* ap, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_chpevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* ap, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zhpevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* ap, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_chpevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_float* ap, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zhpevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_double* ap, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_chpgst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_float* ap, - const lapack_complex_float* bp ); -lapack_int LAPACKE_zhpgst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, lapack_complex_double* ap, - const lapack_complex_double* bp ); - -lapack_int LAPACKE_chpgv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_float* ap, - lapack_complex_float* bp, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zhpgv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_double* ap, - lapack_complex_double* bp, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_chpgvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_float* ap, - lapack_complex_float* bp, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_zhpgvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_double* ap, - lapack_complex_double* bp, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_chpgvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_float* ap, - lapack_complex_float* bp, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zhpgvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, - lapack_complex_double* ap, - lapack_complex_double* bp, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_chprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zhprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_chpsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhpsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_chpsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - lapack_complex_float* afp, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zhpsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - lapack_complex_double* afp, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_chptrd_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, float* d, float* e, - lapack_complex_float* tau ); -lapack_int LAPACKE_zhptrd_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, double* d, double* e, - lapack_complex_double* tau ); - -lapack_int LAPACKE_chptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, lapack_int* ipiv ); -lapack_int LAPACKE_zhptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, lapack_int* ipiv ); - -lapack_int LAPACKE_chptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, - const lapack_int* ipiv, - lapack_complex_float* work ); -lapack_int LAPACKE_zhptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, - const lapack_int* ipiv, - lapack_complex_double* work ); - -lapack_int LAPACKE_chptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zhptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_shsein_work( int matrix_layout, char job, char eigsrc, - char initv, lapack_logical* select, - lapack_int n, const float* h, lapack_int ldh, - float* wr, const float* wi, float* vl, - lapack_int ldvl, float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, float* work, - lapack_int* ifaill, lapack_int* ifailr ); -lapack_int LAPACKE_dhsein_work( int matrix_layout, char job, char eigsrc, - char initv, lapack_logical* select, - lapack_int n, const double* h, lapack_int ldh, - double* wr, const double* wi, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, double* work, - lapack_int* ifaill, lapack_int* ifailr ); -lapack_int LAPACKE_chsein_work( int matrix_layout, char job, char eigsrc, - char initv, const lapack_logical* select, - lapack_int n, const lapack_complex_float* h, - lapack_int ldh, lapack_complex_float* w, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_float* work, float* rwork, - lapack_int* ifaill, lapack_int* ifailr ); -lapack_int LAPACKE_zhsein_work( int matrix_layout, char job, char eigsrc, - char initv, const lapack_logical* select, - lapack_int n, const lapack_complex_double* h, - lapack_int ldh, lapack_complex_double* w, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_double* work, double* rwork, - lapack_int* ifaill, lapack_int* ifailr ); - -lapack_int LAPACKE_shseqr_work( int matrix_layout, char job, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - float* h, lapack_int ldh, float* wr, float* wi, - float* z, lapack_int ldz, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dhseqr_work( int matrix_layout, char job, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - double* h, lapack_int ldh, double* wr, - double* wi, double* z, lapack_int ldz, - double* work, lapack_int lwork ); -lapack_int LAPACKE_chseqr_work( int matrix_layout, char job, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_float* h, lapack_int ldh, - lapack_complex_float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhseqr_work( int matrix_layout, char job, char compz, - lapack_int n, lapack_int ilo, lapack_int ihi, - lapack_complex_double* h, lapack_int ldh, - lapack_complex_double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_clacgv_work( lapack_int n, lapack_complex_float* x, - lapack_int incx ); -lapack_int LAPACKE_zlacgv_work( lapack_int n, lapack_complex_double* x, - lapack_int incx ); - -lapack_int LAPACKE_slacn2_work( lapack_int n, float* v, float* x, - lapack_int* isgn, float* est, lapack_int* kase, - lapack_int* isave ); -lapack_int LAPACKE_dlacn2_work( lapack_int n, double* v, double* x, - lapack_int* isgn, double* est, lapack_int* kase, - lapack_int* isave ); -lapack_int LAPACKE_clacn2_work( lapack_int n, lapack_complex_float* v, - lapack_complex_float* x, - float* est, lapack_int* kase, - lapack_int* isave ); -lapack_int LAPACKE_zlacn2_work( lapack_int n, lapack_complex_double* v, - lapack_complex_double* x, - double* est, lapack_int* kase, - lapack_int* isave ); - -lapack_int LAPACKE_slacpy_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const float* a, lapack_int lda, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dlacpy_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const double* a, lapack_int lda, - double* b, lapack_int ldb ); -lapack_int LAPACKE_clacpy_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zlacpy_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_clacp2_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zlacp2_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, const double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_zlag2c_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_float* sa, lapack_int ldsa ); - -lapack_int LAPACKE_slag2d_work( int matrix_layout, lapack_int m, lapack_int n, - const float* sa, lapack_int ldsa, double* a, - lapack_int lda ); - -lapack_int LAPACKE_dlag2s_work( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, float* sa, - lapack_int ldsa ); - -lapack_int LAPACKE_clag2z_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* sa, lapack_int ldsa, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_slagge_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* d, - float* a, lapack_int lda, lapack_int* iseed, - float* work ); -lapack_int LAPACKE_dlagge_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* d, - double* a, lapack_int lda, lapack_int* iseed, - double* work ); -lapack_int LAPACKE_clagge_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const float* d, - lapack_complex_float* a, lapack_int lda, - lapack_int* iseed, lapack_complex_float* work ); -lapack_int LAPACKE_zlagge_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, const double* d, - lapack_complex_double* a, lapack_int lda, - lapack_int* iseed, - lapack_complex_double* work ); - -lapack_int LAPACKE_claghe_work( int matrix_layout, lapack_int n, lapack_int k, - const float* d, lapack_complex_float* a, - lapack_int lda, lapack_int* iseed, - lapack_complex_float* work ); -lapack_int LAPACKE_zlaghe_work( int matrix_layout, lapack_int n, lapack_int k, - const double* d, lapack_complex_double* a, - lapack_int lda, lapack_int* iseed, - lapack_complex_double* work ); - -lapack_int LAPACKE_slagsy_work( int matrix_layout, lapack_int n, lapack_int k, - const float* d, float* a, lapack_int lda, - lapack_int* iseed, float* work ); -lapack_int LAPACKE_dlagsy_work( int matrix_layout, lapack_int n, lapack_int k, - const double* d, double* a, lapack_int lda, - lapack_int* iseed, double* work ); -lapack_int LAPACKE_clagsy_work( int matrix_layout, lapack_int n, lapack_int k, - const float* d, lapack_complex_float* a, - lapack_int lda, lapack_int* iseed, - lapack_complex_float* work ); -lapack_int LAPACKE_zlagsy_work( int matrix_layout, lapack_int n, lapack_int k, - const double* d, lapack_complex_double* a, - lapack_int lda, lapack_int* iseed, - lapack_complex_double* work ); - -lapack_int LAPACKE_slapmr_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, float* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_dlapmr_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, double* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_clapmr_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, - lapack_complex_float* x, lapack_int ldx, - lapack_int* k ); -lapack_int LAPACKE_zlapmr_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, - lapack_complex_double* x, lapack_int ldx, - lapack_int* k ); - -lapack_int LAPACKE_slapmt_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, float* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_dlapmt_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, double* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_clapmt_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, - lapack_complex_float* x, lapack_int ldx, - lapack_int* k ); -lapack_int LAPACKE_zlapmt_work( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, - lapack_complex_double* x, lapack_int ldx, - lapack_int* k ); - -lapack_int LAPACKE_slartgp_work( float f, float g, float* cs, float* sn, - float* r ); -lapack_int LAPACKE_dlartgp_work( double f, double g, double* cs, double* sn, - double* r ); - -lapack_int LAPACKE_slartgs_work( float x, float y, float sigma, float* cs, - float* sn ); -lapack_int LAPACKE_dlartgs_work( double x, double y, double sigma, double* cs, - double* sn ); - -float LAPACKE_slapy2_work( float x, float y ); -double LAPACKE_dlapy2_work( double x, double y ); - -float LAPACKE_slapy3_work( float x, float y, float z ); -double LAPACKE_dlapy3_work( double x, double y, double z ); - -float LAPACKE_slamch_work( char cmach ); -double LAPACKE_dlamch_work( char cmach ); - -float LAPACKE_slangb_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const float* ab, - lapack_int ldab, float* work ); -double LAPACKE_dlangb_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, const double* ab, - lapack_int ldab, double* work ); -float LAPACKE_clangb_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float* ab, lapack_int ldab, - float* work ); -double LAPACKE_zlangb_work( int matrix_layout, char norm, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double* ab, lapack_int ldab, - double* work ); - -float LAPACKE_slange_work( int matrix_layout, char norm, lapack_int m, - lapack_int n, const float* a, lapack_int lda, - float* work ); -double LAPACKE_dlange_work( int matrix_layout, char norm, lapack_int m, - lapack_int n, const double* a, lapack_int lda, - double* work ); -float LAPACKE_clange_work( int matrix_layout, char norm, lapack_int m, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, float* work ); -double LAPACKE_zlange_work( int matrix_layout, char norm, lapack_int m, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, double* work ); - -float LAPACKE_clanhe_work( int matrix_layout, char norm, char uplo, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, float* work ); -double LAPACKE_zlanhe_work( int matrix_layout, char norm, char uplo, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, double* work ); - -lapack_int LAPACKE_clacrm_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* a, - lapack_int lda, const float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_zlacrm_work( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* a, - lapack_int lda, const double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_int ldc, double* work ); - -lapack_int LAPACKE_clarcm_work( int matrix_layout, lapack_int m, lapack_int n, - const float* a, lapack_int lda, - const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_zlarcm_work( int matrix_layout, lapack_int m, lapack_int n, - const double* a, lapack_int lda, - const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* c, - lapack_int ldc, double* work ); - -float LAPACKE_slansy_work( int matrix_layout, char norm, char uplo, - lapack_int n, const float* a, lapack_int lda, - float* work ); -double LAPACKE_dlansy_work( int matrix_layout, char norm, char uplo, - lapack_int n, const double* a, lapack_int lda, - double* work ); -float LAPACKE_clansy_work( int matrix_layout, char norm, char uplo, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, float* work ); -double LAPACKE_zlansy_work( int matrix_layout, char norm, char uplo, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, double* work ); - -float LAPACKE_slantr_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int m, lapack_int n, const float* a, - lapack_int lda, float* work ); -double LAPACKE_dlantr_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int m, lapack_int n, - const double* a, lapack_int lda, double* work ); -float LAPACKE_clantr_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* work ); -double LAPACKE_zlantr_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* work ); - -lapack_int LAPACKE_slarfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, const float* v, - lapack_int ldv, const float* t, lapack_int ldt, - float* c, lapack_int ldc, float* work, - lapack_int ldwork ); -lapack_int LAPACKE_dlarfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, const double* v, - lapack_int ldv, const double* t, lapack_int ldt, - double* c, lapack_int ldc, double* work, - lapack_int ldwork ); -lapack_int LAPACKE_clarfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int ldwork ); -lapack_int LAPACKE_zlarfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, - lapack_int ldwork ); - -lapack_int LAPACKE_slarfg_work( lapack_int n, float* alpha, float* x, - lapack_int incx, float* tau ); -lapack_int LAPACKE_dlarfg_work( lapack_int n, double* alpha, double* x, - lapack_int incx, double* tau ); -lapack_int LAPACKE_clarfg_work( lapack_int n, lapack_complex_float* alpha, - lapack_complex_float* x, lapack_int incx, - lapack_complex_float* tau ); -lapack_int LAPACKE_zlarfg_work( lapack_int n, lapack_complex_double* alpha, - lapack_complex_double* x, lapack_int incx, - lapack_complex_double* tau ); - -lapack_int LAPACKE_slarft_work( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, const float* v, - lapack_int ldv, const float* tau, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dlarft_work( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, const double* v, - lapack_int ldv, const double* tau, double* t, - lapack_int ldt ); -lapack_int LAPACKE_clarft_work( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* tau, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zlarft_work( int matrix_layout, char direct, char storev, - lapack_int n, lapack_int k, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* tau, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_slarfx_work( int matrix_layout, char side, lapack_int m, - lapack_int n, const float* v, float tau, - float* c, lapack_int ldc, float* work ); -lapack_int LAPACKE_dlarfx_work( int matrix_layout, char side, lapack_int m, - lapack_int n, const double* v, double tau, - double* c, lapack_int ldc, double* work ); -lapack_int LAPACKE_clarfx_work( int matrix_layout, char side, lapack_int m, - lapack_int n, const lapack_complex_float* v, - lapack_complex_float tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work ); -lapack_int LAPACKE_zlarfx_work( int matrix_layout, char side, lapack_int m, - lapack_int n, const lapack_complex_double* v, - lapack_complex_double tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work ); - -lapack_int LAPACKE_slarnv_work( lapack_int idist, lapack_int* iseed, - lapack_int n, float* x ); -lapack_int LAPACKE_dlarnv_work( lapack_int idist, lapack_int* iseed, - lapack_int n, double* x ); -lapack_int LAPACKE_clarnv_work( lapack_int idist, lapack_int* iseed, - lapack_int n, lapack_complex_float* x ); -lapack_int LAPACKE_zlarnv_work( lapack_int idist, lapack_int* iseed, - lapack_int n, lapack_complex_double* x ); - - -lapack_int LAPACKE_slascl_work( int matrix_layout, char type, lapack_int kl, - lapack_int ku, float cfrom, float cto, - lapack_int m, lapack_int n, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlascl_work( int matrix_layout, char type, lapack_int kl, - lapack_int ku, double cfrom, double cto, - lapack_int m, lapack_int n, double* a, - lapack_int lda ); -lapack_int LAPACKE_clascl_work( int matrix_layout, char type, lapack_int kl, - lapack_int ku, float cfrom, float cto, - lapack_int m, lapack_int n, lapack_complex_float* a, - lapack_int lda ); -lapack_int LAPACKE_zlascl_work( int matrix_layout, char type, lapack_int kl, - lapack_int ku, double cfrom, double cto, - lapack_int m, lapack_int n, lapack_complex_double* a, - lapack_int lda ); - -lapack_int LAPACKE_slaset_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, float alpha, float beta, float* a, - lapack_int lda ); -lapack_int LAPACKE_dlaset_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, double alpha, double beta, - double* a, lapack_int lda ); -lapack_int LAPACKE_claset_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, lapack_complex_float alpha, - lapack_complex_float beta, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zlaset_work( int matrix_layout, char uplo, lapack_int m, - lapack_int n, lapack_complex_double alpha, - lapack_complex_double beta, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_slasrt_work( char id, lapack_int n, float* d ); -lapack_int LAPACKE_dlasrt_work( char id, lapack_int n, double* d ); - -lapack_int LAPACKE_slassq_work( lapack_int n, float* x, lapack_int incx, float* scale, float* sumsq ); -lapack_int LAPACKE_dlassq_work( lapack_int n, double* x, lapack_int incx, double* scale, double* sumsq ); -lapack_int LAPACKE_classq_work( lapack_int n, lapack_complex_float* x, lapack_int incx, float* scale, float* sumsq ); -lapack_int LAPACKE_zlassq_work( lapack_int n, lapack_complex_double* x, lapack_int incx, double* scale, double* sumsq ); - -lapack_int LAPACKE_slaswp_work( int matrix_layout, lapack_int n, float* a, - lapack_int lda, lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); -lapack_int LAPACKE_dlaswp_work( int matrix_layout, lapack_int n, double* a, - lapack_int lda, lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); -lapack_int LAPACKE_claswp_work( int matrix_layout, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); -lapack_int LAPACKE_zlaswp_work( int matrix_layout, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int k1, lapack_int k2, - const lapack_int* ipiv, lapack_int incx ); - -lapack_int LAPACKE_slatms_work( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, - float* d, lapack_int mode, float cond, - float dmax, lapack_int kl, lapack_int ku, - char pack, float* a, lapack_int lda, - float* work ); -lapack_int LAPACKE_dlatms_work( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, - double* d, lapack_int mode, double cond, - double dmax, lapack_int kl, lapack_int ku, - char pack, double* a, lapack_int lda, - double* work ); -lapack_int LAPACKE_clatms_work( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, - float* d, lapack_int mode, float cond, - float dmax, lapack_int kl, lapack_int ku, - char pack, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* work ); -lapack_int LAPACKE_zlatms_work( int matrix_layout, lapack_int m, lapack_int n, - char dist, lapack_int* iseed, char sym, - double* d, lapack_int mode, double cond, - double dmax, lapack_int kl, lapack_int ku, - char pack, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* work ); - -lapack_int LAPACKE_slauum_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda ); -lapack_int LAPACKE_dlauum_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda ); -lapack_int LAPACKE_clauum_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zlauum_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_sopgtr_work( int matrix_layout, char uplo, lapack_int n, - const float* ap, const float* tau, float* q, - lapack_int ldq, float* work ); -lapack_int LAPACKE_dopgtr_work( int matrix_layout, char uplo, lapack_int n, - const double* ap, const double* tau, double* q, - lapack_int ldq, double* work ); - -lapack_int LAPACKE_sopmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const float* ap, const float* tau, float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_dopmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const double* ap, const double* tau, double* c, - lapack_int ldc, double* work ); - -lapack_int LAPACKE_sorgbr_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, float* a, - lapack_int lda, const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorgbr_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, double* a, - lapack_int lda, const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorghr_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, float* a, lapack_int lda, - const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorghr_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, double* a, lapack_int lda, - const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorglq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorglq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorgql_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorgql_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorgqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorgqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorgrq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, float* a, lapack_int lda, - const float* tau, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dorgrq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, double* a, lapack_int lda, - const double* tau, double* work, - lapack_int lwork ); - -lapack_int LAPACKE_sorgtr_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, const float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dorgtr_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, const double* tau, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sorgtsqr_row_work( int matrix_layout, - lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - float* a, lapack_int lda, - const float* t, lapack_int ldt, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dorgtsqr_row_work( int matrix_layout, - lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - double* a, lapack_int lda, - const double* t, lapack_int ldt, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, - char trans, lapack_int m, lapack_int n, - lapack_int k, const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, - char trans, lapack_int m, lapack_int n, - lapack_int k, const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormhr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormhr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormql_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormql_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormrq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormrq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormrz_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormrz_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_sormtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const float* a, lapack_int lda, - const float* tau, float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dormtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const double* a, lapack_int lda, - const double* tau, double* c, lapack_int ldc, - double* work, lapack_int lwork ); - -lapack_int LAPACKE_spbcon_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const float* ab, lapack_int ldab, - float anorm, float* rcond, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dpbcon_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const double* ab, - lapack_int ldab, double anorm, double* rcond, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cpbcon_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_float* ab, - lapack_int ldab, float anorm, float* rcond, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zpbcon_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_double* ab, - lapack_int ldab, double anorm, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_spbequ_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const float* ab, lapack_int ldab, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_dpbequ_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const double* ab, - lapack_int ldab, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cpbequ_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_float* ab, - lapack_int ldab, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_zpbequ_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, const lapack_complex_double* ab, - lapack_int ldab, double* s, double* scond, - double* amax ); - -lapack_int LAPACKE_spbrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const float* ab, - lapack_int ldab, const float* afb, - lapack_int ldafb, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dpbrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const double* ab, lapack_int ldab, - const double* afb, lapack_int ldafb, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cpbrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - const lapack_complex_float* afb, - lapack_int ldafb, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zpbrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, - const lapack_complex_double* afb, - lapack_int ldafb, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_spbstf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, float* bb, lapack_int ldbb ); -lapack_int LAPACKE_dpbstf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, double* bb, lapack_int ldbb ); -lapack_int LAPACKE_cpbstf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, lapack_complex_float* bb, - lapack_int ldbb ); -lapack_int LAPACKE_zpbstf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kb, lapack_complex_double* bb, - lapack_int ldbb ); - -lapack_int LAPACKE_spbsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, float* ab, - lapack_int ldab, float* b, lapack_int ldb ); -lapack_int LAPACKE_dpbsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, double* ab, - lapack_int ldab, double* b, lapack_int ldb ); -lapack_int LAPACKE_cpbsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpbsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spbsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int kd, lapack_int nrhs, - float* ab, lapack_int ldab, float* afb, - lapack_int ldafb, char* equed, float* s, - float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dpbsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int kd, lapack_int nrhs, - double* ab, lapack_int ldab, double* afb, - lapack_int ldafb, char* equed, double* s, - double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, double* work, lapack_int* iwork ); -lapack_int LAPACKE_cpbsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int kd, lapack_int nrhs, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* afb, lapack_int ldafb, - char* equed, float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zpbsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int kd, lapack_int nrhs, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* afb, lapack_int ldafb, - char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_spbtrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab ); -lapack_int LAPACKE_dpbtrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab ); -lapack_int LAPACKE_cpbtrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab ); -lapack_int LAPACKE_zpbtrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab ); - -lapack_int LAPACKE_spbtrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, const float* ab, - lapack_int ldab, float* b, lapack_int ldb ); -lapack_int LAPACKE_dpbtrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const double* ab, lapack_int ldab, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cpbtrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpbtrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_spftrf_work( int matrix_layout, char transr, char uplo, - lapack_int n, float* a ); -lapack_int LAPACKE_dpftrf_work( int matrix_layout, char transr, char uplo, - lapack_int n, double* a ); -lapack_int LAPACKE_cpftrf_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_float* a ); -lapack_int LAPACKE_zpftrf_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_double* a ); - -lapack_int LAPACKE_spftri_work( int matrix_layout, char transr, char uplo, - lapack_int n, float* a ); -lapack_int LAPACKE_dpftri_work( int matrix_layout, char transr, char uplo, - lapack_int n, double* a ); -lapack_int LAPACKE_cpftri_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_float* a ); -lapack_int LAPACKE_zpftri_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_complex_double* a ); - -lapack_int LAPACKE_spftrs_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, const float* a, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dpftrs_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, const double* a, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cpftrs_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpftrs_work( int matrix_layout, char transr, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spocon_work( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float anorm, - float* rcond, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dpocon_work( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double anorm, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cpocon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float anorm, float* rcond, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zpocon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double anorm, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_spoequ_work( int matrix_layout, lapack_int n, const float* a, - lapack_int lda, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dpoequ_work( int matrix_layout, lapack_int n, const double* a, - lapack_int lda, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cpoequ_work( int matrix_layout, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zpoequ_work( int matrix_layout, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_spoequb_work( int matrix_layout, lapack_int n, const float* a, - lapack_int lda, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dpoequb_work( int matrix_layout, lapack_int n, - const double* a, lapack_int lda, double* s, - double* scond, double* amax ); -lapack_int LAPACKE_cpoequb_work( int matrix_layout, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax ); -lapack_int LAPACKE_zpoequb_work( int matrix_layout, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax ); - -lapack_int LAPACKE_sporfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dporfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cporfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zporfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sporfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, - lapack_int ldaf, const float* s, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dporfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const double* s, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cporfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, - lapack_int ldaf, const float* s, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zporfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, - lapack_int ldaf, const double* s, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); -lapack_int LAPACKE_dsposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* b, lapack_int ldb, double* x, - lapack_int ldx, double* work, float* swork, - lapack_int* iter ); -lapack_int LAPACKE_zcposv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, lapack_complex_double* work, - lapack_complex_float* swork, double* rwork, - lapack_int* iter ); - -lapack_int LAPACKE_sposvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - char* equed, float* s, float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dposvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - char* equed, double* s, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cposvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - char* equed, float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zposvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sposvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - char* equed, float* s, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dposvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - char* equed, double* s, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cposvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - char* equed, float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zposvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_spotrf2_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda ); -lapack_int LAPACKE_dpotrf2_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda ); -lapack_int LAPACKE_cpotrf2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotrf2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotrf_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda ); -lapack_int LAPACKE_dpotrf_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda ); -lapack_int LAPACKE_cpotrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotri_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda ); -lapack_int LAPACKE_dpotri_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda ); -lapack_int LAPACKE_cpotri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zpotri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_spotrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dpotrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, double* b, lapack_int ldb ); -lapack_int LAPACKE_cpotrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zpotrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sppcon_work( int matrix_layout, char uplo, lapack_int n, - const float* ap, float anorm, float* rcond, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dppcon_work( int matrix_layout, char uplo, lapack_int n, - const double* ap, double anorm, double* rcond, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cppcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, float anorm, - float* rcond, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zppcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, double anorm, - double* rcond, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_sppequ_work( int matrix_layout, char uplo, lapack_int n, - const float* ap, float* s, float* scond, - float* amax ); -lapack_int LAPACKE_dppequ_work( int matrix_layout, char uplo, lapack_int n, - const double* ap, double* s, double* scond, - double* amax ); -lapack_int LAPACKE_cppequ_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, float* s, - float* scond, float* amax ); -lapack_int LAPACKE_zppequ_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, double* s, - double* scond, double* amax ); - -lapack_int LAPACKE_spprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, - const float* afp, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dpprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, - const double* afp, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cpprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zpprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sppsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* ap, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dppsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* ap, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cppsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zppsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sppsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* ap, - float* afp, char* equed, float* s, float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dppsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* ap, - double* afp, char* equed, double* s, double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cppsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* ap, - lapack_complex_float* afp, char* equed, - float* s, lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zppsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* ap, - lapack_complex_double* afp, char* equed, - double* s, lapack_complex_double* b, - lapack_int ldb, lapack_complex_double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_spptrf_work( int matrix_layout, char uplo, lapack_int n, - float* ap ); -lapack_int LAPACKE_dpptrf_work( int matrix_layout, char uplo, lapack_int n, - double* ap ); -lapack_int LAPACKE_cpptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap ); -lapack_int LAPACKE_zpptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap ); - -lapack_int LAPACKE_spptri_work( int matrix_layout, char uplo, lapack_int n, - float* ap ); -lapack_int LAPACKE_dpptri_work( int matrix_layout, char uplo, lapack_int n, - double* ap ); -lapack_int LAPACKE_cpptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap ); -lapack_int LAPACKE_zpptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap ); - -lapack_int LAPACKE_spptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dpptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cpptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_spstrf_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int* piv, - lapack_int* rank, float tol, float* work ); -lapack_int LAPACKE_dpstrf_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int* piv, - lapack_int* rank, double tol, double* work ); -lapack_int LAPACKE_cpstrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* piv, lapack_int* rank, float tol, - float* work ); -lapack_int LAPACKE_zpstrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* piv, lapack_int* rank, double tol, - double* work ); - -lapack_int LAPACKE_sptcon_work( lapack_int n, const float* d, const float* e, - float anorm, float* rcond, float* work ); -lapack_int LAPACKE_dptcon_work( lapack_int n, const double* d, const double* e, - double anorm, double* rcond, double* work ); -lapack_int LAPACKE_cptcon_work( lapack_int n, const float* d, - const lapack_complex_float* e, float anorm, - float* rcond, float* work ); -lapack_int LAPACKE_zptcon_work( lapack_int n, const double* d, - const lapack_complex_double* e, double anorm, - double* rcond, double* work ); - -lapack_int LAPACKE_spteqr_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, float* z, lapack_int ldz, - float* work ); -lapack_int LAPACKE_dpteqr_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz, - double* work ); -lapack_int LAPACKE_cpteqr_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, lapack_complex_float* z, - lapack_int ldz, float* work ); -lapack_int LAPACKE_zpteqr_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz, double* work ); - -lapack_int LAPACKE_sptrfs_work( int matrix_layout, lapack_int n, lapack_int nrhs, - const float* d, const float* e, const float* df, - const float* ef, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* ferr, - float* berr, float* work ); -lapack_int LAPACKE_dptrfs_work( int matrix_layout, lapack_int n, lapack_int nrhs, - const double* d, const double* e, - const double* df, const double* ef, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr, - double* work ); -lapack_int LAPACKE_cptrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, const float* df, - const lapack_complex_float* ef, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zptrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, - const double* df, - const lapack_complex_double* ef, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - float* d, float* e, float* b, lapack_int ldb ); -lapack_int LAPACKE_dptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - double* d, double* e, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - float* d, lapack_complex_float* e, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zptsv_work( int matrix_layout, lapack_int n, lapack_int nrhs, - double* d, lapack_complex_double* e, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sptsvx_work( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const float* d, const float* e, - float* df, float* ef, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work ); -lapack_int LAPACKE_dptsvx_work( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const double* d, - const double* e, double* df, double* ef, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* ferr, - double* berr, double* work ); -lapack_int LAPACKE_cptsvx_work( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, float* df, - lapack_complex_float* ef, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zptsvx_work( int matrix_layout, char fact, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, double* df, - lapack_complex_double* ef, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_spttrf_work( lapack_int n, float* d, float* e ); -lapack_int LAPACKE_dpttrf_work( lapack_int n, double* d, double* e ); -lapack_int LAPACKE_cpttrf_work( lapack_int n, float* d, - lapack_complex_float* e ); -lapack_int LAPACKE_zpttrf_work( lapack_int n, double* d, - lapack_complex_double* e ); - -lapack_int LAPACKE_spttrs_work( int matrix_layout, lapack_int n, lapack_int nrhs, - const float* d, const float* e, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dpttrs_work( int matrix_layout, lapack_int n, lapack_int nrhs, - const double* d, const double* e, double* b, - lapack_int ldb ); -lapack_int LAPACKE_cpttrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* d, - const lapack_complex_float* e, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zpttrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* d, - const lapack_complex_double* e, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssbev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* w, float* z, - lapack_int ldz, float* work ); -lapack_int LAPACKE_dsbev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* w, double* z, - lapack_int ldz, double* work ); - -lapack_int LAPACKE_ssbevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsbevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssbevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - float* ab, lapack_int ldab, float* q, - lapack_int ldq, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_dsbevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - double* ab, lapack_int ldab, double* q, - lapack_int ldq, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, double* work, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_ssbgst_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - float* ab, lapack_int ldab, const float* bb, - lapack_int ldbb, float* x, lapack_int ldx, - float* work ); -lapack_int LAPACKE_dsbgst_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - double* ab, lapack_int ldab, const double* bb, - lapack_int ldbb, double* x, lapack_int ldx, - double* work ); - -lapack_int LAPACKE_ssbgv_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - float* ab, lapack_int ldab, float* bb, - lapack_int ldbb, float* w, float* z, - lapack_int ldz, float* work ); -lapack_int LAPACKE_dsbgv_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - double* ab, lapack_int ldab, double* bb, - lapack_int ldbb, double* w, double* z, - lapack_int ldz, double* work ); - -lapack_int LAPACKE_ssbgvd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - float* ab, lapack_int ldab, float* bb, - lapack_int ldbb, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsbgvd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int ka, lapack_int kb, - double* ab, lapack_int ldab, double* bb, - lapack_int ldbb, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssbgvx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int ka, - lapack_int kb, float* ab, lapack_int ldab, - float* bb, lapack_int ldbb, float* q, - lapack_int ldq, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_dsbgvx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int ka, - lapack_int kb, double* ab, lapack_int ldab, - double* bb, lapack_int ldbb, double* q, - lapack_int ldq, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, double* work, lapack_int* iwork, - lapack_int* ifail ); - -lapack_int LAPACKE_ssbtrd_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* d, float* e, float* q, - lapack_int ldq, float* work ); -lapack_int LAPACKE_dsbtrd_work( int matrix_layout, char vect, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* d, double* e, - double* q, lapack_int ldq, double* work ); - -lapack_int LAPACKE_ssfrk_work( int matrix_layout, char transr, char uplo, - char trans, lapack_int n, lapack_int k, - float alpha, const float* a, lapack_int lda, - float beta, float* c ); -lapack_int LAPACKE_dsfrk_work( int matrix_layout, char transr, char uplo, - char trans, lapack_int n, lapack_int k, - double alpha, const double* a, lapack_int lda, - double beta, double* c ); - -lapack_int LAPACKE_sspcon_work( int matrix_layout, char uplo, lapack_int n, - const float* ap, const lapack_int* ipiv, - float anorm, float* rcond, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dspcon_work( int matrix_layout, char uplo, lapack_int n, - const double* ap, const lapack_int* ipiv, - double anorm, double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_cspcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zspcon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_sspev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* ap, float* w, float* z, - lapack_int ldz, float* work ); -lapack_int LAPACKE_dspev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* ap, double* w, double* z, - lapack_int ldz, double* work ); - -lapack_int LAPACKE_sspevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* ap, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dspevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* ap, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_sspevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, float* ap, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_dspevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, double* ap, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - double* z, lapack_int ldz, double* work, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_sspgst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, float* ap, const float* bp ); -lapack_int LAPACKE_dspgst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, double* ap, const double* bp ); - -lapack_int LAPACKE_sspgv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* ap, float* bp, - float* w, float* z, lapack_int ldz, - float* work ); -lapack_int LAPACKE_dspgv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* ap, double* bp, - double* w, double* z, lapack_int ldz, - double* work ); - -lapack_int LAPACKE_sspgvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* ap, float* bp, - float* w, float* z, lapack_int ldz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dspgvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* ap, double* bp, - double* w, double* z, lapack_int ldz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_sspgvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, float* ap, - float* bp, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, float* z, lapack_int ldz, float* work, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_dspgvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, double* ap, - double* bp, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, double* z, lapack_int ldz, - double* work, lapack_int* iwork, - lapack_int* ifail ); - -lapack_int LAPACKE_ssprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, - const float* afp, const lapack_int* ipiv, - const float* b, lapack_int ldb, float* x, - lapack_int ldx, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dsprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, - const double* afp, const lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_csprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_complex_float* afp, - const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zsprfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_complex_double* afp, - const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_sspsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* ap, lapack_int* ipiv, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dspsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* ap, lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_cspsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* ap, - lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zspsv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* ap, - lapack_int* ipiv, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_sspsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, const float* ap, - float* afp, lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dspsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, const double* ap, - double* afp, lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_cspsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - lapack_complex_float* afp, lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zspsvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - lapack_complex_double* afp, lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_ssptrd_work( int matrix_layout, char uplo, lapack_int n, - float* ap, float* d, float* e, float* tau ); -lapack_int LAPACKE_dsptrd_work( int matrix_layout, char uplo, lapack_int n, - double* ap, double* d, double* e, double* tau ); - -lapack_int LAPACKE_ssptrf_work( int matrix_layout, char uplo, lapack_int n, - float* ap, lapack_int* ipiv ); -lapack_int LAPACKE_dsptrf_work( int matrix_layout, char uplo, lapack_int n, - double* ap, lapack_int* ipiv ); -lapack_int LAPACKE_csptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, lapack_int* ipiv ); -lapack_int LAPACKE_zsptrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, lapack_int* ipiv ); - -lapack_int LAPACKE_ssptri_work( int matrix_layout, char uplo, lapack_int n, - float* ap, const lapack_int* ipiv, - float* work ); -lapack_int LAPACKE_dsptri_work( int matrix_layout, char uplo, lapack_int n, - double* ap, const lapack_int* ipiv, - double* work ); -lapack_int LAPACKE_csptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* ap, - const lapack_int* ipiv, - lapack_complex_float* work ); -lapack_int LAPACKE_zsptri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* ap, - const lapack_int* ipiv, - lapack_complex_double* work ); - -lapack_int LAPACKE_ssptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* ap, - const lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dsptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* ap, - const lapack_int* ipiv, double* b, - lapack_int ldb ); -lapack_int LAPACKE_csptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* ap, - const lapack_int* ipiv, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_zsptrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sstebz_work( char range, char order, lapack_int n, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, const float* d, const float* e, - lapack_int* m, lapack_int* nsplit, float* w, - lapack_int* iblock, lapack_int* isplit, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dstebz_work( char range, char order, lapack_int n, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, const double* d, const double* e, - lapack_int* m, lapack_int* nsplit, double* w, - lapack_int* iblock, lapack_int* isplit, - double* work, lapack_int* iwork ); - -lapack_int LAPACKE_sstedc_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, float* z, lapack_int ldz, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dstedc_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_cstedc_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zstedc_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_sstegr_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, float* z, - lapack_int ldz, lapack_int* isuppz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dstegr_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - double* z, lapack_int ldz, lapack_int* isuppz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_cstegr_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* isuppz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zstegr_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* isuppz, double* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_sstein_work( int matrix_layout, lapack_int n, const float* d, - const float* e, lapack_int m, const float* w, - const lapack_int* iblock, - const lapack_int* isplit, float* z, - lapack_int ldz, float* work, lapack_int* iwork, - lapack_int* ifailv ); -lapack_int LAPACKE_dstein_work( int matrix_layout, lapack_int n, const double* d, - const double* e, lapack_int m, const double* w, - const lapack_int* iblock, - const lapack_int* isplit, double* z, - lapack_int ldz, double* work, lapack_int* iwork, - lapack_int* ifailv ); -lapack_int LAPACKE_cstein_work( int matrix_layout, lapack_int n, const float* d, - const float* e, lapack_int m, const float* w, - const lapack_int* iblock, - const lapack_int* isplit, - lapack_complex_float* z, lapack_int ldz, - float* work, lapack_int* iwork, - lapack_int* ifailv ); -lapack_int LAPACKE_zstein_work( int matrix_layout, lapack_int n, const double* d, - const double* e, lapack_int m, const double* w, - const lapack_int* iblock, - const lapack_int* isplit, - lapack_complex_double* z, lapack_int ldz, - double* work, lapack_int* iwork, - lapack_int* ifailv ); - -lapack_int LAPACKE_sstemr_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - lapack_int* m, float* w, float* z, - lapack_int ldz, lapack_int nzc, - lapack_int* isuppz, lapack_logical* tryrac, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dstemr_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int nzc, - lapack_int* isuppz, lapack_logical* tryrac, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_cstemr_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int nzc, lapack_int* isuppz, - lapack_logical* tryrac, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zstemr_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int nzc, lapack_int* isuppz, - lapack_logical* tryrac, double* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_ssteqr_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, float* z, lapack_int ldz, - float* work ); -lapack_int LAPACKE_dsteqr_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz, - double* work ); -lapack_int LAPACKE_csteqr_work( int matrix_layout, char compz, lapack_int n, - float* d, float* e, lapack_complex_float* z, - lapack_int ldz, float* work ); -lapack_int LAPACKE_zsteqr_work( int matrix_layout, char compz, lapack_int n, - double* d, double* e, lapack_complex_double* z, - lapack_int ldz, double* work ); - -lapack_int LAPACKE_ssterf_work( lapack_int n, float* d, float* e ); -lapack_int LAPACKE_dsterf_work( lapack_int n, double* d, double* e ); - -lapack_int LAPACKE_sstev_work( int matrix_layout, char jobz, lapack_int n, - float* d, float* e, float* z, lapack_int ldz, - float* work ); -lapack_int LAPACKE_dstev_work( int matrix_layout, char jobz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz, - double* work ); - -lapack_int LAPACKE_sstevd_work( int matrix_layout, char jobz, lapack_int n, - float* d, float* e, float* z, lapack_int ldz, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dstevd_work( int matrix_layout, char jobz, lapack_int n, - double* d, double* e, double* z, lapack_int ldz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_sstevr_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, float* z, - lapack_int ldz, lapack_int* isuppz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dstevr_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - double* z, lapack_int ldz, lapack_int* isuppz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_sstevx_work( int matrix_layout, char jobz, char range, - lapack_int n, float* d, float* e, float vl, - float vu, lapack_int il, lapack_int iu, - float abstol, lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_dstevx_work( int matrix_layout, char jobz, char range, - lapack_int n, double* d, double* e, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - double* z, lapack_int ldz, double* work, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_ssycon_work( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, - float* rcond, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dsycon_work( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_csycon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zsycon_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_ssyequb_work( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float* s, - float* scond, float* amax, float* work ); -lapack_int LAPACKE_dsyequb_work( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double* s, - double* scond, double* amax, double* work ); -lapack_int LAPACKE_csyequb_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* s, float* scond, float* amax, - lapack_complex_float* work ); -lapack_int LAPACKE_zsyequb_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* s, double* scond, double* amax, - lapack_complex_double* work ); - -lapack_int LAPACKE_ssyev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* a, lapack_int lda, float* w, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsyev_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* a, lapack_int lda, - double* w, double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssyevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* a, lapack_int lda, - float* w, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsyevd_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* a, lapack_int lda, - double* w, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssyevr_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, lapack_int* isuppz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dsyevr_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssyevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_dsyevx_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_ssygst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, float* a, lapack_int lda, - const float* b, lapack_int ldb ); -lapack_int LAPACKE_dsygst_work( int matrix_layout, lapack_int itype, char uplo, - lapack_int n, double* a, lapack_int lda, - const double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssygv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* w, float* work, lapack_int lwork ); -lapack_int LAPACKE_dsygv_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* w, double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssygvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* w, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsygvd_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* w, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssygvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, float* z, lapack_int ldz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_dsygvx_work( int matrix_layout, lapack_int itype, char jobz, - char range, char uplo, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, double* z, lapack_int ldz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_ssyrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* af, lapack_int ldaf, - const lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dsyrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* b, lapack_int ldb, double* x, - lapack_int ldx, double* ferr, double* berr, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_csyrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_zsyrfs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_ssyrfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, const float* af, - lapack_int ldaf, const lapack_int* ipiv, - const float* s, const float* b, lapack_int ldb, - float* x, lapack_int ldx, float* rcond, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dsyrfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, const double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* s, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_csyrfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* af, - lapack_int ldaf, const lapack_int* ipiv, - const float* s, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zsyrfsx_work( int matrix_layout, char uplo, char equed, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* af, - lapack_int ldaf, const lapack_int* ipiv, - const double* s, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_ssysv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsysv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csysv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsysv_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssysvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, const float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, const float* b, - lapack_int ldb, float* x, lapack_int ldx, - float* rcond, float* ferr, float* berr, - float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dsysvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, const double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, const double* b, - lapack_int ldb, double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_csysvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, const lapack_complex_float* b, - lapack_int ldb, lapack_complex_float* x, - lapack_int ldx, float* rcond, float* ferr, - float* berr, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zsysvx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* ferr, double* berr, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_ssysvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, - float* b, lapack_int ldb, float* x, - lapack_int ldx, float* rcond, float* rpvgrw, - float* berr, lapack_int n_err_bnds, - float* err_bnds_norm, float* err_bnds_comp, - lapack_int nparams, float* params, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dsysvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, - double* b, lapack_int ldb, double* x, - lapack_int ldx, double* rcond, double* rpvgrw, - double* berr, lapack_int n_err_bnds, - double* err_bnds_norm, double* err_bnds_comp, - lapack_int nparams, double* params, - double* work, lapack_int* iwork ); -lapack_int LAPACKE_csysvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, float* s, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* x, lapack_int ldx, - float* rcond, float* rpvgrw, float* berr, - lapack_int n_err_bnds, float* err_bnds_norm, - float* err_bnds_comp, lapack_int nparams, - float* params, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_zsysvxx_work( int matrix_layout, char fact, char uplo, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* af, lapack_int ldaf, - lapack_int* ipiv, char* equed, double* s, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* x, lapack_int ldx, - double* rcond, double* rpvgrw, double* berr, - lapack_int n_err_bnds, double* err_bnds_norm, - double* err_bnds_comp, lapack_int nparams, - double* params, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_ssytrd_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, float* d, float* e, - float* tau, float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrd_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, double* d, double* e, - double* tau, double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssytrf_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrf_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zsytrf_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_ssytri_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, - const lapack_int* ipiv, float* work ); -lapack_int LAPACKE_dsytri_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, - const lapack_int* ipiv, double* work ); -lapack_int LAPACKE_csytri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work ); -lapack_int LAPACKE_zsytri_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work ); - -lapack_int LAPACKE_ssytrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dsytrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stbcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, lapack_int kd, - const float* ab, lapack_int ldab, float* rcond, - float* work, lapack_int* iwork ); -lapack_int LAPACKE_dtbcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, lapack_int kd, - const double* ab, lapack_int ldab, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_ctbcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, lapack_int kd, - const lapack_complex_float* ab, lapack_int ldab, - float* rcond, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_ztbcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, lapack_int kd, - const lapack_complex_double* ab, - lapack_int ldab, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_stbrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const float* ab, - lapack_int ldab, const float* b, lapack_int ldb, - const float* x, lapack_int ldx, float* ferr, - float* berr, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dtbrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const double* ab, - lapack_int ldab, const double* b, - lapack_int ldb, const double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_ctbrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const lapack_complex_float* ab, - lapack_int ldab, const lapack_complex_float* b, - lapack_int ldb, const lapack_complex_float* x, - lapack_int ldx, float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztbrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, const lapack_complex_double* b, - lapack_int ldb, const lapack_complex_double* x, - lapack_int ldx, double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_stbtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const float* ab, - lapack_int ldab, float* b, lapack_int ldb ); -lapack_int LAPACKE_dtbtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const double* ab, - lapack_int ldab, double* b, lapack_int ldb ); -lapack_int LAPACKE_ctbtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, const lapack_complex_float* ab, - lapack_int ldab, lapack_complex_float* b, - lapack_int ldb ); -lapack_int LAPACKE_ztbtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int kd, - lapack_int nrhs, - const lapack_complex_double* ab, - lapack_int ldab, lapack_complex_double* b, - lapack_int ldb ); - -lapack_int LAPACKE_stfsm_work( int matrix_layout, char transr, char side, - char uplo, char trans, char diag, lapack_int m, - lapack_int n, float alpha, const float* a, - float* b, lapack_int ldb ); -lapack_int LAPACKE_dtfsm_work( int matrix_layout, char transr, char side, - char uplo, char trans, char diag, lapack_int m, - lapack_int n, double alpha, const double* a, - double* b, lapack_int ldb ); -lapack_int LAPACKE_ctfsm_work( int matrix_layout, char transr, char side, - char uplo, char trans, char diag, lapack_int m, - lapack_int n, lapack_complex_float alpha, - const lapack_complex_float* a, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztfsm_work( int matrix_layout, char transr, char side, - char uplo, char trans, char diag, lapack_int m, - lapack_int n, lapack_complex_double alpha, - const lapack_complex_double* a, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stftri_work( int matrix_layout, char transr, char uplo, - char diag, lapack_int n, float* a ); -lapack_int LAPACKE_dtftri_work( int matrix_layout, char transr, char uplo, - char diag, lapack_int n, double* a ); -lapack_int LAPACKE_ctftri_work( int matrix_layout, char transr, char uplo, - char diag, lapack_int n, - lapack_complex_float* a ); -lapack_int LAPACKE_ztftri_work( int matrix_layout, char transr, char uplo, - char diag, lapack_int n, - lapack_complex_double* a ); - -lapack_int LAPACKE_stfttp_work( int matrix_layout, char transr, char uplo, - lapack_int n, const float* arf, float* ap ); -lapack_int LAPACKE_dtfttp_work( int matrix_layout, char transr, char uplo, - lapack_int n, const double* arf, double* ap ); -lapack_int LAPACKE_ctfttp_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* arf, - lapack_complex_float* ap ); -lapack_int LAPACKE_ztfttp_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* arf, - lapack_complex_double* ap ); - -lapack_int LAPACKE_stfttr_work( int matrix_layout, char transr, char uplo, - lapack_int n, const float* arf, float* a, - lapack_int lda ); -lapack_int LAPACKE_dtfttr_work( int matrix_layout, char transr, char uplo, - lapack_int n, const double* arf, double* a, - lapack_int lda ); -lapack_int LAPACKE_ctfttr_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* arf, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_ztfttr_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* arf, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_stgevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const float* s, lapack_int lds, const float* p, - lapack_int ldp, float* vl, lapack_int ldvl, - float* vr, lapack_int ldvr, lapack_int mm, - lapack_int* m, float* work ); -lapack_int LAPACKE_dtgevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const double* s, lapack_int lds, - const double* p, lapack_int ldp, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, double* work ); -lapack_int LAPACKE_ctgevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* s, lapack_int lds, - const lapack_complex_float* p, lapack_int ldp, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztgevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* s, lapack_int lds, - const lapack_complex_double* p, lapack_int ldp, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_stgexc_work( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* q, lapack_int ldq, float* z, - lapack_int ldz, lapack_int* ifst, - lapack_int* ilst, float* work, - lapack_int lwork ); -lapack_int LAPACKE_dtgexc_work( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* q, lapack_int ldq, double* z, - lapack_int ldz, lapack_int* ifst, - lapack_int* ilst, double* work, - lapack_int lwork ); -lapack_int LAPACKE_ctgexc_work( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz, - lapack_int ifst, lapack_int ilst ); -lapack_int LAPACKE_ztgexc_work( int matrix_layout, lapack_logical wantq, - lapack_logical wantz, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_int ifst, lapack_int ilst ); - -lapack_int LAPACKE_stgsen_work( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - float* a, lapack_int lda, float* b, - lapack_int ldb, float* alphar, float* alphai, - float* beta, float* q, lapack_int ldq, float* z, - lapack_int ldz, lapack_int* m, float* pl, - float* pr, float* dif, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dtgsen_work( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - double* a, lapack_int lda, double* b, - lapack_int ldb, double* alphar, double* alphai, - double* beta, double* q, lapack_int ldq, - double* z, lapack_int ldz, lapack_int* m, - double* pl, double* pr, double* dif, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_ctgsen_work( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* alpha, - lapack_complex_float* beta, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* z, lapack_int ldz, - lapack_int* m, float* pl, float* pr, float* dif, - lapack_complex_float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_ztgsen_work( int matrix_layout, lapack_int ijob, - lapack_logical wantq, lapack_logical wantz, - const lapack_logical* select, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* alpha, - lapack_complex_double* beta, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* z, lapack_int ldz, - lapack_int* m, double* pl, double* pr, - double* dif, lapack_complex_double* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_stgsja_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_int k, lapack_int l, - float* a, lapack_int lda, float* b, - lapack_int ldb, float tola, float tolb, - float* alpha, float* beta, float* u, - lapack_int ldu, float* v, lapack_int ldv, - float* q, lapack_int ldq, float* work, - lapack_int* ncycle ); -lapack_int LAPACKE_dtgsja_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_int k, lapack_int l, - double* a, lapack_int lda, double* b, - lapack_int ldb, double tola, double tolb, - double* alpha, double* beta, double* u, - lapack_int ldu, double* v, lapack_int ldv, - double* q, lapack_int ldq, double* work, - lapack_int* ncycle ); -lapack_int LAPACKE_ctgsja_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_int k, lapack_int l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - float tola, float tolb, float* alpha, - float* beta, lapack_complex_float* u, - lapack_int ldu, lapack_complex_float* v, - lapack_int ldv, lapack_complex_float* q, - lapack_int ldq, lapack_complex_float* work, - lapack_int* ncycle ); -lapack_int LAPACKE_ztgsja_work( int matrix_layout, char jobu, char jobv, - char jobq, lapack_int m, lapack_int p, - lapack_int n, lapack_int k, lapack_int l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double tola, double tolb, double* alpha, - double* beta, lapack_complex_double* u, - lapack_int ldu, lapack_complex_double* v, - lapack_int ldv, lapack_complex_double* q, - lapack_int ldq, lapack_complex_double* work, - lapack_int* ncycle ); - -lapack_int LAPACKE_stgsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, const float* vl, - lapack_int ldvl, const float* vr, - lapack_int ldvr, float* s, float* dif, - lapack_int mm, lapack_int* m, float* work, - lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_dtgsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const double* a, lapack_int lda, - const double* b, lapack_int ldb, - const double* vl, lapack_int ldvl, - const double* vr, lapack_int ldvr, double* s, - double* dif, lapack_int mm, lapack_int* m, - double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_ctgsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* vl, lapack_int ldvl, - const lapack_complex_float* vr, lapack_int ldvr, - float* s, float* dif, lapack_int mm, - lapack_int* m, lapack_complex_float* work, - lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_ztgsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* vl, - lapack_int ldvl, - const lapack_complex_double* vr, - lapack_int ldvr, double* s, double* dif, - lapack_int mm, lapack_int* m, - lapack_complex_double* work, lapack_int lwork, - lapack_int* iwork ); - -lapack_int LAPACKE_stgsyl_work( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, const float* a, - lapack_int lda, const float* b, lapack_int ldb, - float* c, lapack_int ldc, const float* d, - lapack_int ldd, const float* e, lapack_int lde, - float* f, lapack_int ldf, float* scale, - float* dif, float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dtgsyl_work( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, const double* a, - lapack_int lda, const double* b, lapack_int ldb, - double* c, lapack_int ldc, const double* d, - lapack_int ldd, const double* e, lapack_int lde, - double* f, lapack_int ldf, double* scale, - double* dif, double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_ctgsyl_work( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* c, lapack_int ldc, - const lapack_complex_float* d, lapack_int ldd, - const lapack_complex_float* e, lapack_int lde, - lapack_complex_float* f, lapack_int ldf, - float* scale, float* dif, - lapack_complex_float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_ztgsyl_work( int matrix_layout, char trans, lapack_int ijob, - lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - const lapack_complex_double* d, lapack_int ldd, - const lapack_complex_double* e, lapack_int lde, - lapack_complex_double* f, lapack_int ldf, - double* scale, double* dif, - lapack_complex_double* work, lapack_int lwork, - lapack_int* iwork ); - -lapack_int LAPACKE_stpcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, const float* ap, - float* rcond, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dtpcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, const double* ap, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_ctpcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, - const lapack_complex_float* ap, float* rcond, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztpcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, - const lapack_complex_double* ap, double* rcond, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_stprfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const float* ap, const float* b, lapack_int ldb, - const float* x, lapack_int ldx, float* ferr, - float* berr, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dtprfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const double* ap, const double* b, - lapack_int ldb, const double* x, lapack_int ldx, - double* ferr, double* berr, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_ctprfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztprfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_stptri_work( int matrix_layout, char uplo, char diag, - lapack_int n, float* ap ); -lapack_int LAPACKE_dtptri_work( int matrix_layout, char uplo, char diag, - lapack_int n, double* ap ); -lapack_int LAPACKE_ctptri_work( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_complex_float* ap ); -lapack_int LAPACKE_ztptri_work( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_complex_double* ap ); - -lapack_int LAPACKE_stptrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const float* ap, float* b, lapack_int ldb ); -lapack_int LAPACKE_dtptrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const double* ap, double* b, lapack_int ldb ); -lapack_int LAPACKE_ctptrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_float* ap, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztptrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_double* ap, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stpttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const float* ap, float* arf ); -lapack_int LAPACKE_dtpttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const double* ap, double* arf ); -lapack_int LAPACKE_ctpttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* ap, - lapack_complex_float* arf ); -lapack_int LAPACKE_ztpttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* ap, - lapack_complex_double* arf ); - -lapack_int LAPACKE_stpttr_work( int matrix_layout, char uplo, lapack_int n, - const float* ap, float* a, lapack_int lda ); -lapack_int LAPACKE_dtpttr_work( int matrix_layout, char uplo, lapack_int n, - const double* ap, double* a, lapack_int lda ); -lapack_int LAPACKE_ctpttr_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_ztpttr_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_strcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, const float* a, - lapack_int lda, float* rcond, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dtrcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, const double* a, - lapack_int lda, double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_ctrcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - float* rcond, lapack_complex_float* work, - float* rwork ); -lapack_int LAPACKE_ztrcon_work( int matrix_layout, char norm, char uplo, - char diag, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - double* rcond, lapack_complex_double* work, - double* rwork ); - -lapack_int LAPACKE_strevc_work( int matrix_layout, char side, char howmny, - lapack_logical* select, lapack_int n, - const float* t, lapack_int ldt, float* vl, - lapack_int ldvl, float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, float* work ); -lapack_int LAPACKE_dtrevc_work( int matrix_layout, char side, char howmny, - lapack_logical* select, lapack_int n, - const double* t, lapack_int ldt, double* vl, - lapack_int ldvl, double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, double* work ); -lapack_int LAPACKE_ctrevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* vl, lapack_int ldvl, - lapack_complex_float* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztrevc_work( int matrix_layout, char side, char howmny, - const lapack_logical* select, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* vl, lapack_int ldvl, - lapack_complex_double* vr, lapack_int ldvr, - lapack_int mm, lapack_int* m, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_strexc_work( int matrix_layout, char compq, lapack_int n, - float* t, lapack_int ldt, float* q, - lapack_int ldq, lapack_int* ifst, - lapack_int* ilst, float* work ); -lapack_int LAPACKE_dtrexc_work( int matrix_layout, char compq, lapack_int n, - double* t, lapack_int ldt, double* q, - lapack_int ldq, lapack_int* ifst, - lapack_int* ilst, double* work ); -lapack_int LAPACKE_ctrexc_work( int matrix_layout, char compq, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* q, lapack_int ldq, - lapack_int ifst, lapack_int ilst ); -lapack_int LAPACKE_ztrexc_work( int matrix_layout, char compq, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* q, lapack_int ldq, - lapack_int ifst, lapack_int ilst ); - -lapack_int LAPACKE_strrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, const float* x, lapack_int ldx, - float* ferr, float* berr, float* work, - lapack_int* iwork ); -lapack_int LAPACKE_dtrrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const double* a, lapack_int lda, - const double* b, lapack_int ldb, - const double* x, lapack_int ldx, double* ferr, - double* berr, double* work, lapack_int* iwork ); -lapack_int LAPACKE_ctrrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - const lapack_complex_float* x, lapack_int ldx, - float* ferr, float* berr, - lapack_complex_float* work, float* rwork ); -lapack_int LAPACKE_ztrrfs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - const lapack_complex_double* x, lapack_int ldx, - double* ferr, double* berr, - lapack_complex_double* work, double* rwork ); - -lapack_int LAPACKE_strsen_work( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - float* t, lapack_int ldt, float* q, - lapack_int ldq, float* wr, float* wi, - lapack_int* m, float* s, float* sep, - float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dtrsen_work( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - double* t, lapack_int ldt, double* q, - lapack_int ldq, double* wr, double* wi, - lapack_int* m, double* s, double* sep, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_ctrsen_work( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* w, lapack_int* m, - float* s, float* sep, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_ztrsen_work( int matrix_layout, char job, char compq, - const lapack_logical* select, lapack_int n, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* w, lapack_int* m, - double* s, double* sep, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_strsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const float* t, lapack_int ldt, const float* vl, - lapack_int ldvl, const float* vr, - lapack_int ldvr, float* s, float* sep, - lapack_int mm, lapack_int* m, float* work, - lapack_int ldwork, lapack_int* iwork ); -lapack_int LAPACKE_dtrsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const double* t, lapack_int ldt, - const double* vl, lapack_int ldvl, - const double* vr, lapack_int ldvr, double* s, - double* sep, lapack_int mm, lapack_int* m, - double* work, lapack_int ldwork, - lapack_int* iwork ); -lapack_int LAPACKE_ctrsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_float* t, lapack_int ldt, - const lapack_complex_float* vl, lapack_int ldvl, - const lapack_complex_float* vr, lapack_int ldvr, - float* s, float* sep, lapack_int mm, - lapack_int* m, lapack_complex_float* work, - lapack_int ldwork, float* rwork ); -lapack_int LAPACKE_ztrsna_work( int matrix_layout, char job, char howmny, - const lapack_logical* select, lapack_int n, - const lapack_complex_double* t, lapack_int ldt, - const lapack_complex_double* vl, - lapack_int ldvl, - const lapack_complex_double* vr, - lapack_int ldvr, double* s, double* sep, - lapack_int mm, lapack_int* m, - lapack_complex_double* work, lapack_int ldwork, - double* rwork ); - -lapack_int LAPACKE_strsyl_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const float* a, lapack_int lda, const float* b, - lapack_int ldb, float* c, lapack_int ldc, - float* scale ); -lapack_int LAPACKE_dtrsyl_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const double* a, lapack_int lda, - const double* b, lapack_int ldb, double* c, - lapack_int ldc, double* scale ); -lapack_int LAPACKE_ctrsyl_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* c, lapack_int ldc, - float* scale ); -lapack_int LAPACKE_ztrsyl_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - double* scale ); - -lapack_int LAPACKE_strsyl3_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const float* a, lapack_int lda, - const float* b, lapack_int ldb, - float* c, lapack_int ldc, float* scale, - lapack_int* iwork, lapack_int liwork, - float* swork, lapack_int ldswork ); -lapack_int LAPACKE_dtrsyl3_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const double* a, lapack_int lda, - const double* b, lapack_int ldb, - double* c, lapack_int ldc, double* scale, - lapack_int* iwork, lapack_int liwork, - double* swork, lapack_int ldswork ); -lapack_int LAPACKE_ctrsyl3_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* c, lapack_int ldc, - float* scale, float* swork, - lapack_int ldswork ); -lapack_int LAPACKE_ztrsyl3_work( int matrix_layout, char trana, char tranb, - lapack_int isgn, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* c, lapack_int ldc, - double* scale, double* swork, - lapack_int ldswork ); - -lapack_int LAPACKE_strtri_work( int matrix_layout, char uplo, char diag, - lapack_int n, float* a, lapack_int lda ); -lapack_int LAPACKE_dtrtri_work( int matrix_layout, char uplo, char diag, - lapack_int n, double* a, lapack_int lda ); -lapack_int LAPACKE_ctrtri_work( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_complex_float* a, - lapack_int lda ); -lapack_int LAPACKE_ztrtri_work( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_complex_double* a, - lapack_int lda ); - -lapack_int LAPACKE_strtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const float* a, lapack_int lda, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dtrtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const double* a, lapack_int lda, double* b, - lapack_int ldb ); -lapack_int LAPACKE_ctrtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztrtrs_work( int matrix_layout, char uplo, char trans, - char diag, lapack_int n, lapack_int nrhs, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_strttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const float* a, lapack_int lda, - float* arf ); -lapack_int LAPACKE_dtrttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const double* a, lapack_int lda, - double* arf ); -lapack_int LAPACKE_ctrttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float* a, - lapack_int lda, lapack_complex_float* arf ); -lapack_int LAPACKE_ztrttf_work( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double* a, - lapack_int lda, lapack_complex_double* arf ); - -lapack_int LAPACKE_strttp_work( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, float* ap ); -lapack_int LAPACKE_dtrttp_work( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, double* ap ); -lapack_int LAPACKE_ctrttp_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - lapack_complex_float* ap ); -lapack_int LAPACKE_ztrttp_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - lapack_complex_double* ap ); - -lapack_int LAPACKE_stzrzf_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* tau, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dtzrzf_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* tau, - double* work, lapack_int lwork ); -lapack_int LAPACKE_ctzrzf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_ztzrzf_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungbr_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungbr_work( int matrix_layout, char vect, lapack_int m, - lapack_int n, lapack_int k, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunghr_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunghr_work( int matrix_layout, lapack_int n, lapack_int ilo, - lapack_int ihi, lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunglq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunglq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungql_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungql_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungrq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungrq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int k, lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungtr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungtr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cungtsqr_row_work( int matrix_layout, - lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zungtsqr_row_work( int matrix_layout, - lapack_int m, lapack_int n, - lapack_int mb, lapack_int nb, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmbr_work( int matrix_layout, char vect, char side, - char trans, lapack_int m, lapack_int n, - lapack_int k, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmbr_work( int matrix_layout, char vect, char side, - char trans, lapack_int m, lapack_int n, - lapack_int k, const lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmhr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmhr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int ilo, - lapack_int ihi, const lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmql_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmql_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmrq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmrq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmrz_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmrz_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, const lapack_complex_double* a, - lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cunmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zunmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_cupgtr_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* ap, - const lapack_complex_float* tau, - lapack_complex_float* q, lapack_int ldq, - lapack_complex_float* work ); -lapack_int LAPACKE_zupgtr_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* ap, - const lapack_complex_double* tau, - lapack_complex_double* q, lapack_int ldq, - lapack_complex_double* work ); - -lapack_int LAPACKE_cupmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const lapack_complex_float* ap, - const lapack_complex_float* tau, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work ); -lapack_int LAPACKE_zupmtr_work( int matrix_layout, char side, char uplo, - char trans, lapack_int m, lapack_int n, - const lapack_complex_double* ap, - const lapack_complex_double* tau, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work ); - -lapack_int LAPACKE_claghe( int matrix_layout, lapack_int n, lapack_int k, - const float* d, lapack_complex_float* a, - lapack_int lda, lapack_int* iseed ); -lapack_int LAPACKE_zlaghe( int matrix_layout, lapack_int n, lapack_int k, - const double* d, lapack_complex_double* a, - lapack_int lda, lapack_int* iseed ); - -lapack_int LAPACKE_slagsy( int matrix_layout, lapack_int n, lapack_int k, - const float* d, float* a, lapack_int lda, - lapack_int* iseed ); -lapack_int LAPACKE_dlagsy( int matrix_layout, lapack_int n, lapack_int k, - const double* d, double* a, lapack_int lda, - lapack_int* iseed ); -lapack_int LAPACKE_clagsy( int matrix_layout, lapack_int n, lapack_int k, - const float* d, lapack_complex_float* a, - lapack_int lda, lapack_int* iseed ); -lapack_int LAPACKE_zlagsy( int matrix_layout, lapack_int n, lapack_int k, - const double* d, lapack_complex_double* a, - lapack_int lda, lapack_int* iseed ); - -lapack_int LAPACKE_slapmr( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, float* x, lapack_int ldx, - lapack_int* k ); -lapack_int LAPACKE_dlapmr( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, double* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_clapmr( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, lapack_complex_float* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_zlapmr( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, lapack_complex_double* x, - lapack_int ldx, lapack_int* k ); - -lapack_int LAPACKE_slapmt( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, float* x, lapack_int ldx, - lapack_int* k ); -lapack_int LAPACKE_dlapmt( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, double* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_clapmt( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, lapack_complex_float* x, - lapack_int ldx, lapack_int* k ); -lapack_int LAPACKE_zlapmt( int matrix_layout, lapack_logical forwrd, - lapack_int m, lapack_int n, lapack_complex_double* x, - lapack_int ldx, lapack_int* k ); - -float LAPACKE_slapy2( float x, float y ); -double LAPACKE_dlapy2( double x, double y ); - -float LAPACKE_slapy3( float x, float y, float z ); -double LAPACKE_dlapy3( double x, double y, double z ); - -lapack_int LAPACKE_slartgp( float f, float g, float* cs, float* sn, float* r ); -lapack_int LAPACKE_dlartgp( double f, double g, double* cs, double* sn, - double* r ); - -lapack_int LAPACKE_slartgs( float x, float y, float sigma, float* cs, - float* sn ); -lapack_int LAPACKE_dlartgs( double x, double y, double sigma, double* cs, - double* sn ); - - -//LAPACK 3.3.0 -lapack_int LAPACKE_cbbcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, lapack_int m, - lapack_int p, lapack_int q, float* theta, float* phi, - lapack_complex_float* u1, lapack_int ldu1, - lapack_complex_float* u2, lapack_int ldu2, - lapack_complex_float* v1t, lapack_int ldv1t, - lapack_complex_float* v2t, lapack_int ldv2t, - float* b11d, float* b11e, float* b12d, float* b12e, - float* b21d, float* b21e, float* b22d, float* b22e ); -lapack_int LAPACKE_cbbcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - lapack_int m, lapack_int p, lapack_int q, - float* theta, float* phi, - lapack_complex_float* u1, lapack_int ldu1, - lapack_complex_float* u2, lapack_int ldu2, - lapack_complex_float* v1t, lapack_int ldv1t, - lapack_complex_float* v2t, lapack_int ldv2t, - float* b11d, float* b11e, float* b12d, - float* b12e, float* b21d, float* b21e, - float* b22d, float* b22e, float* rwork, - lapack_int lrwork ); -lapack_int LAPACKE_cheswapr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_cheswapr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_chetri2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_chetri2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_chetri2x( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, lapack_int nb ); -lapack_int LAPACKE_chetri2x_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work, lapack_int nb ); -lapack_int LAPACKE_chetrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chetrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work ); -lapack_int LAPACKE_csyconv( int matrix_layout, char uplo, char way, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, lapack_complex_float* e ); -lapack_int LAPACKE_csyconv_work( int matrix_layout, char uplo, char way, - lapack_int n, lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* e ); -lapack_int LAPACKE_csyswapr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_csyswapr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_csytri2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_csytri2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_csytri2x( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, lapack_int nb ); -lapack_int LAPACKE_csytri2x_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_float* work, lapack_int nb ); -lapack_int LAPACKE_csytrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work ); -lapack_int LAPACKE_cunbdb( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_float* x11, lapack_int ldx11, - lapack_complex_float* x12, lapack_int ldx12, - lapack_complex_float* x21, lapack_int ldx21, - lapack_complex_float* x22, lapack_int ldx22, - float* theta, float* phi, - lapack_complex_float* taup1, - lapack_complex_float* taup2, - lapack_complex_float* tauq1, - lapack_complex_float* tauq2 ); -lapack_int LAPACKE_cunbdb_work( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_float* x11, lapack_int ldx11, - lapack_complex_float* x12, lapack_int ldx12, - lapack_complex_float* x21, lapack_int ldx21, - lapack_complex_float* x22, lapack_int ldx22, - float* theta, float* phi, - lapack_complex_float* taup1, - lapack_complex_float* taup2, - lapack_complex_float* tauq1, - lapack_complex_float* tauq2, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_cuncsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_float* x11, lapack_int ldx11, - lapack_complex_float* x12, lapack_int ldx12, - lapack_complex_float* x21, lapack_int ldx21, - lapack_complex_float* x22, lapack_int ldx22, - float* theta, lapack_complex_float* u1, - lapack_int ldu1, lapack_complex_float* u2, - lapack_int ldu2, lapack_complex_float* v1t, - lapack_int ldv1t, lapack_complex_float* v2t, - lapack_int ldv2t ); -lapack_int LAPACKE_cuncsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - char signs, lapack_int m, lapack_int p, - lapack_int q, lapack_complex_float* x11, - lapack_int ldx11, lapack_complex_float* x12, - lapack_int ldx12, lapack_complex_float* x21, - lapack_int ldx21, lapack_complex_float* x22, - lapack_int ldx22, float* theta, - lapack_complex_float* u1, lapack_int ldu1, - lapack_complex_float* u2, lapack_int ldu2, - lapack_complex_float* v1t, lapack_int ldv1t, - lapack_complex_float* v2t, lapack_int ldv2t, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork ); -lapack_int LAPACKE_cuncsd2by1( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - lapack_complex_float* x11, lapack_int ldx11, - lapack_complex_float* x21, lapack_int ldx21, - float* theta, lapack_complex_float* u1, - lapack_int ldu1, lapack_complex_float* u2, - lapack_int ldu2, lapack_complex_float* v1t, lapack_int ldv1t ); -lapack_int LAPACKE_cuncsd2by1_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, - lapack_int q, lapack_complex_float* x11, lapack_int ldx11, - lapack_complex_float* x21, lapack_int ldx21, - float* theta, lapack_complex_float* u1, - lapack_int ldu1, lapack_complex_float* u2, - lapack_int ldu2, lapack_complex_float* v1t, - lapack_int ldv1t, lapack_complex_float* work, - lapack_int lwork, float* rwork, lapack_int lrwork, - lapack_int* iwork ); -lapack_int LAPACKE_dbbcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, lapack_int m, - lapack_int p, lapack_int q, double* theta, - double* phi, double* u1, lapack_int ldu1, double* u2, - lapack_int ldu2, double* v1t, lapack_int ldv1t, - double* v2t, lapack_int ldv2t, double* b11d, - double* b11e, double* b12d, double* b12e, - double* b21d, double* b21e, double* b22d, - double* b22e ); -lapack_int LAPACKE_dbbcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - lapack_int m, lapack_int p, lapack_int q, - double* theta, double* phi, double* u1, - lapack_int ldu1, double* u2, lapack_int ldu2, - double* v1t, lapack_int ldv1t, double* v2t, - lapack_int ldv2t, double* b11d, double* b11e, - double* b12d, double* b12e, double* b21d, - double* b21e, double* b22d, double* b22e, - double* work, lapack_int lwork ); -lapack_int LAPACKE_dorbdb( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - double* x11, lapack_int ldx11, double* x12, - lapack_int ldx12, double* x21, lapack_int ldx21, - double* x22, lapack_int ldx22, double* theta, - double* phi, double* taup1, double* taup2, - double* tauq1, double* tauq2 ); -lapack_int LAPACKE_dorbdb_work( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - double* x11, lapack_int ldx11, double* x12, - lapack_int ldx12, double* x21, lapack_int ldx21, - double* x22, lapack_int ldx22, double* theta, - double* phi, double* taup1, double* taup2, - double* tauq1, double* tauq2, double* work, - lapack_int lwork ); -lapack_int LAPACKE_dorcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - double* x11, lapack_int ldx11, double* x12, - lapack_int ldx12, double* x21, lapack_int ldx21, - double* x22, lapack_int ldx22, double* theta, - double* u1, lapack_int ldu1, double* u2, - lapack_int ldu2, double* v1t, lapack_int ldv1t, - double* v2t, lapack_int ldv2t ); -lapack_int LAPACKE_dorcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - char signs, lapack_int m, lapack_int p, - lapack_int q, double* x11, lapack_int ldx11, - double* x12, lapack_int ldx12, double* x21, - lapack_int ldx21, double* x22, lapack_int ldx22, - double* theta, double* u1, lapack_int ldu1, - double* u2, lapack_int ldu2, double* v1t, - lapack_int ldv1t, double* v2t, lapack_int ldv2t, - double* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_dorcsd2by1( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - double* x11, lapack_int ldx11, double* x21, lapack_int ldx21, - double* theta, double* u1, lapack_int ldu1, double* u2, - lapack_int ldu2, double* v1t, lapack_int ldv1t); -lapack_int LAPACKE_dorcsd2by1_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - double* x11, lapack_int ldx11, double* x21, lapack_int ldx21, - double* theta, double* u1, lapack_int ldu1, double* u2, - lapack_int ldu2, double* v1t, lapack_int ldv1t, - double* work, lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_dsyconv( int matrix_layout, char uplo, char way, lapack_int n, - double* a, lapack_int lda, const lapack_int* ipiv, double* e); -lapack_int LAPACKE_dsyconv_work( int matrix_layout, char uplo, char way, - lapack_int n, double* a, lapack_int lda, - const lapack_int* ipiv, double* e ); -lapack_int LAPACKE_dsyswapr( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int i1, - lapack_int i2 ); -lapack_int LAPACKE_dsyswapr_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int i1, - lapack_int i2 ); -lapack_int LAPACKE_dsytri2( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_dsytri2_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, - const lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_dsytri2x( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, const lapack_int* ipiv, - lapack_int nb ); -lapack_int LAPACKE_dsytri2x_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, - const lapack_int* ipiv, double* work, - lapack_int nb ); -lapack_int LAPACKE_dsytrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const lapack_int* ipiv, - double* b, lapack_int ldb, double* work ); -lapack_int LAPACKE_sbbcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, lapack_int m, - lapack_int p, lapack_int q, float* theta, float* phi, - float* u1, lapack_int ldu1, float* u2, - lapack_int ldu2, float* v1t, lapack_int ldv1t, - float* v2t, lapack_int ldv2t, float* b11d, - float* b11e, float* b12d, float* b12e, float* b21d, - float* b21e, float* b22d, float* b22e ); -lapack_int LAPACKE_sbbcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - lapack_int m, lapack_int p, lapack_int q, - float* theta, float* phi, float* u1, - lapack_int ldu1, float* u2, lapack_int ldu2, - float* v1t, lapack_int ldv1t, float* v2t, - lapack_int ldv2t, float* b11d, float* b11e, - float* b12d, float* b12e, float* b21d, - float* b21e, float* b22d, float* b22e, - float* work, lapack_int lwork ); -lapack_int LAPACKE_sorbdb( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, float* x11, - lapack_int ldx11, float* x12, lapack_int ldx12, - float* x21, lapack_int ldx21, float* x22, - lapack_int ldx22, float* theta, float* phi, - float* taup1, float* taup2, float* tauq1, - float* tauq2 ); -lapack_int LAPACKE_sorbdb_work( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - float* x11, lapack_int ldx11, float* x12, - lapack_int ldx12, float* x21, lapack_int ldx21, - float* x22, lapack_int ldx22, float* theta, - float* phi, float* taup1, float* taup2, - float* tauq1, float* tauq2, float* work, - lapack_int lwork ); -lapack_int LAPACKE_sorcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, float* x11, - lapack_int ldx11, float* x12, lapack_int ldx12, - float* x21, lapack_int ldx21, float* x22, - lapack_int ldx22, float* theta, float* u1, - lapack_int ldu1, float* u2, lapack_int ldu2, - float* v1t, lapack_int ldv1t, float* v2t, - lapack_int ldv2t ); -lapack_int LAPACKE_sorcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - char signs, lapack_int m, lapack_int p, - lapack_int q, float* x11, lapack_int ldx11, - float* x12, lapack_int ldx12, float* x21, - lapack_int ldx21, float* x22, lapack_int ldx22, - float* theta, float* u1, lapack_int ldu1, - float* u2, lapack_int ldu2, float* v1t, - lapack_int ldv1t, float* v2t, lapack_int ldv2t, - float* work, lapack_int lwork, - lapack_int* iwork ); -lapack_int LAPACKE_sorcsd2by1( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - float* x11, lapack_int ldx11, float* x21, lapack_int ldx21, - float* theta, float* u1, lapack_int ldu1, float* u2, - lapack_int ldu2, float* v1t, lapack_int ldv1t); -lapack_int LAPACKE_sorcsd2by1_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - float* x11, lapack_int ldx11, float* x21, lapack_int ldx21, - float* theta, float* u1, lapack_int ldu1, float* u2, - lapack_int ldu2, float* v1t, lapack_int ldv1t, - float* work, lapack_int lwork, lapack_int* iwork ); -lapack_int LAPACKE_ssyconv( int matrix_layout, char uplo, char way, lapack_int n, - float* a, lapack_int lda, const lapack_int* ipiv, float* e ); -lapack_int LAPACKE_ssyconv_work( int matrix_layout, char uplo, char way, - lapack_int n, float* a, lapack_int lda, - const lapack_int* ipiv, float* e ); -lapack_int LAPACKE_ssyswapr( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int i1, - lapack_int i2 ); -lapack_int LAPACKE_ssyswapr_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int i1, - lapack_int i2 ); -lapack_int LAPACKE_ssytri2( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, const lapack_int* ipiv ); -lapack_int LAPACKE_ssytri2_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, - const lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_ssytri2x( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, const lapack_int* ipiv, - lapack_int nb ); -lapack_int LAPACKE_ssytri2x_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, - const lapack_int* ipiv, float* work, - lapack_int nb ); -lapack_int LAPACKE_ssytrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssytrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, - lapack_int lda, const lapack_int* ipiv, - float* b, lapack_int ldb, float* work ); -lapack_int LAPACKE_zbbcsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, lapack_int m, - lapack_int p, lapack_int q, double* theta, - double* phi, lapack_complex_double* u1, - lapack_int ldu1, lapack_complex_double* u2, - lapack_int ldu2, lapack_complex_double* v1t, - lapack_int ldv1t, lapack_complex_double* v2t, - lapack_int ldv2t, double* b11d, double* b11e, - double* b12d, double* b12e, double* b21d, - double* b21e, double* b22d, double* b22e ); -lapack_int LAPACKE_zbbcsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - lapack_int m, lapack_int p, lapack_int q, - double* theta, double* phi, - lapack_complex_double* u1, lapack_int ldu1, - lapack_complex_double* u2, lapack_int ldu2, - lapack_complex_double* v1t, lapack_int ldv1t, - lapack_complex_double* v2t, lapack_int ldv2t, - double* b11d, double* b11e, double* b12d, - double* b12e, double* b21d, double* b21e, - double* b22d, double* b22e, double* rwork, - lapack_int lrwork ); -lapack_int LAPACKE_zheswapr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_zheswapr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_zhetri2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_zhetri2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_zhetri2x( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, lapack_int nb ); -lapack_int LAPACKE_zhetri2x_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work, lapack_int nb ); -lapack_int LAPACKE_zhetrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work ); -lapack_int LAPACKE_zsyconv( int matrix_layout, char uplo, char way, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, lapack_complex_double* e ); -lapack_int LAPACKE_zsyconv_work( int matrix_layout, char uplo, char way, - lapack_int n, lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* e ); -lapack_int LAPACKE_zsyswapr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_zsyswapr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int i1, lapack_int i2 ); -lapack_int LAPACKE_zsytri2( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv ); -lapack_int LAPACKE_zsytri2_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_zsytri2x( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, lapack_int nb ); -lapack_int LAPACKE_zsytri2x_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_int* ipiv, - lapack_complex_double* work, lapack_int nb ); -lapack_int LAPACKE_zsytrs2( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs2_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work ); -lapack_int LAPACKE_zunbdb( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_double* x11, lapack_int ldx11, - lapack_complex_double* x12, lapack_int ldx12, - lapack_complex_double* x21, lapack_int ldx21, - lapack_complex_double* x22, lapack_int ldx22, - double* theta, double* phi, - lapack_complex_double* taup1, - lapack_complex_double* taup2, - lapack_complex_double* tauq1, - lapack_complex_double* tauq2 ); -lapack_int LAPACKE_zunbdb_work( int matrix_layout, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_double* x11, lapack_int ldx11, - lapack_complex_double* x12, lapack_int ldx12, - lapack_complex_double* x21, lapack_int ldx21, - lapack_complex_double* x22, lapack_int ldx22, - double* theta, double* phi, - lapack_complex_double* taup1, - lapack_complex_double* taup2, - lapack_complex_double* tauq1, - lapack_complex_double* tauq2, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_zuncsd( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, char signs, - lapack_int m, lapack_int p, lapack_int q, - lapack_complex_double* x11, lapack_int ldx11, - lapack_complex_double* x12, lapack_int ldx12, - lapack_complex_double* x21, lapack_int ldx21, - lapack_complex_double* x22, lapack_int ldx22, - double* theta, lapack_complex_double* u1, - lapack_int ldu1, lapack_complex_double* u2, - lapack_int ldu2, lapack_complex_double* v1t, - lapack_int ldv1t, lapack_complex_double* v2t, - lapack_int ldv2t ); -lapack_int LAPACKE_zuncsd_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, char jobv2t, char trans, - char signs, lapack_int m, lapack_int p, - lapack_int q, lapack_complex_double* x11, - lapack_int ldx11, lapack_complex_double* x12, - lapack_int ldx12, lapack_complex_double* x21, - lapack_int ldx21, lapack_complex_double* x22, - lapack_int ldx22, double* theta, - lapack_complex_double* u1, lapack_int ldu1, - lapack_complex_double* u2, lapack_int ldu2, - lapack_complex_double* v1t, lapack_int ldv1t, - lapack_complex_double* v2t, lapack_int ldv2t, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork ); -lapack_int LAPACKE_zuncsd2by1( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, lapack_int q, - lapack_complex_double* x11, lapack_int ldx11, - lapack_complex_double* x21, lapack_int ldx21, - double* theta, lapack_complex_double* u1, - lapack_int ldu1, lapack_complex_double* u2, - lapack_int ldu2, lapack_complex_double* v1t, lapack_int ldv1t ); -lapack_int LAPACKE_zuncsd2by1_work( int matrix_layout, char jobu1, char jobu2, - char jobv1t, lapack_int m, lapack_int p, - lapack_int q, lapack_complex_double* x11, lapack_int ldx11, - lapack_complex_double* x21, lapack_int ldx21, - double* theta, lapack_complex_double* u1, - lapack_int ldu1, lapack_complex_double* u2, - lapack_int ldu2, lapack_complex_double* v1t, - lapack_int ldv1t, lapack_complex_double* work, - lapack_int lwork, double* rwork, lapack_int lrwork, - lapack_int* iwork ); - -//LAPACK 3.4.0 -lapack_int LAPACKE_sgemqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const float* v, lapack_int ldv, - const float* t, lapack_int ldt, float* c, - lapack_int ldc ); -lapack_int LAPACKE_dgemqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const double* v, lapack_int ldv, - const double* t, lapack_int ldt, double* c, - lapack_int ldc ); -lapack_int LAPACKE_cgemqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const lapack_complex_float* v, - lapack_int ldv, const lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* c, - lapack_int ldc ); -lapack_int LAPACKE_zgemqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const lapack_complex_double* v, - lapack_int ldv, const lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* c, - lapack_int ldc ); - -lapack_int LAPACKE_sgeqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, float* a, lapack_int lda, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dgeqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, double* a, lapack_int lda, double* t, - lapack_int ldt ); -lapack_int LAPACKE_cgeqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* t, - lapack_int ldt ); -lapack_int LAPACKE_zgeqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* t, - lapack_int ldt ); - -lapack_int LAPACKE_sgeqrt2( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dgeqrt2( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* t, - lapack_int ldt ); -lapack_int LAPACKE_cgeqrt2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zgeqrt2( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_sgeqrt3( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dgeqrt3( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* t, - lapack_int ldt ); -lapack_int LAPACKE_cgeqrt3( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zgeqrt3( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_stpmqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, const float* v, - lapack_int ldv, const float* t, lapack_int ldt, - float* a, lapack_int lda, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dtpmqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, const double* v, - lapack_int ldv, const double* t, lapack_int ldt, - double* a, lapack_int lda, double* b, - lapack_int ldb ); -lapack_int LAPACKE_ctpmqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztpmqrt( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_stpqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, float* a, - lapack_int lda, float* b, lapack_int ldb, float* t, - lapack_int ldt ); - -lapack_int LAPACKE_dtpqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, double* a, - lapack_int lda, double* b, lapack_int ldb, double* t, - lapack_int ldt ); -lapack_int LAPACKE_ctpqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_ztpqrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_stpqrt2( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - float* a, lapack_int lda, - float* b, lapack_int ldb, - float* t, lapack_int ldt ); -lapack_int LAPACKE_dtpqrt2( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - double* a, lapack_int lda, - double* b, lapack_int ldb, - double* t, lapack_int ldt ); -lapack_int LAPACKE_ctpqrt2( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_ztpqrt2( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_stprfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, lapack_int l, const float* v, - lapack_int ldv, const float* t, lapack_int ldt, - float* a, lapack_int lda, float* b, lapack_int ldb ); -lapack_int LAPACKE_dtprfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, lapack_int l, const double* v, - lapack_int ldv, const double* t, lapack_int ldt, - double* a, lapack_int lda, double* b, lapack_int ldb ); -lapack_int LAPACKE_ctprfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, lapack_int l, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_ztprfb( int matrix_layout, char side, char trans, char direct, - char storev, lapack_int m, lapack_int n, - lapack_int k, lapack_int l, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sgemqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const float* v, lapack_int ldv, - const float* t, lapack_int ldt, float* c, - lapack_int ldc, float* work ); -lapack_int LAPACKE_dgemqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const double* v, lapack_int ldv, - const double* t, lapack_int ldt, double* c, - lapack_int ldc, double* work ); -lapack_int LAPACKE_cgemqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const lapack_complex_float* v, - lapack_int ldv, const lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* c, - lapack_int ldc, lapack_complex_float* work ); -lapack_int LAPACKE_zgemqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int nb, const lapack_complex_double* v, - lapack_int ldv, const lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* c, - lapack_int ldc, lapack_complex_double* work ); - -lapack_int LAPACKE_sgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, float* a, lapack_int lda, - float* t, lapack_int ldt, float* work ); -lapack_int LAPACKE_dgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, double* a, lapack_int lda, - double* t, lapack_int ldt, double* work ); -lapack_int LAPACKE_cgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* work ); -lapack_int LAPACKE_zgeqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* work ); - -lapack_int LAPACKE_sgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* t, - lapack_int ldt ); -lapack_int LAPACKE_cgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zgeqrt2_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_sgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, float* t, - lapack_int ldt ); -lapack_int LAPACKE_dgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, double* t, - lapack_int ldt ); -lapack_int LAPACKE_cgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zgeqrt3_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_stpmqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, const float* v, - lapack_int ldv, const float* t, lapack_int ldt, - float* a, lapack_int lda, float* b, - lapack_int ldb, float* work ); -lapack_int LAPACKE_dtpmqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, const double* v, - lapack_int ldv, const double* t, - lapack_int ldt, double* a, lapack_int lda, - double* b, lapack_int ldb, double* work ); -lapack_int LAPACKE_ctpmqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work ); -lapack_int LAPACKE_ztpmqrt_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - lapack_int l, lapack_int nb, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work ); - -lapack_int LAPACKE_stpqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* t, lapack_int ldt, float* work ); -lapack_int LAPACKE_dtpqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* t, lapack_int ldt, double* work ); -lapack_int LAPACKE_ctpqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* work ); -lapack_int LAPACKE_ztpqrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int l, lapack_int nb, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* work ); - -lapack_int LAPACKE_stpqrt2_work( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - float* a, lapack_int lda, - float* b, lapack_int ldb, - float* t, lapack_int ldt ); -lapack_int LAPACKE_dtpqrt2_work( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - double* a, lapack_int lda, - double* b, lapack_int ldb, - double* t, lapack_int ldt ); -lapack_int LAPACKE_ctpqrt2_work( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_ztpqrt2_work( int matrix_layout, - lapack_int m, lapack_int n, lapack_int l, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_stprfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, lapack_int l, - const float* v, lapack_int ldv, const float* t, - lapack_int ldt, float* a, lapack_int lda, - float* b, lapack_int ldb, float* work, - lapack_int ldwork ); -lapack_int LAPACKE_dtprfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, lapack_int l, - const double* v, lapack_int ldv, - const double* t, lapack_int ldt, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* work, lapack_int ldwork ); -lapack_int LAPACKE_ctprfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, lapack_int l, - const lapack_complex_float* v, lapack_int ldv, - const lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int ldwork ); -lapack_int LAPACKE_ztprfb_work( int matrix_layout, char side, char trans, - char direct, char storev, lapack_int m, - lapack_int n, lapack_int k, lapack_int l, - const lapack_complex_double* v, lapack_int ldv, - const lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int ldwork ); -//LAPACK 3.X.X -lapack_int LAPACKE_ssysv_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsysv_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_csysv_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsysv_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_ssytrf_rook( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dsytrf_rook( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_csytrf_rook( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zsytrf_rook( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_ssytrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chetrf_rook( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zhetrf_rook( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_chetrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_rook( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_csyr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float alpha, - const lapack_complex_float* x, lapack_int incx, - lapack_complex_float* a, lapack_int lda ); -lapack_int LAPACKE_zsyr( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double alpha, - const lapack_complex_double* x, lapack_int incx, - lapack_complex_double* a, lapack_int lda ); - -lapack_int LAPACKE_ssysv_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsysv_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csysv_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zsysv_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_ssytrf_rook_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrf_rook_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytrf_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zsytrf_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_ssytrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, - lapack_int ldb ); -lapack_int LAPACKE_dsytrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const lapack_int* ipiv, - double* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_chetrf_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zhetrf_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_chetrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_rook_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); - - -lapack_int LAPACKE_csyr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float alpha, - const lapack_complex_float* x, - lapack_int incx, lapack_complex_float* a, - lapack_int lda ); -lapack_int LAPACKE_zsyr_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double alpha, - const lapack_complex_double* x, - lapack_int incx, lapack_complex_double* a, - lapack_int lda ); -void LAPACKE_ilaver( lapack_int* vers_major, - lapack_int* vers_minor, - lapack_int* vers_patch ); -// LAPACK 3.7.0 -lapack_int LAPACKE_ssysv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssysv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - lapack_int* ipiv, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsysv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_dsysv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - lapack_int* ipiv, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csysv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csysv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsysv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsysv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_chesv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chesv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhesv_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhesv_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssytrf_aa( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_dsytrf_aa( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, lapack_int* ipiv ); -lapack_int LAPACKE_csytrf_aa( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zsytrf_aa( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_chetrf_aa( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv ); -lapack_int LAPACKE_zhetrf_aa( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv ); - -lapack_int LAPACKE_ssytrf_aa_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrf_aa_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytrf_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zsytrf_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); -lapack_int LAPACKE_chetrf_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zhetrf_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - - -lapack_int LAPACKE_csytrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_chetrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chetrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const lapack_int* ipiv, - double* b, lapack_int ldb, double* work, lapack_int lwork ); -lapack_int LAPACKE_ssytrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssytrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const lapack_int* ipiv, float* b, - lapack_int ldb, float* work, lapack_int lwork ); -lapack_int LAPACKE_zsytrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork); -lapack_int LAPACKE_zhetrs_aa( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_aa_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork); - - -lapack_int LAPACKE_ssysv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* e, lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssysv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* e, lapack_int* ipiv, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsysv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* e, lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_dsysv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* e, lapack_int* ipiv, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csysv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csysv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsysv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsysv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_chesv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chesv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* e, lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhesv_rk( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhesv_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* e, lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssytrf_rk( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, float* e, lapack_int* ipiv ); -lapack_int LAPACKE_dsytrf_rk( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, double* e, lapack_int* ipiv ); -lapack_int LAPACKE_csytrf_rk( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* e, lapack_int* ipiv ); -lapack_int LAPACKE_zsytrf_rk( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* e, lapack_int* ipiv ); -lapack_int LAPACKE_chetrf_rk( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* e, lapack_int* ipiv ); -lapack_int LAPACKE_zhetrf_rk( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* e, lapack_int* ipiv ); -lapack_int LAPACKE_ssytrf_rk_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, float* e, lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrf_rk_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, double* e, lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytrf_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* e, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zsytrf_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* e, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); -lapack_int LAPACKE_chetrf_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* e, - lapack_int* ipiv, lapack_complex_float* work, - lapack_int lwork ); -lapack_int LAPACKE_zhetrf_rk_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* e, - lapack_int* ipiv, lapack_complex_double* work, - lapack_int lwork ); - -lapack_int LAPACKE_csytrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* e, - const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* e, - const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb); -lapack_int LAPACKE_chetrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* e, - const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chetrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_float* a, - lapack_int lda, const lapack_complex_float* e, - const lapack_int* ipiv, - lapack_complex_float* b, lapack_int ldb); -lapack_int LAPACKE_dsytrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, lapack_int lda, - const double* e, - const lapack_int* ipiv, double* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const double* a, - lapack_int lda, const double* e, - const lapack_int* ipiv, - double* b, lapack_int ldb); -lapack_int LAPACKE_ssytrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* e, - const lapack_int* ipiv, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssytrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const float* a, lapack_int lda, - const float* e, const lapack_int* ipiv, float* b, - lapack_int ldb); -lapack_int LAPACKE_zsytrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* e, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* e, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb); -lapack_int LAPACKE_zhetrs_3( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* e, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, const lapack_complex_double* a, - lapack_int lda, const lapack_complex_double* e, - const lapack_int* ipiv, - lapack_complex_double* b, lapack_int ldb); - -lapack_int LAPACKE_ssytri_3( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, const float* e, const lapack_int* ipiv ); -lapack_int LAPACKE_dsytri_3( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, const double* e, const lapack_int* ipiv ); -lapack_int LAPACKE_csytri_3( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, const lapack_int* ipiv ); -lapack_int LAPACKE_zsytri_3( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, const lapack_int* ipiv ); -lapack_int LAPACKE_chetri_3( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, const lapack_int* ipiv ); -lapack_int LAPACKE_zhetri_3( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, const lapack_int* ipiv ); -lapack_int LAPACKE_ssytri_3_work( int matrix_layout, char uplo, lapack_int n, float* a, - lapack_int lda, const float* e, const lapack_int* ipiv, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytri_3_work( int matrix_layout, char uplo, lapack_int n, double* a, - lapack_int lda, const double* e, const lapack_int* ipiv, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytri_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, const lapack_int* ipiv, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsytri_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, const lapack_int* ipiv, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_chetri_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, const lapack_int* ipiv, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhetri_3_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, const lapack_int* ipiv, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssycon_3( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, const float* e, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_dsycon_3( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, const double* e, - const lapack_int* ipiv, double anorm, - double* rcond ); -lapack_int LAPACKE_csycon_3( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zsycon_3( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, - const lapack_int* ipiv, double anorm, - double* rcond ); -lapack_int LAPACKE_checon_3( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, - const lapack_int* ipiv, float anorm, float* rcond ); -lapack_int LAPACKE_zhecon_3( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, - const lapack_int* ipiv, double anorm, - double* rcond ); -lapack_int LAPACKE_ssycon_3_work( int matrix_layout, char uplo, lapack_int n, - const float* a, lapack_int lda, const float* e, - const lapack_int* ipiv, float anorm, - float* rcond, float* work, lapack_int* iwork ); -lapack_int LAPACKE_dsycon_3_work( int matrix_layout, char uplo, lapack_int n, - const double* a, lapack_int lda, const double* e, - const lapack_int* ipiv, double anorm, - double* rcond, double* work, - lapack_int* iwork ); -lapack_int LAPACKE_csycon_3_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zsycon_3_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); -lapack_int LAPACKE_checon_3_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* e, - const lapack_int* ipiv, float anorm, - float* rcond, lapack_complex_float* work ); -lapack_int LAPACKE_zhecon_3_work( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* e, - const lapack_int* ipiv, double anorm, - double* rcond, lapack_complex_double* work ); - -lapack_int LAPACKE_sgelq( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, - float* t, lapack_int tsize ); -lapack_int LAPACKE_dgelq( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, - double* t, lapack_int tsize ); -lapack_int LAPACKE_cgelq( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int tsize ); -lapack_int LAPACKE_zgelq( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int tsize ); - -lapack_int LAPACKE_sgelq_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, - float* t, lapack_int tsize, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgelq_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, - double* t, lapack_int tsize, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgelq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgelq_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgemlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* t, lapack_int tsize, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dgemlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* t, lapack_int tsize, - double* c, lapack_int ldc ); -lapack_int LAPACKE_cgemlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zgemlq( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_sgemlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* t, lapack_int tsize, - float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgemlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* t, lapack_int tsize, - double* c, lapack_int ldc, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgemlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgemlq_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgeqr( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, - float* t, lapack_int tsize ); -lapack_int LAPACKE_dgeqr( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, - double* t, lapack_int tsize ); -lapack_int LAPACKE_cgeqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int tsize ); -lapack_int LAPACKE_zgeqr( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int tsize ); - -lapack_int LAPACKE_sgeqr_work( int matrix_layout, lapack_int m, lapack_int n, - float* a, lapack_int lda, - float* t, lapack_int tsize, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgeqr_work( int matrix_layout, lapack_int m, lapack_int n, - double* a, lapack_int lda, - double* t, lapack_int tsize, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgeqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgeqr_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgemqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* t, lapack_int tsize, - float* c, lapack_int ldc ); -lapack_int LAPACKE_dgemqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* t, lapack_int tsize, - double* c, lapack_int ldc ); -lapack_int LAPACKE_cgemqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* c, lapack_int ldc ); -lapack_int LAPACKE_zgemqr( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* c, lapack_int ldc ); - -lapack_int LAPACKE_sgemqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const float* a, lapack_int lda, - const float* t, lapack_int tsize, - float* c, lapack_int ldc, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgemqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const double* a, lapack_int lda, - const double* t, lapack_int tsize, - double* c, lapack_int ldc, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgemqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_float* a, lapack_int lda, - const lapack_complex_float* t, lapack_int tsize, - lapack_complex_float* c, lapack_int ldc, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgemqr_work( int matrix_layout, char side, char trans, - lapack_int m, lapack_int n, lapack_int k, - const lapack_complex_double* a, lapack_int lda, - const lapack_complex_double* t, lapack_int tsize, - lapack_complex_double* c, lapack_int ldc, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgetsls( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* b, lapack_int ldb ); -lapack_int LAPACKE_dgetsls( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* b, lapack_int ldb ); -lapack_int LAPACKE_cgetsls( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zgetsls( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb ); - -lapack_int LAPACKE_sgetsls_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgetsls_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgetsls_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgetsls_work( int matrix_layout, char trans, lapack_int m, - lapack_int n, lapack_int nrhs, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_sgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - float* a, lapack_int lda, - float* t, lapack_int ldt ); -lapack_int LAPACKE_dgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - double* a, lapack_int lda, - double* t, lapack_int ldt ); -lapack_int LAPACKE_cgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt ); -lapack_int LAPACKE_zgetsqrhrt( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt ); - -lapack_int LAPACKE_sgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - float* a, lapack_int lda, - float* t, lapack_int ldt, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - double* a, lapack_int lda, - double* t, lapack_int ldt, - double* work, lapack_int lwork ); -lapack_int LAPACKE_cgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - lapack_complex_float* a, lapack_int lda, - lapack_complex_float* t, lapack_int ldt, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zgetsqrhrt_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int mb1, lapack_int nb1, lapack_int nb2, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* t, lapack_int ldt, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssyev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_dsyev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_ssyevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_dsyevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_ssyevr_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, float* a, lapack_int lda, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_dsyevr_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, double* a, lapack_int lda, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz ); - -lapack_int LAPACKE_ssyevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, float* a, lapack_int lda, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsyevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, double* a, lapack_int lda, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssyev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* a, lapack_int lda, float* w, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsyev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* a, lapack_int lda, - double* w, double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssyevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, float* a, lapack_int lda, - float* w, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsyevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, double* a, lapack_int lda, - double* w, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssyevr_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, lapack_int* isuppz, float* work, - lapack_int lwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_dsyevr_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* isuppz, - double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssyevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, float* a, - lapack_int lda, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_dsyevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, double* a, - lapack_int lda, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_cheev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_zheev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, double* w ); - -lapack_int LAPACKE_cheevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, float* w ); -lapack_int LAPACKE_zheevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double* w ); - -lapack_int LAPACKE_cheevr_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* isuppz ); -lapack_int LAPACKE_zheevr_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, lapack_int ldz, - lapack_int* isuppz ); - -lapack_int LAPACKE_cheevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, float* w, - lapack_complex_float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_zheevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_cheev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zheev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* w, - lapack_complex_double* work, lapack_int lwork, - double* rwork ); - -lapack_int LAPACKE_cheevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_float* a, - lapack_int lda, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_zheevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_complex_double* a, - lapack_int lda, double* w, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_cheevr_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* isuppz, - lapack_complex_float* work, lapack_int lwork, - float* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_zheevr_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_int* isuppz, - lapack_complex_double* work, lapack_int lwork, - double* rwork, lapack_int lrwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_cheevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_float* a, lapack_int lda, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int* iwork, lapack_int* ifail ); -lapack_int LAPACKE_zheevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int* iwork, lapack_int* ifail ); - -lapack_int LAPACKE_ssbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab, float* w, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab, double* w, - double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, float* ab, lapack_int ldab, float* w, - float* z, lapack_int ldz ); -lapack_int LAPACKE_dsbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, double* ab, lapack_int ldab, - double* w, double* z, lapack_int ldz ); - -lapack_int LAPACKE_ssbevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, lapack_int ldz, - lapack_int* ifail ); -lapack_int LAPACKE_dsbevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* q, lapack_int ldq, - double vl, double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, double* z, - lapack_int ldz, lapack_int* ifail ); - -lapack_int LAPACKE_ssbev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork ); -lapack_int LAPACKE_dsbev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssbevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, float* ab, - lapack_int ldab, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); -lapack_int LAPACKE_dsbevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, double* ab, - lapack_int ldab, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, - lapack_int* iwork, lapack_int liwork ); - -lapack_int LAPACKE_ssbevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - float* ab, lapack_int ldab, float* q, - lapack_int ldq, float vl, float vu, - lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, float* z, - lapack_int ldz, float* work, lapack_int lwork, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_dsbevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - double* ab, lapack_int ldab, double* q, - lapack_int ldq, double vl, double vu, - lapack_int il, lapack_int iu, double abstol, - lapack_int* m, double* w, double* z, - lapack_int ldz, double* work, lapack_int lwork, lapack_int* iwork, - lapack_int* ifail ); - -lapack_int LAPACKE_chbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab, float* w, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhbev_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab, double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_chbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_float* ab, - lapack_int ldab, float* w, lapack_complex_float* z, - lapack_int ldz ); -lapack_int LAPACKE_zhbevd_2stage( int matrix_layout, char jobz, char uplo, lapack_int n, - lapack_int kd, lapack_complex_double* ab, - lapack_int ldab, double* w, lapack_complex_double* z, - lapack_int ldz ); - -lapack_int LAPACKE_chbevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* q, lapack_int ldq, float vl, - float vu, lapack_int il, lapack_int iu, float abstol, - lapack_int* m, float* w, lapack_complex_float* z, - lapack_int ldz, lapack_int* ifail ); -lapack_int LAPACKE_zhbevx_2stage( int matrix_layout, char jobz, char range, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* q, lapack_int ldq, double vl, - double vu, lapack_int il, lapack_int iu, - double abstol, lapack_int* m, double* w, - lapack_complex_double* z, lapack_int ldz, - lapack_int* ifail ); - -lapack_int LAPACKE_chbev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork ); -lapack_int LAPACKE_zhbev_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -lapack_int LAPACKE_chbevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); -lapack_int LAPACKE_zhbevd_2stage_work( int matrix_layout, char jobz, char uplo, - lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, - lapack_int lrwork, lapack_int* iwork, - lapack_int liwork ); - -lapack_int LAPACKE_chbevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - lapack_complex_float* ab, lapack_int ldab, - lapack_complex_float* q, lapack_int ldq, - float vl, float vu, lapack_int il, - lapack_int iu, float abstol, lapack_int* m, - float* w, lapack_complex_float* z, - lapack_int ldz, lapack_complex_float* work, - lapack_int lwork, float* rwork, lapack_int* iwork, - lapack_int* ifail ); -lapack_int LAPACKE_zhbevx_2stage_work( int matrix_layout, char jobz, char range, - char uplo, lapack_int n, lapack_int kd, - lapack_complex_double* ab, lapack_int ldab, - lapack_complex_double* q, lapack_int ldq, - double vl, double vu, lapack_int il, - lapack_int iu, double abstol, lapack_int* m, - double* w, lapack_complex_double* z, - lapack_int ldz, lapack_complex_double* work, - lapack_int lwork, double* rwork, lapack_int* iwork, - lapack_int* ifail ); - -lapack_int LAPACKE_ssygv_2stage( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, lapack_int lda, - float* b, lapack_int ldb, float* w ); -lapack_int LAPACKE_dsygv_2stage( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, lapack_int lda, - double* b, lapack_int ldb, double* w ); -lapack_int LAPACKE_ssygv_2stage_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, float* a, - lapack_int lda, float* b, lapack_int ldb, - float* w, float* work, lapack_int lwork ); -lapack_int LAPACKE_dsygv_2stage_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, double* a, - lapack_int lda, double* b, lapack_int ldb, - double* w, double* work, lapack_int lwork ); - -lapack_int LAPACKE_chegv_2stage( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* w ); -lapack_int LAPACKE_zhegv_2stage( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* b, - lapack_int ldb, double* w ); -lapack_int LAPACKE_chegv_2stage_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* b, - lapack_int ldb, float* w, - lapack_complex_float* work, lapack_int lwork, - float* rwork ); -lapack_int LAPACKE_zhegv_2stage_work( int matrix_layout, lapack_int itype, char jobz, - char uplo, lapack_int n, - lapack_complex_double* a, lapack_int lda, - lapack_complex_double* b, lapack_int ldb, - double* w, lapack_complex_double* work, - lapack_int lwork, double* rwork ); - -//LAPACK 3.8.0 -lapack_int LAPACKE_ssysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2, float* b, lapack_int ldb, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2, - double* b, lapack_int ldb ); -lapack_int LAPACKE_dsysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2, - double* b, lapack_int ldb, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsysv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsysv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_chesv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chesv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhesv_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhesv_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb, - lapack_complex_double* work, lapack_int lwork ); - -lapack_int LAPACKE_ssytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2 ); -lapack_int LAPACKE_ssytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2, - float* work, lapack_int lwork ); -lapack_int LAPACKE_dsytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2 ); -lapack_int LAPACKE_dsytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2, - double* work, lapack_int lwork ); -lapack_int LAPACKE_csytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); -lapack_int LAPACKE_csytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zsytrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); -lapack_int LAPACKE_zsytrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* work, lapack_int lwork ); -lapack_int LAPACKE_chetrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); -lapack_int LAPACKE_chetrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* work, lapack_int lwork ); -lapack_int LAPACKE_zhetrf_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2 ); -lapack_int LAPACKE_zhetrf_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* work, lapack_int lwork ); - - -lapack_int LAPACKE_ssytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2, float* b, lapack_int ldb ); -lapack_int LAPACKE_ssytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, float* a, lapack_int lda, - float* tb, lapack_int ltb, lapack_int* ipiv, - lapack_int* ipiv2, float* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2, - double* b, lapack_int ldb ); -lapack_int LAPACKE_dsytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, double* a, lapack_int lda, - double* tb, lapack_int ltb, - lapack_int* ipiv, lapack_int* ipiv2, - double* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_csytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zsytrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_chetrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_chetrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_float* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_aa_2stage( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -lapack_int LAPACKE_zhetrs_aa_2stage_work( int matrix_layout, char uplo, lapack_int n, - lapack_int nrhs, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* tb, - lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2, - lapack_complex_double* b, lapack_int ldb ); -//LAPACK 3.10.0 -lapack_int LAPACKE_sorhr_col( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, float* a, - lapack_int lda, float* t, - lapack_int ldt, float* d ); -lapack_int LAPACKE_sorhr_col_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, float* a, - lapack_int lda, float* t, - lapack_int ldt, float* d ); -lapack_int LAPACKE_dorhr_col( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, double* a, - lapack_int lda, double* t, - lapack_int ldt, double* d ); -lapack_int LAPACKE_dorhr_col_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, double* a, - lapack_int lda, double* t, - lapack_int ldt, double* d ); -lapack_int LAPACKE_cunhr_col( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* d ); -lapack_int LAPACKE_cunhr_col_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_float* a, - lapack_int lda, lapack_complex_float* t, - lapack_int ldt, lapack_complex_float* d ); -lapack_int LAPACKE_zunhr_col( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* d ); -lapack_int LAPACKE_zunhr_col_work( int matrix_layout, lapack_int m, lapack_int n, - lapack_int nb, lapack_complex_double* a, - lapack_int lda, lapack_complex_double* t, - lapack_int ldt, lapack_complex_double* d ); - -/* APIs for set/get nancheck flags */ -void LAPACKE_set_nancheck( int flag ); -int LAPACKE_get_nancheck( void ); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _LAPACKE_H_ */ diff --git a/install/include/lapacke_config.h b/install/include/lapacke_config.h deleted file mode 100644 index a8679dfa26..0000000000 --- a/install/include/lapacke_config.h +++ /dev/null @@ -1,159 +0,0 @@ -/***************************************************************************** - Copyright (c) 2010, Intel Corp. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. -****************************************************************************** -* Contents: Native C interface to LAPACK -* Author: Intel Corporation -*****************************************************************************/ - -#ifndef _LAPACKE_CONFIG_H_ -#define _LAPACKE_CONFIG_H_ - -#ifdef __cplusplus -#if defined(LAPACK_COMPLEX_CPP) -#include -#endif -extern "C" { -#endif /* __cplusplus */ - -#include -#include -#include - -#ifndef lapack_int -#if defined(LAPACK_ILP64) -#define lapack_int int64_t -#else -#define lapack_int int32_t -#endif -#endif - -/* - * Integer format string - */ -#ifndef LAPACK_IFMT -#if defined(LAPACK_ILP64) -#define LAPACK_IFMT PRId64 -#else -#define LAPACK_IFMT PRId32 -#endif -#endif - -#ifndef lapack_logical -#define lapack_logical lapack_int -#endif - -#if defined(_MSC_VER) && defined(__INTEL_CLANG_COMPILER) -#define LAPACK_COMPLEX_STRUCTURE -#define LAPACK_GLOBAL(lcname,UCNAME) lcname -#define NOCHANGE -#endif - -#ifndef LAPACK_COMPLEX_CUSTOM -#if defined(_MSC_VER) && !defined(__INTEL_CLANG_COMPILER) -#if defined(LAPACK_COMPLEX_CPP) - #include - #define lapack_complex_float std::complex - #define lapack_complex_double std::complex - #define lapack_complex_float_real(z) ((z).real()) - #define lapack_complex_float_imag(z) ((z).imag()) - #define lapack_complex_double_real(z) ((z).real()) - #define lapack_complex_double_imag(z) ((z).imag()) - #define _CRT_USE_C_COMPLEX_H -#else - #include - #define LAPACK_COMPLEX_CUSTOM - #define lapack_complex_float _Fcomplex - #define lapack_complex_double _Dcomplex - #define lapack_complex_float_real(z) (creal(z)) - #define lapack_complex_float_imag(z) (cimag(z)) - #define lapack_complex_double_real(z) (creal(z)) - #define lapack_complex_double_imag(z) (cimag(z)) -#endif -#else - -#if defined(LAPACK_COMPLEX_STRUCTURE) - -typedef struct { float real, imag; } _lapack_complex_float; -typedef struct { double real, imag; } _lapack_complex_double; -#define lapack_complex_float _lapack_complex_float -#define lapack_complex_double _lapack_complex_double -#define lapack_complex_float_real(z) ((z).real) -#define lapack_complex_float_imag(z) ((z).imag) -#define lapack_complex_double_real(z) ((z).real) -#define lapack_complex_double_imag(z) ((z).imag) - -#elif defined(LAPACK_COMPLEX_C99) - -#include -#define lapack_complex_float float _Complex -#define lapack_complex_double double _Complex -#define lapack_complex_float_real(z) (creal(z)) -#define lapack_complex_float_imag(z) (cimag(z)) -#define lapack_complex_double_real(z) (creal(z)) -#define lapack_complex_double_imag(z) (cimag(z)) - -#elif defined(LAPACK_COMPLEX_CPP) - -#define lapack_complex_float std::complex -#define lapack_complex_double std::complex -#define lapack_complex_float_real(z) ((z).real()) -#define lapack_complex_float_imag(z) ((z).imag()) -#define lapack_complex_double_real(z) ((z).real()) -#define lapack_complex_double_imag(z) ((z).imag()) - -#else - -#include -#define lapack_complex_float float _Complex -#define lapack_complex_double double _Complex -#define lapack_complex_float_real(z) (creal(z)) -#define lapack_complex_float_imag(z) (cimag(z)) -#define lapack_complex_double_real(z) (creal(z)) -#define lapack_complex_double_imag(z) (cimag(z)) - -#endif -#endif - -lapack_complex_float lapack_make_complex_float( float re, float im ); -lapack_complex_double lapack_make_complex_double( double re, double im ); - -#endif - -#ifndef LAPACK_malloc -#define LAPACK_malloc( size ) malloc( size ) -#endif - -#ifndef LAPACK_free -#define LAPACK_free( p ) free( p ) -#endif - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _LAPACKE_CONFIG_H_ */ diff --git a/install/include/lapacke_mangling.h b/install/include/lapacke_mangling.h deleted file mode 100644 index 6211fd144d..0000000000 --- a/install/include/lapacke_mangling.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef LAPACK_HEADER_INCLUDED -#define LAPACK_HEADER_INCLUDED - -#ifndef LAPACK_GLOBAL -#if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) -#define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ -#elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) -#define LAPACK_GLOBAL(lcname,UCNAME) UCNAME -#elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) -#define LAPACK_GLOBAL(lcname,UCNAME) lcname -#else -#define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ -#endif -#endif - -#endif - diff --git a/install/include/lapacke_utils.h b/install/include/lapacke_utils.h deleted file mode 100644 index 332a5024fb..0000000000 --- a/install/include/lapacke_utils.h +++ /dev/null @@ -1,612 +0,0 @@ -/***************************************************************************** - Copyright (c) 2014, Intel Corp. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Intel Corporation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. -****************************************************************************** -* Contents: Native C interface to LAPACK utility functions -* Author: Intel Corporation -*****************************************************************************/ - -#ifndef _LAPACKE_UTILS_H_ -#define _LAPACKE_UTILS_H_ - -#include "lapacke.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifndef ABS -#define ABS(x) (((x) < 0) ? -(x) : (x)) -#endif -#ifndef MAX -#define MAX(x,y) (((x) > (y)) ? (x) : (y)) -#endif -#ifndef MIN -#define MIN(x,y) (((x) < (y)) ? (x) : (y)) -#endif -#ifndef MAX3 -#define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) -#endif -#ifndef MIN3 -#define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) -#endif - -#define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) -#define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) -#define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ - IS_S_NONZERO(*(((float*)&x)+1)) ) -#define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ - IS_D_NONZERO(*(((double*)&x)+1)) ) - -/* Error handler */ -void LAPACKE_xerbla( const char *name, lapack_int info ); - -/* Compare two chars (case-insensitive) */ -lapack_logical LAPACKE_lsame( char ca, char cb ) -#if defined __GNUC__ - __attribute__((const)) -#endif - ; - -/* Functions to convert column-major to row-major 2d arrays and vice versa. */ -void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* in, lapack_int ldin, - lapack_complex_float* out, lapack_int ldout ); -void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_float* in, lapack_int ldin, - lapack_complex_float* out, lapack_int ldout ); -void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_chs_trans( int matrix_layout, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag, - lapack_int n, const lapack_complex_float *in, - lapack_complex_float *out ); -void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); -void LAPACKE_ctz_trans( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_float *in, lapack_int ldin, - lapack_complex_float *out, lapack_int ldout ); - -void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n, - const double* in, lapack_int ldin, - double* out, lapack_int ldout ); -void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n, - const double* in, lapack_int ldin, - double* out, lapack_int ldout ); -void LAPACKE_dhs_trans( int matrix_layout, lapack_int n, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo, - lapack_int n, const double *in, - double *out ); -void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n, - const double *in, - double *out ); -void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n, - const double *in, - double *out ); -void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, const double *in, - double *out ); -void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag, - lapack_int n, const double *in, - double *out ); -void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); -void LAPACKE_dtz_trans( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const double *in, lapack_int ldin, - double *out, lapack_int ldout ); - -void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n, - const float* in, lapack_int ldin, - float* out, lapack_int ldout ); -void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n, - const float* in, lapack_int ldin, - float* out, lapack_int ldout ); -void LAPACKE_shs_trans( int matrix_layout, lapack_int n, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo, - lapack_int n, const float *in, - float *out ); -void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n, - const float *in, - float *out ); -void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n, - const float *in, - float *out ); -void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, const float *in, - float *out ); -void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag, - lapack_int n, const float *in, - float *out ); -void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); -void LAPACKE_stz_trans( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const float *in, lapack_int ldin, - float *out, lapack_int ldout ); - -void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n, - lapack_int kl, lapack_int ku, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* in, lapack_int ldin, - lapack_complex_double* out, lapack_int ldout ); -void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n, - const lapack_complex_double* in, lapack_int ldin, - lapack_complex_double* out, lapack_int ldout ); -void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_zhs_trans( int matrix_layout, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n, - lapack_int kd, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo, - lapack_int n, const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_zpo_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag, - lapack_int n, const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag, - lapack_int n, const lapack_complex_double *in, - lapack_complex_double *out ); -void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); -void LAPACKE_ztz_trans( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_double *in, lapack_int ldin, - lapack_complex_double *out, lapack_int ldout ); - -/* NaN checkers */ -#define LAPACK_SISNAN( x ) ( x != x ) -#define LAPACK_DISNAN( x ) ( x != x ) -#define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ - LAPACK_SISNAN(*(((float*) &x)+1)) ) -#define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ - LAPACK_DISNAN(*(((double*)&x)+1)) ) - -/* NaN checkers for vectors */ -lapack_logical LAPACKE_c_nancheck( lapack_int n, - const lapack_complex_float *x, - lapack_int incx ); -lapack_logical LAPACKE_d_nancheck( lapack_int n, - const double *x, - lapack_int incx ); -lapack_logical LAPACKE_s_nancheck( lapack_int n, - const float *x, - lapack_int incx ); -lapack_logical LAPACKE_z_nancheck( lapack_int n, - const lapack_complex_double *x, - lapack_int incx ); -/* NaN checkers for matrices */ -lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m, - lapack_int n, lapack_int kl, - lapack_int ku, - const lapack_complex_float *ab, - lapack_int ldab ); -lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_cgt_nancheck( lapack_int n, - const lapack_complex_float *dl, - const lapack_complex_float *d, - const lapack_complex_float *du ); -lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const lapack_complex_float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_chp_nancheck( lapack_int n, - const lapack_complex_float *ap ); -lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const lapack_complex_float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_cpf_nancheck( lapack_int n, - const lapack_complex_float *a ); -lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_cpp_nancheck( lapack_int n, - const lapack_complex_float *ap ); -lapack_logical LAPACKE_cpt_nancheck( lapack_int n, - const float *d, - const lapack_complex_float *e ); -lapack_logical LAPACKE_csp_nancheck( lapack_int n, - const lapack_complex_float *ap ); -lapack_logical LAPACKE_cst_nancheck( lapack_int n, - const lapack_complex_float *d, - const lapack_complex_float *e ); -lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr, - char uplo, char diag, - lapack_int n, - const lapack_complex_float *a ); -lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const lapack_complex_float *ap ); -lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); -lapack_logical LAPACKE_ctz_nancheck( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_float *a, - lapack_int lda ); - -lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m, - lapack_int n, lapack_int kl, - lapack_int ku, - const double *ab, - lapack_int ldab ); -lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dgt_nancheck( lapack_int n, - const double *dl, - const double *d, - const double *du ); -lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_dpf_nancheck( lapack_int n, - const double *a ); -lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo, - lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dpp_nancheck( lapack_int n, - const double *ap ); -lapack_logical LAPACKE_dpt_nancheck( lapack_int n, - const double *d, - const double *e ); -lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_dsp_nancheck( lapack_int n, - const double *ap ); -lapack_logical LAPACKE_dst_nancheck( lapack_int n, - const double *d, - const double *e ); -lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo, - lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr, - char uplo, char diag, - lapack_int n, - const double *a ); -lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const double *ap ); -lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const double *a, - lapack_int lda ); -lapack_logical LAPACKE_dtz_nancheck( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const double *a, lapack_int lda ); - -lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m, - lapack_int n, lapack_int kl, - lapack_int ku, - const float *ab, - lapack_int ldab ); -lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_sgt_nancheck( lapack_int n, - const float *dl, - const float *d, - const float *du ); -lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_spf_nancheck( lapack_int n, - const float *a ); -lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo, - lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_spp_nancheck( lapack_int n, - const float *ap ); -lapack_logical LAPACKE_spt_nancheck( lapack_int n, - const float *d, - const float *e ); -lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_ssp_nancheck( lapack_int n, - const float *ap ); -lapack_logical LAPACKE_sst_nancheck( lapack_int n, - const float *d, - const float *e ); -lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo, - lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const float* ab, - lapack_int ldab ); -lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr, - char uplo, char diag, - lapack_int n, - const float *a ); -lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const float *ap ); -lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const float *a, - lapack_int lda ); -lapack_logical LAPACKE_stz_nancheck( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const float *a, lapack_int lda ); - -lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m, - lapack_int n, lapack_int kl, - lapack_int ku, - const lapack_complex_double *ab, - lapack_int ldab ); -lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_zgt_nancheck( lapack_int n, - const lapack_complex_double *dl, - const lapack_complex_double *d, - const lapack_complex_double *du ); -lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const lapack_complex_double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_zhp_nancheck( lapack_int n, - const lapack_complex_double *ap ); -lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo, - lapack_int n, lapack_int kd, - const lapack_complex_double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_zpf_nancheck( lapack_int n, - const lapack_complex_double *a ); -lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_zpp_nancheck( lapack_int n, - const lapack_complex_double *ap ); -lapack_logical LAPACKE_zpt_nancheck( lapack_int n, - const double *d, - const lapack_complex_double *e ); -lapack_logical LAPACKE_zsp_nancheck( lapack_int n, - const lapack_complex_double *ap ); -lapack_logical LAPACKE_zst_nancheck( lapack_int n, - const lapack_complex_double *d, - const lapack_complex_double *e ); -lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, lapack_int kd, - const lapack_complex_double* ab, - lapack_int ldab ); -lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr, - char uplo, char diag, - lapack_int n, - const lapack_complex_double *a ); -lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const lapack_complex_double *ap ); -lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag, - lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); -lapack_logical LAPACKE_ztz_nancheck( int matrix_layout, char direct, char uplo, - char diag, lapack_int m, lapack_int n, - const lapack_complex_double *a, - lapack_int lda ); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _LAPACKE_UTILS_H_ */ diff --git a/install/include/openblas_config.h b/install/include/openblas_config.h deleted file mode 100644 index 4799973052..0000000000 --- a/install/include/openblas_config.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef OPENBLAS_CONFIG_H -#define OPENBLAS_CONFIG_H -#define OPENBLAS_OS_LINUX 1 -#define OPENBLAS_ARCH_RISCV64 1 -#define OPENBLAS_C_GCC 1 -#define OPENBLAS___64BIT__ 1 -#define OPENBLAS_HAVE_C11 1 -#define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create -#define OPENBLAS_BUNDERSCORE _ -#define OPENBLAS_NEEDBUNDERSCORE 1 -#define OPENBLAS_RISCV64_ZVL128B -#define OPENBLAS_L1_DATA_SIZE 32768 -#define OPENBLAS_L1_DATA_LINESIZE 32 -#define OPENBLAS_L2_SIZE 1048576 -#define OPENBLAS_L2_LINESIZE 32 -#define OPENBLAS_DTB_DEFAULT_ENTRIES 128 -#define OPENBLAS_DTB_SIZE 4096 -#define OPENBLAS_L2_ASSOCIATIVE 4 -#define OPENBLAS_CORE_RISCV64_ZVL128B -#define OPENBLAS_CHAR_CORENAME "RISCV64_ZVL128B" -#define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 -#define OPENBLAS_VERSION " OpenBLAS 0.3.29.dev " -/*This is only for "make install" target.*/ - -#if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) -#define OPENBLAS_WINDOWS_ABI -#define OPENBLAS_OS_WINDOWS - -#ifdef DOUBLE -#define DOUBLE_DEFINED DOUBLE -#undef DOUBLE -#endif -#endif - -#ifdef OPENBLAS_NEEDBUNDERSCORE -#define BLASFUNC(FUNC) FUNC##_ -#else -#define BLASFUNC(FUNC) FUNC -#endif - -#ifdef OPENBLAS_QUAD_PRECISION -typedef struct { - unsigned long x[2]; -} xdouble; -#elif defined OPENBLAS_EXPRECISION -#define xdouble long double -#else -#define xdouble double -#endif - -#if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) -typedef long long BLASLONG; -typedef unsigned long long BLASULONG; -#else -typedef long BLASLONG; -typedef unsigned long BLASULONG; -#endif - -#ifndef BFLOAT16 -#include -typedef uint16_t bfloat16; -#endif - -#if defined(__GNUC__) && (__GNUC__ >= 12) -typedef _Float16 hfloat16; -#else -#include -typedef uint16_t hfloat16; -#endif - -#ifdef OPENBLAS_USE64BITINT -typedef BLASLONG blasint; -#else -typedef int blasint; -#endif - -#if defined(XDOUBLE) || defined(DOUBLE) -#define FLOATRET FLOAT -#else -#ifdef NEED_F2CCONV -#define FLOATRET double -#else -#define FLOATRET float -#endif -#endif - -/* Inclusion of a standard header file is needed for definition of __STDC_* - predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs - as a side effect of including either or . */ -#include - -/* C99 supports complex floating numbers natively, which GCC also offers as an - extension since version 3.0. If neither are available, use a compatible - structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ -#if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ - (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) && !defined(_MSC_VER) - #define OPENBLAS_COMPLEX_C99 -#ifndef __cplusplus - #include -#endif - typedef float _Complex openblas_complex_float; - typedef double _Complex openblas_complex_double; - typedef xdouble _Complex openblas_complex_xdouble; - #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) - #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) - #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) - #define openblas_complex_float_real(z) (creal(z)) - #define openblas_complex_float_imag(z) (cimag(z)) - #define openblas_complex_double_real(z) (creal(z)) - #define openblas_complex_double_imag(z) (cimag(z)) - #define openblas_complex_xdouble_real(z) (creal(z)) - #define openblas_complex_xdouble_imag(z) (cimag(z)) -#else - #define OPENBLAS_COMPLEX_STRUCT - typedef struct { float real, imag; } openblas_complex_float; - typedef struct { double real, imag; } openblas_complex_double; - typedef struct { xdouble real, imag; } openblas_complex_xdouble; - #define openblas_make_complex_float(real, imag) {(real), (imag)} - #define openblas_make_complex_double(real, imag) {(real), (imag)} - #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} - #define openblas_complex_float_real(z) ((z).real) - #define openblas_complex_float_imag(z) ((z).imag) - #define openblas_complex_double_real(z) ((z).real) - #define openblas_complex_double_imag(z) ((z).imag) - #define openblas_complex_xdouble_real(z) ((z).real) - #define openblas_complex_xdouble_imag(z) ((z).imag) -#endif - -/* Inclusion of Linux-specific header is needed for definition of cpu_set_t. */ -#ifdef OPENBLAS_OS_LINUX -#ifndef _GNU_SOURCE - #define _GNU_SOURCE -#endif -#include -#endif -#endif /* OPENBLAS_CONFIG_H */ diff --git a/install/lib/cmake/openblas/OpenBLASConfig.cmake b/install/lib/cmake/openblas/OpenBLASConfig.cmake deleted file mode 100644 index 7be3d33823..0000000000 --- a/install/lib/cmake/openblas/OpenBLASConfig.cmake +++ /dev/null @@ -1,4 +0,0 @@ -SET(OpenBLAS_VERSION "0.3.29.dev") -file(REAL_PATH "../../.." _OpenBLAS_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} ) -SET(OpenBLAS_INCLUDE_DIRS ${_OpenBLAS_ROOT_DIR}/include) -SET(OpenBLAS_LIBRARIES ${_OpenBLAS_ROOT_DIR}/lib/libopenblas.so) diff --git a/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake b/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake deleted file mode 100644 index f6052c3b8a..0000000000 --- a/install/lib/cmake/openblas/OpenBLASConfigVersion.cmake +++ /dev/null @@ -1,9 +0,0 @@ -set (PACKAGE_VERSION "0.3.29.dev") -if (PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) - set (PACKAGE_VERSION_COMPATIBLE FALSE) -else () - set (PACKAGE_VERSION_COMPATIBLE TRUE) - if (PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) - set (PACKAGE_VERSION_EXACT TRUE) - endif () -endif () diff --git a/install/lib/pkgconfig/openblas.pc b/install/lib/pkgconfig/openblas.pc deleted file mode 100644 index aafa9f0c94..0000000000 --- a/install/lib/pkgconfig/openblas.pc +++ /dev/null @@ -1,16 +0,0 @@ -libdir=/home/da/OpenBLAS/install/lib -libprefix= -libnamesuffix= -libsuffix= -includedir=/home/da/OpenBLAS/install/include -omp_opt= -openblas_config= USE_64BITINT= DYNAMIC_ARCH= DYNAMIC_OLDER= NO_CBLAS= NO_LAPACK= NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP= RISCV64_ZVL128B MAX_THREADS=32 -version=0.3.29.dev -extralib=-lm -lpthread -lgfortran -lm -lpthread -lgfortran -Name: openblas -Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version -Version: ${version} -URL: https://github.com/xianyi/OpenBLAS -Libs: -L${libdir} -l${libprefix}openblas${libsuffix}${libnamesuffix} -Libs.private: ${extralib} -Cflags: -I${includedir} ${omp_opt} diff --git a/install/test_shgemm b/install/test_shgemm deleted file mode 100755 index 2894008ae696dedbc263790f74757d58e9b90518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847232 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%0DI<4 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 q3oGe`@VQ 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 Ps@fGEu!&=`2c} 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