libflame  revision_anchor
FLA_Bsvd_v.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 #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