MOOCHO (Single Doxygen Collection) Version of the Day
AbstractLinAlgPack_AssertOp.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 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 
00038 // 
00039 // ***********************************************************************
00040 // @HEADER
00041 
00042 #ifndef ABSTRACT_LIN_ALG_PACK_ASSERT_OP_H
00043 #define ABSTRACT_LIN_ALG_PACK_ASSERT_OP_H
00044 
00045 #include "AbstractLinAlgPack_Types.hpp"
00046 
00047 namespace AbstractLinAlgPack {
00048 
00058 
00062 
00063 void Vp_V_assert_compatibility(VectorMutable* v_lhs, const Vector& v_rhs);
00065 void Vp_V_assert_compatibility(VectorMutable* v_lhs, const SpVectorSlice& sv_rhs);
00067 void VopV_assert_compatibility(const Vector& v_rhs1, const Vector& v_rhs2);
00069 void VopV_assert_compatibility(const Vector& v_rhs1, const SpVectorSlice& sv_rhs2);
00071 void VopV_assert_compatibility(const SpVectorSlice& sv_rhs1, const Vector& v_rhs2);
00073 void Mp_M_assert_compatibility(
00074   MatrixOp* m_lhs, BLAS_Cpp::Transp trans_lhs
00075   ,const MatrixOp& m_rhs, BLAS_Cpp::Transp trans_rhs );
00077 void MopM_assert_compatibility(
00078   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00079   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 );
00081 
00085 
00086 void MtV_assert_compatibility(
00087   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector& v_rhs2 );
00089 void MtV_assert_compatibility(
00090   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice& sv_rhs2 );
00092 void Vp_MtV_assert_compatibility(
00093   VectorMutable* v_lhs
00094   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector& v_rhs2 );
00096 void Vp_MtV_assert_compatibility(
00097   VectorMutable* v_lhs
00098   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice& sv_rhs2 );
00100 
00104 
00105 void MtM_assert_compatibility(
00106   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00107   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 );
00109 void Mp_MtM_assert_compatibility(
00110   MatrixOp* m_lhs, BLAS_Cpp::Transp trans_lhs
00111   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00112   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 );
00114 
00116 
00117 #ifndef ABSTRACTLINALGPACK_ASSERT_COMPATIBILITY
00118 
00119 // inline definitions that do nothing
00120 
00121 inline
00122 void Vp_V_assert_compatibility(VectorMutable* v_lhs, const Vector& v_rhs)
00123 {} 
00124 inline
00125 void Vp_V_assert_compatibility(VectorMutable* v_lhs, const SpVectorSlice& sv_rhs)
00126 {} 
00127 inline
00128 void VopV_assert_compatibility(const Vector& v_rhs1, const Vector&  v_rhs2)
00129 {}
00130 inline
00131 void VopV_assert_compatibility(const Vector& v_rhs1, const SpVectorSlice& sv_rhs2)
00132 {} 
00133 inline
00134 void VopV_assert_compatibility(const SpVectorSlice& sv_rhs1, const Vector& v_rhs2)
00135 {} 
00136 inline
00137 void Mp_M_assert_compatibility(
00138   MatrixOp* m_lhs, BLAS_Cpp::Transp trans_lhs
00139   ,const MatrixOp& m_rhs, BLAS_Cpp::Transp trans_rhs )
00140 {}
00141 inline
00142 void MopM_assert_compatibility(
00143   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00144   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 )
00145 {}
00146 inline
00147 void MtV_assert_compatibility(
00148   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector& v_rhs2 )
00149 {}
00150 inline
00151 void MtV_assert_compatibility(
00152   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice& sv_rhs2 )
00153 {} 
00154 inline
00155 void Vp_MtV_assert_compatibility(
00156   VectorMutable* v_lhs
00157   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector& v_rhs2 )
00158 {}
00159 inline
00160 void Vp_MtV_assert_compatibility(
00161   VectorMutable* v_lhs
00162   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice& sv_rhs2 )
00163 {}
00164 inline
00165 void MtM_assert_compatibility(
00166   const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00167   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 )
00168 {}
00169 inline
00170 void Mp_MtM_assert_compatibility(
00171   MatrixOp* m_lhs, BLAS_Cpp::Transp trans_lhs
00172   ,const MatrixOp& m_rhs1, BLAS_Cpp::Transp trans_rhs1
00173   ,const MatrixOp& m_rhs2, BLAS_Cpp::Transp trans_rhs2 )
00174 {}
00175 
00176 #endif // ABSTRACTLINALGPACK_ASSERT_COMPATIBILITY
00177 
00178 } // end namespace AbstractLinAlgPack
00179 
00180 #endif  // ABSTRACT_LIN_ALG_PACK_ASSERT_OP_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines