Code covered by the BSD License  

Highlights from
slatec

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

[nc,maxa,a,inum,jptr,jnum,jdisp]=mc20as(nc,maxa,a,inum,jptr,jnum,jdisp);
function [nc,maxa,a,inum,jptr,jnum,jdisp]=mc20as(nc,maxa,a,inum,jptr,jnum,jdisp);
persistent ace acep i ice icep j ja jb jce jcep k kr locmlv nullmlv ; 

if isempty(ace), ace=0; end;
if isempty(acep), acep=0; end;
if isempty(i), i=0; end;
if isempty(ice), ice=0; end;
if isempty(icep), icep=0; end;
if isempty(j), j=0; end;
if isempty(ja), ja=0; end;
if isempty(jb), jb=0; end;
if isempty(jce), jce=0; end;
if isempty(jcep), jcep=0; end;
if isempty(k), k=0; end;
if isempty(kr), kr=0; end;
if isempty(locmlv), locmlv=0; end;
if isempty(nullmlv), nullmlv=0; end;
%***BEGIN PROLOGUE  MC20AS
%***SUBSIDIARY
%***PURPOSE  Subsidiary to SPLP
%***LIBRARY   SLATEC
%***TYPE      SINGLE PRECISION (MC20AS-S, MC20AD-D)
%***AUTHOR  (UNKNOWN)
%***DESCRIPTION
%
%     THIS SUBPROGRAM IS A SLIGHT MODIFICATION OF A SUBPROGRAM
%     FROM THE C. 1979 AERE HARWELL LIBRARY.  THE NAME OF THE
%     CORRESPONDING HARWELL CODE CAN BE OBTAINED BY DELETING
%     THE FINAL LETTER =S= IN THE NAMES USED HERE.
%     REVISED SEP. 13, 1979.
%
%     ROYALTIES HAVE BEEN PAID TO AERE-UK FOR USE OF THEIR CODES
%     IN THE PACKAGE GIVEN HERE.  ANY PRIMARY USAGE OF THE HARWELL
%     SUBROUTINES REQUIRES A ROYALTY AGREEMENT AND PAYMENT BETWEEN
%     THE USER AND AERE-UK.  ANY USAGE OF THE SANDIA WRITTEN CODES
%     SPLP( ) (WHICH USES THE HARWELL SUBROUTINES) IS PERMITTED.
%
%***SEE ALSO  SPLP
%***ROUTINES CALLED  (NONE)
%***REVISION HISTORY  (YYMMDD)
%   811215  DATE WRITTEN
%   890831  Modified array declarations.  (WRB)
%   891214  Prologue converted to Version 4.0 format.  (BAB)
%   900402  Added TYPE section.  (WRB)
%***end PROLOGUE  MC20AS
inum_shape=size(inum);inum=reshape(inum,1,[]);
jnum_shape=size(jnum);jnum=reshape(jnum,1,[]);
a_shape=size(a);a=reshape(a,1,[]);
%***FIRST EXECUTABLE STATEMENT  MC20AS
nullmlv = -jdisp;
%**      CLEAR JPTR
for j = 1 : nc;
jptr(j) = 0;
end; j = fix(nc+1);
%**      COUNT THE NUMBER OF ELEMENTS IN EACH COLUMN.
for k = 1 : maxa;
j = fix(jnum(k) + jdisp);
jptr(j) = fix(jptr(j) + 1);
end; k = fix(maxa+1);
%**      SET THE JPTR ARRAY
k = 1;
for j = 1 : nc;
kr = fix(k + jptr(j));
jptr(j) = fix(k);
k = fix(kr);
end; j = fix(nc+1);
%
%**      REORDER THE ELEMENTS INTO COLUMN ORDER.  THE ALGORITHM IS AN
%        IN-PLACE SORT AND IS OF ORDER MAXA.
for i = 1 : maxa;
%        ESTABLISH THE CURRENT ENTRY.
jce = fix(jnum(i) + jdisp);
if( jce~=0 )
ace = a(i);
ice = fix(inum(i));
%        CLEAR THE LOCATION VACATED.
jnum(i) = fix(nullmlv);
%        CHAIN FROM CURRENT ENTRY TO STORE ITEMS.
for j = 1 : maxa;
%        CURRENT ENTRY NOT IN CORRECT POSITION.  DETERMINE CORRECT
%        POSITION TO STORE ENTRY.
locmlv = jptr(jce);
jptr(jce) = fix(jptr(jce) + 1);
%        SAVE CONTENTS OF THAT LOCATION.
acep = a(locmlv);
icep = fix(inum(locmlv));
jcep = fix(jnum(locmlv));
%        STORE CURRENT ENTRY.
a(locmlv) = ace;
inum(locmlv) = fix(ice);
jnum(locmlv) = fix(nullmlv);
%        CHECK IF NEXT CURRENT ENTRY NEEDS TO BE PROCESSED.
if( jcep==nullmlv )
break;
end;
%        IT DOES.  COPY INTO CURRENT ENTRY.
ace = acep;
ice = fix(icep);
jce = fix(jcep + jdisp);
end;
end;
%
end;
%
%**      RESET JPTR VECTOR.
ja = 1;
for j = 1 : nc;
jb = fix(jptr(j));
jptr(j) = fix(ja);
ja = fix(jb);
end; j = fix(nc+1);
inum_shape=zeros(inum_shape);inum_shape(:)=inum(1:numel(inum_shape));inum=inum_shape;
jnum_shape=zeros(jnum_shape);jnum_shape(:)=jnum(1:numel(jnum_shape));jnum=jnum_shape;
a_shape=zeros(a_shape);a_shape(:)=a(1:numel(a_shape));a=a_shape;
end
%DECK MGSBV

Contact us at files@mathworks.com