54 #ifndef AMESOS2_BASKER_TYPEMAP_HPP
55 #define AMESOS2_BASKER_TYPEMAP_HPP
58 #ifdef HAVE_TEUCHOS_COMPLEX
62 #include <Teuchos_as.hpp>
63 #ifdef HAVE_TEUCHOS_COMPLEX
64 #include <Teuchos_SerializationTraits.hpp>
67 #include "Amesos2_TypeMap.hpp"
70 #ifdef HAVE_TEUCHOS_COMPLEX
86 #ifndef HAVE_AMESOS2_KLU2
89 class ValueTypeConversionTraits<std::complex<double>, std::complex<float> >
92 static std::complex<double> convert(
const std::complex<float> t )
94 std::complex<double> ret(Teuchos::as<double>(t.real()),
95 Teuchos::as<double>(t.imag()));
99 static std::complex<double> safeConvert(
const std::complex<float> t )
101 std::complex<double> ret(Teuchos::as<double>(t.real()),
102 Teuchos::as<double>(t.imag()));
109 class ValueTypeConversionTraits<std::complex<float> , std::complex<double> >
112 static std::complex<float> convert(
const std::complex<double> t )
114 float ret_r = Teuchos::as<float>( t.real() );
115 float ret_i = Teuchos::as<float>( t.imag() );
116 std::complex<float> ret (ret_r, ret_i);
121 static std::complex<float> safeConvert(
const std::complex<double> t )
123 float ret_r = Teuchos::as<float>( t.real() );
124 float ret_i = Teuchos::as<float>( t.imag() );
125 std::complex<float> ret (ret_r, ret_i);
137 #endif // HAVE_TEUCHOS_COMPLEX
142 template <
class,
class>
class Basker;
151 struct TypeMap<Basker,float>
155 typedef float magnitude_type;
160 struct TypeMap<Basker,double>
164 typedef double magnitude_type;
168 #ifdef HAVE_TEUCHOS_COMPLEX
171 struct TypeMap<Basker,std::complex<float> >
173 static std::complex<double> dtype;
174 typedef std::complex<double> type;
175 typedef double magnitude_type;
180 struct TypeMap<Basker,std::complex<double> >
182 static std::complex<double> dtype;
183 typedef std::complex<double> type;
184 typedef double magnitude_type;
188 #endif // HAVE_TEUCHOS_COMPLEX
195 #endif // AMESOS2_BASKER_TYPEMAP_HPP