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 #include "FLA_Bsvd_iteracc_v.h" 00012 #include "FLA_Bsvd_sinval_v.h" 00013 #include "FLA_Bsvd_francis_v.h" 00014 00015 // --- FLA_Bsvd_compute_shift() ------------------------------------------------ 00016 00017 FLA_Error FLA_Bsvd_compute_shift( FLA_Obj tol, FLA_Obj sminl, FLA_Obj smax, FLA_Obj d, FLA_Obj e, FLA_Obj shift ); 00018 FLA_Error FLA_Bsvd_compute_shift_ops( int m_A, 00019 float tol, 00020 float sminl, 00021 float smax, 00022 float* buff_d, int inc_d, 00023 float* buff_e, int inc_e, 00024 float* shift ); 00025 FLA_Error FLA_Bsvd_compute_shift_opd( int m_A, 00026 double tol, 00027 double sminl, 00028 double smax, 00029 double* buff_d, int inc_d, 00030 double* buff_e, int inc_e, 00031 double* shift ); 00032 00033 // --- FLA_Bsvd_compute_tol_thresh() ------------------------------------------- 00034 00035 FLA_Error FLA_Bsvd_compute_tol_thresh( FLA_Obj tolmul, FLA_Obj maxit, FLA_Obj d, FLA_Obj e, FLA_Obj tol, FLA_Obj thresh ); 00036 FLA_Error FLA_Bsvd_compute_tol_thresh_ops( int m_A, 00037 float tolmul, 00038 float maxit, 00039 float* buff_d, int inc_d, 00040 float* buff_e, int inc_e, 00041 float* tol, 00042 float* thresh ); 00043 FLA_Error FLA_Bsvd_compute_tol_thresh_opd( int m_A, 00044 double tolmul, 00045 double maxit, 00046 double* buff_d, int inc_d, 00047 double* buff_e, int inc_e, 00048 double* tol, 00049 double* thresh ); 00050 00051 // --- FLA_Bsvd_find_converged() ----------------------------------------------- 00052 00053 FLA_Error FLA_Bsvd_find_converged( FLA_Obj tol, FLA_Obj d, FLA_Obj e, FLA_Obj sminl ); 00054 FLA_Error FLA_Bsvd_find_converged_ops( int m_A, 00055 float tol, 00056 float* buff_d, int inc_d, 00057 float* buff_e, int inc_e, 00058 float* sminl ); 00059 FLA_Error FLA_Bsvd_find_converged_opd( int m_A, 00060 double tol, 00061 double* buff_d, int inc_d, 00062 double* buff_e, int inc_e, 00063 double* sminl ); 00064 00065 // --- FLA_Bsvd_find_max_min() ------------------------------------------------- 00066 00067 FLA_Error FLA_Bsvd_find_max_min( FLA_Obj d, FLA_Obj e, FLA_Obj smax, FLA_Obj smin ); 00068 FLA_Error FLA_Bsvd_find_max_min_ops( int m_A, 00069 float* buff_d, int inc_d, 00070 float* buff_e, int inc_e, 00071 float* smax, 00072 float* smin ); 00073 FLA_Error FLA_Bsvd_find_max_min_opd( int m_A, 00074 double* buff_d, int inc_d, 00075 double* buff_e, int inc_e, 00076 double* smax, 00077 double* smin ); 00078 00079 // --- FLA_Bsvd_find_submatrix() ----------------------------------------------- 00080 00081 FLA_Error FLA_Bsvd_find_submatrix_ops( int mn_A, 00082 int ij_begin, 00083 float* buff_d, int inc_d, 00084 float* buff_e, int inc_e, 00085 int* ijTL, 00086 int* ijBR ); 00087 FLA_Error FLA_Bsvd_find_submatrix_opd( int mn_A, 00088 int ij_begin, 00089 double* buff_d, int inc_d, 00090 double* buff_e, int inc_e, 00091 int* ijTL, 00092 int* ijBR ); 00093 00094 // --- FLA_Bsvd_v_opt_var1() --------------------------------------------------- 00095 00096 FLA_Error FLA_Bsvd_v_opt_var1( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj H, FLA_Obj U, FLA_Obj V, dim_t b_alg ); 00097 FLA_Error FLA_Bsvd_v_ops_var1( int min_m_n, 00098 int m_U, 00099 int m_V, 00100 int n_GH, 00101 int n_iter_max, 00102 float* buff_d, int inc_d, 00103 float* buff_e, int inc_e, 00104 scomplex* buff_G, int rs_G, int cs_G, 00105 scomplex* buff_H, int rs_H, int cs_H, 00106 float* buff_U, int rs_U, int cs_U, 00107 float* buff_V, int rs_V, int cs_V, 00108 int b_alg ); 00109 FLA_Error FLA_Bsvd_v_opd_var1( int min_m_n, 00110 int m_U, 00111 int m_V, 00112 int n_GH, 00113 int n_iter_max, 00114 double* buff_d, int inc_d, 00115 double* buff_e, int inc_e, 00116 dcomplex* buff_G, int rs_G, int cs_G, 00117 dcomplex* buff_H, int rs_H, int cs_H, 00118 double* buff_U, int rs_U, int cs_U, 00119 double* buff_V, int rs_V, int cs_V, 00120 int b_alg ); 00121 FLA_Error FLA_Bsvd_v_opc_var1( int min_m_n, 00122 int m_U, 00123 int m_V, 00124 int n_GH, 00125 int n_iter_max, 00126 float* buff_d, int inc_d, 00127 float* buff_e, int inc_e, 00128 scomplex* buff_G, int rs_G, int cs_G, 00129 scomplex* buff_H, int rs_H, int cs_H, 00130 scomplex* buff_U, int rs_U, int cs_U, 00131 scomplex* buff_V, int rs_V, int cs_V, 00132 int b_alg ); 00133 FLA_Error FLA_Bsvd_v_opz_var1( int min_m_n, 00134 int m_U, 00135 int m_V, 00136 int n_GH, 00137 int n_iter_max, 00138 double* buff_d, int inc_d, 00139 double* buff_e, int inc_e, 00140 dcomplex* buff_G, int rs_G, int cs_G, 00141 dcomplex* buff_H, int rs_H, int cs_H, 00142 dcomplex* buff_U, int rs_U, int cs_U, 00143 dcomplex* buff_V, int rs_V, int cs_V, 00144 int b_alg ); 00145 00146 // --- FLA_Bsvd_v_opt_var2() --------------------------------------------------- 00147 00148 FLA_Error FLA_Bsvd_v_opt_var2( dim_t n_iter_max, FLA_Obj d, FLA_Obj e, FLA_Obj G, FLA_Obj H, FLA_Obj RG, FLA_Obj RH, FLA_Obj W, FLA_Obj U, FLA_Obj V, dim_t b_alg ); 00149 FLA_Error FLA_Bsvd_v_ops_var2( int min_m_n, 00150 int m_U, 00151 int m_V, 00152 int n_GH, 00153 int n_iter_max, 00154 float* buff_d, int inc_d, 00155 float* buff_e, int inc_e, 00156 scomplex* buff_G, int rs_G, int cs_G, 00157 scomplex* buff_H, int rs_H, int cs_H, 00158 float* buff_RG, int rs_RG, int cs_RG, 00159 float* buff_RH, int rs_RH, int cs_RH, 00160 float* buff_W, int rs_W, int cs_W, 00161 float* buff_U, int rs_U, int cs_U, 00162 float* buff_V, int rs_V, int cs_V, 00163 int b_alg ); 00164 FLA_Error FLA_Bsvd_v_opd_var2( int min_m_n, 00165 int m_U, 00166 int m_V, 00167 int n_GH, 00168 int n_iter_max, 00169 double* buff_d, int inc_d, 00170 double* buff_e, int inc_e, 00171 dcomplex* buff_G, int rs_G, int cs_G, 00172 dcomplex* buff_H, int rs_H, int cs_H, 00173 double* buff_RG, int rs_RG, int cs_RG, 00174 double* buff_RH, int rs_RH, int cs_RH, 00175 double* buff_W, int rs_W, int cs_W, 00176 double* buff_U, int rs_U, int cs_U, 00177 double* buff_V, int rs_V, int cs_V, 00178 int b_alg ); 00179 FLA_Error FLA_Bsvd_v_opc_var2( int min_m_n, 00180 int m_U, 00181 int m_V, 00182 int n_GH, 00183 int n_iter_max, 00184 float* buff_d, int inc_d, 00185 float* buff_e, int inc_e, 00186 scomplex* buff_G, int rs_G, int cs_G, 00187 scomplex* buff_H, int rs_H, int cs_H, 00188 float* buff_RG, int rs_RG, int cs_RG, 00189 float* buff_RH, int rs_RH, int cs_RH, 00190 scomplex* buff_W, int rs_W, int cs_W, 00191 scomplex* buff_U, int rs_U, int cs_U, 00192 scomplex* buff_V, int rs_V, int cs_V, 00193 int b_alg ); 00194 FLA_Error FLA_Bsvd_v_opz_var2( int min_m_n, 00195 int m_U, 00196 int m_V, 00197 int n_GH, 00198 int n_iter_max, 00199 double* buff_d, int inc_d, 00200 double* buff_e, int inc_e, 00201 dcomplex* buff_G, int rs_G, int cs_G, 00202 dcomplex* buff_H, int rs_H, int cs_H, 00203 double* buff_RG, int rs_RG, int cs_RG, 00204 double* buff_RH, int rs_RH, int cs_RH, 00205 dcomplex* buff_W, int rs_W, int cs_W, 00206 dcomplex* buff_U, int rs_U, int cs_U, 00207 dcomplex* buff_V, int rs_V, int cs_V, 00208 int b_alg ); 00209