Deron Eriksson created SYSTEMML-707:
---------------------------------------

             Summary: diag not generate square matrix if given Nx1 matrix of 
zeroes
                 Key: SYSTEMML-707
                 URL: https://issues.apache.org/jira/browse/SYSTEMML-707
             Project: SystemML
          Issue Type: Bug
          Components: APIs
            Reporter: Deron Eriksson


Thank you Matthew Plourde for finding this!

If an Nx1 matrix of 0's is given to the diag() function, an Nx1 matrix of 0's 
is returned. However, if an Nx1 matrix consists of any values that aren't 0's, 
an NxN diagonal matrix is returned. This is inconsistent and the Nx1 matrix of 
0's to diag() should probably return an NxN matrix.

Example 1:
{code}
zeroes=matrix(0, 5, 1);
print(toString(zeroes));
print(toString(diag(zeroes)));
{code}
gives:
{code}
0.000
0.000
0.000
0.000
0.000

0.000
0.000
0.000
0.000
0.000
{code}

Example 2:
{code}
ones=matrix(1, 5, 1);
print(toString(ones));
print(toString(diag(ones)));
{code}
gives:
{code}
1.000
1.000
1.000
1.000
1.000

1.000 0.000 0.000 0.000 0.000
0.000 1.000 0.000 0.000 0.000
0.000 0.000 1.000 0.000 0.000
0.000 0.000 0.000 1.000 0.000
0.000 0.000 0.000 0.000 1.000
{code}

Example 3:
{code}
nums=matrix("0 1 2 3 4", 5, 1);
print(toString(nums));
print(toString(diag(nums)));
{code}
gives:
{code}
0.000
1.000
2.000
3.000
4.000

0.000 0.000 0.000 0.000 0.000
0.000 1.000 0.000 0.000 0.000
0.000 0.000 2.000 0.000 0.000
0.000 0.000 0.000 3.000 0.000
0.000 0.000 0.000 0.000 4.000
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to