Skip to content

Commit ca9c1cf

Browse files
royalstream9prady9
authored andcommitted
Matrix Diagonal, Upper, Lower
1 parent 6c0351e commit ca9c1cf

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

Wrapper/Matrix.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,44 @@ public static Array Inverse(Array arr)
9292
Internal.VERIFY(AFLapack.af_inverse(out ptr, arr._ptr, af_mat_prop.AF_MAT_NONE));
9393
return new Array(ptr);
9494
}
95-
}
95+
96+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
97+
public static Array ExtractDiagonal(Array arr, int diagonalIndex = 0)
98+
{
99+
IntPtr ptr;
100+
Internal.VERIFY(AFData.af_diag_extract(out ptr, arr._ptr, diagonalIndex));
101+
return new Array(ptr);
102+
}
103+
104+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
105+
public static Array CreateDiagonal(Array arr, int diagonalIndex = 0)
106+
{
107+
IntPtr ptr;
108+
Internal.VERIFY(AFData.af_diag_create(out ptr, arr._ptr, diagonalIndex));
109+
return new Array(ptr);
110+
}
111+
112+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
113+
public static Array Lower(Array arr, bool unitDiagonal = false)
114+
{
115+
IntPtr ptr;
116+
Internal.VERIFY(AFData.af_lower(out ptr, arr._ptr, unitDiagonal));
117+
return new Array(ptr);
118+
}
119+
120+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
121+
public static Array Upper(Array arr, bool unitDiagonal = false)
122+
{
123+
IntPtr ptr;
124+
Internal.VERIFY(AFData.af_upper(out ptr, arr._ptr, unitDiagonal));
125+
return new Array(ptr);
126+
}
127+
128+
#region Convenience methods
129+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
130+
public static Array Identity<T>(int dim0, int dim1) { return Data.Identity<T>(dim0, dim1); }
131+
132+
public static T[,] GetData<T>(Array arr) { return Data.GetData2D<T>(arr); }
133+
#endregion
134+
}
96135
}

0 commit comments

Comments
 (0)