diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/type/doubleComplex.c | 2 | ||||
-rw-r--r-- | src/type/floatComplex.c | 16 | ||||
-rw-r--r-- | src/type/floatComplex.h | 1 | ||||
-rw-r--r-- | src/type/testDoubleComplex.c | 19 | ||||
-rw-r--r-- | src/type/testFloatComplex.c | 37 |
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; +} |