44 #ifndef AMESOS2_UMFPACK_TYPEMAP_HPP 45 #define AMESOS2_UMFPACK_TYPEMAP_HPP 48 #ifdef HAVE_TEUCHOS_COMPLEX 52 #include <Teuchos_as.hpp> 53 #ifdef HAVE_TEUCHOS_COMPLEX 54 #include <Teuchos_SerializationTraits.hpp> 57 #include "Amesos2_TypeMap.hpp" 73 #ifdef HAVE_TEUCHOS_COMPLEX 76 template <
typename TypeFrom>
77 class ValueTypeConversionTraits<
std::complex<double>, TypeFrom>
80 static std::complex<double> convert(
const TypeFrom t )
82 return std::complex<double>(
83 Teuchos::as<double>(t.real()),
84 Teuchos::as<double>(t.imag()));
87 static std::complex<double> safeConvert(
const TypeFrom t )
89 return std::complex<double>(
90 Teuchos::as<double>(t.real()),
91 Teuchos::as<double>(t.imag()));
97 template <
typename TypeTo>
98 class ValueTypeConversionTraits<TypeTo,
std::complex<double>>
101 static TypeTo convert(
const std::complex<double> t )
103 typedef typename TypeTo::value_type value_type;
104 value_type ret_r = Teuchos::as<value_type>( t.real() );
105 value_type ret_i = Teuchos::as<value_type>( t.imag() );
106 return ( TypeTo( ret_r, ret_i ) );
110 static TypeTo safeConvert(
const std::complex<double> t )
112 typedef typename TypeTo::value_type value_type;
113 value_type ret_r = Teuchos::as<value_type>( t.real() );
114 value_type ret_i = Teuchos::as<value_type>( t.imag() );
115 return ( TypeTo( ret_r, ret_i ) );
119 #endif // HAVE_TEUCHOS_COMPLEX 127 template <
class,
class>
class Umfpack;
135 struct TypeMap<Umfpack,float>
138 typedef double magnitude_type;
142 struct TypeMap<Umfpack,double>
145 typedef double magnitude_type;
149 #ifdef HAVE_TEUCHOS_COMPLEX 152 struct TypeMap<Umfpack,
std::complex<float> >
154 typedef std::complex<double> type;
155 typedef double magnitude_type;
159 struct TypeMap<Umfpack,
std::complex<double> >
161 typedef std::complex<double> type;
162 typedef double magnitude_type;
166 #endif // HAVE_TEUCHOS_COMPLEX 173 #endif // AMESOS2_UMFPACK_TYPEMAP_HPP
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Cholmod_TypeMap.hpp:92