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_GGEVX_H 34 #define CXXLAPACK_INTERFACE_GGEVX_H 1 35 36 #include <complex> 37 38 namespace cxxlapack { 39 40 template <typename IndexType> 41 IndexType 42 ggevx(char balanc, 43 char jobVL, 44 char jobvr, 45 char sense, 46 IndexType n, 47 float *A, 48 IndexType ldA, 49 float *B, 50 IndexType ldB, 51 float *alphar, 52 float *alphai, 53 float *beta, 54 float *VL, 55 IndexType ldVL, 56 float *VR, 57 IndexType ldVR, 58 IndexType &ilo, 59 IndexType &ihi, 60 float *lscale, 61 float *rscale, 62 float &abnrm, 63 float &bbnrm, 64 float *rConde, 65 float *rCondv, 66 float *work, 67 IndexType lWork, 68 IndexType *iWork, 69 bool *bwork); 70 71 template <typename IndexType> 72 IndexType 73 ggevx(char balanc, 74 char jobVL, 75 char jobvr, 76 char sense, 77 IndexType n, 78 double *A, 79 IndexType ldA, 80 double *B, 81 IndexType ldB, 82 double *alphar, 83 double *alphai, 84 double *beta, 85 double *VL, 86 IndexType ldVL, 87 double *VR, 88 IndexType ldVR, 89 IndexType &ilo, 90 IndexType &ihi, 91 double *lscale, 92 double *rscale, 93 double &abnrm, 94 double &bbnrm, 95 double *rConde, 96 double *rCondv, 97 double *work, 98 IndexType lWork, 99 IndexType *iWork, 100 bool *bwork); 101 102 template <typename IndexType> 103 IndexType 104 ggevx(char balanc, 105 char jobVL, 106 char jobvr, 107 char sense, 108 IndexType n, 109 std::complex<float > *A, 110 IndexType ldA, 111 std::complex<float > *B, 112 IndexType ldB, 113 std::complex<float > *alpha, 114 std::complex<float > *beta, 115 std::complex<float > *VL, 116 IndexType ldVL, 117 std::complex<float > *VR, 118 IndexType ldVR, 119 IndexType &ilo, 120 IndexType &ihi, 121 float *lscale, 122 float *rscale, 123 float &abnrm, 124 float &bbnrm, 125 float *rConde, 126 float *rCondv, 127 std::complex<float > *work, 128 IndexType lWork, 129 float *rWork, 130 IndexType *iWork, 131 bool *bwork); 132 133 template <typename IndexType> 134 IndexType 135 ggevx(char balanc, 136 char jobVL, 137 char jobvr, 138 char sense, 139 IndexType n, 140 std::complex<double> *A, 141 IndexType ldA, 142 std::complex<double> *B, 143 IndexType ldB, 144 std::complex<double> *alpha, 145 std::complex<double> *beta, 146 std::complex<double> *VL, 147 IndexType ldVL, 148 std::complex<double> *VR, 149 IndexType ldVR, 150 IndexType &ilo, 151 IndexType &ihi, 152 double *lscale, 153 double *rscale, 154 double &abnrm, 155 double &bbnrm, 156 double *rConde, 157 double *rCondv, 158 std::complex<double> *work, 159 IndexType lWork, 160 double *rWork, 161 IndexType *iWork, 162 bool *bwork); 163 164 } // namespace cxxlapack 165 166 #endif // CXXLAPACK_INTERFACE_GGEVX_H 167