
/*******************************************************************************
*
* File linsolv.h
*
* Copyright (C) 2005, 2007  Martin Luescher
*
* This software is distributed under the terms of the GNU General Public
* License (GPL)
*
*******************************************************************************/

#ifndef LINSOLV_H
#define LINSOLV_H

#ifndef SU3_H
#include "su3.h"
#endif

#ifndef BICG_C
extern double bicg(int vol,int icom,void (*Op)(spinor_dble *pk,spinor_dble *pl),
                   spinor_dble *wsd[],int nmx,double res,spinor_dble *pk,
                   spinor_dble *pl,int *status);
#endif

#ifndef CGNE_C
extern double cgne(int vol,int icom,void (*Op)(spinor *pk,spinor *pl),
                   void (*Op_dble)(spinor_dble *pk,spinor_dble *pl),
                   spinor *ws[],spinor_dble *wsd[],int nmx,double res,
                   spinor_dble *pk,spinor_dble *pl,int *status);
#endif

#ifndef FGCR_C
extern double fgcr(int vol,int icom,void (*Op)(spinor_dble *pk,spinor_dble *pl),
                   void (*Mj)(int j,spinor *pr,spinor *pz,spinor *paz),
                   spinor *ws[],spinor_dble *wsd[],int nkv,int nmx,double res,
                   spinor_dble *pk,spinor_dble *pl,int *status);
#endif

#ifndef FGCR4VD_C
extern double fgcr4vd(int vol,int icom,
                      void (*Op)(complex_dble *pk,complex_dble *pl),
                      void (*Mj)(int j,complex *pr,complex *pz,complex *paz),
                      complex *ws[],complex_dble *wsd[],int nkv,int nmx,
                      double res,complex_dble *pk,complex_dble *pl,int *status);
#endif

#endif
