// Copyright (C) 2008-2015 National ICT Australia (NICTA) // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. // ------------------------------------------------------------------- // // Written by Conrad Sanderson - http://conradsanderson.id.au //! \addtogroup fn_inv //! @{ template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Base& X ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Base& X, const bool // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Base& X, const char* // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Op& X ) { arma_extra_debug_sigprint(); return Op(X.m, X.aux_uword_a, 0); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Op& X, const bool // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.m, X.aux_uword_a, 0); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv ( const Op& X, const char* // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.m, X.aux_uword_a, 0); } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv ( Mat& out, const Base& X ) { arma_extra_debug_sigprint(); try { out = inv(X); } catch(std::runtime_error&) { return false; } return true; } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv ( Mat& out, const Base& X, const bool // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return inv(out,X); } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv ( Mat& out, const Base& X, const char* // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return inv(out,X); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv_sympd ( const Base& X ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv_sympd ( const Base& X, const bool // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template arma_inline typename enable_if2< is_supported_blas_type::value, const Op >::result inv_sympd ( const Base& X, const char* // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return Op(X.get_ref()); } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv_sympd ( Mat& out, const Base& X ) { arma_extra_debug_sigprint(); try { out = inv_sympd(X); } catch(std::runtime_error&) { return false; } return true; } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv_sympd ( Mat& out, const Base& X, const bool // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return inv_sympd(X); } template inline typename enable_if2< is_supported_blas_type::value, bool >::result inv_sympd ( Mat& out, const Base& X, const char* // argument kept only for compatibility with old user code ) { arma_extra_debug_sigprint(); return inv_sympd(X); } //! @}