module cgmeth  
  use matmult
  use cgstep_mod
  use solver_tiny_mod
implicit none
  contains
! setup of conjugate gradient descent, minimize  SUM rr(i)**2
!             nx
! rr(i)  =   sum fff(i,j) * x(j)  -  yy(i)
!            j=1
  subroutine cgtest( x, yy, rr, fff, niter)
    real, dimension (:), intent (out) :: x, rr
    real, dimension (:), intent (in)  :: yy
    real, dimension (:,:), pointer    :: fff
    integer,             intent (in)  :: niter
    call matmult_init( fff)
    call solver_tiny( m=x, d=yy, 	Fop=matmult_lop, stepper=cgstep,&
      & 	niter=niter, resd=rr)
    call cgstep_close ()
  end subroutine 
end module 
