@@ -401,26 +401,25 @@ function _remove_empty(A::Union{CTMatrixTypes, Matrix{<: Number}, BitMatrix, Mat
401401 end
402402end
403403
404- function _rref_no_col_swap (M:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} ,
405- col_range:: AbstractUnitRange{Int} )
404+ function _rref_no_col_swap (M:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (M, 1 ) ,
405+ col_range:: AbstractUnitRange{Int} = axes (M, 2 ) )
406406
407407 A = deepcopy (M)
408408 _rref_no_col_swap! (A, row_range, col_range)
409409 return A
410410end
411- # TODO repeated signature
412- _rref_no_col_swap (M:: CTMatrixTypes , row_range:: Base.OneTo{Int} , col_range:: Base.OneTo{Int} ) = _rref_no_col_swap (M, 1 : row_range. stop, 1 : col_range. stop)
413- _rref_no_col_swap (M:: CTMatrixTypes ) = _rref_no_col_swap (M, axes (M, 1 ), axes (M, 2 ))
414411
415412function _rref_no_col_swap_binary (A:: Union{BitMatrix, Matrix{Bool}, Matrix{<: Integer}} ,
416- row_range:: AbstractUnitRange{Int} = 1 : size (A, 1 ), col_range:: AbstractUnitRange{Int} = 1 : size (A, 2 ))
413+ row_range:: AbstractUnitRange{Int} = axes (A, 1 ), col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
417414
418415 B = deepcopy (A)
419416 _rref_no_col_swap_binary! (B, row_range, col_range)
420417 return B
421418end
422419
423- function _rref_no_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} , col_range:: AbstractUnitRange{Int} )
420+ function _rref_no_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (A, 1 ),
421+ col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
422+
424423 # don't do anything to A if the range is empty
425424 isempty (row_range) && return nothing
426425 isempty (col_range) && return nothing
@@ -502,7 +501,7 @@ function _rref_no_col_swap!(A::CTMatrixTypes, row_range::AbstractUnitRange{Int},
502501end
503502
504503function _rref_no_col_swap_binary! (A:: Union{BitMatrix, Matrix{Bool}, Matrix{<: Integer}} ,
505- row_range:: AbstractUnitRange{Int} = 1 : size (A, 1 ), col_range:: AbstractUnitRange{Int} = 1 : size (A, 2 ))
504+ row_range:: AbstractUnitRange{Int} = axes (A, 1 ), col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
506505
507506 isempty (row_range) && return nothing
508507 isempty (col_range) && return nothing
@@ -544,16 +543,16 @@ function _rref_no_col_swap_binary!(A::Union{BitMatrix, Matrix{Bool}, Matrix{<: I
544543 return nothing
545544end
546545
547- function _rref_col_swap (M:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} , col_range:: AbstractUnitRange{Int} )
546+ function _rref_col_swap (M:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (A, 1 ),
547+ col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
548548
549549 A = deepcopy (M)
550550 rnk, P = _rref_col_swap! (A, row_range, col_range)
551551 return rnk, A, P
552552end
553- _rref_col_swap (M:: CTMatrixTypes , row_range:: Base.OneTo{Int64} , col_range:: Base.OneTo{Int64} ) = _rref_col_swap (M, 1 : row_range. stop, 1 : col_range. stop)
554- _rref_col_swap (M:: CTMatrixTypes ) = _rref_col_swap (M, axes (M, 1 ), axes (M, 2 ))
555553
556- function _rref_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} , col_range:: AbstractUnitRange{Int} )
554+ function _rref_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (A, 1 ),
555+ col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
557556
558557 # don't do anything to A if the range is empty, return rank 0 and missing permutation matrix
559558 isempty (row_range) && return 0 , missing
@@ -674,7 +673,15 @@ function _rref_col_swap!(A::CTMatrixTypes, row_range::AbstractUnitRange{Int}, co
674673 return rnk, P
675674end
676675
677- function _rref_symp_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} , col_range:: AbstractUnitRange{Int} )
676+ function _rref_symp_col_swap (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (A, 1 ),
677+ col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
678+ B = deepcopy (A)
679+ _rref_symp_col_swap! (B, row_range, col_range)
680+ return B
681+ end
682+
683+ function _rref_symp_col_swap! (A:: CTMatrixTypes , row_range:: AbstractUnitRange{Int} = axes (A, 1 ),
684+ col_range:: AbstractUnitRange{Int} = axes (A, 2 ))
678685
679686 # don't do anything to A if the range is empty, return rank 0 and missing permutation matrix
680687 isempty (row_range) && return 0 , missing
@@ -802,9 +809,6 @@ function _rref_symp_col_swap!(A::CTMatrixTypes, row_range::AbstractUnitRange{Int
802809 end
803810 return rnk, P
804811end
805- _rref_symp_col_swap! (A:: CTMatrixTypes ) = _rref_symp_col_swap! (A, axes (A, 1 ), axes (A, 2 ))
806- _rref_symp_col_swap (A:: CTMatrixTypes ) = (B = deepcopy (A); _rref_symp_col_swap! (B, axes (B, 1 ),
807- axes (B, 2 )); return B;)
808812
809813function _col_permutation! (X:: Matrix{T} , A:: Matrix{T} , p:: AbstractVector{Int} ) where T
810814 length (p) == size (A, 2 ) || throw (ArgumentError (" `p` should have length `size(A, 2)`." ))
0 commit comments