Code covered by the BSD License  

Highlights from
slatec

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

[x,ix,ierror]=xadj(x,ix,ierror);
function [x,ix,ierror]=xadj(x,ix,ierror);
%***BEGIN PROLOGUE  XADJ
%***PURPOSE  To provide single-precision floating-point arithmetic
%            with an extended exponent range.
%***LIBRARY   SLATEC
%***CATEGORY  A3D
%***TYPE      SINGLE PRECISION (XADJ-S, DXADJ-D)
%***KEYWORDS  EXTENDED-RANGE SINGLE-PRECISION ARITHMETIC
%***AUTHOR  Lozier, Daniel W., (National Bureau of Standards)
%           Smith, John M., (NBS and George Mason University)
%***DESCRIPTION
%     REAL X
%     INTEGER IX
%
%                  TRANSFORMS (X,IX) SO THAT
%                  RADIX**(-L) .LE. ABS(X) .LT. RADIX**L.
%                  ON MOST COMPUTERS THIS TRANSFORMATION DOES
%                  NOT CHANGE THE MANTISSA OF X PROVIDED RADIX IS
%                  THE NUMBER BASE OF SINGLE-PRECISION ARITHMETIC.
%
%***SEE ALSO  XSET
%***REFERENCES  (NONE)
%***ROUTINES CALLED  XERMSG
%***COMMON BLOCKS    XBLK2
%***REVISION HISTORY  (YYMMDD)
%   820712  DATE WRITTEN
%   881020  Revised to meet SLATEC CML recommendations.  (DWL and JMS)
%   901019  Revisions to prologue.  (DWL and WRB)
%   901106  Changed all specific intrinsics to generic.  (WRB)
%           Corrected order of sections in prologue and added TYPE
%           section.  (WRB)
%           CALLs to XERROR changed to CALLs to XERMSG.  (WRB)
%   920127  Revised PURPOSE section of prologue.  (DWL)
%***end PROLOGUE  XADJ

global xblk2_1; if isempty(xblk2_1), xblk2_1=0; end;
global xblk2_2; if isempty(xblk2_2), xblk2_2=0; end;
global xblk2_3; if isempty(xblk2_3), xblk2_3=0; end;
global xblk2_4; if isempty(xblk2_4), xblk2_4=0; end;
global xblk2_5; if isempty(xblk2_5), xblk2_5=0; end;
global xblk2_6; if isempty(xblk2_6), xblk2_6=0; end;
global xblk2_7; if isempty(xblk2_7), xblk2_7=0; end;
% common :: ;
%% common /xblk2 / radix , radixl , rad2l , dlg10r , l , l2 , kmax;
%% common /xblk2 / xblk2_1 , xblk2_2 , xblk2_3 , xblk2_4 , xblk2_5 , xblk2_6 , xblk2_7;
% save :: ;
% save ::       ;
%
%   THE CONDITION IMPOSED ON L AND KMAX BY THIS SUBROUTINE
% IS
%     2*L .LE. KMAX
%
% THIS CONDITION MUST BE MET BY APPROPRIATE CODING
% IN SUBROUTINE XSET.
%
%***FIRST EXECUTABLE STATEMENT  XADJ
ierror = 0;
while (1);
if( x==0.0 )
ix = 0;
elseif( abs(x)>=1.0 ) ;
if( abs(x)>=xblk2_2 )
x = x./xblk2_3;
if( ix<=0 )
ix = fix(ix + xblk2_6);
return;
elseif( ix<=xblk2_7-xblk2_6 ) ;
ix = fix(ix + xblk2_6);
return;
else;
break;
end;
end;
elseif( xblk2_2.*abs(x)<1.0 ) ;
x = x.*xblk2_3;
if( ix>=0 )
ix = fix(ix - xblk2_6);
return;
elseif( ix>=-xblk2_7+xblk2_6 ) ;
ix = fix(ix - xblk2_6);
return;
else;
break;
end;
end;
if( abs(ix)<=xblk2_7 )
return;
end;
break;
end;
xermsg('SLATEC','XADJ','overflow in auxiliary index',107,1);
ierror = 107;
end %subroutine xadj
%DECK XC210

Contact us at files@mathworks.com