unicode

Finished
148148
149149 @property
150150 def rowblocksizes(self):
151 return [self.blocks[i, 0].rows for i in range(self.blockshape[0])]
151 # Handle the case where blocks might be Zero objects (from matrix multiplication)
152 # which don't have .rows attribute
153 rowsizes = []
154 for i in range(self.blockshape[0]):
155 block = self.blocks[i, 0]
156 if hasattr(block, 'rows'):
157 rowsizes.append(block.rows)
158 else:
159 # If the block doesn't have .rows (e.g., it's a Zero object),
160 # find the dimensions from other blocks in the same row
161 for j in range(self.blockshape[1]):
162 other_block = self.blocks[i, j]
163 if hasattr(other_block, 'rows'):
164 rowsizes.append(other_block.rows)
165 break
166 else:
167 # If no block in this row has .rows, we can't determine the size
168 raise AttributeError("Cannot determine row size for block matrix")
169 return rowsizes
152170
153171 @property
154172 def colblocksizes(self):
155 return [self.blocks[0, i].cols for i in range(self.blockshape[1])]
173 # Handle the case where blocks might be Zero objects (from matrix multiplication)
174 # which don't have .cols attribute
175 colsizes = []
176 for i in range(self.blockshape[1]):
177 block = self.blocks[0, i]
178 if hasattr(block, 'cols'):
179 colsizes.append(block.cols)
180 else:
181 # If the block doesn't have .cols (e.g., it's a Zero object),
182 # find the dimensions from other blocks in the same column
183 for j in range(self.blockshape[0]):
184 other_block = self.blocks[j, i]
185 if hasattr(other_block, 'cols'):
186 colsizes.append(other_block.cols)
187 break
188 else:
189 # If no block in this column has .cols, we can't determine the size
190 raise AttributeError("Cannot determine column size for block matrix")
191 return colsizes
156192
157193 def structurally_equal(self, other):
158194 return (isinstance(other, BlockMatrix)
Test NameStatus
test_issue_17624
Fail
test_zero_matrix_add
Fail
test_bc_matmul
Pass
test_bc_matadd
Pass
test_bc_transpose
Pass
test_bc_dist_diag
Pass
test_block_plus_ident
Pass
test_BlockMatrix
Pass
test_block_collapse_explicit_matrices
Pass
test_BlockMatrix_trace
Pass
test_BlockMatrix_Determinant
Pass
test_squareBlockMatrix
Pass
test_BlockDiagMatrix
Pass
test_blockcut
Pass
test_reblock_2x2
Pass
test_deblock
Pass
test_sort_key
Pass
test_matadd_sympify
Pass
test_matadd_of_matrices
Pass
test_doit_args
Pass
test_generic_identity
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.