Code covered by the BSD License  

Highlights from
slatec

from slatec by Ben Barrowes
The slatec library converted into matlab functions.

[n,b,x,nelt,ia,ja,a,isym,rwork,iwork]=ssmmti(n,b,x,nelt,ia,ja,a,isym,rwork,iwork);
function [n,b,x,nelt,ia,ja,a,isym,rwork,iwork]=ssmmti(n,b,x,nelt,ia,ja,a,isym,rwork,iwork);
%***BEGIN PROLOGUE  SSMMTI
%***PURPOSE  SLAP MSOLVE for LDU Factorization of Normal Equations.
%            This routine acts as an interface between the SLAP generic
%            MMTSLV calling convention and the routine that actually
%                                    -1
%            computes  [(LDU)*(LDU)']  B = X.
%***LIBRARY   SLATEC (SLAP)
%***CATEGORY  D2E
%***TYPE      SINGLE PRECISION (SSMMTI-S, DSMMTI-D)
%***KEYWORDS  ITERATIVE PRECONDITION, LINEAR SYSTEM SOLVE, SLAP, SPARSE
%***AUTHOR  Greenbaum, Anne, (Courant Institute)
%           Seager, Mark K., (LLNL)
%             Lawrence Livermore National Laboratory
%             PO BOX 808, L-60
%             Livermore, CA 94550 (510) 423-3141
%             seager@llnl.gov
%***DESCRIPTION
%       It is assumed that RWORK and IWORK have initialized with
%       the information required for SSMMI2:
%          IWORK(1) = Starting location of IL in IWORK.
%          IWORK(2) = Starting location of JL in IWORK.
%          IWORK(3) = Starting location of IU in IWORK.
%          IWORK(4) = Starting location of JU in IWORK.
%          IWORK(5) = Starting location of L in RWORK.
%          IWORK(6) = Starting location of DINV in RWORK.
%          IWORK(7) = Starting location of U in RWORK.
%       See the DESCRIPTION of SSMMI2 for details.
%***REFERENCES  (NONE)
%***ROUTINES CALLED  SSMMI2
%***REVISION HISTORY  (YYMMDD)
%   871119  DATE WRITTEN
%   881213  Previous REVISION DATE
%   890915  Made changes requested at July 1989 CML Meeting.  (MKS)
%   890922  Numerous changes to prologue to make closer to SLATEC
%           standard.  (FNF)
%   890929  Numerous changes to reduce SP/DP differences.  (FNF)
%   910411  Prologue converted to Version 4.0 format.  (BAB)
%   920511  Added complete declaration section.  (WRB)
%   921113  Corrected C***CATEGORY line.  (FNF)
%   930701  Updated CATEGORY section.  (FNF, WRB)
%***end PROLOGUE  SSMMTI
%     .. Scalar Arguments ..
%     .. Array Arguments ..
persistent locdin locil lociu locjl locju locl locu ; 

rwork_shape=size(rwork);rwork=reshape(rwork,1,[]);
%     .. Local Scalars ..
if isempty(locdin), locdin=0; end;
if isempty(locil), locil=0; end;
if isempty(lociu), lociu=0; end;
if isempty(locjl), locjl=0; end;
if isempty(locju), locju=0; end;
if isempty(locl), locl=0; end;
if isempty(locu), locu=0; end;
%     .. External Subroutines ..
%***FIRST EXECUTABLE STATEMENT  SSMMTI
%
%         Pull out the locations of the arrays holding the ILU
%         factorization.
%
locil = fix(iwork(1));
locjl = fix(iwork(2));
lociu = fix(iwork(3));
locju = fix(iwork(4));
locl = fix(iwork(5));
locdin = fix(iwork(6));
locu = fix(iwork(7));
%
[n,b,x,dumvar4,dumvar5,dumvar6,dumvar7,dumvar8,dumvar9,dumvar10]=ssmmi2(n,b,x,iwork(sub2ind(size(iwork),max(locil,1)):end),iwork(sub2ind(size(iwork),max(locjl,1)):end),rwork(sub2ind(size(rwork),max(locl,1)):end),rwork(locdin:locdin+n-1),iwork(sub2ind(size(iwork),max(lociu,1)):end),iwork(sub2ind(size(iwork),max(locju,1)):end),rwork(locu:locu+n-1));   dumvar4i=find((iwork(sub2ind(size(iwork),max(locil,1)):end))~=(dumvar4));dumvar5i=find((iwork(sub2ind(size(iwork),max(locjl,1)):end))~=(dumvar5));dumvar6i=find((rwork(sub2ind(size(rwork),max(locl,1)):end))~=(dumvar6));dumvar7i=find((rwork(locdin:locdin+n-1))~=(dumvar7));dumvar8i=find((iwork(sub2ind(size(iwork),max(lociu,1)):end))~=(dumvar8));dumvar9i=find((iwork(sub2ind(size(iwork),max(locju,1)):end))~=(dumvar9));dumvar10i=find((rwork(locu:locu+n-1))~=(dumvar10));   iwork(locil-1+dumvar4i)=dumvar4(dumvar4i); iwork(locjl-1+dumvar5i)=dumvar5(dumvar5i); rwork(locl-1+dumvar6i)=dumvar6(dumvar6i); rwork(locdin-1+dumvar7i)=dumvar7(dumvar7i); iwork(lociu-1+dumvar8i)=dumvar8(dumvar8i); iwork(locju-1+dumvar9i)=dumvar9(dumvar9i); rwork(locu-1+dumvar10i)=dumvar10(dumvar10i); 
%
%------------- LAST LINE OF SSMMTI FOLLOWS ----------------------------
rwork_shape=zeros(rwork_shape);rwork_shape(:)=rwork(1:numel(rwork_shape));rwork=rwork_shape;
end
%DECK SSMTV

Contact us at files@mathworks.com