anchor.diff:  module modSparse
     use iso_c_binding
     private
  +  
  +  ! constants
  +  integer,parameter,public::CSR_CLEAN=1 !< remove CSR duplicated/zero entries
  +  integer,parameter,public::CSR_CLEAN_PSORT=2 !< remove CSR duplicated/zero entries, partial sort
  +  integer,parameter,public::CSR_CLEAN_SORT=3 !< remove CSR duplicated/zero entries, full sort
     
     !> generic CSR linear equation object
     type,public::linEq
  
positive.code:   subroutine clearLinEq(this)
      class(linEq),intent(inout)::this !< this linEq
      
      deallocate(this%iA,this%jA,this%A)
    end subroutine
    
    !> set matrix with CSR format for this generic linEq
    subroutine setCSRLinEq(this,iA,jA,A)
      class(linEq),intent(inout)::this !< this linEq
      integer,intent(in)::iA(*) !< CSR index array (size nEq+1)
      integer,intent(in)::jA(*) !< CSR index array (size nNz)
      double precision,intent(in)::A(*) !< CSR value array
      integer::nNz
      
      this%iA(1:this%nEq+1)=iA(1:this%nEq+1)
      nNz=iA(this%nEq+1)-1
      this%jA(1:nNz)=jA(1:nNz)
      this%A(1:nNz)=A(1:nNz)
    end subroutine
    
    !> set matrix with COO format for this generic linEq
    subroutine setCOOLinEq(this,iA,jA,A,nNz)
      class(linEq),intent(inout)::this !< this linEq
      integer,intent(in)::iA(*) !< COO row index array (size nNz)
      integer,intent(in)::jA(*) !< COO column index array (size nNz)
      double precision,intent(in)::A(*) !< COO value array
      integer,intent(in)::nNz !< number of non-zeros
      
      call coocsr(this%nEq,nNz,A,iA,jA,this%A,this%jA,this%iA)
    end subroutine
    
    !> generic destructor of linEq
  
negative.code:       integer,intent(in)::ir(*),jc(*)
        double precision,intent(inout)::ao(*)
        integer,intent(inout)::jao(*),iao(*)
      end subroutine
      
      !> CSR format cleanup and sort
      subroutine clncsr(job,value2,nrow,a,ja,ia,indu,iwk)
        integer,intent(in)::job,value2,nrow
        integer,intent(inout)::ia(nrow+1),ja(*)
        double precision,intent(inout)::a(*)
        integer,intent(inout)::indu(nrow),iwk(nrow+1)
      end subroutine
      
      !> ILUT factorization
  