1 /*
2 * Copyright (c) 2012, Michael Lehn, Klaus Pototzky
3 *
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1) Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2) Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 * 3) Neither the name of the FLENS development group nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33 #ifndef CXXLAPACK_INTERFACE_LANGT_TCC
34 #define CXXLAPACK_INTERFACE_LANGT_TCC 1
35
36 #include <iostream>
37 #include "xflens/cxxlapack/interface/interface.h"
38 #include "xflens/cxxlapack/netlib/netlib.h"
39
40 namespace cxxlapack {
41
42 template <typename IndexType>
43 float
langt(char norm,IndexType n,const float * dl,const float * d,const float * du)44 langt(char norm,
45 IndexType n,
46 const float *dl,
47 const float *d,
48 const float *du)
49 {
50 CXXLAPACK_DEBUG_OUT("slangt");
51
52 return LAPACK_IMPL(slangt)(&norm,
53 &n,
54 dl,
55 d,
56 du);
57 }
58
59
60 template <typename IndexType>
61 double
langt(char norm,IndexType n,const double * dl,const double * d,const double * du)62 langt(char norm,
63 IndexType n,
64 const double *dl,
65 const double *d,
66 const double *du)
67 {
68 CXXLAPACK_DEBUG_OUT("dlangt");
69
70 return LAPACK_IMPL(dlangt)(&norm,
71 &n,
72 dl,
73 d,
74 du);
75 }
76
77
78 template <typename IndexType>
79 float
langt(char norm,IndexType n,const std::complex<float> * dl,const std::complex<float> * d,const std::complex<float> * du)80 langt(char norm,
81 IndexType n,
82 const std::complex<float > *dl,
83 const std::complex<float > *d,
84 const std::complex<float > *du)
85 {
86 CXXLAPACK_DEBUG_OUT("clangt");
87
88 return LAPACK_IMPL(clangt)(&norm,
89 &n,
90 reinterpret_cast<const float *>(dl),
91 reinterpret_cast<const float *>(d),
92 reinterpret_cast<const float *>(du));
93 }
94
95 template <typename IndexType>
96 double
langt(char norm,IndexType n,const std::complex<double> * dl,const std::complex<double> * d,const std::complex<double> * du)97 langt(char norm,
98 IndexType n,
99 const std::complex<double> *dl,
100 const std::complex<double> *d,
101 const std::complex<double> *du)
102 {
103 CXXLAPACK_DEBUG_OUT("zlangt");
104
105 return LAPACK_IMPL(zlangt)(&norm,
106 &n,
107 reinterpret_cast<const double *>(dl),
108 reinterpret_cast<const double *>(d),
109 reinterpret_cast<const double *>(du));
110 }
111
112 } // namespace cxxlapack
113
114 #endif // CXXLAPACK_INTERFACE_LANGT_TCC
115