M4RIE 20250128
Loading...
Searching...
No Matches
permutation.h File Reference

Permutation matrices. More...

#include <m4ri/mzp.h>
#include <m4rie/mzed.h>
#include <m4rie/mzd_slice.h>

Go to the source code of this file.

Functions

static void mzed_apply_p_left (mzed_t *A, mzp_t const *P)
static void mzed_apply_p_left_trans (mzed_t *A, mzp_t const *P)
static void mzed_apply_p_right (mzed_t *A, mzp_t const *P)
static void mzed_apply_p_right_trans (mzed_t *A, mzp_t const *P)
static void mzd_slice_apply_p_left (mzd_slice_t *A, mzp_t const *P)
static void mzd_slice_apply_p_left_trans (mzd_slice_t *A, mzp_t const *P)
static void mzd_slice_apply_p_right (mzd_slice_t *A, mzp_t const *P)
static void mzd_slice_apply_p_right_trans (mzd_slice_t *A, mzp_t const *P)
static void mzd_slice_apply_p_right_trans_tri (mzd_slice_t *A, mzp_t const *P)

Detailed Description

Function Documentation

◆ mzd_slice_apply_p_left()

void mzd_slice_apply_p_left ( mzd_slice_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the left.

This is equivalent to row swaps walking from 0 to length-1.

Parameters
AMatrix.
PPermutation.

◆ mzd_slice_apply_p_left_trans()

void mzd_slice_apply_p_left_trans ( mzd_slice_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the left but transpose P before.

This is equivalent to row swaps walking from length-1 to 0.

Parameters
AMatrix.
PPermutation.

◆ mzd_slice_apply_p_right()

void mzd_slice_apply_p_right ( mzd_slice_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the right.

This is equivalent to column swaps walking from length-1 to 0.

Parameters
AMatrix.
PPermutation.

◆ mzd_slice_apply_p_right_trans()

void mzd_slice_apply_p_right_trans ( mzd_slice_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the right but transpose P before.

This is equivalent to column swaps walking from 0 to length-1.

Parameters
AMatrix.
PPermutation.

◆ mzd_slice_apply_p_right_trans_tri()

void mzd_slice_apply_p_right_trans_tri ( mzd_slice_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the right, but only on the upper the matrix A above the main diagonal.

This is equivalent to column swaps walking from 0 to length-1 and is used to compress PLE to PLUQ.

Parameters
AMatrix.
PPermutation.

◆ mzed_apply_p_left()

void mzed_apply_p_left ( mzed_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the left.

This is equivalent to row swaps walking from 0 to length-1.

Parameters
AMatrix.
PPermutation.

◆ mzed_apply_p_left_trans()

void mzed_apply_p_left_trans ( mzed_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the left but transpose P before.

This is equivalent to row swaps walking from length-1 to 0.

Parameters
AMatrix.
PPermutation.

◆ mzed_apply_p_right()

void mzed_apply_p_right ( mzed_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the right.

This is equivalent to column swaps walking from length-1 to 0.

Parameters
AMatrix.
PPermutation.

◆ mzed_apply_p_right_trans()

void mzed_apply_p_right_trans ( mzed_t * A,
mzp_t const * P )
inlinestatic

Apply the permutation P to A from the right but transpose P before.

This is equivalent to column swaps walking from 0 to length-1.

Parameters
AMatrix.
PPermutation.