//      LAPACK++ (V. 1.1)
//      (C) 1992-1996 All Rights Reserved.

// Dominik Wagenfuehr <dominik.wagenfuehr@arcor.de>
// Copyright (C) 2006

// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2, or (at
// your option) any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.


#ifndef _LA_SYMM_BAND_FACT_DOUBLE_H_
#define _LA_SYMM_BAND_FACT_DOUBLE_H_

/** @file
 * @brief Factorization and solving of real symmetric positive definite band matrices
*/

#include "arch.h"
#include "lafnames.h"
#include LA_SYMM_BAND_MAT_DOUBLE_H

/**
 * Factorize a real-valued symmetric positive definite band matrix
 * with Cholesky factorization, in-place.
 *
 * @param A On entry, a real-valued symmetric positive definite
 * band matrix A of dimension N x N.  On exit, the lower
 * triangular Cholesky factorization B with \f$ B^T \cdot B = A \f$
 */
void LaSymmBandMatFactorizeIP(LaSymmBandMatDouble &A);

/**
 * Factorize a real-valued symmetric positive definite band matrix
 * with Cholesky.
 *
 * @param A On entry, a real-valued symmetric positive definite
 * band matrix A of dimension N x N.
 *
 * @param AF On exit, the lower triangular Cholesky factorization
 * of A with \f$ AF^T \cdot AF = A \f$
 */
void LaSymmBandMatFactorize(const LaSymmBandMatDouble &A,
			    LaSymmBandMatDouble& AF);

/**
 * Solve A*X=B in-place where A is a real-valued symmetric
 * positive definite band matrix.
 *
 * The solution will be calulated in-place that means that A is
 * overwritten during the process with the Cholesky-factorization
 * and B will hold the solution afterwards.
 *
 * @param A On entry, the real-valued symmetric positive definite
 * band matrix A of dimension N x N.  On exit, the cholesky
 * factorization.
 *
 * @param B On entry, the general matrix B of dimension N x M.
 * On exit, the solution matrix X for A*X = B.
 */
void LaLinearSolveIP(LaSymmBandMatDouble &A, LaGenMatDouble &B);

/**
 * Solve A*X=B where A is a real-valued symmetric positive
 * definite band matrix.
 *
 * @param A On entry, a real-valued symmetric positive definite
 * band matrix A of dimension N x N.
 *
 * @param B On entry, the general matrix B of dimension N x M.
 *
 * @param X On exit, the solution matrix X with A*X = B.
 */
void LaLinearSolve(const LaSymmBandMatDouble A, LaGenMatDouble &X,
		   const LaGenMatDouble &B);

#endif 
// _LA_SYMM_BAND_FACT_DOUBLE_H_


syntax highlighted by Code2HTML, v. 0.9.1