Condition Coverage

blib/lib/Math/MatrixLUP.pm
Criterion Covered Total %
condition 34 68 50.0


and 3 conditions

line !l l&&!r l&&r condition
59 0 124 14 ref $matrix eq 'ARRAY' and not @$matrix
64 0 0 124 ref $matrix eq 'ARRAY' and ref $matrix->[0] eq 'ARRAY'
696 0 0 2 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
732 0 0 2 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
758 0 0 0 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
784 0 0 0 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
810 0 0 0 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
844 0 0 2 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
878 0 0 2 $rows == $m2->{'rows'} and $cols == $m2->{'cols'}
958 2 14 10 $_ != $t and $_ < 0
976 2 2 4 $_ != $t and $_ > 0
1014 4 0 2 $neg and $pow == 1

or 2 conditions

line l !l condition
23 0 0 &cmp($_[0], $_[1]) // (return undef)
375 282 0 $A[$k][$i] // (return [$N, \@A, \@P])
1105 9 0 $A->[$i][$i] // (return 'Math::MatrixLUP'->new([]))
1137 16 2 $A->[0][0] // (return 1)

or 3 conditions

line l !l&&r !l&&!r condition
68 14 123 1 $rows //= $#{$matrix;}
69 14 120 4 $cols //= $#{$$matrix[0];}
115 0 0 0 $col_count //= $row_count
410 2 20 0 $self->{'_decomposition'} //= $self->_LUP_decomposition
417 0 2 0 $self->{'_rref'} //= do { my(@m) = map({[@$_];} @{$$self{'matrix'};}); return 'Math::MatrixLUP'->new([]) unless @m; my($j, $rows, $cols) = (0, $self->{'rows'} + 1, $self->{'cols'} + 1); OUTER: foreach my $r (0 .. $rows - 1) { last unless $j < $cols; my $i = $r; while ($m[$i][$j] == 0) { next unless ++$i == $rows; $i = $r; last OUTER if ++$j == $cols; } ; @m[$i, $r] = @m[$r, $i]; my $mr = $m[$r]; my $mrj = $mr->[$j]; foreach my $k (0 .. $cols - 1) { $mr->[$k] /= $mrj; } ; foreach my $i (0 .. $rows - 1) { next if $i == $r; my $mr = $m[$r]; my $mi = $m[$i]; my $mij = $m[$i][$j]; foreach my $k (0 .. $cols - 1) { $mi->[$k] -= $mij * $mr->[$k]; } ; } ; ++$j; } ; 'Math::MatrixLUP'->new(\@m) }
1084 4 3 0 $self->{'_inverse'} //= do { my($N, $A, $P) = $self->decompose; my @I; foreach my $j (0 .. $N) { foreach my $i (0 .. $N) { $I[$i][$j] = $P->[$i] == $j ? 1 : 0; foreach my $k (0 .. $i - 1) { $I[$i][$j] -= $A->[$i][$k] * $I[$k][$j]; } ; } ; for (my $i = $N; $i >= 0; --$i) { foreach my $k ($i + 1 .. $N) { $I[$i][$j] -= $A->[$i][$k] * $I[$k][$j]; } ; $I[$i][$j] /= $A->[$i][$i] // (return 'Math::MatrixLUP'->new([])); } ; } ; 'Math::MatrixLUP'->new(\@I) }
1134 0 17 1 $self->{'_determinant'} //= do { my($N, $A, $P) = $self->decompose; my $det = $A->[0][0] // (return 1); foreach my $i (1 .. $N) { $det *= $A->[$i][$i]; } ; if (($$P[$N + 1] - $N) % 2 == 0) { $det *= -1; } ; $det }
1156 5 8 0 $self->{'_stringification'} //= "[\n " . join(",\n ", map({'[' . join(', ', @$_) . ']';} @{$$self{'matrix'};})) . "\n]"