libflame
revision_anchor
|
00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2011, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 #include "FLA_Tevd_iteracc_v.h" 00034 #include "FLA_Tevd_eigval_v.h" 00035 #include "FLA_Tevd_francis_v.h" 00036 00037 // --- FLA_Tevd_compute_scaling() ---------------------------------------------- 00038 00039 FLA_Error FLA_Tevd_compute_scaling_ops( int m_A, 00040 float* buff_d, int inc_d, 00041 float* buff_e, int inc_e, 00042 float* sigma ); 00043 FLA_Error FLA_Tevd_compute_scaling_opd( int m_A, 00044 double* buff_d, int inc_d, 00045 double* buff_e, int inc_e, 00046 double* sigma ); 00047 00048 // --- FLA_Tevd_find_submatrix() ----------------------------------------------- 00049 00050 FLA_Error FLA_Tevd_find_submatrix_ops( int m_A, 00051 int ij_begin, 00052 float* buff_d, int inc_d, 00053 float* buff_e, int inc_e, 00054 int* ijTL, 00055 int* ijBR ); 00056 FLA_Error FLA_Tevd_find_submatrix_opd( int m_A, 00057 int ij_begin, 00058 double* buff_d, int inc_d, 00059 double* buff_e, int inc_e, 00060 int* ijTL, 00061 int* ijBR ); 00062 00063 // --- FLA_Tevd_find_perfshift() ----------------------------------------------- 00064 00065 FLA_Error FLA_Tevd_find_perfshift_ops( int m_d, 00066 int m_l, 00067 float* buff_d, int inc_d, 00068 float* buff_e, int inc_e, 00069 float* buff_l, int inc_l, 00070 int* buff_lstat, int inc_lstat, 00071 float* buff_pu, int inc_pu, 00072 int* ij_shift ); 00073 FLA_Error FLA_Tevd_find_perfshift_opd( int m_d, 00074 int m_l, 00075 double* buff_d, int inc_d, 00076 double* buff_e, int inc_e, 00077 double* buff_l, int inc_l, 00078 int* buff_lstat, int inc_lstat, 00079 double* buff_pu, int inc_pu, 00080 int* ij_shift ); 00081 00082 // --- FLA_Norm1_tridiag() ----------------------------------------------------- 00083 00084 FLA_Error FLA_Norm1_tridiag( FLA_Obj d, FLA_Obj e, FLA_Obj norm ); 00085 FLA_Error FLA_Norm1_tridiag_ops( int m_A, 00086 float* buff_d, int inc_d, 00087 float* buff_e, int inc_e, 00088 float* norm ); 00089 FLA_Error FLA_Norm1_tridiag_opd( int m_A, 00090 double* buff_d, int inc_d, 00091 double* buff_e, int inc_e, 00092 double* norm ); 00093 00094 // --- FLA_Tevd_v_opt_var1() --------------------------------------------------- 00095 00096 FLA_Error FLA_Tevd_v_opt_var1( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj U, dim_t b_alg ); 00097 FLA_Error FLA_Tevd_v_ops_var1( int m_A, 00098 int m_U, 00099 int n_G, 00100 int n_iter_max, 00101 float* buff_d, int inc_d, 00102 float* buff_e, int inc_e, 00103 scomplex* buff_G, int rs_G, int cs_G, 00104 float* buff_U, int rs_U, int cs_U, 00105 int b_alg ); 00106 FLA_Error FLA_Tevd_v_opd_var1( int m_A, 00107 int m_U, 00108 int n_G, 00109 int n_iter_max, 00110 double* buff_d, int inc_d, 00111 double* buff_e, int inc_e, 00112 dcomplex* buff_G, int rs_G, int cs_G, 00113 double* buff_U, int rs_U, int cs_U, 00114 int b_alg ); 00115 FLA_Error FLA_Tevd_v_opc_var1( int m_A, 00116 int m_U, 00117 int n_G, 00118 int n_iter_max, 00119 float* buff_d, int inc_d, 00120 float* buff_e, int inc_e, 00121 scomplex* buff_G, int rs_G, int cs_G, 00122 scomplex* buff_U, int rs_U, int cs_U, 00123 int b_alg ); 00124 FLA_Error FLA_Tevd_v_opz_var1( int m_A, 00125 int m_U, 00126 int n_G, 00127 int n_iter_max, 00128 double* buff_d, int inc_d, 00129 double* buff_e, int inc_e, 00130 dcomplex* buff_G, int rs_G, int cs_G, 00131 dcomplex* buff_U, int rs_U, int cs_U, 00132 int b_alg ); 00133 00134 // --- FLA_Tevd_v_opt_var2() --------------------------------------------------- 00135 00136 FLA_Error FLA_Tevd_v_opt_var2( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj R, FLA_Obj W, FLA_Obj U, dim_t b_alg ); 00137 FLA_Error FLA_Tevd_v_ops_var2( int m_A, 00138 int m_U, 00139 int n_G, 00140 int n_G_extra, 00141 float* buff_d, int inc_d, 00142 float* buff_e, int inc_e, 00143 scomplex* buff_G, int rs_G, int cs_G, 00144 float* buff_R, int rs_R, int cs_R, 00145 float* buff_W, int rs_W, int cs_W, 00146 float* buff_U, int rs_U, int cs_U, 00147 int b_alg ); 00148 FLA_Error FLA_Tevd_v_opd_var2( int m_A, 00149 int m_U, 00150 int n_G, 00151 int n_G_extra, 00152 double* buff_d, int inc_d, 00153 double* buff_e, int inc_e, 00154 dcomplex* buff_G, int rs_G, int cs_G, 00155 double* buff_R, int rs_R, int cs_R, 00156 double* buff_W, int rs_W, int cs_W, 00157 double* buff_U, int rs_U, int cs_U, 00158 int b_alg ); 00159 FLA_Error FLA_Tevd_v_opc_var2( int m_A, 00160 int m_U, 00161 int n_G, 00162 int n_G_extra, 00163 float* buff_d, int inc_d, 00164 float* buff_e, int inc_e, 00165 scomplex* buff_G, int rs_G, int cs_G, 00166 float* buff_R, int rs_R, int cs_R, 00167 scomplex* buff_W, int rs_W, int cs_W, 00168 scomplex* buff_U, int rs_U, int cs_U, 00169 int b_alg ); 00170 FLA_Error FLA_Tevd_v_opz_var2( int m_A, 00171 int m_U, 00172 int n_G, 00173 int n_G_extra, 00174 double* buff_d, int inc_d, 00175 double* buff_e, int inc_e, 00176 dcomplex* buff_G, int rs_G, int cs_G, 00177 double* buff_R, int rs_R, int cs_R, 00178 dcomplex* buff_W, int rs_W, int cs_W, 00179 dcomplex* buff_U, int rs_U, int cs_U, 00180 int b_alg ); 00181 00182 // --- FLA_Tevd_v_opt_var3() --------------------------------------------------- 00183 00184 FLA_Error FLA_Tevd_v_opt_var3( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj l, FLA_Obj ls, FLA_Obj pu, FLA_Obj G, FLA_Obj U, dim_t b_alg ); 00185 FLA_Error FLA_Tevd_v_ops_var3( int m_A, 00186 int m_U, 00187 int n_G, 00188 int n_iter_max, 00189 float* buff_d, int inc_d, 00190 float* buff_e, int inc_e, 00191 float* buff_l, int inc_l, 00192 int* buff_ls, int inc_ls, 00193 float* buff_pu, int inc_pu, 00194 scomplex* buff_G, int rs_G, int cs_G, 00195 float* buff_U, int rs_U, int cs_U, 00196 int b_alg ); 00197 FLA_Error FLA_Tevd_v_opd_var3( int m_A, 00198 int m_U, 00199 int n_G, 00200 int n_iter_max, 00201 double* buff_d, int inc_d, 00202 double* buff_e, int inc_e, 00203 double* buff_l, int inc_l, 00204 int* buff_ls, int inc_ls, 00205 double* buff_pu, int inc_pu, 00206 dcomplex* buff_G, int rs_G, int cs_G, 00207 double* buff_U, int rs_U, int cs_U, 00208 int b_alg ); 00209 FLA_Error FLA_Tevd_v_opc_var3( int m_A, 00210 int m_U, 00211 int n_G, 00212 int n_iter_max, 00213 float* buff_d, int inc_d, 00214 float* buff_e, int inc_e, 00215 float* buff_l, int inc_l, 00216 int* buff_ls, int inc_ls, 00217 float* buff_pu, int inc_pu, 00218 scomplex* buff_G, int rs_G, int cs_G, 00219 scomplex* buff_U, int rs_U, int cs_U, 00220 int b_alg ); 00221 FLA_Error FLA_Tevd_v_opz_var3( int m_A, 00222 int m_U, 00223 int n_G, 00224 int n_iter_max, 00225 double* buff_d, int inc_d, 00226 double* buff_e, int inc_e, 00227 double* buff_l, int inc_l, 00228 int* buff_ls, int inc_ls, 00229 double* buff_pu, int inc_pu, 00230 dcomplex* buff_G, int rs_G, int cs_G, 00231 dcomplex* buff_U, int rs_U, int cs_U, 00232 int b_alg ); 00233 00234 // --- FLA_Tevd_v_opt_var4() --------------------------------------------------- 00235 00236 FLA_Error FLA_Tevd_v_opt_var4( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj l, FLA_Obj ls, FLA_Obj pu, FLA_Obj G, FLA_Obj R, FLA_Obj W, FLA_Obj U, dim_t b_alg ); 00237 FLA_Error FLA_Tevd_v_ops_var4( int m_A, 00238 int m_U, 00239 int n_G, 00240 int n_iter_max, 00241 float* buff_d, int inc_d, 00242 float* buff_e, int inc_e, 00243 float* buff_l, int inc_l, 00244 int* buff_ls, int inc_ls, 00245 float* buff_pu, int inc_pu, 00246 scomplex* buff_G, int rs_G, int cs_G, 00247 float* buff_R, int rs_R, int cs_R, 00248 float* buff_W, int rs_W, int cs_W, 00249 float* buff_U, int rs_U, int cs_U, 00250 int b_alg ); 00251 FLA_Error FLA_Tevd_v_opd_var4( int m_A, 00252 int m_U, 00253 int n_G, 00254 int n_iter_max, 00255 double* buff_d, int inc_d, 00256 double* buff_e, int inc_e, 00257 double* buff_l, int inc_l, 00258 int* buff_ls, int inc_ls, 00259 double* buff_pu, int inc_pu, 00260 dcomplex* buff_G, int rs_G, int cs_G, 00261 double* buff_R, int rs_R, int cs_R, 00262 double* buff_W, int rs_W, int cs_W, 00263 double* buff_U, int rs_U, int cs_U, 00264 int b_alg ); 00265 FLA_Error FLA_Tevd_v_opc_var4( int m_A, 00266 int m_U, 00267 int n_G, 00268 int n_iter_max, 00269 float* buff_d, int inc_d, 00270 float* buff_e, int inc_e, 00271 float* buff_l, int inc_l, 00272 int* buff_ls, int inc_ls, 00273 float* buff_pu, int inc_pu, 00274 scomplex* buff_G, int rs_G, int cs_G, 00275 float* buff_R, int rs_R, int cs_R, 00276 scomplex* buff_W, int rs_W, int cs_W, 00277 scomplex* buff_U, int rs_U, int cs_U, 00278 int b_alg ); 00279 FLA_Error FLA_Tevd_v_opz_var4( int m_A, 00280 int m_U, 00281 int n_G, 00282 int n_iter_max, 00283 double* buff_d, int inc_d, 00284 double* buff_e, int inc_e, 00285 double* buff_l, int inc_l, 00286 int* buff_ls, int inc_ls, 00287 double* buff_pu, int inc_pu, 00288 dcomplex* buff_G, int rs_G, int cs_G, 00289 double* buff_R, int rs_R, int cs_R, 00290 dcomplex* buff_W, int rs_W, int cs_W, 00291 dcomplex* buff_U, int rs_U, int cs_U, 00292 int b_alg ); 00293