Code covered by the BSD License  

Highlights from
slatec

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

[lun,kprint,ipass]=qxgbun(lun,kprint,ipass);
function [lun,kprint,ipass]=qxgbun(lun,kprint,ipass);
persistent a b c deltax deltay dum dysq ermax err f i idimy ierror j m mm1 mperod n nperod pi s t w x y z ; 

if isempty(a), a=zeros(1,20); end;
if isempty(b), b=zeros(1,20); end;
if isempty(c), c=zeros(1,20); end;
if isempty(deltax), deltax=0; end;
if isempty(deltay), deltay=0; end;
if isempty(dum), dum=0; end;
if isempty(dysq), dysq=0; end;
if isempty(ermax), ermax=0; end;
if isempty(err), err=0; end;
if isempty(f), f=zeros(25,130); end;
if isempty(pi), pi=0; end;
if isempty(s), s=0; end;
if isempty(t), t=0; end;
if isempty(w), w=zeros(1,1200); end;
if isempty(x), x=zeros(1,20); end;
if isempty(y), y=zeros(1,120); end;
if isempty(z), z=0; end;
if isempty(i), i=0; end;
if isempty(idimy), idimy=0; end;
if isempty(ierror), ierror=0; end;
if isempty(j), j=0; end;
if isempty(m), m=0; end;
if isempty(mm1), mm1=0; end;
if isempty(mperod), mperod=0; end;
if isempty(n), n=0; end;
if isempty(nperod), nperod=0; end;
ermax = 1.0e-2;
idimy = 25;
mperod = 1;
m = 20;
deltax = 1.0e0./m;
nperod = 0;
n = 120;
[pi ,dum]=pimach(dum);
deltay = 2.0e0.*pi./n;
for i = 1 : m;
x(i) =(i-1).*deltax;
end; i = fix(m+1);
for j = 1 : n;
y(j) = -pi +(j-1).*deltay;
end; j = fix(n+1);
s =(deltay./deltax).^2;
t = s.*deltax;
a(1) = 0.;
b(1) = -2.0e0.*s;
c(1) = 2.0e0.*s;
for i = 2 : m;
a(i) =(1.+x(i)).^2.*s +(1.+x(i)).*t;
c(i) =(1.+x(i)).^2.*s -(1.+x(i)).*t;
b(i) = -2.0e0.*(1.0e0+x(i)).^2.*s;
end; i = fix(m+1);
c(m) = 0.;
dysq = deltay.^2;
for j = 1 : n;
f(1,j) = dysq.*(11.+8../deltax).*sin(y(j));
end; j = fix(n+1);
mm1 = fix(m - 1);
for i = 2 : mm1;
for j = 1 : n;
f(i,j) = dysq.*3..*(1.+x(i)).^4.*sin(y(j));
end; j = fix(n+1);
end; i = fix(mm1+1);
for j = 1 : n;
f(m,j) = dysq.*(3..*(1.+x(m)).^4-16..*((1.+x(m))./deltax).^2+16..*(1.+x(m))./deltax).*sin(y(j));
end; j = fix(n+1);
[nperod,n,mperod,m,a,b,c,idimy,f,ierror,w]=genbun(nperod,n,mperod,m,a,b,c,idimy,f,ierror,w);
err = 0.;
for i = 1 : m;
for j = 1 : n;
z = abs(f(i,j)-(1.+x(i)).^4.*sin(y(j)));
if( z>err )
err = z;
end;
end; j = fix(n+1);
end; i = fix(m+1);
ipass = 1;
if( err>ermax )
ipass = 0;
end;
if( kprint==0 )
return;
end;
if( kprint>=2 || ipass==0 )
writef(lun,['1',repmat(' ',1,20),'SUBROUTINE GENBUN EXAMPLE', '\n ' , '\n ' , '\n ' ,repmat(' ',1,10),'THE OUTPUT FROM THE NCAR CONTROL DATA 7600 WAS', '\n ' , '\n ' ,repmat(' ',1,32),'IERROR = 0', '\n ' ,repmat(' ',1,18),'DISCRETIZATION ERROR = 7.94113E-03', '\n ' ,repmat(' ',1,12),'REQUIRED LENGTH OF W ARRAY = 740', '\n ' , '\n ' ,repmat(' ',1,10),'THE OUTPUT FROM YOUR COMPUTER IS', '\n ' , '\n ' ,repmat(' ',1,32),'IERROR =','%2i', '\n ' ,repmat(' ',1,18),'DISCRETIZATION ERROR =',repmat('%12.5f',1,1), '\n ' ,repmat(' ',1,12),'REQUIRED LENGTH OF W ARRAY =','%4i' ' \n'], ierror , err , fix(w(1)));
%format ('1',20X,'SUBROUTINE GENBUN EXAMPLE'///10X,'THE OUTPUT FROM THE NCAR CONTROL DATA 7600 WAS'//32X,'IERROR = 0'/18X,'DISCRETIZATION ERROR = 7.94113E-03'/12X,'REQUIRED LENGTH OF W ARRAY = 740'//10X,'THE OUTPUT FROM YOUR COMPUTER IS'//32X,'IERROR =',i2/18X,'DISCRETIZATION ERROR =',1PE12.5/12X,'REQUIRED LENGTH OF W ARRAY =',i4);
if( ipass==1 )
writef(lun,[repmat(' ',1,60),'PASS', '\n '  ' \n']);
%format (60X,'PASS'];
else;
writef(lun,[repmat(' ',1,60),'FAIL', '\n '  ' \n']);
%format (60X,'FAIL'];
end;
end;
return;
end %subroutine qxgbun

Contact us at files@mathworks.com