55 #ifndef AMESOS2_SHYLUBASKER_TYPEMAP_HPP
56 #define AMESOS2_SHYLUBASKER_TYPEMAP_HPP
59 #ifdef HAVE_TEUCHOS_COMPLEX
63 #include <Teuchos_as.hpp>
64 #ifdef HAVE_TEUCHOS_COMPLEX
65 #include <Teuchos_SerializationTraits.hpp>
68 #include "Amesos2_TypeMap.hpp"
71 #ifdef HAVE_TEUCHOS_COMPLEX
87 #ifndef HAVE_AMESOS2_KLU2
90 class ValueTypeConversionTraits<std::complex<double>, std::complex<float> >
93 static std::complex<double> convert(
const std::complex<float> t )
95 std::complex<double> ret(Teuchos::as<double>(t.real()),
96 Teuchos::as<double>(t.imag()));
100 static std::complex<double> safeConvert(
const std::complex<float> t )
102 std::complex<double> ret(Teuchos::as<double>(t.real()),
103 Teuchos::as<double>(t.imag()));
110 class ValueTypeConversionTraits<std::complex<float> , std::complex<double> >
113 static std::complex<float> convert(
const std::complex<double> t )
115 float ret_r = Teuchos::as<float>( t.real() );
116 float ret_i = Teuchos::as<float>( t.imag() );
117 std::complex<float> ret (ret_r, ret_i);
122 static std::complex<float> safeConvert(
const std::complex<double> t )
124 float ret_r = Teuchos::as<float>( t.real() );
125 float ret_i = Teuchos::as<float>( t.imag() );
126 std::complex<float> ret (ret_r, ret_i);
138 #endif // HAVE_TEUCHOS_COMPLEX
143 template <
class,
class>
class ShyLUBasker;
152 struct TypeMap<ShyLUBasker,float>
156 typedef float magnitude_type;
161 struct TypeMap<ShyLUBasker,double>
165 typedef double magnitude_type;
169 #ifdef HAVE_TEUCHOS_COMPLEX
172 struct TypeMap<ShyLUBasker,std::complex<float> >
174 static std::complex<double> dtype;
175 typedef std::complex<double> type;
176 typedef double magnitude_type;
181 struct TypeMap<ShyLUBasker,std::complex<double> >
183 static std::complex<double> dtype;
184 typedef std::complex<double> type;
185 typedef double magnitude_type;
189 #endif // HAVE_TEUCHOS_COMPLEX
196 #endif // AMESOS2_SHYLUBASKER_TYPEMAP_HPP