From f0238cfb6997c4acfc2bd200de7295f3fa36968f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 3 Mar 2019 21:09:10 +0100 Subject: don't index Eigen --- .../src/IterativeLinearSolvers/SolveWithGuess.h | 115 --------------------- 1 file changed, 115 deletions(-) delete mode 100644 eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h (limited to 'eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h') diff --git a/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h b/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h deleted file mode 100644 index 0ace451..0000000 --- a/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +++ /dev/null @@ -1,115 +0,0 @@ -// This file is part of Eigen, a lightweight C++ template library -// for linear algebra. -// -// Copyright (C) 2014 Gael Guennebaud -// -// 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/. - -#ifndef EIGEN_SOLVEWITHGUESS_H -#define EIGEN_SOLVEWITHGUESS_H - -namespace Eigen { - -template class SolveWithGuess; - -/** \class SolveWithGuess - * \ingroup IterativeLinearSolvers_Module - * - * \brief Pseudo expression representing a solving operation - * - * \tparam Decomposition the type of the matrix or decomposion object - * \tparam Rhstype the type of the right-hand side - * - * This class represents an expression of A.solve(B) - * and most of the time this is the only way it is used. - * - */ -namespace internal { - - -template -struct traits > - : traits > -{}; - -} - - -template -class SolveWithGuess : public internal::generic_xpr_base, MatrixXpr, typename internal::traits::StorageKind>::type -{ -public: - typedef typename internal::traits::Scalar Scalar; - typedef typename internal::traits::PlainObject PlainObject; - typedef typename internal::generic_xpr_base, MatrixXpr, typename internal::traits::StorageKind>::type Base; - typedef typename internal::ref_selector::type Nested; - - SolveWithGuess(const Decomposition &dec, const RhsType &rhs, const GuessType &guess) - : m_dec(dec), m_rhs(rhs), m_guess(guess) - {} - - EIGEN_DEVICE_FUNC Index rows() const { return m_dec.cols(); } - EIGEN_DEVICE_FUNC Index cols() const { return m_rhs.cols(); } - - EIGEN_DEVICE_FUNC const Decomposition& dec() const { return m_dec; } - EIGEN_DEVICE_FUNC const RhsType& rhs() const { return m_rhs; } - EIGEN_DEVICE_FUNC const GuessType& guess() const { return m_guess; } - -protected: - const Decomposition &m_dec; - const RhsType &m_rhs; - const GuessType &m_guess; - -private: - Scalar coeff(Index row, Index col) const; - Scalar coeff(Index i) const; -}; - -namespace internal { - -// Evaluator of SolveWithGuess -> eval into a temporary -template -struct evaluator > - : public evaluator::PlainObject> -{ - typedef SolveWithGuess SolveType; - typedef typename SolveType::PlainObject PlainObject; - typedef evaluator Base; - - evaluator(const SolveType& solve) - : m_result(solve.rows(), solve.cols()) - { - ::new (static_cast(this)) Base(m_result); - m_result = solve.guess(); - solve.dec()._solve_with_guess_impl(solve.rhs(), m_result); - } - -protected: - PlainObject m_result; -}; - -// Specialization for "dst = dec.solveWithGuess(rhs)" -// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse specialization must exist somewhere -template -struct Assignment, internal::assign_op, Dense2Dense> -{ - typedef SolveWithGuess SrcXprType; - static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op &) - { - Index dstRows = src.rows(); - Index dstCols = src.cols(); - if((dst.rows()!=dstRows) || (dst.cols()!=dstCols)) - dst.resize(dstRows, dstCols); - - dst = src.guess(); - src.dec()._solve_with_guess_impl(src.rhs(), dst/*, src.guess()*/); - } -}; - -} // end namepsace internal - -} // end namespace Eigen - -#endif // EIGEN_SOLVEWITHGUESS_H -- cgit v1.2.3