MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BLAS_Cpp_Types.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 //
42 // Types for BLAS_Cpp namespace
43 //
44 
45 #ifndef BLAS_CPP_TYPES_H
46 #define BLAS_CPP_TYPES_H
47 
48 #include "Moocho_ConfigDefs.hpp"
49 
50 namespace BLAS_Cpp {
51 
60 
62 typedef size_t size_type;
63 
66 
68 enum Side{
71 };
73 enum Transp{
77 };
79 enum Uplo {upper, lower};
81 inline Uplo operator!(Uplo uplo)
82 { return uplo == upper ? lower : upper; }
84 enum Diag {unit, nonunit};
85 
87 
90 
92 inline Transp bool_to_trans(bool return_trans) {
93  return return_trans ? trans : no_trans;
94 }
95 
97 inline bool trans_to_bool(Transp _trans) {
98  return ( _trans == trans );
99 }
100 
102 inline Transp operator!(Transp _trans) // does not work with conj_trans
103 { return _trans == no_trans ? trans : no_trans; }
104 
106 inline Transp trans_not(Transp _trans) // does not work with conj_trans
107 { return _trans == no_trans ? trans : no_trans; }
108 
110 inline Transp trans_trans(Transp _trans1, Transp _trans2) // does not work with conj_trans
111 { return _trans1 == _trans2 ? no_trans : trans; }
112 
114 inline const char* trans_to_string(Transp _trans)
115 {
116  return _trans == no_trans ? "no_trans" : "trans";
117 }
118 
121  , BLAS_Cpp::Transp _trans)
122 {
123  return _trans == BLAS_Cpp::no_trans ? rows : cols;
124 }
125 
128  , BLAS_Cpp::Transp _trans)
129 {
130  return _trans == BLAS_Cpp::no_trans ? cols : rows;
131 }
132 
134 
136 
137 } // end namespace BLAS_Cpp
138 
139 #endif // BLAS_CPP_TYPES_H
bool trans_to_bool(Transp _trans)
Returns true if _trans == trans.
size_type rows(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return rows of a possible transposed matrix.
Transposed.
Not transposed.
size_t size_type
Size type.
Transp bool_to_trans(bool return_trans)
Return Transp given a bool.
Transp trans_trans(Transp _trans1, Transp _trans2)
Return the transpose of the transpose argument.
Uplo operator!(Uplo uplo)
Return the opposite of Uplo argument.
Transp trans_not(Transp _trans)
Return the opposite of the transpose argument.
const char * trans_to_string(Transp _trans)
Give a string name to Transp value.
Transp
TRANS.
size_type cols(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return columns of a possible transposed matrix.
Conjugate transpose.