libflame  revision_anchor
FLA_util_lapack_prototypes.h
Go to the documentation of this file.
00001 /*
00002 
00003     Copyright (C) 2014, The University of Texas at Austin
00004 
00005     This file is part of libflame and is available under the 3-Clause
00006     BSD license, which can be found in the LICENSE file at the top-level
00007     directory, or at http://opensource.org/licenses/BSD-3-Clause
00008 
00009 */
00010 
00011 // --- LAPACK-related utility prototypes ---------------------------------------
00012 
00013 FLA_Error FLA_Househ2_UT( FLA_Side side, FLA_Obj chi_1, FLA_Obj x2, FLA_Obj tau );
00014 FLA_Error FLA_Househ2_UT_l_ops( int m_x2,
00015                                 float* chi_1,
00016                                 float* x2, int inc_x2,
00017                                 float* tau );
00018 FLA_Error FLA_Househ2_UT_l_opd( int m_x2,
00019                                 double* chi_1,
00020                                 double* x2, int inc_x2,
00021                                 double* tau );
00022 FLA_Error FLA_Househ2_UT_l_opc( int m_x2,
00023                                 scomplex* chi_1,
00024                                 scomplex* x2, int inc_x2,
00025                                 scomplex* tau );
00026 FLA_Error FLA_Househ2_UT_l_opz( int m_x2,
00027                                 dcomplex* chi_1,
00028                                 dcomplex* x2, int inc_x2,
00029                                 dcomplex* tau );
00030 FLA_Error FLA_Househ2_UT_r_ops( int m_x2,
00031                                 float* chi_1,
00032                                 float* x2, int inc_x2,
00033                                 float* tau );
00034 FLA_Error FLA_Househ2_UT_r_opd( int m_x2,
00035                                 double* chi_1,
00036                                 double* x2, int inc_x2,
00037                                 double* tau );
00038 FLA_Error FLA_Househ2_UT_r_opc( int m_x2,
00039                                 scomplex* chi_1,
00040                                 scomplex* x2, int inc_x2,
00041                                 scomplex* tau );
00042 FLA_Error FLA_Househ2_UT_r_opz( int m_x2,
00043                                 dcomplex* chi_1,
00044                                 dcomplex* x2, int inc_x2,
00045                                 dcomplex* tau );
00046 
00047 FLA_Error FLA_Househ3UD_UT( FLA_Obj chi_1, FLA_Obj x2, FLA_Obj y2, FLA_Obj tau );
00048 FLA_Error FLA_Househ3UD_UT_ops( int m_x2,
00049                                 int m_y2,
00050                                 float* chi_1,
00051                                 float* x2, int inc_x2,
00052                                 float* y2, int inc_y2,
00053                                 float* tau );
00054 FLA_Error FLA_Househ3UD_UT_opd( int m_x2,
00055                                 int m_y2,
00056                                 double* chi_1,
00057                                 double* x2, int inc_x2,
00058                                 double* y2, int inc_y2,
00059                                 double* tau );
00060 FLA_Error FLA_Househ3UD_UT_opc( int m_x2,
00061                                 int m_y2,
00062                                 scomplex* chi_1,
00063                                 scomplex* x2, int inc_x2,
00064                                 scomplex* y2, int inc_y2,
00065                                 scomplex* tau );
00066 FLA_Error FLA_Househ3UD_UT_opz( int m_x2,
00067                                 int m_y2,
00068                                 dcomplex* chi_1,
00069                                 dcomplex* x2, int inc_x2,
00070                                 dcomplex* y2, int inc_y2,
00071                                 dcomplex* tau );
00072 
00073 FLA_Error FLA_Househ2s_UT( FLA_Side side, FLA_Obj chi_1, FLA_Obj x2, FLA_Obj alpha, FLA_Obj chi_1_minus_alpha, FLA_Obj tau );
00074 FLA_Error FLA_Househ2s_UT_l_ops( int    m_x2,
00075                                  float* chi_1,
00076                                  float* x2, int inc_x2,
00077                                  float* alpha,
00078                                  float* chi_1_minus_alpha,
00079                                  float* tau );
00080 FLA_Error FLA_Househ2s_UT_l_opd( int     m_x2,
00081                                  double* chi_1,
00082                                  double* x2, int inc_x2,
00083                                  double* alpha,
00084                                  double* chi_1_minus_alpha,
00085                                  double* tau );
00086 FLA_Error FLA_Househ2s_UT_l_opc( int       m_x2,
00087                                  scomplex* chi_1,
00088                                  scomplex* x2, int inc_x2,
00089                                  scomplex* alpha,
00090                                  scomplex* chi_1_minus_alpha,
00091                                  scomplex* tau );
00092 FLA_Error FLA_Househ2s_UT_l_opz( int       m_x2,
00093                                  dcomplex* chi_1,
00094                                  dcomplex* x2, int inc_x2,
00095                                  dcomplex* alpha,
00096                                  dcomplex* chi_1_minus_alpha,
00097                                  dcomplex* tau );
00098 FLA_Error FLA_Househ2s_UT_r_ops( int    m_x2,
00099                                  float* chi_1,
00100                                  float* x2, int inc_x2,
00101                                  float* alpha,
00102                                  float* chi_1_minus_alpha,
00103                                  float* tau );
00104 FLA_Error FLA_Househ2s_UT_r_opd( int     m_x2,
00105                                  double* chi_1,
00106                                  double* x2, int inc_x2,
00107                                  double* alpha,
00108                                  double* chi_1_minus_alpha,
00109                                  double* tau );
00110 FLA_Error FLA_Househ2s_UT_r_opc( int       m_x2,
00111                                  scomplex* chi_1,
00112                                  scomplex* x2, int inc_x2,
00113                                  scomplex* alpha,
00114                                  scomplex* chi_1_minus_alpha,
00115                                  scomplex* tau );
00116 FLA_Error FLA_Househ2s_UT_r_opz( int       m_x2,
00117                                  dcomplex* chi_1,
00118                                  dcomplex* x2, int inc_x2,
00119                                  dcomplex* alpha,
00120                                  dcomplex* chi_1_minus_alpha,
00121                                  dcomplex* tau );
00122 
00123 FLA_Error FLA_Hev_2x2( FLA_Obj alpha11, FLA_Obj alpha21, FLA_Obj alpha22,
00124                        FLA_Obj lambda1, FLA_Obj lambda2 );
00125 FLA_Error FLA_Hev_2x2_ops( float*    buff_alpha11,
00126                            float*    buff_alpha21,
00127                            float*    buff_alpha22,
00128                            float*    buff_lambda1,
00129                            float*    buff_lambda2 );
00130 FLA_Error FLA_Hev_2x2_opd( double*   buff_alpha11,
00131                            double*   buff_alpha21,
00132                            double*   buff_alpha22,
00133                            double*   buff_lambda1,
00134                            double*   buff_lambda2 );
00135 
00136 FLA_Error FLA_Hevv_2x2( FLA_Obj alpha11, FLA_Obj alpha21, FLA_Obj alpha22,
00137                         FLA_Obj lambda1, FLA_Obj lambda2,
00138                         FLA_Obj gamma1,  FLA_Obj sigma1 );
00139 FLA_Error FLA_Hevv_2x2_ops( float*    alpha11,
00140                             float*    alpha21,
00141                             float*    alpha22,
00142                             float*    lambda1,
00143                             float*    lambda2,
00144                             float*    gamma1,
00145                             float*    sigma1 );
00146 FLA_Error FLA_Hevv_2x2_opd( double*   alpha11,
00147                             double*   alpha21,
00148                             double*   alpha22,
00149                             double*   lambda1,
00150                             double*   lambda2,
00151                             double*   gamma1,
00152                             double*   sigma1 );
00153 FLA_Error FLA_Hevv_2x2_opc( scomplex* alpha11,
00154                             scomplex* alpha21,
00155                             scomplex* alpha22,
00156                             float*    lambda1,
00157                             float*    lambda2,
00158                             float*    gamma1,
00159                             scomplex* sigma1 );
00160 FLA_Error FLA_Hevv_2x2_opz( dcomplex* alpha11,
00161                             dcomplex* alpha21,
00162                             dcomplex* alpha22,
00163                             double*   lambda1,
00164                             double*   lambda2,
00165                             double*   gamma1,
00166                             dcomplex* sigma1 );
00167 
00168 FLA_Error FLA_Wilkshift_tridiag( FLA_Obj delta1, FLA_Obj epsilon, FLA_Obj delta2, FLA_Obj kappa );
00169 FLA_Error FLA_Wilkshift_tridiag_ops( float   delta1,
00170                                      float   epsilon,
00171                                      float   delta2,
00172                                      float*  kappa );
00173 FLA_Error FLA_Wilkshift_tridiag_opd( double  delta1,
00174                                      double  epsilon,
00175                                      double  delta2,
00176                                      double* kappa );
00177 
00178 FLA_Error FLA_Pythag2( FLA_Obj chi, FLA_Obj psi, FLA_Obj rho );
00179 FLA_Error FLA_Pythag2_ops( float*    chi,
00180                            float*    psi,
00181                            float*    rho );
00182 FLA_Error FLA_Pythag2_opd( double*   chi,
00183                            double*   psi,
00184                            double*   rho );
00185 
00186 FLA_Error FLA_Pythag3( FLA_Obj chi, FLA_Obj psi, FLA_Obj zeta, FLA_Obj rho );
00187 FLA_Error FLA_Pythag3_ops( float*    chi,
00188                            float*    psi,
00189                            float*    zeta,
00190                            float*    rho );
00191 FLA_Error FLA_Pythag3_opd( double*   chi,
00192                            double*   psi,
00193                            double*   zeta,
00194                            double*   rho );
00195 
00196 FLA_Error FLA_Sort_evd( FLA_Direct direct, FLA_Obj l, FLA_Obj V );
00197 FLA_Error FLA_Sort_evd_f_ops( int       m_A,
00198                               float*    l, int inc_l,
00199                               float*    V, int rs_V, int cs_V );
00200 FLA_Error FLA_Sort_evd_b_ops( int       m_A,
00201                               float*    l, int inc_l,
00202                               float*    V, int rs_V, int cs_V );
00203 FLA_Error FLA_Sort_evd_f_opd( int       m_A,
00204                               double*   l, int inc_l,
00205                               double*   V, int rs_V, int cs_V );
00206 FLA_Error FLA_Sort_evd_b_opd( int       m_A,
00207                               double*   l, int inc_l,
00208                               double*   V, int rs_V, int cs_V );
00209 FLA_Error FLA_Sort_evd_f_opc( int       m_A,
00210                               float*    l, int inc_l,
00211                               scomplex* V, int rs_V, int cs_V );
00212 FLA_Error FLA_Sort_evd_b_opc( int       m_A,
00213                               float*    l, int inc_l,
00214                               scomplex* V, int rs_V, int cs_V );
00215 FLA_Error FLA_Sort_evd_f_opz( int       m_A,
00216                               double*   l, int inc_l,
00217                               dcomplex* V, int rs_V, int cs_V );
00218 FLA_Error FLA_Sort_evd_b_opz( int       m_A,
00219                               double*   l, int inc_l,
00220                               dcomplex* V, int rs_V, int cs_V );
00221 
00222 FLA_Error FLA_Sort_bsvd_ext( FLA_Direct direct, FLA_Obj s,
00223                              FLA_Bool apply_U, FLA_Obj U,
00224                              FLA_Bool apply_V, FLA_Obj V,
00225                              FLA_Bool apply_C, FLA_Obj C );
00226 FLA_Error FLA_Sort_bsvd_ext_f_ops( int m_s, float* s, int inc_s,
00227                                    int m_U, float* U, int rs_U, int cs_U,
00228                                    int m_V, float* V, int rs_V, int cs_V,
00229                                    int n_C, float* C, int rs_C, int cs_C );
00230 FLA_Error FLA_Sort_bsvd_ext_b_ops( int m_s, float* s, int inc_s,
00231                                    int m_U, float* U, int rs_U, int cs_U,
00232                                    int m_V, float* V, int rs_V, int cs_V,
00233                                    int n_C, float* C, int rs_C, int cs_C );
00234 FLA_Error FLA_Sort_bsvd_ext_f_opd( int m_s, double* s, int inc_s,
00235                                    int m_U, double* U, int rs_U, int cs_U,
00236                                    int m_V, double* V, int rs_V, int cs_V,
00237                                    int n_C, double* C, int rs_C, int cs_C );
00238 FLA_Error FLA_Sort_bsvd_ext_b_opd( int m_s, double* s, int inc_s,
00239                                    int m_U, double* U, int rs_U, int cs_U,
00240                                    int m_V, double* V, int rs_V, int cs_V,
00241                                    int n_C, double* C, int rs_C, int cs_C );
00242 FLA_Error FLA_Sort_bsvd_ext_f_opc( int m_s, float*    s, int inc_s,
00243                                    int m_U, scomplex* U, int rs_U, int cs_U,
00244                                    int m_V, scomplex* V, int rs_V, int cs_V,
00245                                    int n_C, scomplex* C, int rs_C, int cs_C );
00246 FLA_Error FLA_Sort_bsvd_ext_b_opc( int m_s, float*    s, int inc_s,
00247                                    int m_U, scomplex* U, int rs_U, int cs_U,
00248                                    int m_V, scomplex* V, int rs_V, int cs_V,
00249                                    int n_C, scomplex* C, int rs_C, int cs_C );
00250 FLA_Error FLA_Sort_bsvd_ext_f_opz( int m_s, double*   s, int inc_s,
00251                                    int m_U, dcomplex* U, int rs_U, int cs_U,
00252                                    int m_V, dcomplex* V, int rs_V, int cs_V,
00253                                    int n_C, dcomplex* C, int rs_C, int cs_C );
00254 FLA_Error FLA_Sort_bsvd_ext_b_opz( int m_s, double*   s, int inc_s,
00255                                    int m_U, dcomplex* U, int rs_U, int cs_U,
00256                                    int m_V, dcomplex* V, int rs_V, int cs_V,
00257                                    int n_C, dcomplex* C, int rs_C, int cs_C );
00258 
00259 FLA_Error FLA_Sort_svd( FLA_Direct direct, FLA_Obj s, FLA_Obj U, FLA_Obj V );
00260 FLA_Error FLA_Sort_svd_f_ops( int       m_U,
00261                               int       n_V,
00262                               float*    s, int inc_s,
00263                               float*    U, int rs_U, int cs_U,
00264                               float*    V, int rs_V, int cs_V );
00265 FLA_Error FLA_Sort_svd_b_ops( int       m_U,
00266                               int       n_V,
00267                               float*    s, int inc_s,
00268                               float*    U, int rs_U, int cs_U,
00269                               float*    V, int rs_V, int cs_V );
00270 FLA_Error FLA_Sort_svd_f_opd( int       m_U,
00271                               int       n_V,
00272                               double*   s, int inc_s,
00273                               double*   U, int rs_U, int cs_U,
00274                               double*   V, int rs_V, int cs_V );
00275 FLA_Error FLA_Sort_svd_b_opd( int       m_U,
00276                               int       n_V,
00277                               double*   s, int inc_s,
00278                               double*   U, int rs_U, int cs_U,
00279                               double*   V, int rs_V, int cs_V );
00280 FLA_Error FLA_Sort_svd_f_opc( int       m_U,
00281                               int       n_V,
00282                               float*    s, int inc_s,
00283                               scomplex* U, int rs_U, int cs_U,
00284                               scomplex* V, int rs_V, int cs_V );
00285 FLA_Error FLA_Sort_svd_b_opc( int       m_U,
00286                               int       n_V,
00287                               float*    s, int inc_s,
00288                               scomplex* U, int rs_U, int cs_U,
00289                               scomplex* V, int rs_V, int cs_V );
00290 FLA_Error FLA_Sort_svd_f_opz( int       m_U,
00291                               int       n_V,
00292                               double*   s, int inc_s,
00293                               dcomplex* U, int rs_U, int cs_U,
00294                               dcomplex* V, int rs_V, int cs_V );
00295 FLA_Error FLA_Sort_svd_b_opz( int       m_U,
00296                               int       n_V,
00297                               double*   s, int inc_s,
00298                               dcomplex* U, int rs_U, int cs_U,
00299                               dcomplex* V, int rs_V, int cs_V );
00300 
00301 FLA_Error FLA_Sv_2x2( FLA_Obj alpha11, FLA_Obj alpha12, FLA_Obj alpha22,
00302                       FLA_Obj sigma1, FLA_Obj sigma2 );
00303 FLA_Error FLA_Sv_2x2_ops( float*    alpha11,
00304                           float*    alpha12,
00305                           float*    alpha22,
00306                           float*    sigma1,
00307                           float*    sigma2 );
00308 FLA_Error FLA_Sv_2x2_opd( double*   alpha11,
00309                           double*   alpha12,
00310                           double*   alpha22,
00311                           double*   sigma1,
00312                           double*   sigma2 );
00313 
00314 FLA_Error FLA_Svv_2x2( FLA_Obj alpha11, FLA_Obj alpha12, FLA_Obj alpha22,
00315                        FLA_Obj sigma1, FLA_Obj sigma2,
00316                        FLA_Obj gammaL, FLA_Obj sigmaL,
00317                        FLA_Obj gammaR, FLA_Obj sigmaR );
00318 FLA_Error FLA_Svv_2x2_ops( float*    alpha11,
00319                            float*    alpha12,
00320                            float*    alpha22,
00321                            float*    sigma1,
00322                            float*    sigma2,
00323                            float*    gammaL,
00324                            float*    sigmaL,
00325                            float*    gammaR,
00326                            float*    sigmaR );
00327 FLA_Error FLA_Svv_2x2_opd( double*   alpha11,
00328                            double*   alpha12,
00329                            double*   alpha22,
00330                            double*   sigma1,
00331                            double*   sigma2,
00332                            double*   gammaL,
00333                            double*   sigmaL,
00334                            double*   gammaR,
00335                            double*   sigmaR );
00336 
00337 FLA_Error FLA_Mach_params( FLA_Machval machval, FLA_Obj val );
00338 float     FLA_Mach_params_ops( FLA_Machval machval );
00339 double    FLA_Mach_params_opd( FLA_Machval machval );
00340 
00341 FLA_Error FLA_Apply_diag_matrix( FLA_Side side, FLA_Conj conj, FLA_Obj x, FLA_Obj A );
00342 FLA_Error FLA_Shift_pivots_to( FLA_Pivot_type ptype, FLA_Obj p );
00343 FLA_Error FLA_Form_perm_matrix( FLA_Obj p, FLA_Obj A );
00344 FLA_Error FLA_LU_find_zero_on_diagonal( FLA_Obj A );
00345 
00346 // --- f2c-converted routine prototypes ----------------------------------------
00347 
00348 doublereal fla_dlamch( char* cmach, ftnlen cmach_len );
00349 real       fla_slamch( char* cmach, ftnlen cmach_len );
00350 logical    fla_lsame( char* ca, char* cb, ftnlen ca_len, ftnlen cb_len );
00351 double     fla_pow_di( doublereal* a, integer* n );
00352 real       fla_pow_ri( real* a, integer* n );
00353 
00354 // --- LAPACK-related utility check routine prototypes -------------------------
00355 
00356 FLA_Error FLA_Househ2_UT_check( FLA_Side side, FLA_Obj chi_1, FLA_Obj x2, FLA_Obj tau );
00357 FLA_Error FLA_Househ3UD_UT_check( FLA_Obj chi_1, FLA_Obj x2, FLA_Obj y2, FLA_Obj tau );
00358 FLA_Error FLA_Househ2s_UT_check( FLA_Side side, FLA_Obj chi_1, FLA_Obj x2, FLA_Obj alpha, FLA_Obj chi_1_minus_alpha, FLA_Obj tau );
00359 
00360 FLA_Error FLA_Givens2_check( FLA_Obj chi_1, FLA_Obj chi_2, FLA_Obj gamma, FLA_Obj sigma, FLA_Obj chi_1_new );
00361 FLA_Error FLA_Apply_GTG_check( FLA_Obj gamma, FLA_Obj sigma, FLA_Obj delta1, FLA_Obj epsilon1, FLA_Obj delta2 );
00362 FLA_Error FLA_Apply_G_1x2_check( FLA_Obj gamma, FLA_Obj sigma, FLA_Obj beta, FLA_Obj epsilon );
00363 FLA_Error FLA_Apply_G_mx2_check( FLA_Obj gamma, FLA_Obj sigma, FLA_Obj a1, FLA_Obj a2 );
00364 FLA_Error FLA_Apply_G_check( FLA_Side side, FLA_Direct direct, FLA_Obj G, FLA_Obj A );
00365 FLA_Error FLA_Wilkshift_tridiag_check( FLA_Obj delta1, FLA_Obj epsilon, FLA_Obj delta2, FLA_Obj kappa );
00366 FLA_Error FLA_Wilkshift_bidiag_check( FLA_Obj epsilon1, FLA_Obj delta1, FLA_Obj epsilon2, FLA_Obj delta2, FLA_Obj kappa );
00367 FLA_Error FLA_Introduce_bulge_check( FLA_Obj shift, FLA_Obj gamma, FLA_Obj sigma, FLA_Obj delta1, FLA_Obj epsilon1, FLA_Obj delta2, FLA_Obj beta, FLA_Obj epsilon2 );
00368 FLA_Error FLA_Mach_params_check( FLA_Machval machval, FLA_Obj val );
00369 
00370 FLA_Error FLA_Sort_evd_check( FLA_Direct direct, FLA_Obj l, FLA_Obj V );
00371 FLA_Error FLA_Sort_svd_check( FLA_Direct direct, FLA_Obj s, FLA_Obj U, FLA_Obj V );
00372 
00373 FLA_Error FLA_Apply_diag_matrix_check( FLA_Side side, FLA_Conj conj, FLA_Obj x, FLA_Obj A );
00374 FLA_Error FLA_Shift_pivots_to_check( FLA_Pivot_type ptype, FLA_Obj p );
00375 FLA_Error FLA_Form_perm_matrix_check( FLA_Obj p, FLA_Obj A );
00376 FLA_Error FLA_LU_find_zero_on_diagonal_check( FLA_Obj A );
00377