53 #ifndef AMESOS2_KLU2_TYPEMAP_HPP
54 #define AMESOS2_KLU2_TYPEMAP_HPP
57 #ifdef HAVE_TEUCHOS_COMPLEX
61 #include <Teuchos_as.hpp>
62 #ifdef HAVE_TEUCHOS_COMPLEX
63 #include <Teuchos_SerializationTraits.hpp>
66 #include "Amesos2_TypeMap.hpp"
78 #include "klu2_ext.hpp"
81 #ifdef HAVE_TEUCHOS_COMPLEX
97 class ValueTypeConversionTraits<std::complex<double>, std::complex<float> >
100 static std::complex<double> convert(
const std::complex<float> t )
102 std::complex<double> ret(Teuchos::as<double>(t.real()),
103 Teuchos::as<double>(t.imag()));
107 static std::complex<double> safeConvert(
const std::complex<float> t )
109 std::complex<double> ret(Teuchos::as<double>(t.real()),
110 Teuchos::as<double>(t.imag()));
118 class ValueTypeConversionTraits<std::complex<float> , std::complex<double> >
121 static std::complex<float> convert(
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);
130 static std::complex<float> safeConvert(
const std::complex<double> t )
132 float ret_r = Teuchos::as<float>( t.real() );
133 float ret_i = Teuchos::as<float>( t.imag() );
134 std::complex<float> ret (ret_r, ret_i);
146 #endif // HAVE_TEUCHOS_COMPLEX
151 template <
class,
class>
class KLU2;
159 struct TypeMap<KLU2,float>
163 typedef float magnitude_type;
168 struct TypeMap<KLU2,double>
172 typedef double magnitude_type;
176 #ifdef HAVE_TEUCHOS_COMPLEX
179 struct TypeMap<KLU2,std::complex<float> >
181 static std::complex<double> dtype;
182 typedef std::complex<double> type;
183 typedef double magnitude_type;
188 struct TypeMap<KLU2,std::complex<double> >
190 static std::complex<double> dtype;
191 typedef std::complex<double> type;
192 typedef double magnitude_type;
196 #endif // HAVE_TEUCHOS_COMPLEX
203 #endif // AMESOS2_SUPERLU_TYPEMAP_HPP