Skip to content

Commit 8281253

Browse files
committed
is_basis_completion for internal purpose
1 parent 4147a16 commit 8281253

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

src/sage/matrix/matrix_polynomial_dense.pyx

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ AUTHORS:
2828
- Vincent Neiger (2021-08-07): added inverse_series_trunc(),
2929
solve_{left/right}_series_trunc(), {left/right}_quo_rem(), reduce().
3030
31-
- Vincent Neiger (2024-02-13): added basis_completion(), is_basis_completion(),
31+
- Vincent Neiger (2024-02-13): added basis_completion(), _is_basis_completion(),
3232
_basis_completion_via_reversed_approx().
3333
"""
3434
# ****************************************************************************
@@ -4459,78 +4459,78 @@ cdef class Matrix_polynomial_dense(Matrix_generic_dense):
44594459
sage: rcomp1 = matrix(ring, 2, 3, \
44604460
[[5*x^2 + 4*x + 1, 5*x^2 + 2*x, 5*x^2], \
44614461
[2*x^3 + 4*x^2, 2*x^3 + 6*x^2 + 2*x + 1, 2*x^3 + x^2 + 3*x]])
4462-
sage: rcomp1.is_basis_completion(mat1)
4462+
sage: rcomp1._is_basis_completion(mat1)
44634463
True
44644464
44654465
sage: mat2 = matrix(ring, 2, 3, \
44664466
[[x^2 + 5*x + 5, 3*x^2 + x + 3, 4*x^2 + 5*x + 4], \
44674467
[5*x^2 + 4*x, 3*x^2 + 4*x + 5, 5*x^2 + 5*x + 3]])
44684468
sage: rcomp2 = matrix(ring, 1, 3, [[2*x^2 + 1, 4*x^2 + 3*x, 2*x^2 + 3*x]])
4469-
sage: rcomp2.is_basis_completion(mat2)
4469+
sage: rcomp2._is_basis_completion(mat2)
44704470
True
44714471
sage: ccomp2 = matrix(ring, 2, 0)
4472-
sage: ccomp2.is_basis_completion(mat2, row_wise=False)
4472+
sage: ccomp2._is_basis_completion(mat2, row_wise=False)
44734473
True
44744474
44754475
sage: mat3 = matrix(ring, 3, 2, \
44764476
[[ x^3 + x^2 + 5*x + 5, 2*x^3 + 2*x + 4], \
44774477
[ 3*x^3 + 2*x^2 + x + 3, 6*x^3 + 5*x^2 + x + 1], \
44784478
[2*x^3 + 5*x^2 + 3*x + 4, 4*x^3 + 6*x^2 + 5*x + 6]])
44794479
sage: rcomp3 = matrix(ring, 1, 2, [[x + 1, 2*x]])
4480-
sage: rcomp3.is_basis_completion(mat3)
4480+
sage: rcomp3._is_basis_completion(mat3)
44814481
True
44824482
sage: ccomp3 = matrix(ring, 3, 2, \
44834483
[[3*x + 1, 4*x + 4], \
44844484
[ 2*x, 5*x + 1], \
44854485
[ 6*x, x]])
4486-
sage: ccomp3.is_basis_completion(mat3, row_wise=False)
4486+
sage: ccomp3._is_basis_completion(mat3, row_wise=False)
44874487
True
44884488
44894489
A row-wise completion is generally not a column-wise completion (most
44904490
often, matrix dimensions are not even compatible), one exception being
44914491
the completions of square zero matrices::
44924492
4493-
sage: rcomp2.is_basis_completion(mat2, row_wise=False)
4493+
sage: rcomp2._is_basis_completion(mat2, row_wise=False)
44944494
Traceback (most recent call last):
44954495
...
44964496
TypeError: number of rows must be the same, 2 != 1
4497-
sage: ccomp2.is_basis_completion(mat2, row_wise=True)
4497+
sage: ccomp2._is_basis_completion(mat2, row_wise=True)
44984498
Traceback (most recent call last):
44994499
...
45004500
TypeError: number of columns must be the same, not 3 and 0
4501-
sage: rcomp3.is_basis_completion(mat3, row_wise=False)
4501+
sage: rcomp3._is_basis_completion(mat3, row_wise=False)
45024502
Traceback (most recent call last):
45034503
...
45044504
TypeError: number of rows must be the same, 3 != 1
4505-
sage: ccomp3.is_basis_completion(mat3, row_wise=True)
4505+
sage: ccomp3._is_basis_completion(mat3, row_wise=True)
45064506
False
45074507
45084508
sage: zero_mat = matrix(ring, 2, 2)
45094509
sage: comp = zero_mat.basis_completion(); print(comp)
45104510
[1 0]
45114511
[0 1]
4512-
sage: comp.is_basis_completion(zero_mat, row_wise=True)
4512+
sage: comp._is_basis_completion(zero_mat, row_wise=True)
45134513
True
4514-
sage: comp.is_basis_completion(zero_mat, row_wise=False)
4514+
sage: comp._is_basis_completion(zero_mat, row_wise=False)
45154515
True
45164516
45174517
Completions that do not preserve the Smith factors are not valid,
45184518
even when the sought rank is reached::
45194519
4520-
sage: (x * rcomp2).is_basis_completion(mat2)
4520+
sage: (x * rcomp2)._is_basis_completion(mat2)
45214521
False
4522-
sage: ((x+2) * rcomp3).is_basis_completion(mat3)
4522+
sage: ((x+2) * rcomp3)._is_basis_completion(mat3)
45234523
False
4524-
sage: (ccomp3 * matrix.diagonal([x,1])).is_basis_completion(mat3, row_wise=False)
4524+
sage: (ccomp3 * matrix.diagonal([x,1]))._is_basis_completion(mat3, row_wise=False)
45254525
False
45264526
45274527
Preserving Smith factors without reaching full rank is not a valid
45284528
completion::
45294529
45304530
sage: mat = matrix(ring, [[1,0,0]])
4531-
sage: matrix(ring, [[0,1,0]]).is_basis_completion(mat)
4531+
sage: matrix(ring, [[0,1,0]])._is_basis_completion(mat)
45324532
False
4533-
sage: matrix(ring, [[0,1,0], [0,0,1]]).is_basis_completion(mat)
4533+
sage: matrix(ring, [[0,1,0], [0,0,1]])._is_basis_completion(mat)
45344534
True
45354535
45364536
TESTS:
@@ -4542,30 +4542,30 @@ cdef class Matrix_polynomial_dense(Matrix_generic_dense):
45424542
sage: empty_columns = matrix(ring, 0, 2)
45434543
sage: id22 = matrix.identity(ring, 2)
45444544
4545-
sage: empty_mat.is_basis_completion(empty_mat)
4545+
sage: empty_mat._is_basis_completion(empty_mat)
45464546
True
4547-
sage: empty_mat.is_basis_completion(empty_mat, row_wise=False)
4547+
sage: empty_mat._is_basis_completion(empty_mat, row_wise=False)
45484548
True
4549-
sage: empty_mat.is_basis_completion(empty_rows)
4549+
sage: empty_mat._is_basis_completion(empty_rows)
45504550
True
4551-
sage: empty_mat.is_basis_completion(empty_columns, row_wise=False)
4551+
sage: empty_mat._is_basis_completion(empty_columns, row_wise=False)
45524552
True
4553-
sage: empty_mat.is_basis_completion(empty_columns)
4553+
sage: empty_mat._is_basis_completion(empty_columns)
45544554
Traceback (most recent call last):
45554555
...
45564556
TypeError: number of columns must be the same, not 2 and 0
45574557
4558-
sage: empty_columns.is_basis_completion(id22)
4558+
sage: empty_columns._is_basis_completion(id22)
45594559
True
4560-
sage: empty_columns.is_basis_completion(id22, row_wise=False)
4560+
sage: empty_columns._is_basis_completion(id22, row_wise=False)
45614561
Traceback (most recent call last):
45624562
...
45634563
TypeError: number of rows must be the same, 2 != 0
4564-
sage: empty_columns.is_basis_completion(empty_columns)
4564+
sage: empty_columns._is_basis_completion(empty_columns)
45654565
False
4566-
sage: empty_rows.is_basis_completion(id22, row_wise=False)
4566+
sage: empty_rows._is_basis_completion(id22, row_wise=False)
45674567
True
4568-
sage: empty_rows.is_basis_completion(empty_rows, row_wise=True)
4568+
sage: empty_rows._is_basis_completion(empty_rows, row_wise=True)
45694569
False
45704570
"""
45714571

0 commit comments

Comments
 (0)