\resetsteps      % Reset all the commands to create a blank worksheet  

% Define the operation to be computed

\renewcommand{\operation}{  y := A x + y }
\renewcommand{\routinename}{ y \becomes \mbox{\sc matvec\_blk\_var1}(A, x, y) }
\renewcommand{\routinecost}{ 2mn }

\renewcommand{\blocksize}{ m_b }

% Step 3: Loop-guard 

\renewcommand{\guard}{
  m( y_T ) < m( y )
}

% Step 4: Redefine Initialize 

\renewcommand{\partitionings}{
  $
  A \rightarrow
  \FlaTwoByOne{A_{T}}
              {A_{B}}
  $
,
  $
  y \rightarrow
  \FlaTwoByOne{y_{T}}
              {y_{B}}
  $
}

\renewcommand{\partitionsizes}{
$ A_{T} $ has $ 0 $ rows and
$ y_{T} $ has $ 0 $ elements
}

% Step 5a: Repartition the operands 

\renewcommand{\repartitionings}{
$
  \FlaTwoByOne{ A_T }
              { A_B }
\rightarrow
  \FlaThreeByOneB{A_0}
                 {A_1}
                 {A_2}
$
,
$
  \FlaTwoByOne{ y_T }
              { y_B }
\rightarrow
  \FlaThreeByOneB{y_0}
                 {y_1}
                 {y_2}
$
}

\renewcommand{\blocksize}{m_b}

\renewcommand{\repartitionsizes}{
$ A_1 $ has $ \blocksize $ rows and
$ y_1 $ has $ \blocksize $ elements}

% Step 5b: Move the double lines 

\renewcommand{\moveboundaries}{
$
  \FlaTwoByOne{ A_T }
              { A_B }
\leftarrow
  \FlaThreeByOneT{A_0}
                 {A_1}
                 {A_2}
$
,
$
  \FlaTwoByOne{ y_T }
              { y_B }
\leftarrow
  \FlaThreeByOneT{y_0}
                 {y_1}
                 {y_2}
$
}

% Step 8: Insert the updates required to change the 
%         state from that given in Step 6 to that given in Step 7
% Note: The below needs editing!!!

\renewcommand{\update}{
$
  \begin{array}{l}
    y_1 = y_1 + A_1 x
  \end{array}
$
}
% Redefine some of the commands so that references to original
% contents are removed.

\FlaAlgorithm

LinearAlgebraWiki: Algorithms/MatVec/BlkVar1 (last edited 2007-01-22 02:32:55 by RobertVanDeGeijn)