1 /*!
2  * \file   include/FSES/sytrd3.hxx
3  * \brief
4  * \author Joachim Kopp/Thomas Helfer
5  * \date   02 janv. 2017
6  * \copyright Copyright (C) 2006-2018 CEA/DEN, EDF R&D. All rights
7  * reserved.
8  * This project is publicly released under either the GNU GPL Licence
9  * or the CECILL-A licence. A copy of thoses licences are delivered
10  * with the sources of TFEL. CEA or EDF may also distribute this
11  * project under specific licensing conditions.
12  *
13  * ----------------------------------------------------------------------------
14  * This file has been introduced in TFEL with the courtesy of Joachim Kopp.
15  *
16  * Original licence
17  *
18  * Numerical diagonalization of 3x3 matrcies
19  * Copyright (C) 2006  Joachim Kopp
20  *
21  * This library is free software; you can redistribute it and/or
22  * modify it under the terms of the GNU Lesser General Public
23  * License as published by the Free Software Foundation; either
24  * version 2.1 of the License, or (at your option) any later version.
25  *
26  * This library is distributed in the hope that it will be useful,
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29  * Lesser General Public License for more details.
30  *
31  * You should have received a copy of the GNU Lesser General Public
32  * License along with this library; if not, write to the Free Software
33  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
34  */
35 
36 #ifndef LIB_FSES_SYTRD3_HXX
37 #define LIB_FSES_SYTRD3_HXX
38 
39 namespace fses {
40 
41   // ----------------------------------------------------------------------------
42   // Reduces a symmetric 3x3 matrix to tridiagonal form by applying
43   // (unitary) Householder transformations:
44   //            [ d[0]  e[0]       ]
45   //    A = Q . [ e[0]  d[1]  e[1] ] . Q^T
46   //            [       e[1]  d[2] ]
47   // The function accesses only the diagonal and upper triangular parts of
48   // A. The access is read-only.
49   // ---------------------------------------------------------------------------
50   template<typename MatrixType, typename VectorType,
51 	   typename VectorType2,typename MatrixType2>
52   inline void sytrd3(MatrixType&,
53 		     VectorType&,
54 		     VectorType2&,
55 		     const MatrixType2&);
56 
57 } // end of namespace fses
58 
59 #include"FSES/sytrd3.ixx"
60 
61 #endif /* LIB_FSES_SYTRD3_HXX */
62