diff -N -r -c HLib-1.3/Library/blockcluster.c HLib-1.3new/Library/blockcluster.c *** HLib-1.3/Library/blockcluster.c 2004-12-12 17:42:31.000000000 +0100 --- HLib-1.3new/Library/blockcluster.c 2005-07-26 22:35:26.677179832 +0200 *************** *** 138,150 **** if(type & HLIB_BLOCK_WEAKADM) leaf = 1; ! if(hom == HLIB_BLOCK_HOMOGENEOUS) ! if(stop_row || stop_col) ! leaf = 1; ! ! if(hom == HLIB_BLOCK_INHOMOGENEOUS) ! if(stop_row && stop_col) ! leaf = 1; bc = NULL; if(leaf) --- 138,158 ---- if(type & HLIB_BLOCK_WEAKADM) leaf = 1; ! if(!leaf) { ! if(hom == HLIB_BLOCK_HOMOGENEOUS) { ! if(stop_row || stop_col) { ! leaf = 1; ! type = 0; ! } ! } ! else { ! assert(hom == HLIB_BLOCK_INHOMOGENEOUS); ! if(stop_row && stop_col) { ! leaf = 1; ! type = 0; ! } ! } ! } bc = NULL; if(leaf) *************** *** 152,158 **** else { if(row->sons > 0) { if(col->sons > 0) { ! bc = new_blockcluster(row, col, row->sons, col->sons, type); for(j=0; jsons; j++) for(i=0; isons; i++) bc->son[i+j*bc->block_rows] = --- 160,166 ---- else { if(row->sons > 0) { if(col->sons > 0) { ! bc = new_blockcluster(row, col, row->sons, col->sons, 0); for(j=0; jsons; j++) for(i=0; isons; i++) bc->son[i+j*bc->block_rows] = *************** *** 160,166 **** adm, hom, eta, leafsize); } else { ! bc = new_blockcluster(row, col, row->sons, 1, type); for(i=0; isons; i++) bc->son[i] = build_blockcluster(row->son[i], col, adm, hom, eta, leafsize); --- 168,174 ---- adm, hom, eta, leafsize); } else { ! bc = new_blockcluster(row, col, row->sons, 1, 0); for(i=0; isons; i++) bc->son[i] = build_blockcluster(row->son[i], col, adm, hom, eta, leafsize); *************** *** 169,175 **** else { assert(col->sons > 0); ! bc = new_blockcluster(row, col, 1, col->sons, type); for(j=0; jsons; j++) bc->son[j] = build_blockcluster(row, col->son[j], adm, hom, eta, leafsize); --- 177,183 ---- else { assert(col->sons > 0); ! bc = new_blockcluster(row, col, 1, col->sons, 0); for(j=0; jsons; j++) bc->son[j] = build_blockcluster(row, col->son[j], adm, hom, eta, leafsize);