Code covered by the BSD License  

Highlights from
Multiple matrix multiplications, with array expansion enabled

image thumbnail
from Multiple matrix multiplications, with array expansion enabled by Paolo de Leva
Multiplying matrices, vectors, or scalars contained in two N-D arrays, with array expansion enabled.

sysrequirements_for_testing(varargin)
function message = sysrequirements_for_testing(varargin)
% Checking whether the functions needed for testing are installed.
%     In order to run m-functions timing_arraylab_engines and 
%     testing_memory_usage, you need to have installed in your system:
%         - MATLAB R2007a or later (you need the builtin function BSXFUN)
%         - GENOP (MATLAB Central file #10333)
%         - BSXFUN substitute (MATLAB Central file #23005)
%         - TIMEIT (MATLAB Central file #18798)

% Paolo de Leva
% University of Rome, Foro Italico, Rome, Italy
% 2009 Feb 22

disp ' '
disp(['You are running MATLAB version ' version])
errorflag = false;

  bsxfunflag = false;
  bsxmexflag = false;
   genopflag = false;
bsxtimesflag = false;
  timeitflag = false;

for i = 1:nargin
    switch varargin{i}
        case 'bsxfun',     bsxfunflag = true;
        case 'bsxmex',     bsxmexflag = true;
        case 'genop',       genopflag = true;
        case 'bsxtimes', bsxtimesflag = true;
        case 'timeit',     timeitflag = true;
    end
end

% Check to see if BSXFUN is a builtin function.
if bsxfunflag && ~exist('bsxfun', 'builtin')
    disp ' '
    w = (['WARNING: You need MATLAB 7.4 (R2007a) or a later version, because  '
          '         you need the builtin function BSXFUN (its replacements for'
          '         releases prior to R2007a are also tested here).           ']);
    disp (w)
    errorflag = true;
end
            
if genopflag && ~exist('genop', 'file')
    disp ' '
    w = (['WARNING: You need to download GENOP (MATLAB Central file #10333,'
          '         http://www.mathworks.com/matlabcentral/fileexchange)   '
          '         and move it into the current directory.                ']);
    disp (w)
    errorflag = true;
end

if bsxmexflag && (~exist('bsxfun', 'file') || ~exist('bsx_times', 'file'))
    disp ' '
    w = (['WARNING: You need to download Schwarz''s BSXFUN substitute (file #23005'
          '         http://www.mathworks.com/matlabcentral/fileexchange), install'
          '         it, add to the MATLAB search path the directory in which you '
          '         installed it (use PATHTOOL to set the path).                 '
          '         Do not forget to run MAKE_BSX_MEX to build BSX_TIMES.        ']);
      disp (w)
    errorflag = true;
end

if bsxtimesflag && ~exist('bsx_times', 'file')
    disp ' '
    w = (['WARNING: You need to download Schwarz''s BSXFUN substitute (file #23005'
          '         http://www.mathworks.com/matlabcentral/fileexchange), install'
          '         it, delete BSXFUN.M to avoid a conflict with the builtin     '
          '         BSXFUN, run MAKE_BSX_MEX to build BSX_TIMES, and move        '
          '         BSX_TIMES to the current directory.                          ']);
      disp (w)
    errorflag = true;
end

if timeitflag
    verdate = datenum(version('-date'), 'mmmm dd, yyyy');
    minimumdate = datenum(2005,6,21); % Correct version of functions TIC/TOC
    if verdate < minimumdate
        disp ' '
        w = (['WARNING: You need MATLAB 7.1 (R14SP3) or a later version, because '
              '         you need an accurate and precise version of the builtin  '
              '         functions TIC and TOC, supporting the undocumented syntax'
              '         T = TIC; ...; ELAPSED_TIME = TOC(T).                     ']);
        disp (w)
        errorflag = true;
    elseif ~exist('timeit', 'file')
        disp ' '
        w = (['WARNING: You need to download TIMEIT (MATLAB Central file #18798,   '
              '         http://www.mathworks.com/matlabcentral/fileexchange),      '
              '         install it, and add to the MATLAB search path the directory'
              '         in which you installed it (use PATHTOOL to set the path).  ']);
        disp (w)
        errorflag = true;
    end
end

if errorflag
    message = (['Before running this function you must install the above\n', ... 
                'mentioned software']);
else
    message = false;
end


Contact us at files@mathworks.com