>>> diag(Matrix([1, 2]), {}, 3)
Matrix([
[1, 0, 0],
[2, 0, 0],
[0, 0, 3]])>>> diag(Matrix([1, 2]), {'goto': (0, 1)}, 3)
Matrix([
[1, 3],
[2, 0]])>>> diag(Matrix([1, 2]), {'move': (1, 0)}, 3)
Matrix([
[1, 0],
[2, 3]])
>>> diag({1:1, -2:3}, rows=5, cols=3) # positive diagonal are above the main diagonal and negative below
Matrix([
[0, 1, 0],
[0, 0, 1],
[3, 0, 0],
[0, 3, 0],
[0, 0, 3]])
>>> diag(-1, -2, {0: lambda d: 1+d**2}, rows=6, cols=6)
Matrix([
[-1, 0, 0, 0, 0, 0],
[ 0, -2, 0, 0, 0, 0],
[ 0, 0, 1, 0, 0, 0],
[ 0, 0, 0, 2, 0, 0],
[ 0, 0, 0, 0, 5, 0],
[ 0, 0, 0, 0, 0, 10]])
>>> diag(-1, -2, {0: lambda i,j: i+j}, rows=6, cols=6)
Matrix([
[-1, 0, 0, 0, 0, 0],
[ 0, -2, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 2, 0, 0],
[ 0, 0, 0, 0, 4, 0],
[ 0, 0, 0, 0, 0, 6]])
>>> diag(-1, -2, {0: lambda i,j: i+j, -2:[1,3,5,7]})
Matrix([
[-1, 0, 0, 0, 0, 0],
[ 0, -2, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 2, 0, 0],
[ 0, 0, 1, 0, 4, 0],
[ 0, 0, 0, 3, 0, 6],
[ 0, 0, 0, 0, 5, 0],
[ 0, 0, 0, 0, 0, 7]])
>>> diag(-1, -2, {0: lambda i,j: i+j, -2:[1,3,5,7], 'size':(6,6)})
Matrix([
[-1, 0, 0, 0, 0, 0, 0, 0],
[ 0, -2, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 2, 0, 0, 0, 0],
[ 0, 0, 1, 0, 4, 0, 0, 0],
[ 0, 0, 0, 3, 0, 6, 0, 0],
[ 0, 0, 0, 0, 5, 0, 8, 0],
[ 0, 0, 0, 0, 0, 7, 0, 10]])