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