libflame
revision_anchor
|
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