Quality assurance¶
Execution date, device and firmware commit are unrecorded. The complete stage output is preserved below. Label counts are not counts of independent test cases.
Overview · Full source and record
============ [tiny_matrix_test start] ============
[Test Organization: Application-Oriented Logic]
Foundation → Basic Ops → Properties → Linear Systems → Decompositions → Applications → Quality
[G1: Quality Assurance - Boundary Conditions and Error Handling Tests]
[G1.1] Null Pointer Handling in print_matrix
[Error] Cannot print matrix: data pointer is null.
[G1.2] Null Pointer Handling in operator<<
[Error] Cannot print matrix: data pointer is null.
[G1.3] Invalid Block Parameters
[Error] block: invalid position: start_row=-1, start_col=0 (must be non-negative)
block(-1, 0, 2, 2): Error
[Error] block: block exceeds row boundary: start_row=2, block_rows=2, source.rows=3
block(2, 2, 2, 2) on 3x3 matrix: Error
[Error] block: invalid block size: block_rows=0, block_cols=2 (must be positive)
block(0, 0, 0, 2): Error
[G1.4] Invalid swap_rows Parameters
Before invalid swap_rows:
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[Error] swap_rows: row1 index out of range: row1=-1, matrix.rows=3
After swap_rows(-1, 1):
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[Error] swap_rows: row2 index out of range: row2=5, matrix.rows=3
After swap_rows(0, 5):
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[G1.5] Invalid swap_cols Parameters
Before invalid swap_cols:
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[Error] swap_cols: col1 index out of range: col1=-1, matrix.cols=3
After swap_cols(-1, 1):
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[Error] swap_cols: col2 index out of range: col2=5, matrix.cols=3
After swap_cols(0, 5):
Matrix Elements >>>
1 2 3 |
4 5 6 |
7 8 9 |
<<< Matrix Elements
[G1.6] Division by Zero
[Error] operator/: division by zero (num=0).
mat3 / 0.0f: Empty (correct)
[G1.7] Matrix Division with Zero Elements
[Error] Matrix division failed: Division by zero detected at position (0, 1)
mat4 /= divisor (with zero):
Matrix Elements >>>
1 2 |
3 4 |
<<< Matrix Elements
[G1.8] Empty Matrix Operations
[Error] operator+: null matrix data pointer.
Empty matrix addition: Empty matrix or error state (Expected) [PASS]
[G2: Quality Assurance - Performance Benchmarks Tests]
[G2.1] Matrix Addition Performance
[Performance] 50x50 Matrix Addition (100 iterations): 18139.00 us total, 181.39 us avg
[G2.2] Matrix Multiplication Performance
[Performance] 30x30 Matrix Multiplication (100 iterations): 66757.00 us total, 667.57 us avg
[G2.3] Matrix Transpose Performance
[Performance] 50x30 Matrix Transpose (100 iterations): 21993.00 us total, 219.93 us avg
[G2.4] Determinant Calculation Performance Comparison
[G2.4.1] Small Matrix (4x4) - Laplace Expansion
[Performance] 4x4 Determinant (Laplace, 10 iterations): 3242.00 us total, 324.20 us avg
[G2.4.2] Large Matrix (8x8) - LU Decomposition
[Performance] 8x8 Determinant (LU, 10 iterations): 1666.00 us total, 166.60 us avg
[G2.4.3] Large Matrix (8x8) - Gaussian Elimination
[Performance] 8x8 Determinant (Gaussian, 10 iterations): 463.00 us total, 46.30 us avg
[G2.4.4] Large Matrix (8x8) - Auto-select Method
[Performance] 8x8 Determinant (auto-select, 10 iterations): 1625.00 us total, 162.50 us avg
[Note] Performance Summary:
- Laplace expansion (O(n!)): Suitable only for small matrices (n <= 4)
- LU decomposition (O(n³)): Efficient for large matrices, auto-selected for n > 4
- Gaussian elimination (O(n³)): Alternative efficient method for large matrices
- Auto-select: Automatically chooses the best method based on matrix size
[G2.5] Matrix Copy with Padding Performance
[Performance] 8x8 Copy ROI (with padding) (100 iterations): 2675.00 us total, 26.75 us avg
[G2.6] Element Access Performance
[Performance] Computing element access (warmup)...
[Performance] 50x50 Element Access (all elements) (100 iterations): 9709.00 us total, 97.09 us avg
[G3: Quality Assurance - Memory Layout Tests (Padding and Step)]
[G3.1] Contiguous Memory (no padding)
Matrix 3x4 (step=4, pad=0):
Matrix Info >>>
rows 3
cols 4
elements 12
paddings 0
step 4
memory 12
data pointer 0x3fce9af4
temp pointer 0
ext_buff 0
sub_matrix 0
<<< Matrix Info
Matrix Elements >>>
0.00 1.00 2.00 3.00 |
4.00 5.00 6.00 7.00 |
8.00 9.00 10.00 11.00 |
<<< Matrix Elements
[G3.2] Padded Memory (step > col)
Matrix 3x4 (step=5, pad=1):
Matrix Info >>>
rows 3
cols 4
elements 12
paddings 1
step 5
memory 15
data pointer 0x3fc9a404
temp pointer 0
ext_buff 1 (External buffer or View)
sub_matrix 0
<<< Matrix Info
Matrix Elements >>>
0.00 1.00 2.00 3.00 | 0.00
4.00 5.00 6.00 7.00 | 0.00
8.00 9.00 10.00 11.00 | 0.00
<<< Matrix Elements
[G3.3] Addition with Padded Matrices
Result of padded matrix addition:
Matrix Info >>>
rows 3
cols 4
elements 12
paddings 1
step 5
memory 15
data pointer 0x3fce9b68
temp pointer 0
ext_buff 0
sub_matrix 0
<<< Matrix Info
Matrix Elements >>>
11.00 22.00 33.00 44.00 | 33.00
55.00 66.00 77.00 88.00 | 38.00
99.00 110.00 121.00 132.00 | 1.61
<<< Matrix Elements
[G3.4] ROI Operations with Padded Matrices
ROI (1,1,2,2) from padded matrix:
Matrix Info >>>
rows 2
cols 2
elements 4
paddings 3
step 5
memory 10
data pointer 0x3fc9a41c
temp pointer 0
ext_buff 1 (External buffer or View)
sub_matrix 1 (This is a Sub-Matrix View)
<<< Matrix Info
Matrix Elements >>>
5.00 6.00 | 7.00 0.00 8.00
9.00 10.00 | 11.00 0.00 0.00
<<< Matrix Elements
[G3.5] Copy Operations Preserve Step
Copied matrix (should have step=4, no padding):
Matrix Info >>>
rows 3
cols 4
elements 12
paddings 0
step 4
memory 12
data pointer 0x3fce9ba8
temp pointer 0
ext_buff 0
sub_matrix 0
<<< Matrix Info
Matrix Elements >>>
0.00 1.00 2.00 3.00 |
4.00 5.00 6.00 7.00 |
8.00 9.00 10.00 11.00 |
<<< Matrix Elements
============ [tiny_matrix_test end] ============