// // Copyright (c) 2003--2008 // Toon Knapen, Karl Meerbergen, Kresimir Fresl, // Thomas Klimpel and Rutger ter Borg // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // THIS FILE IS AUTOMATICALLY GENERATED // PLEASE DO NOT EDIT! // #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_GETRS_HPP #define BOOST_NUMERIC_BINDINGS_LAPACK_GETRS_HPP #include #include namespace boost { namespace numeric { namespace bindings { namespace lapack { $DESCRIPTION template< typename ValueType, typename Enable = void > struct getrs_impl{}; // real specialization template< typename ValueType > struct getrs_impl< ValueType, boost::enable_if< is_real::type > { typedef typename ValueType value_type; typedef typename traits::type_traits::real_type real_type; // overloaded member functions to call lapack static void operator()( char const trans, int const n, int const nrhs, float* a, int const lda, int* ipiv, float* b, int const ldb, int& info ) { LAPACK_SGETRS( &trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info ); } static void operator()( char const trans, int const n, int const nrhs, double* a, int const lda, int* ipiv, double* b, int const ldb, int& info ) { LAPACK_DGETRS( &trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info ); } // templated specialization template< typename MatrixA, typename VectorIPIV, typename MatrixB > static void operator()( char const trans, MatrixA& a, VectorIPIV& ipiv, MatrixB& b, int& info ) { assert( trans == 'N' || trans == 'T' || trans == 'C' ); assert( traits::matrix_size2(a) >= 0 ); assert( traits::matrix_size2(b) >= 0 ); assert( traits::leading_dimension(a) >= std::max(1, traits::matrix_size2(a)) ); assert( traits::leading_dimension(b) >= std::max(1, traits::matrix_size2(a)) ); operator()( trans, traits::matrix_size2(a), traits::matrix_size2(b), traits::matrix_storage(a), traits::leading_dimension(a), traits::vector_storage(ipiv), traits::matrix_storage(b), traits::leading_dimension(b), info ); } }; // complex specialization template< typename ValueType > struct getrs_impl< ValueType, boost::enable_if< is_complex::type > { typedef typename ValueType value_type; typedef typename traits::type_traits::real_type real_type; // overloaded member functions to call lapack static void operator()( char const trans, int const n, int const nrhs, traits::complex_f* a, int const lda, int* ipiv, traits::complex_f* b, int const ldb, int& info ) { LAPACK_CGETRS( &trans, &n, &nrhs, traits::complex_ptr(a), &lda, ipiv, traits::complex_ptr(b), &ldb, &info ); } static void operator()( char const trans, int const n, int const nrhs, traits::complex_d* a, int const lda, int* ipiv, traits::complex_d* b, int const ldb, int& info ) { LAPACK_ZGETRS( &trans, &n, &nrhs, traits::complex_ptr(a), &lda, ipiv, traits::complex_ptr(b), &ldb, &info ); } // templated specialization template< typename MatrixA, typename VectorIPIV, typename MatrixB > static void operator()( char const trans, MatrixA& a, VectorIPIV& ipiv, MatrixB& b, int& info ) { assert( trans == 'N' || trans == 'T' || trans == 'C' ); assert( traits::matrix_size2(a) >= 0 ); assert( traits::matrix_size2(b) >= 0 ); assert( traits::leading_dimension(a) >= std::max(1, traits::matrix_size2(a)) ); assert( traits::leading_dimension(b) >= std::max(1, traits::matrix_size2(a)) ); operator()( trans, traits::matrix_size2(a), traits::matrix_size2(b), traits::matrix_storage(a), traits::leading_dimension(a), traits::vector_storage(ipiv), traits::matrix_storage(b), traits::leading_dimension(b), info ); } }; }}}} // namespace boost::numeric::bindings::lapack #endif