#pragma once

// level 1

#define axpy axpy_s_
#define gthr gthr_s_
#define gthrz gthrz_s_
#define rot rot_s_
#define sctr sctr_s_
#define doti doti_s_

// coo
#define set_value_coo set_value_s_coo
#define update_values_coo update_values_s_coo

#define add_coo add_s_coo
#define add_coo_trans add_s_coo_trans

#define gemv_coo gemv_s_coo
#define gemv_coo_trans gemv_s_coo_trans
#define symv_coo_n_lo symv_s_coo_n_lo
#define symv_coo_u_lo symv_s_coo_u_lo
#define symv_coo_n_hi symv_s_coo_n_hi
#define symv_coo_u_hi symv_s_coo_u_hi
#define trmv_coo_n_lo trmv_s_coo_n_lo
#define trmv_coo_u_lo trmv_s_coo_u_lo
#define trmv_coo_n_hi trmv_s_coo_n_hi
#define trmv_coo_u_hi trmv_s_coo_u_hi
#define trmv_coo_n_lo_trans trmv_s_coo_n_lo_trans
#define trmv_coo_u_lo_trans trmv_s_coo_u_lo_trans
#define trmv_coo_n_hi_trans trmv_s_coo_n_hi_trans
#define trmv_coo_u_hi_trans trmv_s_coo_u_hi_trans
#define diagmv_coo_n diagmv_s_coo_n
#define diagmv_coo_u diagmv_s_coo_u

#define gemm_coo_row gemm_s_coo_row
#define gemm_coo_col gemm_s_coo_col
#define gemm_coo_row_trans gemm_s_coo_row_trans
#define gemm_coo_col_trans gemm_s_coo_col_trans
#define symm_coo_n_lo_row symm_s_coo_n_lo_row
#define symm_coo_u_lo_row symm_s_coo_u_lo_row
#define symm_coo_n_hi_row symm_s_coo_n_hi_row
#define symm_coo_u_hi_row symm_s_coo_u_hi_row
#define symm_coo_n_lo_col symm_s_coo_n_lo_col
#define symm_coo_u_lo_col symm_s_coo_u_lo_col
#define symm_coo_n_hi_col symm_s_coo_n_hi_col
#define symm_coo_u_hi_col symm_s_coo_u_hi_col
#define trmm_coo_n_lo_row trmm_s_coo_n_lo_row
#define trmm_coo_u_lo_row trmm_s_coo_u_lo_row
#define trmm_coo_n_hi_row trmm_s_coo_n_hi_row
#define trmm_coo_u_hi_row trmm_s_coo_u_hi_row
#define trmm_coo_n_lo_col trmm_s_coo_n_lo_col
#define trmm_coo_u_lo_col trmm_s_coo_u_lo_col
#define trmm_coo_n_hi_col trmm_s_coo_n_hi_col
#define trmm_coo_u_hi_col trmm_s_coo_u_hi_col
#define trmm_coo_n_lo_row_trans trmm_s_coo_n_lo_row_trans
#define trmm_coo_u_lo_row_trans trmm_s_coo_u_lo_row_trans
#define trmm_coo_n_hi_row_trans trmm_s_coo_n_hi_row_trans
#define trmm_coo_u_hi_row_trans trmm_s_coo_u_hi_row_trans
#define trmm_coo_n_lo_col_trans trmm_s_coo_n_lo_col_trans
#define trmm_coo_u_lo_col_trans trmm_s_coo_u_lo_col_trans
#define trmm_coo_n_hi_col_trans trmm_s_coo_n_hi_col_trans
#define trmm_coo_u_hi_col_trans trmm_s_coo_u_hi_col_trans
#define diagmm_coo_n_row diagmm_s_coo_n_row
#define diagmm_coo_u_row diagmm_s_coo_u_row
#define diagmm_coo_n_col diagmm_s_coo_n_col
#define diagmm_coo_u_col diagmm_s_coo_u_col

#define spmmd_coo_row spmmd_s_coo_row
#define spmmd_coo_col spmmd_s_coo_col
#define spmmd_coo_row_trans spmmd_s_coo_row_trans
#define spmmd_coo_col_trans spmmd_s_coo_col_trans

#define spmm_coo spmm_s_coo
#define spmm_coo_trans spmm_s_coo_trans

#define trsv_coo_n_lo trsv_s_coo_n_lo
#define trsv_coo_u_lo trsv_s_coo_u_lo
#define trsv_coo_n_hi trsv_s_coo_n_hi
#define trsv_coo_u_hi trsv_s_coo_u_hi
#define trsv_coo_n_lo_trans trsv_s_coo_n_lo_trans
#define trsv_coo_u_lo_trans trsv_s_coo_u_lo_trans
#define trsv_coo_n_hi_trans trsv_s_coo_n_hi_trans
#define trsv_coo_u_hi_trans trsv_s_coo_u_hi_trans
#define diagsv_coo_n diagsv_s_coo_n
#define diagsv_coo_u diagsv_s_coo_u

#define trsm_coo_n_lo_row trsm_s_coo_n_lo_row
#define trsm_coo_u_lo_row trsm_s_coo_u_lo_row
#define trsm_coo_n_hi_row trsm_s_coo_n_hi_row
#define trsm_coo_u_hi_row trsm_s_coo_u_hi_row
#define trsm_coo_n_lo_col trsm_s_coo_n_lo_col
#define trsm_coo_u_lo_col trsm_s_coo_u_lo_col
#define trsm_coo_n_hi_col trsm_s_coo_n_hi_col
#define trsm_coo_u_hi_col trsm_s_coo_u_hi_col
#define trsm_coo_n_lo_row_trans trsm_s_coo_n_lo_row_trans
#define trsm_coo_u_lo_row_trans trsm_s_coo_u_lo_row_trans
#define trsm_coo_n_hi_row_trans trsm_s_coo_n_hi_row_trans
#define trsm_coo_u_hi_row_trans trsm_s_coo_u_hi_row_trans
#define trsm_coo_n_lo_col_trans trsm_s_coo_n_lo_col_trans
#define trsm_coo_u_lo_col_trans trsm_s_coo_u_lo_col_trans
#define trsm_coo_n_hi_col_trans trsm_s_coo_n_hi_col_trans
#define trsm_coo_u_hi_col_trans trsm_s_coo_u_hi_col_trans
#define diagsm_coo_n_row diagsm_s_coo_n_row
#define diagsm_coo_u_row diagsm_s_coo_u_row
#define diagsm_coo_n_col diagsm_s_coo_n_col
#define diagsm_coo_u_col diagsm_s_coo_u_col


// csr
#define set_value_csr set_value_s_csr
#define update_values_csr update_values_s_csr

#define add_csr add_s_csr
#define add_csr_trans add_s_csr_trans
#define add_csr_conj add_s_csr_conj

#define gemv_csr gemv_s_csr
#define gemv_csr_trans gemv_s_csr_trans
#define gemv_csr_conj gemv_s_csr_conj
#define symv_csr_n_lo symv_s_csr_n_lo
#define symv_csr_u_lo symv_s_csr_u_lo
#define symv_csr_n_hi symv_s_csr_n_hi
#define symv_csr_u_hi symv_s_csr_u_hi
#define trmv_csr_n_lo trmv_s_csr_n_lo
#define trmv_csr_u_lo trmv_s_csr_u_lo
#define trmv_csr_n_hi trmv_s_csr_n_hi
#define trmv_csr_u_hi trmv_s_csr_u_hi
#define trmv_csr_n_lo_trans trmv_s_csr_n_lo_trans
#define trmv_csr_u_lo_trans trmv_s_csr_u_lo_trans
#define trmv_csr_n_hi_trans trmv_s_csr_n_hi_trans
#define trmv_csr_u_hi_trans trmv_s_csr_u_hi_trans
#define trmv_csr_n_lo_conj trmv_s_csr_n_lo_conj
#define trmv_csr_u_lo_conj trmv_s_csr_u_lo_conj
#define trmv_csr_n_hi_conj trmv_s_csr_n_hi_conj
#define trmv_csr_u_hi_conj trmv_s_csr_u_hi_conj
#define diagmv_csr_n diagmv_s_csr_n
#define diagmv_csr_u diagmv_s_csr_u

#define gemm_csr_row gemm_s_csr_row
#define gemm_csr_col gemm_s_csr_col
#define gemm_csr_row_trans gemm_s_csr_row_trans
#define gemm_csr_col_trans gemm_s_csr_col_trans
// #define gemm_csr_row_conj gemm_s_csr_row_conj
// #define gemm_csr_col_conj gemm_s_csr_col_conj
#define symm_csr_n_lo_row symm_s_csr_n_lo_row
#define symm_csr_u_lo_row symm_s_csr_u_lo_row
#define symm_csr_n_hi_row symm_s_csr_n_hi_row
#define symm_csr_u_hi_row symm_s_csr_u_hi_row
#define symm_csr_n_lo_col symm_s_csr_n_lo_col
#define symm_csr_u_lo_col symm_s_csr_u_lo_col
#define symm_csr_n_hi_col symm_s_csr_n_hi_col
#define symm_csr_u_hi_col symm_s_csr_u_hi_col
#define trmm_csr_n_lo_row trmm_s_csr_n_lo_row
#define trmm_csr_u_lo_row trmm_s_csr_u_lo_row
#define trmm_csr_n_hi_row trmm_s_csr_n_hi_row
#define trmm_csr_u_hi_row trmm_s_csr_u_hi_row
#define trmm_csr_n_lo_col trmm_s_csr_n_lo_col
#define trmm_csr_u_lo_col trmm_s_csr_u_lo_col
#define trmm_csr_n_hi_col trmm_s_csr_n_hi_col
#define trmm_csr_u_hi_col trmm_s_csr_u_hi_col
#define trmm_csr_n_lo_row_trans trmm_s_csr_n_lo_row_trans
#define trmm_csr_u_lo_row_trans trmm_s_csr_u_lo_row_trans
#define trmm_csr_n_hi_row_trans trmm_s_csr_n_hi_row_trans
#define trmm_csr_u_hi_row_trans trmm_s_csr_u_hi_row_trans
#define trmm_csr_n_lo_col_trans trmm_s_csr_n_lo_col_trans
#define trmm_csr_u_lo_col_trans trmm_s_csr_u_lo_col_trans
#define trmm_csr_n_hi_col_trans trmm_s_csr_n_hi_col_trans
#define trmm_csr_u_hi_col_trans trmm_s_csr_u_hi_col_trans
#define trmm_csr_n_lo_row_conj trmm_s_csr_n_lo_row_conj
#define trmm_csr_u_lo_row_conj trmm_s_csr_u_lo_row_conj
#define trmm_csr_n_hi_row_conj trmm_s_csr_n_hi_row_conj
#define trmm_csr_u_hi_row_conj trmm_s_csr_u_hi_row_conj
#define trmm_csr_n_lo_col_conj trmm_s_csr_n_lo_col_conj
#define trmm_csr_u_lo_col_conj trmm_s_csr_u_lo_col_conj
#define trmm_csr_n_hi_col_conj trmm_s_csr_n_hi_col_conj
#define trmm_csr_u_hi_col_conj trmm_s_csr_u_hi_col_conj
#define diagmm_csr_n_row diagmm_s_csr_n_row
#define diagmm_csr_u_row diagmm_s_csr_u_row
#define diagmm_csr_n_col diagmm_s_csr_n_col
#define diagmm_csr_u_col diagmm_s_csr_u_col

#define spmmd_csr_row spmmd_s_csr_row
#define spmmd_csr_col spmmd_s_csr_col
#define spmmd_csr_row_trans spmmd_s_csr_row_trans
#define spmmd_csr_col_trans spmmd_s_csr_col_trans
#define spmmd_csr_row_conj spmmd_s_csr_row_conj
#define spmmd_csr_col_conj spmmd_s_csr_col_conj

#define spmm_csr spmm_s_csr
#define spmm_csr_trans spmm_s_csr_trans
#define spmm_csr_conj spmm_s_csr_conj

#define trsv_csr_n_lo trsv_s_csr_n_lo
#define trsv_csr_u_lo trsv_s_csr_u_lo
#define trsv_csr_n_hi trsv_s_csr_n_hi
#define trsv_csr_u_hi trsv_s_csr_u_hi
#define trsv_csr_n_lo_trans trsv_s_csr_n_lo_trans
#define trsv_csr_u_lo_trans trsv_s_csr_u_lo_trans
#define trsv_csr_n_hi_trans trsv_s_csr_n_hi_trans
#define trsv_csr_u_hi_trans trsv_s_csr_u_hi_trans
#define trsv_csr_n_lo_conj trsv_s_csr_n_lo_conj
#define trsv_csr_u_lo_conj trsv_s_csr_u_lo_conj
#define trsv_csr_n_hi_conj trsv_s_csr_n_hi_conj
#define trsv_csr_u_hi_conj trsv_s_csr_u_hi_conj
#define diagsv_csr_n diagsv_s_csr_n
#define diagsv_csr_u diagsv_s_csr_u

#define trsm_csr_n_lo_row trsm_s_csr_n_lo_row
#define trsm_csr_u_lo_row trsm_s_csr_u_lo_row
#define trsm_csr_n_hi_row trsm_s_csr_n_hi_row
#define trsm_csr_u_hi_row trsm_s_csr_u_hi_row
#define trsm_csr_n_lo_col trsm_s_csr_n_lo_col
#define trsm_csr_u_lo_col trsm_s_csr_u_lo_col
#define trsm_csr_n_hi_col trsm_s_csr_n_hi_col
#define trsm_csr_u_hi_col trsm_s_csr_u_hi_col
#define trsm_csr_n_lo_row_trans trsm_s_csr_n_lo_row_trans
#define trsm_csr_u_lo_row_trans trsm_s_csr_u_lo_row_trans
#define trsm_csr_n_hi_row_trans trsm_s_csr_n_hi_row_trans
#define trsm_csr_u_hi_row_trans trsm_s_csr_u_hi_row_trans
#define trsm_csr_n_lo_col_trans trsm_s_csr_n_lo_col_trans
#define trsm_csr_u_lo_col_trans trsm_s_csr_u_lo_col_trans
#define trsm_csr_n_hi_col_trans trsm_s_csr_n_hi_col_trans
#define trsm_csr_u_hi_col_trans trsm_s_csr_u_hi_col_trans
#define trsm_csr_n_lo_row_conj trsm_s_csr_n_lo_row_conj
#define trsm_csr_u_lo_row_conj trsm_s_csr_u_lo_row_conj
#define trsm_csr_n_hi_row_conj trsm_s_csr_n_hi_row_conj
#define trsm_csr_u_hi_row_conj trsm_s_csr_u_hi_row_conj
#define trsm_csr_n_lo_col_conj trsm_s_csr_n_lo_col_conj
#define trsm_csr_u_lo_col_conj trsm_s_csr_u_lo_col_conj
#define trsm_csr_n_hi_col_conj trsm_s_csr_n_hi_col_conj
#define trsm_csr_u_hi_col_conj trsm_s_csr_u_hi_col_conj
#define diagsm_csr_n_row diagsm_s_csr_n_row
#define diagsm_csr_u_row diagsm_s_csr_u_row
#define diagsm_csr_n_col diagsm_s_csr_n_col
#define diagsm_csr_u_col diagsm_s_csr_u_col


// csc
#define set_value_csc set_value_s_csc
#define update_values_csc update_values_s_csc

#define add_csc add_s_csc
#define add_csc_trans add_s_csc_trans

#define gemv_csc gemv_s_csc
#define gemv_csc_trans gemv_s_csc_trans
#define symv_csc_n_lo symv_s_csc_n_lo
#define symv_csc_u_lo symv_s_csc_u_lo
#define symv_csc_n_hi symv_s_csc_n_hi
#define symv_csc_u_hi symv_s_csc_u_hi
#define trmv_csc_n_lo trmv_s_csc_n_lo
#define trmv_csc_u_lo trmv_s_csc_u_lo
#define trmv_csc_n_hi trmv_s_csc_n_hi
#define trmv_csc_u_hi trmv_s_csc_u_hi
#define trmv_csc_n_lo_trans trmv_s_csc_n_lo_trans
#define trmv_csc_u_lo_trans trmv_s_csc_u_lo_trans
#define trmv_csc_n_hi_trans trmv_s_csc_n_hi_trans
#define trmv_csc_u_hi_trans trmv_s_csc_u_hi_trans
#define diagmv_csc_n diagmv_s_csc_n
#define diagmv_csc_u diagmv_s_csc_u

#define gemm_csc_row gemm_s_csc_row
#define gemm_csc_col gemm_s_csc_col
#define gemm_csc_row_trans gemm_s_csc_row_trans
#define gemm_csc_col_trans gemm_s_csc_col_trans
#define symm_csc_n_lo_row symm_s_csc_n_lo_row
#define symm_csc_u_lo_row symm_s_csc_u_lo_row
#define symm_csc_n_hi_row symm_s_csc_n_hi_row
#define symm_csc_u_hi_row symm_s_csc_u_hi_row
#define symm_csc_n_lo_col symm_s_csc_n_lo_col
#define symm_csc_u_lo_col symm_s_csc_u_lo_col
#define symm_csc_n_hi_col symm_s_csc_n_hi_col
#define symm_csc_u_hi_col symm_s_csc_u_hi_col
#define trmm_csc_n_lo_row trmm_s_csc_n_lo_row
#define trmm_csc_u_lo_row trmm_s_csc_u_lo_row
#define trmm_csc_n_hi_row trmm_s_csc_n_hi_row
#define trmm_csc_u_hi_row trmm_s_csc_u_hi_row
#define trmm_csc_n_lo_col trmm_s_csc_n_lo_col
#define trmm_csc_u_lo_col trmm_s_csc_u_lo_col
#define trmm_csc_n_hi_col trmm_s_csc_n_hi_col
#define trmm_csc_u_hi_col trmm_s_csc_u_hi_col
#define trmm_csc_n_lo_row_trans trmm_s_csc_n_lo_row_trans
#define trmm_csc_u_lo_row_trans trmm_s_csc_u_lo_row_trans
#define trmm_csc_n_hi_row_trans trmm_s_csc_n_hi_row_trans
#define trmm_csc_u_hi_row_trans trmm_s_csc_u_hi_row_trans
#define trmm_csc_n_lo_col_trans trmm_s_csc_n_lo_col_trans
#define trmm_csc_u_lo_col_trans trmm_s_csc_u_lo_col_trans
#define trmm_csc_n_hi_col_trans trmm_s_csc_n_hi_col_trans
#define trmm_csc_u_hi_col_trans trmm_s_csc_u_hi_col_trans
#define diagmm_csc_n_row diagmm_s_csc_n_row
#define diagmm_csc_u_row diagmm_s_csc_u_row
#define diagmm_csc_n_col diagmm_s_csc_n_col
#define diagmm_csc_u_col diagmm_s_csc_u_col

#define spmmd_csc_row spmmd_s_csc_row
#define spmmd_csc_col spmmd_s_csc_col
#define spmmd_csc_row_trans spmmd_s_csc_row_trans
#define spmmd_csc_col_trans spmmd_s_csc_col_trans

#define spmm_csc spmm_s_csc
#define spmm_csc_trans spmm_s_csc_trans

#define trsv_csc_n_lo trsv_s_csc_n_lo
#define trsv_csc_u_lo trsv_s_csc_u_lo
#define trsv_csc_n_hi trsv_s_csc_n_hi
#define trsv_csc_u_hi trsv_s_csc_u_hi
#define trsv_csc_n_lo_trans trsv_s_csc_n_lo_trans
#define trsv_csc_u_lo_trans trsv_s_csc_u_lo_trans
#define trsv_csc_n_hi_trans trsv_s_csc_n_hi_trans
#define trsv_csc_u_hi_trans trsv_s_csc_u_hi_trans
#define diagsv_csc_n diagsv_s_csc_n
#define diagsv_csc_u diagsv_s_csc_u

#define trsm_csc_n_lo_row trsm_s_csc_n_lo_row
#define trsm_csc_u_lo_row trsm_s_csc_u_lo_row
#define trsm_csc_n_hi_row trsm_s_csc_n_hi_row
#define trsm_csc_u_hi_row trsm_s_csc_u_hi_row
#define trsm_csc_n_lo_col trsm_s_csc_n_lo_col
#define trsm_csc_u_lo_col trsm_s_csc_u_lo_col
#define trsm_csc_n_hi_col trsm_s_csc_n_hi_col
#define trsm_csc_u_hi_col trsm_s_csc_u_hi_col
#define trsm_csc_n_lo_row_trans trsm_s_csc_n_lo_row_trans
#define trsm_csc_u_lo_row_trans trsm_s_csc_u_lo_row_trans
#define trsm_csc_n_hi_row_trans trsm_s_csc_n_hi_row_trans
#define trsm_csc_u_hi_row_trans trsm_s_csc_u_hi_row_trans
#define trsm_csc_n_lo_col_trans trsm_s_csc_n_lo_col_trans
#define trsm_csc_u_lo_col_trans trsm_s_csc_u_lo_col_trans
#define trsm_csc_n_hi_col_trans trsm_s_csc_n_hi_col_trans
#define trsm_csc_u_hi_col_trans trsm_s_csc_u_hi_col_trans
#define diagsm_csc_n_row diagsm_s_csc_n_row
#define diagsm_csc_u_row diagsm_s_csc_u_row
#define diagsm_csc_n_col diagsm_s_csc_n_col
#define diagsm_csc_u_col diagsm_s_csc_u_col


// bsr
#define set_value_bsr set_value_s_bsr
#define update_values_bsr update_values_s_bsr

#define add_bsr add_s_bsr
#define add_bsr_trans add_s_bsr_trans

#define gemv_bsr gemv_s_bsr
#define gemv_bsr_trans gemv_s_bsr_trans
#define symv_bsr_n_lo symv_s_bsr_n_lo
#define symv_bsr_u_lo symv_s_bsr_u_lo
#define symv_bsr_n_hi symv_s_bsr_n_hi
#define symv_bsr_u_hi symv_s_bsr_u_hi
#define trmv_bsr_n_lo trmv_s_bsr_n_lo
#define trmv_bsr_u_lo trmv_s_bsr_u_lo
#define trmv_bsr_n_hi trmv_s_bsr_n_hi
#define trmv_bsr_u_hi trmv_s_bsr_u_hi
#define trmv_bsr_n_lo_trans trmv_s_bsr_n_lo_trans
#define trmv_bsr_u_lo_trans trmv_s_bsr_u_lo_trans
#define trmv_bsr_n_hi_trans trmv_s_bsr_n_hi_trans
#define trmv_bsr_u_hi_trans trmv_s_bsr_u_hi_trans
#define diagmv_bsr_n diagmv_s_bsr_n
#define diagmv_bsr_u diagmv_s_bsr_u

#define gemm_bsr_row gemm_s_bsr_row
#define gemm_bsr_col gemm_s_bsr_col
#define gemm_bsr_row_trans gemm_s_bsr_row_trans
#define gemm_bsr_col_trans gemm_s_bsr_col_trans
#define symm_bsr_n_lo_row symm_s_bsr_n_lo_row
#define symm_bsr_u_lo_row symm_s_bsr_u_lo_row
#define symm_bsr_n_hi_row symm_s_bsr_n_hi_row
#define symm_bsr_u_hi_row symm_s_bsr_u_hi_row
#define symm_bsr_n_lo_col symm_s_bsr_n_lo_col
#define symm_bsr_u_lo_col symm_s_bsr_u_lo_col
#define symm_bsr_n_hi_col symm_s_bsr_n_hi_col
#define symm_bsr_u_hi_col symm_s_bsr_u_hi_col
#define trmm_bsr_n_lo_row trmm_s_bsr_n_lo_row
#define trmm_bsr_u_lo_row trmm_s_bsr_u_lo_row
#define trmm_bsr_n_hi_row trmm_s_bsr_n_hi_row
#define trmm_bsr_u_hi_row trmm_s_bsr_u_hi_row
#define trmm_bsr_n_lo_col trmm_s_bsr_n_lo_col
#define trmm_bsr_u_lo_col trmm_s_bsr_u_lo_col
#define trmm_bsr_n_hi_col trmm_s_bsr_n_hi_col
#define trmm_bsr_u_hi_col trmm_s_bsr_u_hi_col
#define trmm_bsr_n_lo_row_trans trmm_s_bsr_n_lo_row_trans
#define trmm_bsr_u_lo_row_trans trmm_s_bsr_u_lo_row_trans
#define trmm_bsr_n_hi_row_trans trmm_s_bsr_n_hi_row_trans
#define trmm_bsr_u_hi_row_trans trmm_s_bsr_u_hi_row_trans
#define trmm_bsr_n_lo_col_trans trmm_s_bsr_n_lo_col_trans
#define trmm_bsr_u_lo_col_trans trmm_s_bsr_u_lo_col_trans
#define trmm_bsr_n_hi_col_trans trmm_s_bsr_n_hi_col_trans
#define trmm_bsr_u_hi_col_trans trmm_s_bsr_u_hi_col_trans
#define diagmm_bsr_n_row diagmm_s_bsr_n_row
#define diagmm_bsr_u_row diagmm_s_bsr_u_row
#define diagmm_bsr_n_col diagmm_s_bsr_n_col
#define diagmm_bsr_u_col diagmm_s_bsr_u_col

#define spmmd_bsr_row spmmd_s_bsr_row
#define spmmd_bsr_col spmmd_s_bsr_col
#define spmmd_bsr_row_trans spmmd_s_bsr_row_trans
#define spmmd_bsr_col_trans spmmd_s_bsr_col_trans

#define spmm_bsr spmm_s_bsr
#define spmm_bsr_trans spmm_s_bsr_trans

#define trsv_bsr_n_lo trsv_s_bsr_n_lo
#define trsv_bsr_u_lo trsv_s_bsr_u_lo
#define trsv_bsr_n_hi trsv_s_bsr_n_hi
#define trsv_bsr_u_hi trsv_s_bsr_u_hi
#define trsv_bsr_n_lo_trans trsv_s_bsr_n_lo_trans
#define trsv_bsr_u_lo_trans trsv_s_bsr_u_lo_trans
#define trsv_bsr_n_hi_trans trsv_s_bsr_n_hi_trans
#define trsv_bsr_u_hi_trans trsv_s_bsr_u_hi_trans
#define diagsv_bsr_n diagsv_s_bsr_n
#define diagsv_bsr_u diagsv_s_bsr_u

#define trsm_bsr_n_lo_row trsm_s_bsr_n_lo_row
#define trsm_bsr_u_lo_row trsm_s_bsr_u_lo_row
#define trsm_bsr_n_hi_row trsm_s_bsr_n_hi_row
#define trsm_bsr_u_hi_row trsm_s_bsr_u_hi_row
#define trsm_bsr_n_lo_col trsm_s_bsr_n_lo_col
#define trsm_bsr_u_lo_col trsm_s_bsr_u_lo_col
#define trsm_bsr_n_hi_col trsm_s_bsr_n_hi_col
#define trsm_bsr_u_hi_col trsm_s_bsr_u_hi_col
#define trsm_bsr_n_lo_row_trans trsm_s_bsr_n_lo_row_trans
#define trsm_bsr_u_lo_row_trans trsm_s_bsr_u_lo_row_trans
#define trsm_bsr_n_hi_row_trans trsm_s_bsr_n_hi_row_trans
#define trsm_bsr_u_hi_row_trans trsm_s_bsr_u_hi_row_trans
#define trsm_bsr_n_lo_col_trans trsm_s_bsr_n_lo_col_trans
#define trsm_bsr_u_lo_col_trans trsm_s_bsr_u_lo_col_trans
#define trsm_bsr_n_hi_col_trans trsm_s_bsr_n_hi_col_trans
#define trsm_bsr_u_hi_col_trans trsm_s_bsr_u_hi_col_trans
#define diagsm_bsr_n_row diagsm_s_bsr_n_row
#define diagsm_bsr_u_row diagsm_s_bsr_u_row
#define diagsm_bsr_n_col diagsm_s_bsr_n_col
#define diagsm_bsr_u_col diagsm_s_bsr_u_col

// sky
#define set_value_sky set_value_s_sky
#define update_values_sky update_values_s_sky

#define add_sky add_s_sky
#define add_sky_trans add_s_sky_trans

#define gemv_sky gemv_s_sky
#define gemv_sky_trans gemv_s_sky_trans
#define symv_sky_n_lo symv_s_sky_n_lo
#define symv_sky_u_lo symv_s_sky_u_lo
#define symv_sky_n_hi symv_s_sky_n_hi
#define symv_sky_u_hi symv_s_sky_u_hi
#define trmv_sky_n_lo trmv_s_sky_n_lo
#define trmv_sky_u_lo trmv_s_sky_u_lo
#define trmv_sky_n_hi trmv_s_sky_n_hi
#define trmv_sky_u_hi trmv_s_sky_u_hi
#define trmv_sky_n_lo_trans trmv_s_sky_n_lo_trans
#define trmv_sky_u_lo_trans trmv_s_sky_u_lo_trans
#define trmv_sky_n_hi_trans trmv_s_sky_n_hi_trans
#define trmv_sky_u_hi_trans trmv_s_sky_u_hi_trans
#define diagmv_sky_n diagmv_s_sky_n
#define diagmv_sky_u diagmv_s_sky_u

#define gemm_sky_row gemm_s_sky_row
#define gemm_sky_col gemm_s_sky_col
#define gemm_sky_row_trans gemm_s_sky_row_trans
#define gemm_sky_col_trans gemm_s_sky_col_trans
#define symm_sky_n_lo_row symm_s_sky_n_lo_row
#define symm_sky_u_lo_row symm_s_sky_u_lo_row
#define symm_sky_n_hi_row symm_s_sky_n_hi_row
#define symm_sky_u_hi_row symm_s_sky_u_hi_row
#define symm_sky_n_lo_col symm_s_sky_n_lo_col
#define symm_sky_u_lo_col symm_s_sky_u_lo_col
#define symm_sky_n_hi_col symm_s_sky_n_hi_col
#define symm_sky_u_hi_col symm_s_sky_u_hi_col
#define trmm_sky_n_lo_row trmm_s_sky_n_lo_row
#define trmm_sky_u_lo_row trmm_s_sky_u_lo_row
#define trmm_sky_n_hi_row trmm_s_sky_n_hi_row
#define trmm_sky_u_hi_row trmm_s_sky_u_hi_row
#define trmm_sky_n_lo_col trmm_s_sky_n_lo_col
#define trmm_sky_u_lo_col trmm_s_sky_u_lo_col
#define trmm_sky_n_hi_col trmm_s_sky_n_hi_col
#define trmm_sky_u_hi_col trmm_s_sky_u_hi_col
#define trmm_sky_n_lo_row_trans trmm_s_sky_n_lo_row_trans
#define trmm_sky_u_lo_row_trans trmm_s_sky_u_lo_row_trans
#define trmm_sky_n_hi_row_trans trmm_s_sky_n_hi_row_trans
#define trmm_sky_u_hi_row_trans trmm_s_sky_u_hi_row_trans
#define trmm_sky_n_lo_col_trans trmm_s_sky_n_lo_col_trans
#define trmm_sky_u_lo_col_trans trmm_s_sky_u_lo_col_trans
#define trmm_sky_n_hi_col_trans trmm_s_sky_n_hi_col_trans
#define trmm_sky_u_hi_col_trans trmm_s_sky_u_hi_col_trans
#define diagmm_sky_n_row diagmm_s_sky_n_row
#define diagmm_sky_u_row diagmm_s_sky_u_row
#define diagmm_sky_n_col diagmm_s_sky_n_col
#define diagmm_sky_u_col diagmm_s_sky_u_col

#define spmmd_sky_row spmmd_s_sky_row
#define spmmd_sky_col spmmd_s_sky_col
#define spmmd_sky_row_trans spmmd_s_sky_row_trans
#define spmmd_sky_col_trans spmmd_s_sky_col_trans

#define spmm_sky spmm_s_sky
#define spmm_sky_trans spmm_s_sky_trans

#define trsv_sky_n_lo trsv_s_sky_n_lo
#define trsv_sky_u_lo trsv_s_sky_u_lo
#define trsv_sky_n_hi trsv_s_sky_n_hi
#define trsv_sky_u_hi trsv_s_sky_u_hi
#define trsv_sky_n_lo_trans trsv_s_sky_n_lo_trans
#define trsv_sky_u_lo_trans trsv_s_sky_u_lo_trans
#define trsv_sky_n_hi_trans trsv_s_sky_n_hi_trans
#define trsv_sky_u_hi_trans trsv_s_sky_u_hi_trans
#define diagsv_sky_n diagsv_s_sky_n
#define diagsv_sky_u diagsv_s_sky_u

#define trsm_sky_n_lo_row trsm_s_sky_n_lo_row
#define trsm_sky_u_lo_row trsm_s_sky_u_lo_row
#define trsm_sky_n_hi_row trsm_s_sky_n_hi_row
#define trsm_sky_u_hi_row trsm_s_sky_u_hi_row
#define trsm_sky_n_lo_col trsm_s_sky_n_lo_col
#define trsm_sky_u_lo_col trsm_s_sky_u_lo_col
#define trsm_sky_n_hi_col trsm_s_sky_n_hi_col
#define trsm_sky_u_hi_col trsm_s_sky_u_hi_col
#define trsm_sky_n_lo_row_trans trsm_s_sky_n_lo_row_trans
#define trsm_sky_u_lo_row_trans trsm_s_sky_u_lo_row_trans
#define trsm_sky_n_hi_row_trans trsm_s_sky_n_hi_row_trans
#define trsm_sky_u_hi_row_trans trsm_s_sky_u_hi_row_trans
#define trsm_sky_n_lo_col_trans trsm_s_sky_n_lo_col_trans
#define trsm_sky_u_lo_col_trans trsm_s_sky_u_lo_col_trans
#define trsm_sky_n_hi_col_trans trsm_s_sky_n_hi_col_trans
#define trsm_sky_u_hi_col_trans trsm_s_sky_u_hi_col_trans
#define diagsm_sky_n_row diagsm_s_sky_n_row
#define diagsm_sky_u_row diagsm_s_sky_u_row
#define diagsm_sky_n_col diagsm_s_sky_n_col
#define diagsm_sky_u_col diagsm_s_sky_u_col

// dia
#define set_value_dia set_value_s_dia
#define update_values_dia update_values_s_dia

#define add_dia add_s_dia
#define add_dia_trans add_s_dia_trans

#define gemv_dia gemv_s_dia
#define gemv_dia_trans gemv_s_dia_trans
#define symv_dia_n_lo symv_s_dia_n_lo
#define symv_dia_u_lo symv_s_dia_u_lo
#define symv_dia_n_hi symv_s_dia_n_hi
#define symv_dia_u_hi symv_s_dia_u_hi
#define trmv_dia_n_lo trmv_s_dia_n_lo
#define trmv_dia_u_lo trmv_s_dia_u_lo
#define trmv_dia_n_hi trmv_s_dia_n_hi
#define trmv_dia_u_hi trmv_s_dia_u_hi
#define trmv_dia_n_lo_trans trmv_s_dia_n_lo_trans
#define trmv_dia_u_lo_trans trmv_s_dia_u_lo_trans
#define trmv_dia_n_hi_trans trmv_s_dia_n_hi_trans
#define trmv_dia_u_hi_trans trmv_s_dia_u_hi_trans
#define diagmv_dia_n diagmv_s_dia_n
#define diagmv_dia_u diagmv_s_dia_u

#define gemm_dia_row gemm_s_dia_row
#define gemm_dia_col gemm_s_dia_col
#define gemm_dia_row_trans gemm_s_dia_row_trans
#define gemm_dia_col_trans gemm_s_dia_col_trans
#define symm_dia_n_lo_row symm_s_dia_n_lo_row
#define symm_dia_u_lo_row symm_s_dia_u_lo_row
#define symm_dia_n_hi_row symm_s_dia_n_hi_row
#define symm_dia_u_hi_row symm_s_dia_u_hi_row
#define symm_dia_n_lo_col symm_s_dia_n_lo_col
#define symm_dia_u_lo_col symm_s_dia_u_lo_col
#define symm_dia_n_hi_col symm_s_dia_n_hi_col
#define symm_dia_u_hi_col symm_s_dia_u_hi_col
#define trmm_dia_n_lo_row trmm_s_dia_n_lo_row
#define trmm_dia_u_lo_row trmm_s_dia_u_lo_row
#define trmm_dia_n_hi_row trmm_s_dia_n_hi_row
#define trmm_dia_u_hi_row trmm_s_dia_u_hi_row
#define trmm_dia_n_lo_col trmm_s_dia_n_lo_col
#define trmm_dia_u_lo_col trmm_s_dia_u_lo_col
#define trmm_dia_n_hi_col trmm_s_dia_n_hi_col
#define trmm_dia_u_hi_col trmm_s_dia_u_hi_col
#define trmm_dia_n_lo_row_trans trmm_s_dia_n_lo_row_trans
#define trmm_dia_u_lo_row_trans trmm_s_dia_u_lo_row_trans
#define trmm_dia_n_hi_row_trans trmm_s_dia_n_hi_row_trans
#define trmm_dia_u_hi_row_trans trmm_s_dia_u_hi_row_trans
#define trmm_dia_n_lo_col_trans trmm_s_dia_n_lo_col_trans
#define trmm_dia_u_lo_col_trans trmm_s_dia_u_lo_col_trans
#define trmm_dia_n_hi_col_trans trmm_s_dia_n_hi_col_trans
#define trmm_dia_u_hi_col_trans trmm_s_dia_u_hi_col_trans
#define diagmm_dia_n_row diagmm_s_dia_n_row
#define diagmm_dia_u_row diagmm_s_dia_u_row
#define diagmm_dia_n_col diagmm_s_dia_n_col
#define diagmm_dia_u_col diagmm_s_dia_u_col

#define spmmd_dia_row spmmd_s_dia_row
#define spmmd_dia_col spmmd_s_dia_col
#define spmmd_dia_row_trans spmmd_s_dia_row_trans
#define spmmd_dia_col_trans spmmd_s_dia_col_trans

#define spmm_dia spmm_s_dia
#define spmm_dia_trans spmm_s_dia_trans

#define trsv_dia_n_lo trsv_s_dia_n_lo
#define trsv_dia_u_lo trsv_s_dia_u_lo
#define trsv_dia_n_hi trsv_s_dia_n_hi
#define trsv_dia_u_hi trsv_s_dia_u_hi
#define trsv_dia_n_lo_trans trsv_s_dia_n_lo_trans
#define trsv_dia_u_lo_trans trsv_s_dia_u_lo_trans
#define trsv_dia_n_hi_trans trsv_s_dia_n_hi_trans
#define trsv_dia_u_hi_trans trsv_s_dia_u_hi_trans
#define diagsv_dia_n diagsv_s_dia_n
#define diagsv_dia_u diagsv_s_dia_u

#define trsm_dia_n_lo_row trsm_s_dia_n_lo_row
#define trsm_dia_u_lo_row trsm_s_dia_u_lo_row
#define trsm_dia_n_hi_row trsm_s_dia_n_hi_row
#define trsm_dia_u_hi_row trsm_s_dia_u_hi_row
#define trsm_dia_n_lo_col trsm_s_dia_n_lo_col
#define trsm_dia_u_lo_col trsm_s_dia_u_lo_col
#define trsm_dia_n_hi_col trsm_s_dia_n_hi_col
#define trsm_dia_u_hi_col trsm_s_dia_u_hi_col
#define trsm_dia_n_lo_row_trans trsm_s_dia_n_lo_row_trans
#define trsm_dia_u_lo_row_trans trsm_s_dia_u_lo_row_trans
#define trsm_dia_n_hi_row_trans trsm_s_dia_n_hi_row_trans
#define trsm_dia_u_hi_row_trans trsm_s_dia_u_hi_row_trans
#define trsm_dia_n_lo_col_trans trsm_s_dia_n_lo_col_trans
#define trsm_dia_u_lo_col_trans trsm_s_dia_u_lo_col_trans
#define trsm_dia_n_hi_col_trans trsm_s_dia_n_hi_col_trans
#define trsm_dia_u_hi_col_trans trsm_s_dia_u_hi_col_trans
#define diagsm_dia_n_row diagsm_s_dia_n_row
#define diagsm_dia_u_row diagsm_s_dia_u_row
#define diagsm_dia_n_col diagsm_s_dia_n_col
#define diagsm_dia_u_col diagsm_s_dia_u_col