summaryrefslogtreecommitdiff
path: root/src/operations/multiplication/testMultiplication.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/operations/multiplication/testMultiplication.c')
-rw-r--r--src/operations/multiplication/testMultiplication.c160
1 files changed, 145 insertions, 15 deletions
diff --git a/src/operations/multiplication/testMultiplication.c b/src/operations/multiplication/testMultiplication.c
index 38c43438..63417fbc 100644
--- a/src/operations/multiplication/testMultiplication.c
+++ b/src/operations/multiplication/testMultiplication.c
@@ -15,10 +15,8 @@
#include <math.h>
#include "multiplication.h"
-#define SIZE 10000000
-/*
-#define LOCAL_DEBUG
-*/
+#define SIZE 1
+
static void ztimessTest(void) {
doubleComplex M1;
doubleComplex M2;
@@ -32,11 +30,7 @@ static void ztimessTest(void) {
M2 = DoubleComplex((double) rand(), (double) rand());
M1_by_M2 = ztimess(M1, M2);
-#ifdef LOCAL_DEBUG
- /*ATTENTION à modifier (c'est du copier coller de testDivision)
- printf("erreurR = %e\n", fabs(zreals(M1_by_M2) - zreals(num)/zreals(den) )/fabs(zreals(M1_by_M2)));
- printf("erreurI = %e\n", fabs(zimags(M1_by_M2) - zimags(num)/zreals(den) )/fabs(zimags(M1_by_M2)));*/
-#endif
+
if (zreals(M1_by_M2)<1e-14 && (zreals(M1)*zreals(M2) - zimags(M1)*zimags(M2)) < 1e-18 )
assert(1);
else
@@ -62,11 +56,7 @@ static void ctimessTest(void) {
M2 = FloatComplex((float) rand(), (float) rand());
M1_by_M2 = ctimess(M1, M2);
-#ifdef LOCAL_DEBUG
- /*ATTENTION à modifier (c'est du copier coller de testDivision)
- printf("erreurR = %e\n", creals(M1_by_M2) - (creals(num)/creals(den))/creals(M1_by_M2));
- printf("erreurI = %e\n", cimags(M1_by_M2) - (cimags(num)/creals(den))/cimags(M1_by_M2));*/
-#endif
+
if (creals(M1_by_M2)<1e-14 && (creals(M1)*creals(M2) - cimags(M1)*cimags(M2)) < 1e-18 )
assert(1);
else
@@ -80,10 +70,150 @@ static void ctimessTest(void) {
}
-static int testMult(void) {
+static void smulsTest(void){
+ float M1=0;
+ float M2=0;
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1=(float)rand();
+ M2=(float)rand();
+ printf(" %f * %f = %f\n",M1,M2,smuls(M1,M2));
+ }
+}
+
+
+static void dmulsTest(void){
+ double M1=0;
+ double M2=0;
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1=(double)rand();
+ M2=(double)rand();
+ printf(" %f * %f = %f\n",M1,M2,dmuls(M1,M2));
+ }
+}
+
+
+static void cmulsTest(void){
+ floatComplex M1;
+ floatComplex M2;
+
+
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1=FloatComplex((float)rand(),(float)rand());
+ M2=FloatComplex((float)rand(),(float)rand());
+ printf(" (%f + %f * %%i ) * (%f + %f * %%i) = %f +%f * %%i\n",creals(M1),cimags(M1),creals(M2),cimags(M2),creals(cmuls(M1,M2)),cimags(cmuls(M1,M2)));
+ }
+}
+
+
+static void zmulsTest(void){
+ doubleComplex M1;
+ doubleComplex M2;
+
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1=DoubleComplex((double)rand(),(double)rand());
+ M2=DoubleComplex((double)rand(),(double)rand());
+ printf(" (%f + %f * %%i ) * (%f + %f * %%i) = %f +%f * %%i\n",zreals(M1),zimags(M1),zreals(M2),zimags(M2),zreals(zmuls(M1,M2)),zimags(zmuls(M1,M2)));
+ }
+}
+
+
+static void smulaTest(void){
+ float M1[20]={0};
+ float M2[20]={0};
+ float MRes[20]={0};
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1[i]=(float)rand();
+ M2[i]=(float)rand();
+ }
+ smula(M1,20,M2,20,MRes);
+ for (i=0;i<20;i++){
+ printf(" %f * %f = %f\n",M1[i],M2[i],MRes[i]);
+ }
+}
+
+
+static void dmulaTest(void){
+ double M1[20]={0};
+ double M2[20]={0};
+ double MRes[20]={0};
+ int i=0;
+ srand(1);
+ for (i=0;i<20;i++){
+ M1[i]=(double)rand();
+ M2[i]=(double)rand();
+ }
+ dmula(M1,20,M2,20,MRes);
+ for (i=0;i<20;i++){
+ printf(" %f * %f = %f\n",M1[i],M2[i],MRes[i]);
+ }
+}
+
+
+static void cmulaTest(void){
+ floatComplex M1[20];
+ floatComplex M2[20];
+ floatComplex MRes[20];
+ int i=0;
+
+ srand(1);
+ for (i=0;i<20;i++){
+ M1[i] = FloatComplex((float)rand(),(float)rand());
+ M2[i] = FloatComplex((float)rand(),(float)rand());
+ }
+ cmula(M1,20,M2,20,MRes);
+ for (i=0;i<20;i++){
+ printf(" (%f + %f * %%i ) * (%f + %f * %%i) = %f +%f * %%i\n",creals(M1[i]),cimags(M1[i]),creals(M2[i]),cimags(M2[i]),creals(MRes[i]),cimags(MRes[i]));
+ }
+}
+
+
+static void zmulaTest(void){
+ doubleComplex M1[20];
+ doubleComplex M2[20];
+ doubleComplex MRes[20];
+ int i=0;
+
+ srand(1);
+ for (i=0;i<20;i++){
+ M1[i] = DoubleComplex((double)rand(),(double)rand());
+ M2[i] = DoubleComplex((double)rand(),(double)rand());
+ }
+ zmula(M1,20,M2,20,MRes);
+ for (i=0;i<20;i++){
+ printf(" (%f + %f * %%i ) * (%f + %f * %%i) = %f +%f * %%i\n",zreals(M1[i]),zimags(M1[i]),zreals(M2[i]),zimags(M2[i]),zreals(MRes[i]),zimags(MRes[i]));
+ }
+}
+static int testMult(void) {
ztimessTest();
ctimessTest();
+ printf(">>> Tests SMulS <<<\n");
+ smulsTest();
+ printf(">>> Tests DMulS <<<\n");
+ dmulsTest();
+ printf(">>> Tests CMulS <<<\n");
+ cmulsTest();
+ printf(">>> Tests ZMulS <<<\n");
+ zmulsTest();
+ printf(">>> Tests SMulA <<<\n");
+ smulaTest();
+ printf(">>> Tests DMulA <<<\n");
+ dmulaTest();
+ printf(">>> Tests CMulA <<<\n");
+ cmulaTest();
+ printf(">>> Tests ZMulA <<<\n");
+ zmulaTest();
+
return 0;
}