summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-02-17 15:33:28 +0000
committertorset2009-02-17 15:33:28 +0000
commit9b56117f5586d423c6c89cf5eddc69bfccf3c452 (patch)
tree23b463fbcd4fd9d49c0b9c24e896c4bbbf8d447e
parentda5def075c801239a3d4672c740ab76937acecc1 (diff)
downloadscilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.tar.gz
scilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.tar.bz2
scilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.zip
Make change in magnitude
-rw-r--r--scilab2c/src/matrixOperations/magnitude/cmagna.c21
-rw-r--r--scilab2c/src/matrixOperations/magnitude/dmagna.c4
-rw-r--r--scilab2c/src/matrixOperations/magnitude/smagna.c4
-rw-r--r--scilab2c/src/matrixOperations/magnitude/testDoubleMagnitude.c86
-rw-r--r--scilab2c/src/matrixOperations/magnitude/zmagna.c22
5 files changed, 105 insertions, 32 deletions
diff --git a/scilab2c/src/matrixOperations/magnitude/cmagna.c b/scilab2c/src/matrixOperations/magnitude/cmagna.c
index aa7bb876..04c5edb0 100644
--- a/scilab2c/src/matrixOperations/magnitude/cmagna.c
+++ b/scilab2c/src/matrixOperations/magnitude/cmagna.c
@@ -15,15 +15,22 @@
#include "matrixMagnitude.h"
float cmagna(floatComplex* in, int rows, int cols){
- int i,j;
- float out=0, colSum;
+ int i=0,j=0;
+ float out=0, colSum=0;
- for(i=0;i<cols;i++){
- colSum = 0;
- for(j=0;j<rows;j++){
- colSum += cmagns(in[i*rows+j]);
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += cmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += cmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
}
- if (colSum>out) out=colSum;
}
return out;
}
diff --git a/scilab2c/src/matrixOperations/magnitude/dmagna.c b/scilab2c/src/matrixOperations/magnitude/dmagna.c
index 208b7115..619b3981 100644
--- a/scilab2c/src/matrixOperations/magnitude/dmagna.c
+++ b/scilab2c/src/matrixOperations/magnitude/dmagna.c
@@ -15,8 +15,8 @@
#include "matrixMagnitude.h"
double dmagna(double* in, int rows, int cols){
- int i,j;
- double out=0, colSum;
+ int i=0,j=0;
+ double out=0, colSum=0;
if ((rows==1)||(cols==1)){
diff --git a/scilab2c/src/matrixOperations/magnitude/smagna.c b/scilab2c/src/matrixOperations/magnitude/smagna.c
index df8a851a..5e53c008 100644
--- a/scilab2c/src/matrixOperations/magnitude/smagna.c
+++ b/scilab2c/src/matrixOperations/magnitude/smagna.c
@@ -15,8 +15,8 @@
#include "matrixMagnitude.h"
float smagna(float* in, int rows, int cols){
- int i,j;
- float out=0, colSum;
+ int i=0,j=0;
+ float out=0, colSum=0;
if ((rows==1)||(cols==1)){
for(i=0;i<cols*rows;i++){
diff --git a/scilab2c/src/matrixOperations/magnitude/testDoubleMagnitude.c b/scilab2c/src/matrixOperations/magnitude/testDoubleMagnitude.c
index 5c0e72e3..fd433c35 100644
--- a/scilab2c/src/matrixOperations/magnitude/testDoubleMagnitude.c
+++ b/scilab2c/src/matrixOperations/magnitude/testDoubleMagnitude.c
@@ -73,7 +73,6 @@ static void dmagnaTest(void){
0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
-
double res[6] = {6.1990750515833497047424,1.448623480275273323059,2.5195303875952959060669,\
2.4904293166473507881165,3.4897020040079951286316,6.1990750515833497047424};
double out1,out2,out3,out4,out5,out6;
@@ -97,25 +96,84 @@ static void dmagnaTest(void){
static void zmagnaTest(void){
+ double inr1[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+ 0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+ 0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+ 0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+
+ double inr2[12] = {0.2017172696068882942200,0.8400885667651891708374,0.3911573919467628002167,\
+ 0.1205995907075703144074,0.8300316557288169860840,0.2855364168062806129456,\
+ 0.5878720157779753208160,0.8607514644972980022430,0.4829179299995303153992,\
+ 0.8494101651012897491455,0.2232865034602582454681,0.5257060811854898929596};
+
+ double inr3[12] = {0.2017172696068882942200,0.4829179299995303153992,0.2855364168062806129456,\
+ 0.3911573919467628002167,0.2232865034602582454681,0.8607514644972980022430,\
+ 0.8300316557288169860840,0.8400885667651891708374,0.8494101651012897491455,\
+ 0.5878720157779753208160,0.1205995907075703144074,0.5257060811854898929596};
+
+ double inr4[12] = {0.2017172696068882942200,0.5878720157779753208160,0.8400885667651891708374,\
+ 0.8607514644972980022430,0.3911573919467628002167,0.4829179299995303153992,\
+ 0.1205995907075703144074,0.8494101651012897491455,0.8300316557288169860840,\
+ 0.2232865034602582454681,0.2855364168062806129456,0.5257060811854898929596};
+
+ double inr5[12] = {0.2017172696068882942200,0.8300316557288169860840,0.4829179299995303153992,\
+ 0.8400885667651891708374,0.2855364168062806129456,0.8494101651012897491455,\
+ 0.3911573919467628002167,0.5878720157779753208160,0.2232865034602582454681,\
+ 0.1205995907075703144074,0.8607514644972980022430,0.5257060811854898929596};
+
+ double inr6[12] = {0.2017172696068882942200,0.3911573919467628002167,0.8300316557288169860840,\
+ 0.5878720157779753208160,0.4829179299995303153992,0.2232865034602582454681,\
+ 0.8400885667651891708374,0.1205995907075703144074,0.2855364168062806129456,\
+ 0.8607514644972980022430,0.8494101651012897491455,0.5257060811854898929596};
+
+ double in7[12]={0};
+
+ double res[6] = {6.1990750515833497047424,1.448623480275273323059,2.5195303875952959060669,\
+ 2.4904293166473507881165,3.4897020040079951286316,6.1990750515833497047424};
+
double inR[12] = {0.9931209897622466087341,0.6488562873564660549164,0.9923190940171480178833,\
- 0.0500419777818024158478,\
-0.7485506581142544746399,0.4104058998636901378632,0.6084526330232620239258,\
- 0.8544210889376699924469,\
-0.0642646728083491325378,0.8279082938097417354584,0.9262343775480985641480,\
- 0.5667211269028484821320};
+ 0.0500419777818024158478,\
+ 0.7485506581142544746399,0.4104058998636901378632,0.6084526330232620239258,\
+ 0.8544210889376699924469,\
+ 0.0642646728083491325378,0.8279082938097417354584,0.9262343775480985641480,\
+ 0.5667211269028484821320};
double inI[12] = {0.5711638936772942543030,0.8160110483877360820770,0.0568927936255931854248,\
- 0.5595936686731874942780,\
-0.1249340316280722618103,0.7279222286306321620941,0.2677766475826501846314,\
- 0.5465334919281303882599,\
-0.9885407658293843269348,0.7395656588487327098846,0.0037173107266426086426,\
- 0.5900572859682142734528};
- double res = 3.8451319979533651327586;
+ 0.5595936686731874942780,\
+ 0.1249340316280722618103,0.7279222286306321620941,0.2677766475826501846314,\
+ 0.5465334919281303882599,\
+ 0.9885407658293843269348,0.7395656588487327098846,0.0037173107266426086426,\
+ 0.5900572859682142734528};
+ double result = 3.8451319979533651327586;
+
+ double out1,out2,out3,out4,out5,out6;
double out;
- doubleComplex* in;
+ doubleComplex* in,*in1,*in2,*in3,*in4,*in5,*in6;
in=DoubleComplexMatrix(inR,inI,12);
out = zmagna(in, 4,3);
- assert(fabs(out-res)/fabs(out) <1e-16);
+ assert(fabs(out-result)/fabs(out) <1e-16);
+
+
+ in1=DoubleComplexMatrix(inr1,in7,12);
+ in2=DoubleComplexMatrix(inr2,in7,12);
+ in3=DoubleComplexMatrix(inr3,in7,12);
+ in4=DoubleComplexMatrix(inr4,in7,12);
+ in5=DoubleComplexMatrix(inr5,in7,12);
+ in6=DoubleComplexMatrix(inr6,in7,12);
+
+ out1=zmagna(in1,1,12);
+ out2=zmagna(in2,2,6);
+ out3=zmagna(in3,3,4);
+ out4=zmagna(in4,4,3);
+ out5=zmagna(in5,6,2);
+ out6=zmagna(in6,12,1);
+
+ assert( fabs(out1-res[0])/fabs(out1)<1e-16);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-16);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-16);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-16);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-16);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-16);
}
diff --git a/scilab2c/src/matrixOperations/magnitude/zmagna.c b/scilab2c/src/matrixOperations/magnitude/zmagna.c
index b9009eb3..3e20cf58 100644
--- a/scilab2c/src/matrixOperations/magnitude/zmagna.c
+++ b/scilab2c/src/matrixOperations/magnitude/zmagna.c
@@ -15,15 +15,23 @@
#include "matrixMagnitude.h"
double zmagna(doubleComplex* in, int rows, int cols){
- int i,j;
- double out=0, colSum;
+ int i=0,j=0;
+ double out=0, colSum=0;
+
- for(i=0;i<cols;i++){
- colSum = 0;
- for(j=0;j<rows;j++){
- colSum += zmagns(in[i*rows+j]);
+ if ((rows==1)||(cols==1)){
+ for(i=0;i<cols*rows;i++){
+ out += zmagns(in[i]);
+ }
+ }
+ else{
+ for(i=0;i<cols;i++){
+ colSum = 0;
+ for(j=0;j<rows;j++){
+ colSum += zmagns(in[i*rows+j]);
+ }
+ if (colSum>out) out=colSum;
}
- if (colSum>out) out=colSum;
}
return out;
}