liberasurecode 1.6.2
Erasure Code API library
Loading...
Searching...
No Matches
liberasurecode_rs_vand.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <rs_galois.h>
#include <liberasurecode_rs_vand.h>
#include <unistd.h>
#include <fcntl.h>

Go to the source code of this file.

Functions

void print_matrix (int *matrix, int rows, int cols)
 
void square_matrix_multiply (int *m1, int *m2, int *prod, int n)
 
int is_identity_matrix (int *matrix, int n)
 
int * get_matrix_row (int *matrix, int row_idx, int num_cols)
 
void copy_row (int *from_matrix, int *to_matrix, int from_row_idx, int to_row_idx, int num_cols)
 
int is_missing (int *missing_idxs, int index_to_check)
 
int create_decoding_matrix (int *gen_matrix, int *dec_matrix, int *missing_idxs, int k, int m)
 
void init_liberasurecode_rs_vand (int k, int m)
 
void deinit_liberasurecode_rs_vand ()
 
int * create_non_systematic_vand_matrix (int k, int m)
 
void swap_matrix_rows (int *r1, int *r2, int num_cols)
 
void col_mult (int *matrix, int elem, int col_idx, int num_rows, int num_cols)
 
void row_mult (int *matrix, int elem, int row_idx, int num_rows, int num_cols)
 
void col_mult_and_add (int *matrix, int elem, int from_col, int to_col, int num_rows, int num_cols)
 
void row_mult_and_add (int *matrix, int elem, int from_row, int to_row, int num_rows, int num_cols)
 
int get_non_zero_diagonal (int *matrix, int row, int num_rows, int num_cols)
 
int * make_systematic_matrix (int k, int m)
 
void free_systematic_matrix (int *matrix)
 
int gaussj_inversion (int *matrix, int *inverse, int n)
 
void region_xor (char *from_buf, char *to_buf, int blocksize)
 
void region_multiply (char *from_buf, char *to_buf, int mult, int xor, int blocksize)
 
void region_dot_product (char **from_bufs, char *to_buf, int *matrix_row, int num_entries, int blocksize)
 
int liberasurecode_rs_vand_encode (int *generator_matrix, char **data, char **parity, int k, int m, int blocksize)
 
char ** get_first_k_available (char **data, char **parity, int *missing, int k)
 
int liberasurecode_rs_vand_decode (int *generator_matrix, char **data, char **parity, int k, int m, int *missing, int blocksize, int rebuild_parity)
 
int liberasurecode_rs_vand_reconstruct (int *generator_matrix, char **data, char **parity, int k, int m, int *missing, int destination_idx, int blocksize)
 

Function Documentation

◆ col_mult()

void col_mult ( int * matrix,
int elem,
int col_idx,
int num_rows,
int num_cols )

Definition at line 184 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by make_systematic_matrix().

◆ col_mult_and_add()

void col_mult_and_add ( int * matrix,
int elem,
int from_col,
int to_col,
int num_rows,
int num_cols )

Definition at line 204 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by make_systematic_matrix().

◆ copy_row()

void copy_row ( int * from_matrix,
int * to_matrix,
int from_row_idx,
int to_row_idx,
int num_cols )

Definition at line 99 of file liberasurecode_rs_vand.c.

References get_matrix_row().

Referenced by create_decoding_matrix().

◆ create_decoding_matrix()

int create_decoding_matrix ( int * gen_matrix,
int * dec_matrix,
int * missing_idxs,
int k,
int m )

◆ create_non_systematic_vand_matrix()

int * create_non_systematic_vand_matrix ( int k,
int m )

Definition at line 145 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by make_systematic_matrix().

◆ deinit_liberasurecode_rs_vand()

void deinit_liberasurecode_rs_vand ( )

Definition at line 140 of file liberasurecode_rs_vand.c.

References rs_galois_deinit_tables().

◆ free_systematic_matrix()

void free_systematic_matrix ( int * matrix)

Definition at line 292 of file liberasurecode_rs_vand.c.

◆ gaussj_inversion()

int gaussj_inversion ( int * matrix,
int * inverse,
int n )

◆ get_first_k_available()

char ** get_first_k_available ( char ** data,
char ** parity,
int * missing,
int k )

◆ get_matrix_row()

int * get_matrix_row ( int * matrix,
int row_idx,
int num_cols )

Definition at line 94 of file liberasurecode_rs_vand.c.

Referenced by copy_row().

◆ get_non_zero_diagonal()

int get_non_zero_diagonal ( int * matrix,
int row,
int num_rows,
int num_cols )

Definition at line 227 of file liberasurecode_rs_vand.c.

Referenced by gaussj_inversion(), and make_systematic_matrix().

◆ init_liberasurecode_rs_vand()

void init_liberasurecode_rs_vand ( int k,
int m )

Definition at line 135 of file liberasurecode_rs_vand.c.

References rs_galois_init_tables().

◆ is_identity_matrix()

int is_identity_matrix ( int * matrix,
int n )

Definition at line 73 of file liberasurecode_rs_vand.c.

◆ is_missing()

int is_missing ( int * missing_idxs,
int index_to_check )

Definition at line 107 of file liberasurecode_rs_vand.c.

Referenced by create_decoding_matrix(), and index_of_connected_parity().

◆ liberasurecode_rs_vand_decode()

int liberasurecode_rs_vand_decode ( int * generator_matrix,
char ** data,
char ** parity,
int k,
int m,
int * missing,
int blocksize,
int rebuild_parity )

◆ liberasurecode_rs_vand_encode()

int liberasurecode_rs_vand_encode ( int * generator_matrix,
char ** data,
char ** parity,
int k,
int m,
int blocksize )

Definition at line 401 of file liberasurecode_rs_vand.c.

References region_dot_product().

◆ liberasurecode_rs_vand_reconstruct()

int liberasurecode_rs_vand_reconstruct ( int * generator_matrix,
char ** data,
char ** parity,
int k,
int m,
int * missing,
int destination_idx,
int blocksize )

◆ make_systematic_matrix()

int * make_systematic_matrix ( int k,
int m )

◆ print_matrix()

void print_matrix ( int * matrix,
int rows,
int cols )

Definition at line 44 of file liberasurecode_rs_vand.c.

◆ region_dot_product()

void region_dot_product ( char ** from_bufs,
char * to_buf,
int * matrix_row,
int num_entries,
int blocksize )

◆ region_multiply()

void region_multiply ( char * from_buf,
char * to_buf,
int mult,
int xor,
int blocksize )

Definition at line 358 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by region_dot_product().

◆ region_xor()

void region_xor ( char * from_buf,
char * to_buf,
int blocksize )

Definition at line 340 of file liberasurecode_rs_vand.c.

Referenced by region_dot_product().

◆ row_mult()

void row_mult ( int * matrix,
int elem,
int row_idx,
int num_rows,
int num_cols )

Definition at line 194 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by gaussj_inversion().

◆ row_mult_and_add()

void row_mult_and_add ( int * matrix,
int elem,
int from_row,
int to_row,
int num_rows,
int num_cols )

Definition at line 215 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

Referenced by gaussj_inversion().

◆ square_matrix_multiply()

void square_matrix_multiply ( int * m1,
int * m2,
int * prod,
int n )

Definition at line 58 of file liberasurecode_rs_vand.c.

References rs_galois_mult().

◆ swap_matrix_rows()

void swap_matrix_rows ( int * r1,
int * r2,
int num_cols )

Definition at line 172 of file liberasurecode_rs_vand.c.

Referenced by gaussj_inversion(), and make_systematic_matrix().