DenseLinAlgPack_delete_row_col.hpp

Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 // 
00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
00005 //                  Copyright (2003) Sandia Corporation
00006 // 
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 // 
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //  
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //  
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
00025 // 
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 #ifndef DELETE_ROW_COL_H
00030 #define DELETE_ROW_COL_H
00031 
00032 #include "DenseLinAlgPack_Types.hpp"
00033 
00034 namespace DenseLinAlgPack {
00035 
00037 /* * Delete a symmetric row and a column form a triangular matrix.
00038  *
00039  * If #M# is a lower triangular matrix then we partition it
00040  * as:
00041  \verbatim
00042 
00043    1 |\
00044      |  \
00045      |    \
00046      | M11  \
00047      |________\ _
00048   kd |_________|_|
00049      |         | |\
00050      |         | |  \
00051      |         | |    \
00052      |   M31   | | M33  \
00053    n |         | |        \
00054      ----------------------
00055      1         kd         n
00056 
00057  \endverbatim
00058  * In order to delete row #kd# and column #kd# the rectangular
00059  * matrix #M31# is moved up one row and the triangular matrix
00060  * #M33# is moved up one row and to the left one column.
00061  *
00062  * If #M# is an upper triangular matrix then we partition it
00063  * as:
00064  \verbatim
00065 
00066   1         kd      n
00067   -------------------- 1
00068   \        | |       |
00069     \  M11 | |  M13  |
00070       \    | |       |
00071         \  | |       |
00072           \|_|_______|
00073            |_|_______| kd
00074              \       |
00075                \ M33 |
00076                  \   |
00077                    \ | n
00078  
00079  \endverbatim
00080  *
00081  * In order to delete row #kd# and column #kd# the matrix
00082  * #M13# is moved one column to the left and the upper
00083  * triangular matrix #M33# is moved one row up and
00084  * on column to the left.
00085  *
00086  * Preconditions:<ul>
00087  * <li> #M != NULL#
00088  * <li> #M->rows() >= 1#
00089  * <li> #1 <= kd <= M->rows()#
00090  * </ul>
00091  */
00092 void delete_row_col( size_type kd, DMatrixSliceTriEle* M );
00093 
00094 } // end namespace DenseLinAlgPack
00095 
00096 #endif  // DELETE_ROW_COL_H

Generated on Tue Jul 13 09:30:52 2010 for MOOCHO (Single Doxygen Collection) by  doxygen 1.4.7