diff --git a/modules/RulesPrecisions.cmake b/modules/RulesPrecisions.cmake
index c615b5a558a89f8ae00c77352501860a55dd0207..ab9931c088893c8363b319c9224d07c08d809123 100644
--- a/modules/RulesPrecisions.cmake
+++ b/modules/RulesPrecisions.cmake
@@ -62,12 +62,15 @@ set( ${CMAKE_PROJECT_NAME}_COMPILE_INPLACE ${__inplace}
 
 # Detect default settings
 # -----------------------
+set( _prec_P  OFF )
 set( _prec_S  OFF )
 set( _prec_D  OFF )
 set( _prec_DS OFF )
+set( _prec_XD OFF )
 set( _prec_C  OFF )
 set( _prec_Z  OFF )
 set( _prec_ZC OFF )
+set( _prec_XZ OFF )
 foreach(_prec ${RP_${CMAKE_PROJECT_NAME}_PRECISIONS})
   if ( ${_prec} STREQUAL zc )
     set( _prec_S  ON )
@@ -75,25 +78,52 @@ foreach(_prec ${RP_${CMAKE_PROJECT_NAME}_PRECISIONS})
     set( _prec_C  ON )
     set( _prec_Z  ON )
     set( _prec_ZC ON )
-  elseif( ${_prec} STREQUAL z )
+  endif()
+  if( ${_prec} STREQUAL z )
     set( _prec_D  ON )
     set( _prec_Z  ON )
-  elseif( ${_prec} STREQUAL c )
+  endif()
+  if( ${_prec} STREQUAL c )
     set( _prec_S  ON )
     set( _prec_C  ON )
-  elseif( ${_prec} STREQUAL ds )
+  endif()
+  if( ${_prec} STREQUAL ds )
     set( _prec_S  ON )
     set( _prec_D  ON )
     set( _prec_DS ON )
-  elseif( ${_prec} STREQUAL d )
+  endif()
+  if( ${_prec} STREQUAL d )
+    set( _prec_S  ON )
+  endif()
+  if( ${_prec} STREQUAL s )
+    set( _prec_S  ON )
+  endif()
+  if( ${_prec} STREQUAL p )
+    set( _prec_P  ON )
+  endif()
+  if( ${_prec} STREQUAL xd )
     set( _prec_S  ON )
-  elseif( ${_prec} STREQUAL s )
+    set( _prec_D  ON )
+    set( _prec_DS ON )
+    set( _prec_XD ON )
+  endif()
+  if( ${_prec} STREQUAL xz )
     set( _prec_S  ON )
+    set( _prec_D  ON )
+    set( _prec_C  ON )
+    set( _prec_Z  ON )
+    set( _prec_DS ON )
+    set( _prec_ZC ON )
+    set( _prec_XZ ON )
   endif()
 endforeach()
 
 # set computed precisions
 # -----------------------
+if( ${_prec_P} )
+  option(${PROJECT_NAME}_PREC_P
+    "Build ${PROJECT_NAME} pattern/integer precision" ON)
+endif()
 if( ${_prec_S} )
   option(${PROJECT_NAME}_PREC_S
     "Build ${PROJECT_NAME} real single precision" ON)
@@ -121,6 +151,16 @@ if( ${_prec_ZC} )
     "Build ${PROJECT_NAME} complex mixed precision" ON "${PROJECT_NAME}_PREC_C;${PROJECT_NAME}_PREC_Z" OFF)
 endif()
 
+if( ${_prec_XD} )
+  cmake_dependent_option(${PROJECT_NAME}_PREC_XD
+    "Build ${PROJECT_NAME} real extended mixed precision" ON "${PROJECT_NAME}_PREC_S;${PROJECT_NAME}_PREC_D;${PROJECT_NAME}_PREC_DS" OFF)
+endif()
+
+if( ${_prec_XZ} )
+  cmake_dependent_option(${PROJECT_NAME}_PREC_XZ
+    "Build ${PROJECT_NAME} real extended mixed precision" ON "${PROJECT_NAME}_PREC_C;${PROJECT_NAME}_PREC_Z;${PROJECT_NAME}_PREC_ZC" OFF)
+endif()
+
 # Define precision supported by the project
 # -----------------------------------------
 set( ${CMAKE_PROJECT_NAME}_PRECISION "" )
@@ -148,6 +188,18 @@ if(${CMAKE_PROJECT_NAME}_PREC_ZC)
   list(APPEND ${CMAKE_PROJECT_NAME}_PRECISION "zc")
 endif()
 
+if(${CMAKE_PROJECT_NAME}_PREC_P)
+  list(APPEND ${CMAKE_PROJECT_NAME}_PRECISION "p")
+endif()
+
+if(${CMAKE_PROJECT_NAME}_PREC_XD)
+  list(APPEND ${CMAKE_PROJECT_NAME}_PRECISION "xd")
+endif()
+
+if(${CMAKE_PROJECT_NAME}_PREC_XZ)
+  list(APPEND ${CMAKE_PROJECT_NAME}_PRECISION "xz")
+endif()
+
 #
 # Generates a rule for every SOURCES file, to create the precisions in PRECISIONS. If TARGETDIR
 # is not empty then all generated files will be prepended with the $TARGETDIR/.
diff --git a/modules/precision_generator/subs.py b/modules/precision_generator/subs.py
index af87b55938ea74e897bae6909bbe543c4f50f7cd..ecd843c8e24617fe699d8fcba3e96f1116270f5f 100644
--- a/modules/precision_generator/subs.py
+++ b/modules/precision_generator/subs.py
@@ -143,6 +143,8 @@ _subs = {
         (r'_ds_h_\b',           r'_zc_h_\b'            ),
         (r'_d\.h\b',            r'_z\.h\b'             ),
         (r'_s\.h\b',            r'_c\.h\b'             ),
+        (r'_xd\.h\b',           r'_xz\.h\b'            ),
+        (r'_xd_h_\b',           r'_xz_h_\b'            ),
 
         # ----- Prefixes
         (r'\bds_',             r'\bzc_'                ),
@@ -151,6 +153,8 @@ _subs = {
         (r'\bDS_',             r'\bZC_'                ),
         (r'\bD_',              r'\bZ_'                 ),
         (r'\bS_',              r'\bC_'                 ),
+        (r'\bxd_',             r'\bxz_'                ),
+        (r'\bXD_',             r'\bXZ_'                ),
 
         # See note in "normal" section below
         #('LAPACKE_d',            'LAPACKE_z'           ),
@@ -166,38 +170,38 @@ _subs = {
     # ------------------------------------------------------------
     # replacements applied to most files.
     'normal' : [
-        # pattern                single                  double                  single-complex          double-complex
-        #'12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
+        # pattern                 double-mixed            single                  double                  complex-mixed          single-complex          double-complex
+        #'12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
 
         # ----- header (identifies precision; not a substitution)
-        ['p',                    's',                    'd',                    'c',                    'z'                   ],
+        ['p',                    'xd',                  's',                    'd',                    'xz',                   'c',                    'z'                   ],
 
         # ----- Text
-        (r'\ba symmetric',      r'\ba symmetric',      r'\ba symmetric',        r'\ban hermitian',      r'\ba hermitian'       ),
-        ('symmetric',            'symmetric',            'symmetric',            'hermitian',            'hermitian'           ),
-        ('Symmetric',            'Symmetric',            'Symmetric',            'Hermitian',            'Hermitian'           ),
-        ('SYMMETRIC',            'SYMMETRIC',            'SYMMETRIC',            'HERMITIAN',            'HERMITIAN'           ),
-        ('orthogonal',           'orthogonal',           'orthogonal',           'unitary',              'unitary'             ),
-        ('\^T',                  '\^T',                  '\^T',                  '\^H',                  '\^H'                 ),
+        (r'\ba symmetric',      r'\ba symmetric',      r'\ba symmetric',      r'\ba symmetric',        r'\ban hermitian',      r'\ban hermitian',      r'\ban hermitian'      ),
+        ('symmetric',            'symmetric',           'symmetric',            'symmetric',            'hermitian',            'hermitian',            'hermitian'           ),
+        ('Symmetric',            'Symmetric',           'Symmetric',            'Symmetric',            'Hermitian',            'Hermitian',            'Hermitian'           ),
+        ('SYMMETRIC',            'SYMMETRIC',           'SYMMETRIC',            'SYMMETRIC',            'HERMITIAN',            'HERMITIAN',            'HERMITIAN'           ),
+        ('orthogonal',           'orthogonal',          'orthogonal',           'orthogonal',           'unitary',              'unitary',              'unitary'             ),
+        ('\^T',                  '\^T',                 '\^T',                  '\^T',                  '\^H',                  '\^H',                  '\^H'                 ),
 
         # ----- CBLAS
-        ('',                     '',                     '',                     'CBLAS_SADDR',          'CBLAS_SADDR'         ),
+        ('',                     '',                    '',                     '',                     'CBLAS_SADDR',          'CBLAS_SADDR',          'CBLAS_SADDR'         ),
 
         # ----- Complex numbers
         # \b regexp here avoids conjugate -> conjfugate, and fabs -> fabsf -> fabsff.
         # Note r for raw string literals, otherwise \b is a bell character.
         # The \b is deleted from replacement strings.
         # conj() and fabs() are overloaded in MAGMA, so don't need substitution.
-        (r'',                   r'',                    r'',                    r'\bconjf\b',           r'\bconj\b'            ),
-        (r'',                   r'\bfabsf\b',           r'\bfabs\b',            r'\bfabsf\b',           r'\bfabs\b'            ),
-        (r'',                   r'\bfabsf\b',           r'\bfabs\b',            r'\bcabsf\b',           r'\bcabs\b'            ),
-        (r'',                   r'\bsqrtf\b',           r'\bsqrt\b',            r'\bcsqrtf\b',          r'\bcsqrt\b'            ),
-        (r'',                   r'\bsqrtf\b',           r'\bsqrt\b',            r'\bsqrtf\b',           r'\bsqrt\b'            ),
-        (r'',                   r'',                    r'',                    r'\bcrealf\b',          r'\bcreal\b'           ),
-        (r'',                   r'',                    r'',                    r'\bcimagf\b',          r'\bcimag\b'           ),
+        (r'',                   r'',                    r'',                    r'',                    r'\bconj\b',           r'\bconjf\b',           r'\bconj\b'            ),
+        (r'',                   r'\bfabs\b',            r'\bfabsf\b',           r'\bfabs\b',            r'\bfabs\b',           r'\bfabsf\b',           r'\bfabs\b'            ),
+        (r'',                   r'\bfabs\b',            r'\bfabsf\b',           r'\bfabs\b',            r'\bcabs\b',           r'\bcabsf\b',           r'\bcabs\b'            ),
+        (r'',                   r'\bsqrt\b',            r'\bsqrtf\b',           r'\bsqrt\b',            r'\bcsqrt\b',          r'\bcsqrtf\b',          r'\bcsqrt\b'           ),
+        (r'',                   r'\bsqrt\b',            r'\bsqrtf\b',           r'\bsqrt\b',            r'\bsqrt\b',           r'\bsqrtf\b',           r'\bsqrt\b'            ),
+        (r'',                   r'',                    r'',                    r'',                    r'\bcreal\b',          r'\bcrealf\b',          r'\bcreal\b'           ),
+        (r'',                   r'',                    r'',                    r'',                    r'\bcimag\b',          r'\bcimagf\b',          r'\bcimag\b'           ),
 
         # ----- Constants
-        ('Trans',                'Trans',                'Trans',                'ConjTrans',            'ConjTrans'           ),
+        ('Trans',                'Trans',                'Trans',                'Trans',                'ConjTrans',           'ConjTrans',            'ConjTrans'           ),
 
         # ----- BLAS & LAPACK
     ]
@@ -209,34 +213,34 @@ _subs = {
     + _upper( lapack )  # e.g., DGETRF
     + [
         # ----- Fortran Types
-        ('int\(',                'real\(',               'real\(',               'complex\(',            'complex\('           ),
-        ('int',                  'real',                 'double precision',     'real',                r'\bdouble precision\b'),  # before double
-        ('_int',                 '_float',               '_double',              '_complex',             '_double_complex'     ),
-        (r'\bint',              r'\bfloat',             r'\bdouble',            r'\bcomplex',           r'\bdouble_complex'    ),
-        (r'\bint',              r'\bfloat',             r'\bdouble',            r'\bfloat',             r'\bdouble'            ),
-        ('int',                  'real',                 'double precision',     'complex',             r'\bcomplex\*16'       ),
-        ('INT',                  'REAL',                 'DOUBLE_PRECISION',     'COMPLEX',             r'\bCOMPLEX_16'        ),
-        ('INT',                  'REAL',                 'DOUBLE PRECISION',     'COMPLEX',             r'\bDOUBLE COMPLEX'    ),
-        ('INT',                  'REAL',                 'DOUBLE PRECISION',     'REAL',                r'\bDOUBLE PRECISION'  ),
-        ('MPI_INT',              'MPI_FLOAT',            'MPI_DOUBLE',           'MPI_COMPLEX',          'MPI_DOUBLE_COMPLEX'  ),
-        ('MPI_INT',              'MPI_FLOAT',            'MPI_DOUBLE',           'MPI_FLOAT',            'MPI_DOUBLE'          ),
+        ('int\(',                'real\(',               'real\(',               'real\(',              'complex\(',            'complex\(',            'complex\('           ),
+        ('int',                  'double precision',     'real',                 'double precision',   r'\bdouble precision\b', 'real',                r'\bdouble precision\b'),  # before double
+        ('_int',                 '_double',              '_float',               '_double',             '_double_complex',      '_complex',             '_double_complex'     ),
+        (r'\bint',              r'\bdouble',            r'\bfloat',             r'\bdouble',           r'\bdouble_complex',    r'\bcomplex',           r'\bdouble_complex'    ),
+        (r'\bint',              r'\bdouble',            r'\bfloat',             r'\bdouble',           r'\bdouble',            r'\bfloat',             r'\bdouble'            ),
+        ('int',                  'double precision',     'real',                 'double precision',   r'\bcomplex\*16',        'complex',             r'\bcomplex\*16'       ),
+        ('INT',                  'DOUBLE_PRECISION',     'REAL',                 'DOUBLE_PRECISION',   r'\bCOMPLEX_16',         'COMPLEX',             r'\bCOMPLEX_16'        ),
+        ('INT',                  'DOUBLE PRECISION',     'REAL',                 'DOUBLE PRECISION',   r'\bDOUBLE COMPLEX',     'COMPLEX',             r'\bDOUBLE COMPLEX'    ),
+        ('INT',                  'DOUBLE PRECISION',     'REAL',                 'DOUBLE PRECISION',   r'\bDOUBLE PRECISION',   'REAL',                r'\bDOUBLE PRECISION'  ),
+        ('MPI_INT',              'MPI_DOUBLE',           'MPI_FLOAT',            'MPI_DOUBLE',          'MPI_DOUBLE_COMPLEX',   'MPI_COMPLEX',          'MPI_DOUBLE_COMPLEX'  ),
+        ('MPI_INT',              'MPI_DOUBLE',           'MPI_FLOAT',            'MPI_DOUBLE',          'MPI_DOUBLE',           'MPI_FLOAT',            'MPI_DOUBLE'          ),
 
         # ----- Data types
         # C++
-        ('int',                  'float',                'double',               'float _Complex',      r'\bdouble _Complex'   ),
+        ('int',                  'double',               'float',                'double',             r'\bdouble _Complex',   'float _Complex',      r'\bdouble _Complex'   ),
         # CUDA
-        ('int',                  'float',                'double',               'make_cuFloatComplex',  'make_cuDoubleComplex'),
-        (r'\bint',              r'\bfloat',             r'\bdouble',            r'\bcuFloatComplex',    r'\bcuDoubleComplex'   ),
-        (r'\bint',              r'\breal',              r'\breal',              r'\bcomplex',           r'\bcomplex'           ),
-        (r'\bint',              r'\bfloat',             r'\bdouble',            r'\bfloat2',            r'\bdouble2'           ),
+        ('int',                  'double',               'float',                'double',              'make_cuDoubleComplex', 'make_cuFloatComplex',  'make_cuDoubleComplex'),
+        (r'\bint',              r'\bdouble',            r'\bfloat',             r'\bdouble',           r'\bcuDoubleComplex',   r'\bcuFloatComplex',    r'\bcuDoubleComplex'   ),
+        (r'\bint',              r'\breal',              r'\breal',              r'\breal',             r'\bcomplex',           r'\bcomplex',           r'\bcomplex'           ),
+        (r'\bint',              r'\bdouble',            r'\bfloat',             r'\bdouble',           r'\bdouble2',           r'\bfloat2',            r'\bdouble2'           ),
         # HIP
-        (r'\bint',              r'\bfloat',             r'\bdouble',            r'\bhipblasComplex',    r'\bhipblasDoubleComplex'),
+        (r'\bint',              r'\bdouble',            r'\bfloat',             r'\bdouble',           r'\bhipblasDoubleComplex', r'\bchipblasComplex', r'\bhipblasDoubleComplex' ),
 
         # ----- header files
-        (r'_p\.h\b',            r'_s\.h\b',            r'_d\.h\b',             r'_c\.h\b',             r'_z\.h\b'             ),
-        ('_p_',                  '_s_',                 '_d_',                  '_c_',                  '_z_'                 ),
-        ('_P_',                  '_S_',                 '_D_',                  '_C_',                  '_Z_'                 ),
-        (r'\bp_',               r'\bs_',               r'\bd_',                r'\bc_',                r'\bz_'                ),
+        (r'_p\.h\b',            r'_xd\.h\b',            r'_s\.h\b',            r'_d\.h\b',             r'_xz\.h\b',            r'_c\.h\b',             r'_z\.h\b'             ),
+        ('_p_',                  '_xd_',                 '_s_',                 '_d_',                  '_xz_',                 '_c_',                  '_z_'                 ),
+        ('_P_',                  '_XD_',                 '_S_',                 '_D_',                  '_XZ_',                 '_C_',                  '_Z_'                 ),
+        (r'\bp_',               r'\bxd_',               r'\bs_',               r'\bd_',                r'\bxz_',               r'\bc_',                r'\bz_'                ),
     ],  # end normal
 } #end _subs
 
diff --git a/modules/precision_generator/subs_blas.py b/modules/precision_generator/subs_blas.py
index f8b86b8c0b3d7c20b2f3906563832d44ab4dc20f..ce3fc2507f82bf1112466725c9276a280214fc5c 100644
--- a/modules/precision_generator/subs_blas.py
+++ b/modules/precision_generator/subs_blas.py
@@ -94,231 +94,231 @@ blas_mixed = [
 # ----------------------------------------
 blas = [
     # BLAS, lowercase, alphabetic order
-    #int  single                  double                  single-complex          double-complex
-    #'', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
-    ('', 'isamax',               'idamax',               'icamax',               'izamax'              ),
-    ('', 'isamax',               'idamax',               'isamax',               'idamax'              ),
-    ('', 'isamin',               'idamin',               'icamin',               'izamin'              ),
-    ('', 'samax',                'damax',                'samax',                'damax'               ),
-    ('', 'samax',                'damax',                'scamax',               'dzamax'              ),
-    ('', 'sasum',                'dasum',                'scasum',               'dzasum'              ),
-    ('', 'saxpy',                'daxpy',                'saxpy',                'daxpy'               ),
-    ('', 'saxpy',                'daxpy',                'caxpy',                'zaxpy'               ),
-    ('', 'scopy',                'dcopy',                'ccopy',                'zcopy'               ),
-    ('', 'scopy',                'dcopy',                'scopy',                'dcopy'               ),
-    ('', 'sdot',                 'ddot',                 'cdotc',                'zdotc'               ),
-    ('', 'sdot',                 'ddot',                 'cdotu',                'zdotu'               ),
-    ('', 'dot',                  'dot',                  'dotc',                 'dotc'                ),
-    ('', 'dot',                  'dot',                  'dotu',                 'dotu'                ),
-    ('', 'sgeadd',               'dgeadd',               'cgeadd',               'zgeadd'              ),
-    ('', 'sgem',                 'dgem',                 'cgem',                 'zgem'                ), # zgemm, zgemdm, zgemv
-    ('', 'sger',                 'dger',                 'cgerc',                'zgerc'               ),
-    ('', 'sger',                 'dger',                 'cgeru',                'zgeru'               ),
-    ('', 'snrm2',                'dnrm2',                'scnrm2',               'dznrm2'              ),
-    ('', 'snrm2',                'dnrm2',                'snrm2',                'dnrm2'               ),
-    ('', 'srot',                 'drot',                 'crot',                 'zrot'                ),
-    ('', 'srot',                 'drot',                 'csrot',                'zdrot'               ),
-    ('', 'srot',                 'drot',                 'srot',                 'drot'                ),
-    ('', 'sscal',                'dscal',                'cscal',                'zscal'               ),
-    ('', 'sscal',                'dscal',                'csscal',               'zdscal'              ),
-    ('', 'sscal',                'dscal',                'sscal',                'dscal'               ),
-    ('', 'sswap',                'dswap',                'cswap',                'zswap'               ),
-    ('', 'ssymm',                'dsymm',                'chemm',                'zhemm'               ),
-    ('', 'ssymm',                'dsymm',                'csymm',                'zsymm'               ),
-    ('', 'ssymv',                'dsymv',                'chemv',                'zhemv'               ),
-    ('', 'ssymv',                'dsymv',                'csymv',                'zsymv'               ),
-    ('', 'ssyr',                 'dsyr',                 'cher',                 'zher'                ),  # also does zher2, zher2k, zherk
-    ('', 'ssyr',                 'dsyr',                 'csyr',                 'zsyr'                ),  # also does zsyrk, zsyr2k
-    ('', 'stbsm',                'dtbsm',                'ctbsm',                'ztbsm'               ),
-    ('', 'stradd',               'dtradd',               'ctradd',               'ztradd'              ),
-    ('', 'strmm',                'dtrmm',                'ctrmm',                'ztrmm'               ),
-    ('', 'strmv',                'dtrmv',                'ctrmv',                'ztrmv'               ),
-    ('', 'strsm',                'dtrsm',                'ctrsm',                'ztrsm'               ),
-    ('', 'strsv',                'dtrsv',                'ctrsv',                'ztrsv'               ),
+    #int  double mixed            single                  double                  complex-mixed           single-complex          double-complex
+    #'', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
+    ('', 'ixdamax',              'isamax',               'idamax',               'izamax',               'icamax',               'izamax'              ),
+    ('', 'ixdamax',              'isamax',               'idamax',               'idamax',               'isamax',               'idamax'              ),
+    ('', 'ixdamin',              'isamin',               'idamin',               'izamin',               'icamin',               'izamin'              ),
+    ('', 'xdamax',               'samax',                'damax',                'xzamax',               'samax',                'damax'               ),
+    ('', 'xdamax',               'samax',                'damax',                'scamax',               'scamax',               'dzamax'              ),
+    ('', 'xdasum',               'sasum',                'dasum',                'scasum',               'scasum',               'dzasum'              ),
+    ('', 'xxaxpy',               'saxpy',                'daxpy',                'xzaxpy',               'saxpy',                'daxpy'               ),
+    ('', 'xdaxpy',               'saxpy',                'daxpy',                'xzaxpy',               'caxpy',                'zaxpy'               ),
+    ('', 'xdcopy',               'scopy',                'dcopy',                'xzcopy',               'ccopy',                'zcopy'               ),
+    ('', 'xdcopy',               'scopy',                'dcopy',                'xzcopy',               'scopy',                'dcopy'               ),
+    ('', 'xddot',                'sdot',                 'ddot',                 'xzdotc',               'cdotc',                'zdotc'               ),
+    ('', 'xddot',                'sdot',                 'ddot',                 'xzdotu',               'cdotu',                'zdotu'               ),
+    ('', 'xdot',                 'dot',                  'dot',                  'dotc',                 'dotc',                 'dotc'                ),
+    ('', 'xdot',                 'dot',                  'dot',                  'dotu',                 'dotu',                 'dotu'                ),
+    ('', 'xdgeadd',              'sgeadd',               'dgeadd',               'xzgeadd',              'cgeadd',               'zgeadd'              ),
+    ('', 'xdgem',                'sgem',                 'dgem',                 'xzgem',                'cgem',                 'zgem'                ), # zgemm, zgemdm, zgemv
+    ('', 'xdger',                'sger',                 'dger',                 'xzgerc',               'cgerc',                'zgerc'               ),
+    ('', 'xdger',                'sger',                 'dger',                 'xzgeru',               'cgeru',                'zgeru'               ),
+    ('', 'xdnrm2',               'snrm2',                'dnrm2',                'xznrm2',               'scnrm2',               'dznrm2'              ),
+    ('', 'xdnrm2',               'snrm2',                'dnrm2',                'xznrm2',               'snrm2',                'dnrm2'               ),
+    ('', 'xdrot',                'srot',                 'drot',                 'xzrot',                'crot',                 'zrot'                ),
+    ('', 'xdrot',                'srot',                 'drot',                 'xzrot',                'csrot',                'zdrot'               ),
+    ('', 'xdrot',                'srot',                 'drot',                 'xzrot',                'srot',                 'drot'                ),
+    ('', 'xdscal',               'sscal',                'dscal',                'xzscal',                'cscal',                'zscal'               ),
+    ('', 'xdscal',               'sscal',                'dscal',                'xzscal',               'csscal',               'zdscal'              ),
+    ('', 'xdscal',               'sscal',                'dscal',                'xzscal',                'sscal',                'dscal'               ),
+    ('', 'xdswap',               'sswap',                'dswap',                'xzswap',                'cswap',                'zswap'               ),
+    ('', 'xdsymm',               'ssymm',                'dsymm',                'xzhemm',                'chemm',                'zhemm'               ),
+    ('', 'xdsymm',               'ssymm',                'dsymm',                'xzsymm',                'csymm',                'zsymm'               ),
+    ('', 'xdsymv',               'ssymv',                'dsymv',                'xzhemv',                'chemv',                'zhemv'               ),
+    ('', 'xdsymv',               'ssymv',                'dsymv',                'xzsymv',                'csymv',                'zsymv'               ),
+    ('', 'xdsyr',                'ssyr',                 'dsyr',                 'xzher',                 'cher',                 'zher'                ),  # also does zher2, zher2k, zherk
+    ('', 'xdsyr',                'ssyr',                 'dsyr',                 'xzsyr',                 'csyr',                 'zsyr'                ),  # also does zsyrk, zsyr2k
+    ('', 'xdtbsm',               'stbsm',                'dtbsm',                'xztbsm',                'ctbsm',                'ztbsm'               ),
+    ('', 'xdtradd',              'stradd',               'dtradd',               'xztradd',               'ctradd',               'ztradd'              ),
+    ('', 'xdtrmm',               'strmm',                'dtrmm',                'xztrmm',                'ctrmm',                'ztrmm'               ),
+    ('', 'xdtrmv',               'strmv',                'dtrmv',                'xztrmv',                'ctrmv',                'ztrmv'               ),
+    ('', 'xdtrsm',               'strsm',                'dtrsm',                'xztrsm',                'ctrsm',                'ztrsm'               ),
+    ('', 'xdtrsv',               'strsv',                'dtrsv',                'xztrsv',                'ctrsv',                'ztrsv'               ),
 ]
 
 
 # ----------------------------------------
 lapack = [
     # LAPACK, lowercase, alphabetic order
-    #int  single                  double                  single-complex          double-complex
-    #'', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
-    ('', 'sbdsdc',               'dbdsdc',               'sbdsdc',               'dbdsdc'              ),
-    ('', 'sbdsqr',               'dbdsqr',               'cbdsqr',               'zbdsqr'              ),
-    ('', 'sbdt01',               'dbdt01',               'cbdt01',               'zbdt01'              ),
-    ('', 'sgbbrd',               'dgbbrd',               'cgbbrd',               'zgbbrd'              ),
-    ('', 'sgbsv',                'dgbsv',                'cgbsv',                'zgbsv'               ),
-    ('', 'sgbtrf',               'dgbtrf',               'cgbtrf',               'zgbtrf'              ),
-    ('', 'sgbtrs',               'dgbtrs',               'cgbtrs',               'zgbtrs'              ),
-    ('', 'sgebak',               'dgebak',               'cgebak',               'zgebak'              ),
-    ('', 'sgebal',               'dgebal',               'cgebal',               'zgebal'              ),
-    ('', 'sgebd2',               'dgebd2',               'cgebd2',               'zgebd2'              ),
-    ('', 'sgebrd',               'dgebrd',               'cgebrd',               'zgebrd'              ),
-    ('', 'sgeev',                'dgeev',                'cgeev',                'zgeev'               ),
-    ('', 'sgegqr',               'dgegqr',               'cgegqr',               'zgegqr'              ),
-    ('', 'sgehd2',               'dgehd2',               'cgehd2',               'zgehd2'              ),
-    ('', 'sgehrd',               'dgehrd',               'cgehrd',               'zgehrd'              ),
-    ('', 'sgeinv',               'dgeinv',               'cgeinv',               'zgeinv'              ),
-    ('', 'sgelq2',               'dgelq2',               'cgelq2',               'zgelq2'              ),
-    ('', 'sgelqf',               'dgelqf',               'cgelqf',               'zgelqf'              ),
-    ('', 'sgelqs',               'dgelqs',               'cgelqs',               'zgelqs'              ),
-    ('', 'sgelqt',               'dgelqt',               'cgelqt',               'zgelqt'              ),
-    ('', 'sgels',                'dgels',                'cgels',                'zgels'               ),
-    ('', 'sgeqlf',               'dgeqlf',               'cgeqlf',               'zgeqlf'              ),
-    ('', 'sgeqp3',               'dgeqp3',               'cgeqp3',               'zgeqp3'              ),
-    ('', 'sgeqr2',               'dgeqr2',               'cgeqr2',               'zgeqr2'              ),
-    ('', 'sgeqrf',               'dgeqrf',               'cgeqrf',               'zgeqrf'              ),
-    ('', 'sgeqrs',               'dgeqrs',               'cgeqrs',               'zgeqrs'              ),
-    ('', 'sgeqrt',               'dgeqrt',               'cgeqrt',               'zgeqrt'              ),
-    ('', 'sgerfs',               'dgerfs',               'cgerfs',               'zgerfs'              ),
-    ('', 'sgesdd',               'dgesdd',               'cgesdd',               'zgesdd'              ),
-    ('', 'sgessm',               'dgessm',               'cgessm',               'zgessm'              ),
-    ('', 'sgessq',               'dgessq',               'cgessq',               'zgessq'              ),
-    ('', 'sgessq',               'dgessq',               'sgessq',               'dgessq'              ),
-    ('', 'sgesv',                'dgesv',                'cgesv',                'zgesv'               ),  # also does zgesvd
-    ('', 'sgeswp',               'dgeswp',               'cgeswp',               'zgeswp'              ),
-    ('', 'sget22',               'dget22',               'cget22',               'zget22'              ),
-    ('', 'sgetf2',               'dgetf2',               'cgetf2',               'zgetf2'              ),
-    ('', 'sgetmi',               'dgetmi',               'cgetmi',               'zgetmi'              ),
-    ('', 'sgetmo',               'dgetmo',               'cgetmo',               'zgetmo'              ),
-    ('', 'sgetrf',               'dgetrf',               'cgetrf',               'zgetrf'              ),
-    ('', 'sgetri',               'dgetri',               'cgetri',               'zgetri'              ),
-    ('', 'sgetrs',               'dgetrs',               'cgetrs',               'zgetrs'              ),
-    ('', 'shseqr',               'dhseqr',               'chseqr',               'zhseqr'              ),
-    ('', 'shst01',               'dhst01',               'chst01',               'zhst01'              ),
-    ('', 'slabad',               'dlabad',               'slabad',               'dlabad'              ),
-    ('', 'slabrd',               'dlabrd',               'clabrd',               'zlabrd'              ),
-    ('', 'slacgv',               'dlacgv',               'clacgv',               'zlacgv'              ),
-    ('', 'slacp2',               'dlacp2',               'clacp2',               'zlacp2'              ),
-    ('', 'slacpy',               'dlacpy',               'clacpy',               'zlacpy'              ),
-    ('', 'slacrm',               'dlacrm',               'clacrm',               'zlacrm'              ),
-    ('', 'sladiv',               'dladiv',               'cladiv',               'zladiv'              ),
-    ('', 'slaed',                'dlaed',                'slaed',                'dlaed'               ),
-    ('', 'slaex',                'dlaex',                'slaex',                'dlaex'               ),
-    ('', 'slag2d',               'dlag2s',               'clag2z',               'zlag2c'              ),
-    ('', 'slagsy',               'dlagsy',               'claghe',               'zlaghe'              ),
-    ('', 'slagsy',               'dlagsy',               'clagsy',               'zlagsy'              ),
-    ('', 'slahr',                'dlahr',                'clahr',                'zlahr'               ),
-    ('', 'slaln2',               'dlaln2',               'slaln2',               'dlaln2'              ),
-    ('', 'slamc3',               'dlamc3',               'slamc3',               'dlamc3'              ),
-    ('', 'slamch',               'dlamch',               'slamch',               'dlamch'              ),
-    ('', 'slamrg',               'dlamrg',               'slamrg',               'dlamrg'              ),
-    ('', 'slangb',               'dlangb',               'clangb',               'zlangb'              ),
-    ('', 'slange',               'dlange',               'clange',               'zlange'              ),
-    ('', 'slange',               'dlange',               'slange',               'dlange'              ),
-    ('', 'slanst',               'dlanst',               'clanht',               'zlanht'              ),
-    ('', 'slansy',               'dlansy',               'clanhe',               'zlanhe'              ),
-    ('', 'slansy',               'dlansy',               'clansy',               'zlansy'              ),
-    ('', 'slansy',               'dlansy',               'slansy',               'dlansy'              ),
-    ('', 'slantr',               'dlantr',               'clantr',               'zlantr'              ),
-    ('', 'slantr',               'dlantr',               'slantr',               'dlantr'              ),
-    ('', 'slapy3',               'dlapy3',               'slapy3',               'dlapy3'              ),
-    ('', 'slaqp2',               'dlaqp2',               'claqp2',               'zlaqp2'              ),
-    ('', 'slaqps',               'dlaqps',               'claqps',               'zlaqps'              ),
-    ('', 'slaqtrs',              'dlaqtrs',              'claqtrs',              'zlaqtrs'             ),
-    ('', 'slarcm',               'dlarcm',               'clarcm',               'zlarcm'              ),
-    ('', 'slarf',                'dlarf',                'clarf',                'zlarf'               ),  # also does zlarfb, zlarfg, etc.
-    ('', 'slarnv',               'dlarnv',               'clarnv',               'zlarnv'              ),
-    ('', 'slarnv',               'dlarnv',               'slarnv',               'dlarnv'              ),
-    ('', 'slartg',               'dlartg',               'clartg',               'zlartg'              ),
-    ('', 'slascl',               'dlascl',               'clascl',               'zlascl'              ),
-    ('', 'slaset',               'dlaset',               'claset',               'zlaset'              ),
-    ('', 'slapmr',               'dlapmr',               'clapmr',               'zlapmr'              ),
-    ('', 'slasrt',               'dlasrt',               'slasrt',               'dlasrt'              ),
-    ('', 'slassq',               'dlassq',               'classq',               'zlassq'              ),
-    ('', 'slaswp',               'dlaswp',               'claswp',               'zlaswp'              ),
-    ('', 'slasyf',               'dlasyf',               'clahef',               'zlahef'              ),
-    ('', 'slatms',               'dlatms',               'clatms',               'zlatms'              ),
-    ('', 'slatrd',               'dlatrd',               'clatrd',               'zlatrd'              ),
-    ('', 'slatrs',               'dlatrs',               'clatrs',               'zlatrs'              ),
-    ('', 'slauum',               'dlauum',               'clauum',               'zlauum'              ),
-    ('', 'slavsy',               'dlavsy',               'clavhe',               'zlavhe'              ),
-    ('', 'sorg2r',               'dorg2r',               'cung2r',               'zung2r'              ),
-    ('', 'sorgbr',               'dorgbr',               'cungbr',               'zungbr'              ),
-    ('', 'sorghr',               'dorghr',               'cunghr',               'zunghr'              ),
-    ('', 'sorglq',               'dorglq',               'cunglq',               'zunglq'              ),
-    ('', 'sorgql',               'dorgql',               'cungql',               'zungql'              ),
-    ('', 'sorgqr',               'dorgqr',               'cungqr',               'zungqr'              ),
-    ('', 'sorgtr',               'dorgtr',               'cungtr',               'zungtr'              ),
-    ('', 'sorm2r',               'dorm2r',               'cunm2r',               'zunm2r'              ),
-    ('', 'sormbr',               'dormbr',               'cunmbr',               'zunmbr'              ),
-    ('', 'sormlq',               'dormlq',               'cunmlq',               'zunmlq'              ),
-    ('', 'sormql',               'dormql',               'cunmql',               'zunmql'              ),
-    ('', 'sormqr',               'dormqr',               'cunmqr',               'zunmqr'              ),
-    ('', 'sormr2',               'dormr2',               'cunmr2',               'zunmr2'              ),
-    ('', 'sormtr',               'dormtr',               'cunmtr',               'zunmtr'              ),
-    ('', 'sort01',               'dort01',               'cunt01',               'zunt01'              ),
-    ('', 'spack',                'dpack',                'cpack',                'zpack'               ),
-    ('', 'spamm',                'dpamm',                'cpamm',                'zpamm'               ),
-    ('', 'sparfb',               'dparfb',               'cparfb',               'zparfb'              ),
-    ('', 'spbsv',                'dpbsv',                'cpbsv',                'zpbsv'               ),
-    ('', 'spbtrf',               'dpbtrf',               'cpbtrf',               'zpbtrf'              ),
-    ('', 'spbtrf',               'dpbtrf',               'cpbtrf',               'zpbtrf'              ),
-    ('', 'spbtrs',               'dpbtrs',               'cpbtrs',               'zpbtrs'              ),
-    ('', 'spbtrs',               'dpbtrs',               'cpbtrs',               'zpbtrs'              ),
-    ('', 'spemv',                'dpemv',                'cpemv',                'zpemv'               ),
-    ('', 'splgsy',               'dplgsy',               'cplghe',               'zplghe'              ),
-    ('', 'splgsy',               'dplgsy',               'cplgsy',               'zplgsy'              ),
-    ('', 'splrnt',               'dplrnt',               'cplrnt',               'zplrnt'              ),
-    ('', 'splrnt',               'dplrnt',               'splrnt',               'dplrnt'              ),
-    ('', 'spoinv',               'dpoinv',               'cpoinv',               'zpoinv'              ),
-    ('', 'sposv',                'dposv',                'cposv',                'zposv'               ),
-    ('', 'spotf2',               'dpotf2',               'cpotf2',               'zpotf2'              ),
-    ('', 'spotrf',               'dpotrf',               'cpotrf',               'zpotrf'              ),
-    ('', 'spotri',               'dpotri',               'cpotri',               'zpotri'              ),
-    ('', 'spotrs',               'dpotrs',               'cpotrs',               'zpotrs'              ),
-    ('', 'sqpt01',               'dqpt01',               'cqpt01',               'zqpt01'              ),
-    ('', 'sqrt02',               'dqrt02',               'cqrt02',               'zqrt02'              ),
-    ('', 'ssbtrd',               'dsbtrd',               'chbtrd',               'zhbtrd'              ),
-    ('', 'sshift',               'dshift',               'cshift',               'zshift'              ),
-    ('', 'sssssm',               'dssssm',               'cssssm',               'zssssm'              ),
-    ('', 'sstebz',               'dstebz',               'sstebz',               'dstebz'              ),
-    ('', 'sstedc',               'dstedc',               'cstedc',               'zstedc'              ),
-    ('', 'sstedx',               'dstedx',               'cstedx',               'zstedx'              ),
-    ('', 'sstedx',               'dstedx',               'sstedx',               'dstedx'              ),
-    ('', 'sstegr',               'dstegr',               'cstegr',               'zstegr'              ),
-    ('', 'sstein',               'dstein',               'cstein',               'zstein'              ),
-    ('', 'sstemr',               'dstemr',               'cstemr',               'zstemr'              ),
-    ('', 'ssteqr',               'dsteqr',               'csteqr',               'zsteqr'              ),
-    ('', 'ssterf',               'dsterf',               'ssterf',               'dsterf'              ),
-    ('', 'ssterm',               'dsterm',               'csterm',               'zsterm'              ),
-    ('', 'sstt21',               'dstt21',               'cstt21',               'zstt21'              ),
-    ('', 'ssyev',                'dsyev',                'cheev',                'zheev'               ),
-    ('', 'ssyevd',               'dsyevd',               'cheevd',               'zheevd'              ),
-    ('', 'ssygs2',               'dsygs2',               'chegs2',               'zhegs2'              ),
-    ('', 'ssygst',               'dsygst',               'chegst',               'zhegst'              ),
-    ('', 'ssygv',                'dsygv',                'chegv',                'zhegv'               ),
-    ('', 'ssyssq',               'dsyssq',               'chessq',               'zhessq'              ),
-    ('', 'ssyssq',               'dsyssq',               'csyssq',               'zsyssq'              ),
-    ('', 'ssyssq',               'dsyssq',               'ssyssq',               'dsyssq'              ),
-    ('', 'ssysv',                'dsysv',                'chesv',                'zhesv'               ),
-    ('', 'ssysv',                'dsysv',                'csysv',                'zsysv'               ),
-    ('', 'ssyswp',               'dsyswp',               'cheswp',               'zheswp'              ),
-    ('', 'ssyt21',               'dsyt21',               'chet21',               'zhet21'              ),
-    ('', 'ssytd2',               'dsytd2',               'chetd2',               'zhetd2'              ),
-    ('', 'ssytf2',               'dsytf2',               'chetf2',               'zhetf2'              ),
-    ('', 'ssytf2',               'dsytf2',               'csytf2',               'zsytf2'              ),
-    ('', 'ssytrd',               'dsytrd',               'chetrd',               'zhetrd'              ),
-    ('', 'ssytrf',               'dsytrf',               'chetrf',               'zhetrf'              ),
-    ('', 'ssytrf',               'dsytrf',               'csytrf',               'zsytrf'              ),
-    ('', 'ssytrs',               'dsytrs',               'chetrs',               'zhetrs'              ),
-    ('', 'ssytrs',               'dsytrs',               'csytrs',               'zsytrs'              ),
-    ('', 'stpgqrt',              'dtpgqrt',              'ctpgqrt',              'ztpgqrt'             ),
-    ('', 'stplqt',               'dtplqt',               'ctplqt',               'ztplqt'              ),
-    ('', 'stpmlqt',              'dtpmlqt',              'ctpmlqt',              'ztpmlqt'             ),
-    ('', 'stpmqrt',              'dtpmqrt',              'ctpmqrt',              'ztpmqrt'             ),
-    ('', 'stpqrt',               'dtpqrt',               'ctpqrt',               'ztpqrt'              ),
-    ('', 'strevc',               'dtrevc',               'ctrevc',               'ztrevc'              ),
-    ('', 'strsmpl',              'dtrsmpl',              'ctrsmpl',              'ztrsmpl'             ),
-    ('', 'strssq',               'dtrssq',               'ctrssq',               'ztrssq'              ),
-    ('', 'strtri',               'dtrtri',               'ctrtri',               'ztrtri'              ),
-    ('', 'stslqt',               'dtslqt',               'ctslqt',               'ztslqt'              ),
-    ('', 'stsmlq',               'dtsmlq',               'ctsmlq',               'ztsmlq'              ),
-    ('', 'stsmqr',               'dtsmqr',               'ctsmqr',               'ztsmqr'              ),
-    ('', 'stsqrt',               'dtsqrt',               'ctsqrt',               'ztsqrt'              ),
-    ('', 'ststrf',               'dtstrf',               'ctstrf',               'ztstrf'              ),
-    ('', 'sttlqt',               'dttlqt',               'cttlqt',               'zttlqt'              ),
-    ('', 'sttmlq',               'dttmlq',               'cttmlq',               'zttmlq'              ),
-    ('', 'sttmqr',               'dttmqr',               'cttmqr',               'zttmqr'              ),
-    ('', 'sttqrt',               'dttqrt',               'cttqrt',               'zttqrt'              ),
+    #int  double mixed            single                  double                  single-complex          single-complex          double-complex
+    #'', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890', '12345678901234567890')
+    ('', 'xdbdsdc',              'sbdsdc',               'dbdsdc',               'xzbdsdc',              'sbdsdc',               'dbdsdc'              ),
+    ('', 'xdbdsqr',              'sbdsqr',               'dbdsqr',               'xzbdsqr',              'cbdsqr',               'zbdsqr'              ),
+    ('', 'xdbdt01',              'sbdt01',               'dbdt01',               'xzbdt01',              'cbdt01',               'zbdt01'              ),
+    ('', 'xdgbbrd',              'sgbbrd',               'dgbbrd',               'xzgbbrd',              'cgbbrd',               'zgbbrd'              ),
+    ('', 'xdgbsv',               'sgbsv',                'dgbsv',                'xzgbsv',               'cgbsv',                'zgbsv'               ),
+    ('', 'xdgbtrf',              'sgbtrf',               'dgbtrf',               'xzgbtrf',              'cgbtrf',               'zgbtrf'              ),
+    ('', 'xdgbtrs',              'sgbtrs',               'dgbtrs',               'xzgbtrs',              'cgbtrs',               'zgbtrs'              ),
+    ('', 'xdgebak',              'sgebak',               'dgebak',               'xzgebak',              'cgebak',               'zgebak'              ),
+    ('', 'xdgebal',              'sgebal',               'dgebal',               'xzgebal',              'cgebal',               'zgebal'              ),
+    ('', 'xdgebd2',              'sgebd2',               'dgebd2',               'xzgebd2',              'cgebd2',               'zgebd2'              ),
+    ('', 'xdgebrd',              'sgebrd',               'dgebrd',               'xzgebrd',              'cgebrd',               'zgebrd'              ),
+    ('', 'xdgeev',               'sgeev',                'dgeev',                'xzgeev',               'cgeev',                'zgeev'               ),
+    ('', 'xdgegqr',              'sgegqr',               'dgegqr',               'xzgegqr',              'cgegqr',               'zgegqr'              ),
+    ('', 'xdgehd2',              'sgehd2',               'dgehd2',               'xzgehd2',              'cgehd2',               'zgehd2'              ),
+    ('', 'xdgehrd',              'sgehrd',               'dgehrd',               'xzgehrd',              'cgehrd',               'zgehrd'              ),
+    ('', 'xdgeinv',              'sgeinv',               'dgeinv',               'xzgeinv',              'cgeinv',               'zgeinv'              ),
+    ('', 'xdgelq2',              'sgelq2',               'dgelq2',               'xzgelq2',              'cgelq2',               'zgelq2'              ),
+    ('', 'xdgelqf',              'sgelqf',               'dgelqf',               'xzgelqf',              'cgelqf',               'zgelqf'              ),
+    ('', 'xdgelqs',              'sgelqs',               'dgelqs',               'xzgelqs',              'cgelqs',               'zgelqs'              ),
+    ('', 'xdgelqt',              'sgelqt',               'dgelqt',               'xzgelqt',              'cgelqt',               'zgelqt'              ),
+    ('', 'xdgels',               'sgels',                'dgels',                'xzgels',               'cgels',                'zgels'               ),
+    ('', 'xdgeqlf',              'sgeqlf',               'dgeqlf',               'xzgeqlf',              'cgeqlf',               'zgeqlf'              ),
+    ('', 'xdgeqp3',              'sgeqp3',               'dgeqp3',               'xzgeqp3',              'cgeqp3',               'zgeqp3'              ),
+    ('', 'xdgeqr2',              'sgeqr2',               'dgeqr2',               'xzgeqr2',              'cgeqr2',               'zgeqr2'              ),
+    ('', 'xdgeqrf',              'sgeqrf',               'dgeqrf',               'xzgeqrf',              'cgeqrf',               'zgeqrf'              ),
+    ('', 'xdgeqrs',              'sgeqrs',               'dgeqrs',               'xzgeqrs',              'cgeqrs',               'zgeqrs'              ),
+    ('', 'xdgeqrt',              'sgeqrt',               'dgeqrt',               'xzgeqrt',              'cgeqrt',               'zgeqrt'              ),
+    ('', 'xdgerfs',              'sgerfs',               'dgerfs',               'xzgerfs',              'cgerfs',               'zgerfs'              ),
+    ('', 'xdgesdd',              'sgesdd',               'dgesdd',               'xzgesdd',              'cgesdd',               'zgesdd'              ),
+    ('', 'xdgessm',              'sgessm',               'dgessm',               'xzgessm',              'cgessm',               'zgessm'              ),
+    ('', 'xdgessq',              'sgessq',               'dgessq',               'xzgessq',              'cgessq',               'zgessq'              ),
+    ('', 'xdgessq',              'sgessq',               'dgessq',               'xzgessq',              'sgessq',               'dgessq'              ),
+    ('', 'xdgesv',               'sgesv',                'dgesv',                'xzgesv',               'cgesv',                'zgesv'               ),  # also does zgesvd
+    ('', 'xdgeswp',              'sgeswp',               'dgeswp',               'xzgeswp',              'cgeswp',               'zgeswp'              ),
+    ('', 'xdget22',              'sget22',               'dget22',               'xzget22',              'cget22',               'zget22'              ),
+    ('', 'xdgetf2',              'sgetf2',               'dgetf2',               'xzgetf2',              'cgetf2',               'zgetf2'              ),
+    ('', 'xdgetmi',              'sgetmi',               'dgetmi',               'xzgetmi',              'cgetmi',               'zgetmi'              ),
+    ('', 'xdgetmo',              'sgetmo',               'dgetmo',               'xzgetmo',              'cgetmo',               'zgetmo'              ),
+    ('', 'xdgetrf',              'sgetrf',               'dgetrf',               'xzgetrf',              'cgetrf',               'zgetrf'              ),
+    ('', 'xdgetri',              'sgetri',               'dgetri',               'xzgetri',              'cgetri',               'zgetri'              ),
+    ('', 'xdgetrs',              'sgetrs',               'dgetrs',               'xzgetrs',              'cgetrs',               'zgetrs'              ),
+    ('', 'xdhseqr',              'shseqr',               'dhseqr',               'xzhseqr',              'chseqr',               'zhseqr'              ),
+    ('', 'xdhst01',              'shst01',               'dhst01',               'xzhst01',              'chst01',               'zhst01'              ),
+    ('', 'xdlabad',              'slabad',               'dlabad',               'xzlabad',              'slabad',               'dlabad'              ),
+    ('', 'xdlabrd',              'slabrd',               'dlabrd',               'xzlabrd',              'clabrd',               'zlabrd'              ),
+    ('', 'xdlacgv',              'slacgv',               'dlacgv',               'xzlacgv',              'clacgv',               'zlacgv'              ),
+    ('', 'xdlacp2',              'slacp2',               'dlacp2',               'xzlacp2',              'clacp2',               'zlacp2'              ),
+    ('', 'xdlacpy',              'slacpy',               'dlacpy',               'xzlacpy',              'clacpy',               'zlacpy'              ),
+    ('', 'xdlacrm',              'slacrm',               'dlacrm',               'xzlacrm',              'clacrm',               'zlacrm'              ),
+    ('', 'xdladiv',              'sladiv',               'dladiv',               'xzladiv',              'cladiv',               'zladiv'              ),
+    ('', 'xdlaed',               'slaed',                'dlaed',                'xzlaed',               'slaed',                'dlaed'               ),
+    ('', 'xdlaex',               'slaex',                'dlaex',                'xzlaex',               'slaex',                'dlaex'               ),
+    ('', 'xdlag2s',              'slag2d',               'dlag2s',               'xzlag2z',              'clag2z',               'zlag2c'              ),
+    ('', 'xdlagsy',              'slagsy',               'dlagsy',               'xzlaghe',              'claghe',               'zlaghe'              ),
+    ('', 'xdlagsy',              'slagsy',               'dlagsy',               'xzlagsy',              'clagsy',               'zlagsy'              ),
+    ('', 'xdlahr',               'slahr',                'dlahr',                'xzlahr',               'clahr',                'zlahr'               ),
+    ('', 'xdlaln2',              'slaln2',               'dlaln2',               'xzlaln2',              'slaln2',               'dlaln2'              ),
+    ('', 'xdlamc3',              'slamc3',               'dlamc3',               'xzlamc3',              'slamc3',               'dlamc3'              ),
+    ('', 'dlamch',               'slamch',               'dlamch',               'zlamch',               'slamch',               'dlamch'              ),
+    ('', 'xdlamrg',              'slamrg',               'dlamrg',               'xzlamrg',              'slamrg',               'dlamrg'              ),
+    ('', 'xdlangb',              'slangb',               'dlangb',               'xzlangb',              'clangb',               'zlangb'              ),
+    ('', 'xdlange',              'slange',               'dlange',               'xzlange',              'clange',               'zlange'              ),
+    ('', 'xdlange',              'slange',               'dlange',               'xzlange',              'slange',               'dlange'              ),
+    ('', 'xdlanst',              'slanst',               'dlanst',               'xzlanht',              'clanht',               'zlanht'              ),
+    ('', 'xdlansy',              'slansy',               'dlansy',               'xzlanhe',              'clanhe',               'zlanhe'              ),
+    ('', 'xdlansy',              'slansy',               'dlansy',               'xzlansy',              'clansy',               'zlansy'              ),
+    ('', 'xdlansy',              'slansy',               'dlansy',               'xzlansy',              'slansy',               'dlansy'              ),
+    ('', 'xdlantr',              'slantr',               'dlantr',               'xzlantr',              'clantr',               'zlantr'              ),
+    ('', 'xdlantr',              'slantr',               'dlantr',               'xzlantr',              'slantr',               'dlantr'              ),
+    ('', 'xdlapy3',              'slapy3',               'dlapy3',               'xzlapy3',              'slapy3',               'dlapy3'              ),
+    ('', 'xdlaqp2',              'slaqp2',               'dlaqp2',               'xzlaqp2',              'claqp2',               'zlaqp2'              ),
+    ('', 'xdlaqps',              'slaqps',               'dlaqps',               'xzlaqps',              'claqps',               'zlaqps'              ),
+    ('', 'xdlaqtrs',             'slaqtrs',              'dlaqtrs',              'xzlaqtrs',             'claqtrs',              'zlaqtrs'             ),
+    ('', 'xdlarcm',              'slarcm',               'dlarcm',               'xzlarcm',              'clarcm',               'zlarcm'              ),
+    ('', 'xdlarf',               'slarf',                'dlarf',                'xzlarf',               'clarf',                'zlarf'               ),  # also does zlarfb, zlarfg, etc.
+    ('', 'xdlarnv',              'slarnv',               'dlarnv',               'xzlarnv',              'clarnv',               'zlarnv'              ),
+    ('', 'xdlarnv',              'slarnv',               'dlarnv',               'xzlarnv',              'slarnv',               'dlarnv'              ),
+    ('', 'xdlartg',              'slartg',               'dlartg',               'xzlartg',              'clartg',               'zlartg'              ),
+    ('', 'xdlascl',              'slascl',               'dlascl',               'xzlascl',              'clascl',               'zlascl'              ),
+    ('', 'xdlaset',              'slaset',               'dlaset',               'xzlaset',              'claset',               'zlaset'              ),
+    ('', 'xdlapmr',              'slapmr',               'dlapmr',               'xzlapmr',              'clapmr',               'zlapmr'              ),
+    ('', 'xdlasrt',              'slasrt',               'dlasrt',               'xzlasrt',              'slasrt',               'dlasrt'              ),
+    ('', 'xdlassq',              'slassq',               'dlassq',               'xzlassq',              'classq',               'zlassq'              ),
+    ('', 'xdlaswp',              'slaswp',               'dlaswp',               'xzlaswp',              'claswp',               'zlaswp'              ),
+    ('', 'xdlasyf',              'slasyf',               'dlasyf',               'xzlahef',              'clahef',               'zlahef'              ),
+    ('', 'xdlatms',              'slatms',               'dlatms',               'xzlatms',              'clatms',               'zlatms'              ),
+    ('', 'xdlatrd',              'slatrd',               'dlatrd',               'xzlatrd',              'clatrd',               'zlatrd'              ),
+    ('', 'xdlatrs',              'slatrs',               'dlatrs',               'xzlatrs',              'clatrs',               'zlatrs'              ),
+    ('', 'xdlauum',              'slauum',               'dlauum',               'xzlauum',              'clauum',               'zlauum'              ),
+    ('', 'xdlavsy',              'slavsy',               'dlavsy',               'xzlavhe',              'clavhe',               'zlavhe'              ),
+    ('', 'xdorg2r',              'sorg2r',               'dorg2r',               'xzung2r',              'cung2r',               'zung2r'              ),
+    ('', 'xdorgbr',              'sorgbr',               'dorgbr',               'xzungbr',              'cungbr',               'zungbr'              ),
+    ('', 'xdorghr',              'sorghr',               'dorghr',               'xzunghr',              'cunghr',               'zunghr'              ),
+    ('', 'xdorglq',              'sorglq',               'dorglq',               'xzunglq',              'cunglq',               'zunglq'              ),
+    ('', 'xdorgql',              'sorgql',               'dorgql',               'xzungql',              'cungql',               'zungql'              ),
+    ('', 'xdorgqr',              'sorgqr',               'dorgqr',               'xzungqr',              'cungqr',               'zungqr'              ),
+    ('', 'xdorgtr',              'sorgtr',               'dorgtr',               'xzungtr',              'cungtr',               'zungtr'              ),
+    ('', 'xdorm2r',              'sorm2r',               'dorm2r',               'xzunm2r',              'cunm2r',               'zunm2r'              ),
+    ('', 'xdormbr',              'sormbr',               'dormbr',               'xzunmbr',              'cunmbr',               'zunmbr'              ),
+    ('', 'xdormlq',              'sormlq',               'dormlq',               'xzunmlq',              'cunmlq',               'zunmlq'              ),
+    ('', 'xdormql',              'sormql',               'dormql',               'xzunmql',              'cunmql',               'zunmql'              ),
+    ('', 'xdormqr',              'sormqr',               'dormqr',               'xzunmqr',              'cunmqr',               'zunmqr'              ),
+    ('', 'xdormr2',              'sormr2',               'dormr2',               'xzunmr2',              'cunmr2',               'zunmr2'              ),
+    ('', 'xdormtr',              'sormtr',               'dormtr',               'xzunmtr',              'cunmtr',               'zunmtr'              ),
+    ('', 'xdort01',              'sort01',               'dort01',               'xzunt01',              'cunt01',               'zunt01'              ),
+    ('', 'xdpack',               'spack',                'dpack',                'xzpack',               'cpack',                'zpack'               ),
+    ('', 'xdpamm',               'spamm',                'dpamm',                'xzpamm',               'cpamm',                'zpamm'               ),
+    ('', 'xdparfb',              'sparfb',               'dparfb',               'xzparfb',              'cparfb',               'zparfb'              ),
+    ('', 'xdpbsv',               'spbsv',                'dpbsv',                'xzpbsv',               'cpbsv',                'zpbsv'               ),
+    ('', 'xdpbtrf',              'spbtrf',               'dpbtrf',               'xzpbtrf',              'cpbtrf',               'zpbtrf'              ),
+    ('', 'xdpbtrf',              'spbtrf',               'dpbtrf',               'xzpbtrf',              'cpbtrf',               'zpbtrf'              ),
+    ('', 'xdpbtrs',              'spbtrs',               'dpbtrs',               'xzpbtrs',              'cpbtrs',               'zpbtrs'              ),
+    ('', 'xdpbtrs',              'spbtrs',               'dpbtrs',               'xzpbtrs',              'cpbtrs',               'zpbtrs'              ),
+    ('', 'xdpemv',               'spemv',                'dpemv',                'xzpemv',               'cpemv',                'zpemv'               ),
+    ('', 'xdplgsy',              'splgsy',               'dplgsy',               'xzplghe',              'cplghe',               'zplghe'              ),
+    ('', 'xdplgsy',              'splgsy',               'dplgsy',               'xzplgsy',              'cplgsy',               'zplgsy'              ),
+    ('', 'xdplrnt',              'splrnt',               'dplrnt',               'xzplrnt',              'cplrnt',               'zplrnt'              ),
+    ('', 'xdplrnt',              'splrnt',               'dplrnt',               'xzplrnt',              'splrnt',               'dplrnt'              ),
+    ('', 'xdpoinv',              'spoinv',               'dpoinv',               'xzpoinv',              'cpoinv',               'zpoinv'              ),
+    ('', 'xdposv',               'sposv',                'dposv',                'xzposv',               'cposv',                'zposv'               ),
+    ('', 'xdpotf2',              'spotf2',               'dpotf2',               'xzpotf2',              'cpotf2',               'zpotf2'              ),
+    ('', 'xdpotrf',              'spotrf',               'dpotrf',               'xzpotrf',              'cpotrf',               'zpotrf'              ),
+    ('', 'xdpotri',              'spotri',               'dpotri',               'xzpotri',              'cpotri',               'zpotri'              ),
+    ('', 'xdpotrs',              'spotrs',               'dpotrs',               'xzpotrs',              'cpotrs',               'zpotrs'              ),
+    ('', 'xdqpt01',              'sqpt01',               'dqpt01',               'xzqpt01',              'cqpt01',               'zqpt01'              ),
+    ('', 'xdqrt02',              'sqrt02',               'dqrt02',               'xzqrt02',              'cqrt02',               'zqrt02'              ),
+    ('', 'xdsbtrd',              'ssbtrd',               'dsbtrd',               'xzhbtrd',              'chbtrd',               'zhbtrd'              ),
+    ('', 'xdshift',              'sshift',               'dshift',               'xzshift',              'cshift',               'zshift'              ),
+    ('', 'xdssssm',              'sssssm',               'dssssm',               'xzssssm',              'cssssm',               'zssssm'              ),
+    ('', 'xdstebz',              'sstebz',               'dstebz',               'xzstebz',              'sstebz',               'dstebz'              ),
+    ('', 'xdstedc',              'sstedc',               'dstedc',               'xzstedc',              'cstedc',               'zstedc'              ),
+    ('', 'xdstedx',              'sstedx',               'dstedx',               'xzstedx',              'cstedx',               'zstedx'              ),
+    ('', 'xdstedx',              'sstedx',               'dstedx',               'xzstedx',              'sstedx',               'dstedx'              ),
+    ('', 'xdstegr',              'sstegr',               'dstegr',               'xzstegr',              'cstegr',               'zstegr'              ),
+    ('', 'xdstein',              'sstein',               'dstein',               'xzstein',              'cstein',               'zstein'              ),
+    ('', 'xdstemr',              'sstemr',               'dstemr',               'xzstemr',              'cstemr',               'zstemr'              ),
+    ('', 'xdsteqr',              'ssteqr',               'dsteqr',               'xzsteqr',              'csteqr',               'zsteqr'              ),
+    ('', 'xdsterf',              'ssterf',               'dsterf',               'xzsterf',              'ssterf',               'dsterf'              ),
+    ('', 'xdsterm',              'ssterm',               'dsterm',               'xzsterm',              'csterm',               'zsterm'              ),
+    ('', 'xdstt21',              'sstt21',               'dstt21',               'xzstt21',              'cstt21',               'zstt21'              ),
+    ('', 'xdsyev',               'ssyev',                'dsyev',                'xzheev',               'cheev',                'zheev'               ),
+    ('', 'xdsyevd',              'ssyevd',               'dsyevd',               'xzheevd',              'cheevd',               'zheevd'              ),
+    ('', 'xdsygs2',              'ssygs2',               'dsygs2',               'xzhegs2',              'chegs2',               'zhegs2'              ),
+    ('', 'xdsygst',              'ssygst',               'dsygst',               'xzhegst',              'chegst',               'zhegst'              ),
+    ('', 'xdsygv',               'ssygv',                'dsygv',                'xzhegv',               'chegv',                'zhegv'               ),
+    ('', 'xdsyssq',              'ssyssq',               'dsyssq',               'xzhessq',              'chessq',               'zhessq'              ),
+    ('', 'xdsyssq',              'ssyssq',               'dsyssq',               'xzsyssq',              'csyssq',               'zsyssq'              ),
+    ('', 'xdsyssq',              'ssyssq',               'dsyssq',               'xzsyssq',              'ssyssq',               'dsyssq'              ),
+    ('', 'xdsysv',               'ssysv',                'dsysv',                'xzhesv',               'chesv',                'zhesv'               ),
+    ('', 'xdsysv',               'ssysv',                'dsysv',                'xzsysv',               'csysv',                'zsysv'               ),
+    ('', 'xdsyswp',              'ssyswp',               'dsyswp',               'xzheswp',              'cheswp',               'zheswp'              ),
+    ('', 'xdsyt21',              'ssyt21',               'dsyt21',               'xzhet21',              'chet21',               'zhet21'              ),
+    ('', 'xdsytd2',              'ssytd2',               'dsytd2',               'xzhetd2',              'chetd2',               'zhetd2'              ),
+    ('', 'xdsytf2',              'ssytf2',               'dsytf2',               'xzhetf2',              'chetf2',               'zhetf2'              ),
+    ('', 'xdsytf2',              'ssytf2',               'dsytf2',               'xzsytf2',              'csytf2',               'zsytf2'              ),
+    ('', 'xdsytrd',              'ssytrd',               'dsytrd',               'xzhetrd',              'chetrd',               'zhetrd'              ),
+    ('', 'xdsytrf',              'ssytrf',               'dsytrf',               'xzhetrf',              'chetrf',               'zhetrf'              ),
+    ('', 'xdsytrf',              'ssytrf',               'dsytrf',               'xzsytrf',              'csytrf',               'zsytrf'              ),
+    ('', 'xdsytrs',              'ssytrs',               'dsytrs',               'xzhetrs',              'chetrs',               'zhetrs'              ),
+    ('', 'xdsytrs',              'ssytrs',               'dsytrs',               'xzsytrs',              'csytrs',               'zsytrs'              ),
+    ('', 'xdtpgqrt',             'stpgqrt',              'dtpgqrt',              'xztpgqrt',             'ctpgqrt',              'ztpgqrt'             ),
+    ('', 'xdtplqt',              'stplqt',               'dtplqt',               'xztplqt',              'ctplqt',               'ztplqt'              ),
+    ('', 'xdtpmlqt',             'stpmlqt',              'dtpmlqt',              'xztpmlqt',             'ctpmlqt',              'ztpmlqt'             ),
+    ('', 'xdtpmqrt',             'stpmqrt',              'dtpmqrt',              'xztpmqrt',             'ctpmqrt',              'ztpmqrt'             ),
+    ('', 'xdtpqrt',              'stpqrt',               'dtpqrt',               'xztpqrt',              'ctpqrt',               'ztpqrt'              ),
+    ('', 'xdtrevc',              'strevc',               'dtrevc',               'xztrevc',              'ctrevc',               'ztrevc'              ),
+    ('', 'xdtrsmpl',             'strsmpl',              'dtrsmpl',              'xztrsmpl',             'ctrsmpl',              'ztrsmpl'             ),
+    ('', 'xdtrssq',              'strssq',               'dtrssq',               'xztrssq',              'ctrssq',               'ztrssq'              ),
+    ('', 'xdtrtri',              'strtri',               'dtrtri',               'xztrtri',              'ctrtri',               'ztrtri'              ),
+    ('', 'xdtslqt',              'stslqt',               'dtslqt',               'xztslqt',              'ctslqt',               'ztslqt'              ),
+    ('', 'xdtsmlq',              'stsmlq',               'dtsmlq',               'xztsmlq',              'ctsmlq',               'ztsmlq'              ),
+    ('', 'xdtsmqr',              'stsmqr',               'dtsmqr',               'xztsmqr',              'ctsmqr',               'ztsmqr'              ),
+    ('', 'xdtsqrt',              'stsqrt',               'dtsqrt',               'xztsqrt',              'ctsqrt',               'ztsqrt'              ),
+    ('', 'xdtstrf',              'ststrf',               'dtstrf',               'xztstrf',              'ctstrf',               'ztstrf'              ),
+    ('', 'xdttlqt',              'sttlqt',               'dttlqt',               'xzttlqt',              'cttlqt',               'zttlqt'              ),
+    ('', 'xdttmlq',              'sttmlq',               'dttmlq',               'xzttmlq',              'cttmlq',               'zttmlq'              ),
+    ('', 'xdttmqr',              'sttmqr',               'dttmqr',               'xzttmqr',              'cttmqr',               'zttmqr'              ),
+    ('', 'xdttqrt',              'sttqrt',               'dttqrt',               'xzttqrt',              'cttqrt',               'zttqrt'              ),
 ]