Code covered by the BSD License  

Highlights from
slatec

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

[key,ipage,lpg,sx,ix]=prwvir(key,ipage,lpg,sx,ix);
function [key,ipage,lpg,sx,ix]=prwvir(key,ipage,lpg,sx,ix);
persistent first firstCall iaddr ipagef istart one zero ; if isempty(firstCall),firstCall=1;end; 

if isempty(iaddr), iaddr=0; end;
if isempty(ipagef), ipagef=0; end;
if isempty(istart), istart=0; end;
%***BEGIN PROLOGUE  PRWVIR
%***SUBSIDIARY
%***PURPOSE  Subsidiary to SPLP
%***LIBRARY   SLATEC
%***TYPE      SINGLE PRECISION (PRWVIR-S, DPRWVR-D)
%***AUTHOR  Hanson, R. J., (SNLA)
%           Wisniewski, J. A., (SNLA)
%***DESCRIPTION
%
%     PRWVIR LIMITS THE TYPE OF STORAGE TO A SEQUENTIAL SPARSE MATRIX
%     STORAGE SCHEME.  THE PAGE STORAGE IS ON RANDOM ACCESS DISK.
%     PRWVIR IS PART OF THE SPARSE LP PACKAGE, SPLP.
%
%     KEY       IS A FLAG WHICH INDICATES WHETHER A READ OR WRITE
%               OPERATION IS TO BE PERFORMED. A VALUE OF KEY=1 INDICATES
%               A READ. A VALUE OF KEY=2 INDICATES A WRITE.
%     IPAGE     IS THE PAGE OF MATRIX MN WE ARE ACCESSING.
%     LPG       IS THE LENGTH OF THE PAGE.
%   SX(*),IX(*) IS THE MATRIX DATA.
%
%     THIS SUBROUTINE IS A MODIFICATION OF THE SUBROUTINE LRWVIR,
%     SANDIA LABS. REPT. SAND78-0785.
%     MODIFICATIONS BY K.L. HIEBERT AND R.J. HANSON
%
%***SEE ALSO  SPLP
%***ROUTINES CALLED  SOPENM, SREADP, SWRITP
%***REVISION HISTORY  (YYMMDD)
%   811215  DATE WRITTEN
%   891009  Removed unreferenced variables.  (WRB)
%   891214  Prologue converted to Version 4.0 format.  (BAB)
%   900328  Added TYPE section.  (WRB)
%   910403  Updated AUTHOR and DESCRIPTION sections.  (WRB)
%***end PROLOGUE  PRWVIR
ix_shape=size(ix);ix=reshape(ix,1,[]);
sx_shape=size(sx);sx=reshape(sx,1,[]);
if isempty(zero), zero=0; end;
if isempty(one), one=0; end;
if isempty(first), first=false; end;
if firstCall,   zero =[0.0e0];  end;
if firstCall,  one=[1.0e0];  end;
firstCall=0;
%***FIRST EXECUTABLE STATEMENT  PRWVIR
%
%     COMPUTE STARTING ADDRESS OF PAGE.
%
ipagef = fix(sx(3));
istart = fix(ix(3) + 5);
%
%     OPEN RANDOM ACCESS FILE NUMBER IPAGEF, IF FIRST PAGE WRITE.
%
first = sx(4)==zero;
if( first )
[ipagef,lpg]=sopenm(ipagef,lpg);
sx(4) = one;
end;
%
%     PERFORM EITHER A READ OR A WRITE.
%
iaddr = fix(2.*ipage - 1);
if( key==1 )
[ipagef,ix(sub2ind(size(ix),max(istart,1)):end),sx(sub2ind(size(sx),max(istart,1)):end),lpg,iaddr]=sreadp(ipagef,ix(sub2ind(size(ix),max(istart,1)):end),sx(sub2ind(size(sx),max(istart,1)):end),lpg,iaddr);
elseif( key==2 ) ;
[ipagef,ix(sub2ind(size(ix),max(istart,1)):end),sx(sub2ind(size(sx),max(istart,1)):end),lpg,iaddr]=swritp(ipagef,ix(sub2ind(size(ix),max(istart,1)):end),sx(sub2ind(size(sx),max(istart,1)):end),lpg,iaddr);
end;
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
sx_shape=zeros(sx_shape);sx_shape(:)=sx(1:numel(sx_shape));sx=sx_shape;
end
%DECK PSGF

Contact us at files@mathworks.com