diff options
author | torset | 2009-02-17 15:33:28 +0000 |
---|---|---|
committer | torset | 2009-02-17 15:33:28 +0000 |
commit | 9b56117f5586d423c6c89cf5eddc69bfccf3c452 (patch) | |
tree | 23b463fbcd4fd9d49c0b9c24e896c4bbbf8d447e | |
parent | da5def075c801239a3d4672c740ab76937acecc1 (diff) | |
download | scilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.tar.gz scilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.tar.bz2 scilab2c-9b56117f5586d423c6c89cf5eddc69bfccf3c452.zip |
Make change in magnitude
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; } |