matrix module  1.00.00
www.protokollkonverter.de
matrix.h
Go to the documentation of this file.
1 
38 #include <stddef.h>
39 #include <stdint.h>
40 #include <stdbool.h>
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
51 #define VECTOR_STANDARD_DIMENSION 3
52 
53 
57 typedef struct _MATRIX *MATRIX;
58 
65 typedef struct _MATRIX *VECTOR;
66 
73 typedef double MATRIX_VALUE;
74 
94 extern void matrixPrint(MATRIX A);
95 
108 extern MATRIX matrixNew(const size_t rows, const size_t columns);
109 
125 extern MATRIX matrixNewUnit(const size_t dimension);
126 
135 extern void matrixDelete(MATRIX *A);
136 
146 extern bool matrixGetDimension(MATRIX A, size_t *rows, size_t *columns);
147 
157 extern bool matrixEquals(MATRIX A, MATRIX B);
158 
170 extern bool matrixSetElement(MATRIX A, const size_t row, const size_t column, const MATRIX_VALUE value);
171 
184 extern bool matrixSetRow(MATRIX A, const size_t row, const MATRIX_VALUE values[], const size_t valuesCount);
185 
199 extern bool matrixSetColumn(MATRIX A, const size_t column, const MATRIX_VALUE values[], const size_t valuesCount);
200 
218 extern bool matrixSet(MATRIX A, const MATRIX_VALUE values[], const size_t valuesCount);
219 
231 extern bool matrixGetElement(MATRIX A, const size_t row, const size_t column, MATRIX_VALUE *value);
232 
246 extern bool matrixGetRow(MATRIX A, const size_t row, MATRIX_VALUE values[], size_t *valuesCount);
247 
261 extern bool matrixGetColumn(MATRIX A, const size_t column, MATRIX_VALUE values[], size_t *valuesCount);
262 
280 extern bool matrixGet(MATRIX A, MATRIX_VALUE values[], size_t *valuesCount);
281 
293 extern MATRIX matrixAddition(MATRIX A, MATRIX B);
294 
306 extern MATRIX matrixSubstraction(MATRIX A, MATRIX B);
307 
319 extern MATRIX matrixMultiplication(MATRIX A, MATRIX B);
320 
330 extern MATRIX matrixMultiplicationScalar(MATRIX A, MATRIX_VALUE scalar);
331 
340 extern MATRIX matrixTransposition(MATRIX A);
341 
350 extern MATRIX matrixInverse(MATRIX A);
351 
361 extern bool matrixDeterminant(MATRIX A, MATRIX_VALUE *determinant);
362 
371 extern MATRIX matrixClone(MATRIX A);
372 
386 extern VECTOR matrixSolve(MATRIX A, VECTOR y);
387 
405 extern VECTOR vectorNew(const size_t dimension);
406 
415 extern void vectorDelete(VECTOR *v);
416 
425 extern bool vectorGetDimension(VECTOR v, size_t *dimension);
426 
436 extern bool vectorEquals(VECTOR v, VECTOR w);
437 
448 extern bool vectorSetElement(VECTOR v, const size_t row, MATRIX_VALUE value);
449 
460 extern bool vectorGetElement(VECTOR v, const size_t row, MATRIX_VALUE *value);
461 
474 extern bool vectorSet(VECTOR v, const MATRIX_VALUE values[], const size_t valuesCount);
475 
488 extern bool vectorGet(VECTOR v, MATRIX_VALUE values[], size_t *valuesCount);
489 
501 extern VECTOR vectorAddition(VECTOR v, VECTOR w);
502 
514 extern VECTOR vectorSubstraction(VECTOR v, VECTOR w);
515 
525 extern VECTOR vectorMultiplicationScalar(VECTOR v, MATRIX_VALUE scalar);
526 
539 extern bool vectorDotProduct(VECTOR v, VECTOR w, MATRIX_VALUE *product);
540 
552 extern VECTOR vectorCrossProduct(VECTOR v, VECTOR w);
553 
569 extern bool vectorScalarTripleProduct(VECTOR v, VECTOR w, VECTOR x, MATRIX_VALUE *product);
570 
580 extern MATRIX vectorOuterProduct(VECTOR v, VECTOR w);
581 
593 extern bool vectorLength(VECTOR v, MATRIX_VALUE *length);
594 
607 extern VECTOR vectorClone(VECTOR v);
608 
613 #ifdef __cplusplus
614 }
615 #endif
VECTOR vectorCrossProduct(VECTOR v, VECTOR w)
cross product of two vectors
Definition: matrix.c:617
bool matrixDeterminant(MATRIX A, MATRIX_VALUE *determinant)
calculate determinant of matrix
Definition: matrix.c:440
bool vectorGet(VECTOR v, MATRIX_VALUE values[], size_t *valuesCount)
get all values of vector
Definition: matrix.c:577
MATRIX matrixNew(const size_t rows, const size_t columns)
create a new matrix
Definition: matrix.c:85
VECTOR vectorSubstraction(VECTOR v, VECTOR w)
subtract a vector
Definition: matrix.c:587
VECTOR vectorClone(VECTOR v)
clone a vector
Definition: matrix.c:689
bool vectorGetDimension(VECTOR v, size_t *dimension)
get dimension of vector
Definition: matrix.c:532
bool vectorSetElement(VECTOR v, const size_t row, MATRIX_VALUE value)
set one element in vector
Definition: matrix.c:562
size_t columns
Definition: matrix.c:55
bool matrixEquals(MATRIX A, MATRIX B)
compare two matrices
Definition: matrix.c:142
bool vectorEquals(VECTOR v, VECTOR w)
compare two vectors
Definition: matrix.c:544
bool matrixSetElement(MATRIX A, const size_t row, const size_t column, const MATRIX_VALUE value)
set one element in matrix
Definition: matrix.c:162
VECTOR vectorAddition(VECTOR v, VECTOR w)
add two vectors
Definition: matrix.c:582
bool matrixGetElement(MATRIX A, const size_t row, const size_t column, MATRIX_VALUE *value)
get one element in matrix
Definition: matrix.c:173
bool vectorGetElement(VECTOR v, const size_t row, MATRIX_VALUE *value)
get one element in vector
Definition: matrix.c:567
struct _MATRIX * VECTOR
instance pointer of a vector
Definition: matrix.h:65
size_t rows
Definition: matrix.c:54
VECTOR vectorMultiplicationScalar(VECTOR v, MATRIX_VALUE scalar)
multiply a vector with scalar
Definition: matrix.c:592
bool vectorSet(VECTOR v, const MATRIX_VALUE values[], const size_t valuesCount)
set all values of vector
Definition: matrix.c:572
MATRIX matrixAddition(MATRIX A, MATRIX B)
addition of two matrices
Definition: matrix.c:271
VECTOR matrixSolve(MATRIX A, VECTOR y)
solve matrix A with result vector y
Definition: matrix.c:486
MATRIX matrixNewUnit(const size_t dimension)
create a new unit matrix
Definition: matrix.c:103
bool matrixSetColumn(MATRIX A, const size_t column, const MATRIX_VALUE values[], const size_t valuesCount)
set one column in matrix
Definition: matrix.c:211
internal description of a matrix
Definition: matrix.c:53
bool matrixGetDimension(MATRIX A, size_t *rows, size_t *columns)
get dimensions of matrix
Definition: matrix.c:128
MATRIX_VALUE * values
Definition: matrix.c:56
bool matrixGet(MATRIX A, MATRIX_VALUE values[], size_t *valuesCount)
get values of matrix
Definition: matrix.c:254
bool matrixSetRow(MATRIX A, const size_t row, const MATRIX_VALUE values[], const size_t valuesCount)
set one row in matrix
Definition: matrix.c:184
bool matrixGetColumn(MATRIX A, const size_t column, MATRIX_VALUE values[], size_t *valuesCount)
get one column in matrix
Definition: matrix.c:224
VECTOR vectorNew(const size_t dimension)
create a new column vector
Definition: matrix.c:522
double MATRIX_VALUE
type of supported value
Definition: matrix.h:73
void matrixDelete(MATRIX *A)
free memory allocated by matrixNew
Definition: matrix.c:115
bool matrixSet(MATRIX A, const MATRIX_VALUE values[], const size_t valuesCount)
set values of matrix
Definition: matrix.c:238
void matrixPrint(MATRIX A)
print matrix
Definition: matrix.c:63
bool vectorLength(VECTOR v, MATRIX_VALUE *length)
calculate length of vector
Definition: matrix.c:672
struct _MATRIX * MATRIX
instance pointer of a matrix
Definition: matrix.h:57
bool vectorScalarTripleProduct(VECTOR v, VECTOR w, VECTOR x, MATRIX_VALUE *product)
scalar triple product of three vectors
Definition: matrix.c:641
MATRIX matrixInverse(MATRIX A)
calculate inverse of matrix
Definition: matrix.c:404
MATRIX vectorOuterProduct(VECTOR v, VECTOR w)
outer product of two vectors
Definition: matrix.c:657
MATRIX matrixSubstraction(MATRIX A, MATRIX B)
subtraction of two matrices
Definition: matrix.c:292
MATRIX matrixMultiplicationScalar(MATRIX A, MATRIX_VALUE scalar)
multiplication of matrix with scalar
Definition: matrix.c:329
void vectorDelete(VECTOR *v)
free memory allocated by vectorNew
Definition: matrix.c:527
bool vectorDotProduct(VECTOR v, VECTOR w, MATRIX_VALUE *product)
dot product of two vectors
Definition: matrix.c:597
MATRIX matrixMultiplication(MATRIX A, MATRIX B)
multiplication of two matrices
Definition: matrix.c:303
bool matrixGetRow(MATRIX A, const size_t row, MATRIX_VALUE values[], size_t *valuesCount)
get one row in matrix
Definition: matrix.c:197
MATRIX matrixClone(MATRIX A)
clone a matrix
Definition: matrix.c:474
MATRIX matrixTransposition(MATRIX A)
transposition of matrix
Definition: matrix.c:346