package Jampack; /** Block contains a static method for partitioning a matrix. into a block matrix. @version Pre-alpha @author G. W. Stewart */ public class Block{ /** This method takes a Zmat A and two arrays ii and jj of length m and n and produces an (m-1)x(n-1) block matrix Zmat[m-1][n-1], whose (i,j)-element is A.get(ii[i], ii[i+1]-1, jj[j], jj[j+1]-1). Throws a JampackException if @param A The matrix to be partitioned @param ii[] The row indices of the partition @param jj[] The column indices of the partition @return The block Zmat @exception JampackException Thrown if the submatrices are not conformable. */ public static Zmat[][] o(Zmat A, int ii[], int jj[]) throws JampackException { int i, j; A.getProperties(); int m = ii.length; int n = jj.length; /* Check the row indices */ if (ii[0] < A.bx || ii[m-1]>A.rx+1){ throw new JampackException ("Illegal row array."); } for (i=1; i=ii[i]){ throw new JampackException ("Illegal row array."); } } /* Check the column indices */ if (jj[0] < A.bx || jj[n-1]>A.cx+1){ throw new JampackException ("Illegal column array."); } for (j=1; j=jj[j]){ throw new JampackException ("Illegal column array."); } } /* Create and fill the block matrix with the parition of A. */ Zmat B[][] = new Zmat[m-1][n-1]; for (i=0; i