summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/type/doubleComplex.c2
-rw-r--r--src/type/floatComplex.c16
-rw-r--r--src/type/floatComplex.h1
-rw-r--r--src/type/testDoubleComplex.c19
-rw-r--r--src/type/testFloatComplex.c37
5 files changed, 68 insertions, 7 deletions
diff --git a/src/type/doubleComplex.c b/src/type/doubleComplex.c
index db23721b..753e9e35 100644
--- a/src/type/doubleComplex.c
+++ b/src/type/doubleComplex.c
@@ -75,7 +75,7 @@ doubleComplex DoubleComplex(double real, double imag) {
}
/*
-** \function DoubleComplex
+** \function DoubleComplexMatrix
** \brief construct a Double Complex Matrix.
*/
doubleComplex *DoubleComplexMatrix(double* real, double* imag, int size) {
diff --git a/src/type/floatComplex.c b/src/type/floatComplex.c
index 081fc1ec..05dcbb0a 100644
--- a/src/type/floatComplex.c
+++ b/src/type/floatComplex.c
@@ -22,6 +22,7 @@
#endif
#include <stdio.h>
+#include <stdlib.h>
#include "floatComplex.h"
#ifndef STDC99
@@ -74,6 +75,21 @@ floatComplex FloatComplex(float a, float b) {
}
/*
+** \function FloatComplexMatrix
+** \brief construct a Float Complex Matrix.
+*/
+floatComplex *FloatComplexMatrix(float* real, float* imag, int size) {
+ floatComplex *z = malloc((uint) size * sizeof(floatComplex));
+ int i = 0;
+
+ for(i = 0; i < size; ++i)
+ {
+ z[i] = FloatComplex(real[i], imag[i]);
+ }
+ return z;
+}
+
+/*
** \function isreal
** \brief check if complex is real .
*/
diff --git a/src/type/floatComplex.h b/src/type/floatComplex.h
index 9d3a1477..1c1f3690 100644
--- a/src/type/floatComplex.h
+++ b/src/type/floatComplex.h
@@ -58,6 +58,7 @@ typedef float complex floatComplex;
float creals(floatComplex);
float cimags(floatComplex);
floatComplex FloatComplex(float, float);
+floatComplex* FloatComplexMatrix(float*, float*, int);
bool cisreals(floatComplex);
bool cisimags(floatComplex);
diff --git a/src/type/testDoubleComplex.c b/src/type/testDoubleComplex.c
index 1a2a0ada..4aed293c 100644
--- a/src/type/testDoubleComplex.c
+++ b/src/type/testDoubleComplex.c
@@ -18,17 +18,26 @@ int matrixCreation(void);
int addAndDiff(void);
int matrixCreation(void) {
- double real[6] = {1., 2., 3., 4., 5., 6.};
- double imag[6] = {6., 5., 4., 3., 2., 1.};
-
- doubleComplex *Z = DoubleComplexMatrix(real, imag, 6);
+ int size = 10000;
+ double real[size];
+ double imag[size];
int i = 0;
- for (i = 0; i < 6; ++i)
+ for (i = 0; i < size; ++i)
+ {
+ real[i] = i;
+ imag[i] = size - i;
+ }
+
+ doubleComplex *Z = DoubleComplexMatrix(real, imag, size);
+
+ for (i = 0; i < size; ++i)
{
printf("Partie reelle = %f\n", zreals(Z[i]));
+ assert(zreals(Z[i]) == i);
printf("Partie imaginaire = %f\n", zimags(Z[i]));
+ assert(zimags(Z[i]) == size - i);
}
diff --git a/src/type/testFloatComplex.c b/src/type/testFloatComplex.c
index 17bbc596..12aa934b 100644
--- a/src/type/testFloatComplex.c
+++ b/src/type/testFloatComplex.c
@@ -16,8 +16,37 @@
#include <complex.h>
#include "floatComplex.h"
+int matrixCreation(void);
+int addAndDiff(void);
-int main(void) {
+int matrixCreation(void) {
+ int size = 10000;
+ float real[size];
+ float imag[size];
+
+ int i = 0;
+
+ for (i = 0; i < size; ++i)
+ {
+ real[i] = i;
+ imag[i] = size - i;
+ }
+
+ floatComplex *Z = FloatComplexMatrix(real, imag, size);
+
+ for (i = 0; i < size; ++i)
+ {
+ printf("Partie reelle = %f\n", creals(Z[i]));
+ assert(creals(Z[i]) == i);
+ printf("Partie imaginaire = %f\n", cimags(Z[i]));
+ assert(cimags(Z[i]) == size - i);
+ }
+
+
+ return 0;
+}
+
+int addAndDiff(void) {
/* z = -3 + 25*%i */
floatComplex z = FloatComplex((float)3, (float)-25);
/* y = -3.123456 + 25.123456*%i */
@@ -54,3 +83,9 @@ int main(void) {
return 0;
}
+
+int main(void) {
+ addAndDiff();
+ matrixCreation();
+ return 0;
+}