d_mat.h – double precision matrices¶
Memory management¶
-
void d_mat_init(d_mat_t mat, slong rows, slong cols)¶
Initialises a matrix with the given number of rows and columns for use.
-
void d_mat_clear(d_mat_t mat)¶
Clears the given matrix.
Basic assignment and manipulation¶
-
void d_mat_set(d_mat_t mat1, const d_mat_t mat2)¶
Sets
mat1
to a copy ofmat2
. The dimensions ofmat1
andmat2
must be the same.
-
void d_mat_swap_entrywise(d_mat_t mat1, d_mat_t mat2)¶
Swaps two matrices by swapping the individual entries rather than swapping the contents of the structs.
-
double d_mat_entry(d_mat_t mat, slong i, slong j)¶
Returns the entry of
mat
at row and column . Both and must not exceed the dimensions of the matrix. This function is implemented as a macro.
-
double d_mat_get_entry(const d_mat_t mat, slong i, slong j)¶
Returns the entry of
mat
at row and column . Both and must not exceed the dimensions of the matrix.
-
double *d_mat_entry_ptr(const d_mat_t mat, slong i, slong j)¶
Returns a pointer to the entry of
mat
at row and column . Both and must not exceed the dimensions of the matrix.
-
void d_mat_zero(d_mat_t mat)¶
Sets all entries of
mat
to 0.
Random matrix generation¶
-
void d_mat_randtest(d_mat_t mat, flint_rand_t state, slong minexp, slong maxexp)¶
Sets the entries of
mat
to random signed numbers with exponents betweenminexp
andmaxexp
or zero.
Input and output¶
-
void d_mat_print(const d_mat_t mat)¶
Prints the given matrix to the stream
stdout
.
Comparison¶
-
int d_mat_equal(const d_mat_t mat1, const d_mat_t mat2)¶
Returns a non-zero value if
mat1
andmat2
have the same dimensions and entries, and zero otherwise.
-
int d_mat_approx_equal(const d_mat_t mat1, const d_mat_t mat2, double eps)¶
Returns a non-zero value if
mat1
andmat2
have the same dimensions and entries withineps
of each other, and zero otherwise.
-
int d_mat_is_square(const d_mat_t mat)¶
Returns a non-zero value if the number of rows is equal to the number of columns in
mat
, and otherwise returns zero.
Transpose¶
-
void d_mat_transpose(d_mat_t B, const d_mat_t A)¶
Sets
to , the transpose of . Dimensions must be compatible. Aliasing is allowed for square matrices.
Matrix multiplication¶
-
void d_mat_mul_classical(d_mat_t C, const d_mat_t A, const d_mat_t B)¶
Sets
C
to the matrix product . The matrices must have compatible dimensions for matrix multiplication (an exception is raised otherwise). Aliasing is allowed.