56 #ifndef AMESOS2_CHOLMOD_TYPEMAP_HPP 57 #define AMESOS2_CHOLMOD_TYPEMAP_HPP 60 #ifdef HAVE_TEUCHOS_COMPLEX 64 #include <Teuchos_as.hpp> 65 #ifdef HAVE_TEUCHOS_COMPLEX 66 #include <Teuchos_SerializationTraits.hpp> 69 #include "Amesos2_TypeMap.hpp" 76 double complexpair[2];
94 template <
typename TypeFrom>
95 class ValueTypeConversionTraits<
Amesos2::CHOL::complex, TypeFrom>
98 static Amesos2::CHOL::complex convert(
const TypeFrom t )
100 Amesos2::CHOL::complex ret;
103 ret.complexpair[0] = Teuchos::as<float>(t.real());
104 ret.complexpair[1] = Teuchos::as<float>(t.imag());
108 static Amesos2::CHOL::complex safeConvert(
const TypeFrom t )
110 Amesos2::CHOL::complex ret;
113 ret.complexpair[0] = Teuchos::as<float>(t.real());
114 ret.complexpair[1] = Teuchos::as<float>(t.imag());
120 template <
typename TypeTo>
121 class ValueTypeConversionTraits<TypeTo,
Amesos2::CHOL::complex>
124 static TypeTo convert(
const Amesos2::CHOL::complex t )
126 typedef typename TypeTo::value_type value_type;
129 value_type ret_r = Teuchos::as<value_type>(t.complexpair[0]);
130 value_type ret_i = Teuchos::as<value_type>(t.complexpair[1]);
131 return ( TypeTo( ret_r, ret_i ) );
134 static TypeTo safeConvert(
const Amesos2::CHOL::complex t )
136 typedef typename TypeTo::value_type value_type;
139 value_type ret_r = Teuchos::as<value_type>(t.complexpair[0]);
140 value_type ret_i = Teuchos::as<value_type>(t.complexpair[1]);
141 return ( TypeTo( ret_r, ret_i ) );
153 template <
class,
class>
class Cholmod;
156 struct TypeMap<Cholmod,float>
159 typedef float magnitude_type;
163 struct TypeMap<Cholmod,double>
166 typedef double magnitude_type;
169 #ifdef HAVE_TEUCHOS_COMPLEX 172 struct TypeMap<Cholmod,
std::complex<double> >
174 typedef CHOL::complex type;
175 typedef double magnitude_type;
178 #endif // HAVE_TEUCHOS_COMPLEX 184 #endif // AMESOS2_CHOLMOD_TYPEMAP_HPP
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Cholmod_TypeMap.hpp:92