summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortorset2009-02-18 15:16:57 +0000
committertorset2009-02-18 15:16:57 +0000
commit0e2aab4eb9cbe6fec113dce8a0212b8fc29db239 (patch)
tree8f13a7e08a5bc285a51b910b2012f882fa813ffb /src
parent138f436a9ed2bbe04c9df5acdd6a2b4e9c36807e (diff)
downloadscilab2c-0e2aab4eb9cbe6fec113dce8a0212b8fc29db239.tar.gz
scilab2c-0e2aab4eb9cbe6fec113dce8a0212b8fc29db239.tar.bz2
scilab2c-0e2aab4eb9cbe6fec113dce8a0212b8fc29db239.zip
modify magnitude files
Diffstat (limited to 'src')
-rw-r--r--src/matrixOperations/magnitude/Makefile.am25
-rw-r--r--src/matrixOperations/magnitude/Makefile.in25
-rw-r--r--src/matrixOperations/magnitude/cmagna.c6
-rw-r--r--src/matrixOperations/magnitude/cmagns.c8
-rw-r--r--src/matrixOperations/magnitude/dmagna.c6
-rw-r--r--src/matrixOperations/magnitude/dmagns.c4
-rw-r--r--src/matrixOperations/magnitude/smagna.c7
-rw-r--r--src/matrixOperations/magnitude/smagns.c4
-rw-r--r--src/matrixOperations/magnitude/testFloatMagnitude.c55
-rw-r--r--src/matrixOperations/magnitude/zmagna.c7
-rw-r--r--src/matrixOperations/magnitude/zmagns.c8
11 files changed, 118 insertions, 37 deletions
diff --git a/src/matrixOperations/magnitude/Makefile.am b/src/matrixOperations/magnitude/Makefile.am
index 80702fd3..fbcd7240 100644
--- a/src/matrixOperations/magnitude/Makefile.am
+++ b/src/matrixOperations/magnitude/Makefile.am
@@ -11,8 +11,10 @@
##
libMatrixMagnitude_la_CFLAGS = -I $(top_builddir)/type \
- -I $(top_builddir)/matrixOperations/includes \
- -I $(top_builddir)/elementaryFunctions/includes
+ -I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
+ -I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/elementaryFunctions/includes
instdir = $(top_builddir)/lib
@@ -37,17 +39,20 @@ libMatrixMagnitude_la_SOURCES = $(HEAD) \
check_PROGRAMS = testDoubleMatrixMagnitude testFloatMatrixMagnitude
check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
- $(top_builddir)/type/libFloatComplex.la \
- $(top_builddir)/operations/addition/libAddition.la \
- $(top_builddir)/lib/lapack/libscilapack.la \
- $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
- $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
- $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
- $(top_builddir)/operations/multiplication/libMultiplication.la \
- libMatrixMagnitude.la
+ $(top_builddir)/type/libFloatComplex.la \
+ $(top_builddir)/operations/addition/libAddition.la \
+ $(top_builddir)/lib/lapack/libscilapack.la \
+ $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/operations/addition/libAddition.la \
+ libMatrixMagnitude.la
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
testDoubleMatrixMagnitude_SOURCES = testDoubleMagnitude.c
diff --git a/src/matrixOperations/magnitude/Makefile.in b/src/matrixOperations/magnitude/Makefile.in
index d0057267..cf76a3a9 100644
--- a/src/matrixOperations/magnitude/Makefile.in
+++ b/src/matrixOperations/magnitude/Makefile.in
@@ -220,8 +220,10 @@ target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
libMatrixMagnitude_la_CFLAGS = -I $(top_builddir)/type \
- -I $(top_builddir)/matrixOperations/includes \
- -I $(top_builddir)/elementaryFunctions/includes
+ -I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
+ -I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/elementaryFunctions/includes
instdir = $(top_builddir)/lib
pkglib_LTLIBRARIES = libMatrixMagnitude.la
@@ -237,17 +239,20 @@ libMatrixMagnitude_la_SOURCES = $(HEAD) \
zmagna.c
check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
- $(top_builddir)/type/libFloatComplex.la \
- $(top_builddir)/operations/addition/libAddition.la \
- $(top_builddir)/lib/lapack/libscilapack.la \
- $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
- $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
- $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
- $(top_builddir)/operations/multiplication/libMultiplication.la \
- libMatrixMagnitude.la
+ $(top_builddir)/type/libFloatComplex.la \
+ $(top_builddir)/operations/addition/libAddition.la \
+ $(top_builddir)/lib/lapack/libscilapack.la \
+ $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/operations/addition/libAddition.la \
+ libMatrixMagnitude.la
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
testDoubleMatrixMagnitude_SOURCES = testDoubleMagnitude.c
diff --git a/src/matrixOperations/magnitude/cmagna.c b/src/matrixOperations/magnitude/cmagna.c
index 04c5edb0..bf505b10 100644
--- a/src/matrixOperations/magnitude/cmagna.c
+++ b/src/matrixOperations/magnitude/cmagna.c
@@ -17,6 +17,12 @@
float cmagna(floatComplex* in, int rows, int cols){
int i=0,j=0;
float out=0, colSum=0;
+
+ /* Other method :
+ crowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
if ((rows==1)||(cols==1)){
for(i=0;i<cols*rows;i++){
diff --git a/src/matrixOperations/magnitude/cmagns.c b/src/matrixOperations/magnitude/cmagns.c
index 155cf0ae..78d773b7 100644
--- a/src/matrixOperations/magnitude/cmagns.c
+++ b/src/matrixOperations/magnitude/cmagns.c
@@ -12,14 +12,12 @@
*/
-#include "sqrt.h"
+
#include "matrixMagnitude.h"
+#include "abs.h"
float cmagns(floatComplex in){
- float out;
-
- out = creals(in)*creals(in)+cimags(in)*cimags(in);
- return ssqrts(out);
+ return cabss(in);
}
diff --git a/src/matrixOperations/magnitude/dmagna.c b/src/matrixOperations/magnitude/dmagna.c
index 619b3981..21e4d9eb 100644
--- a/src/matrixOperations/magnitude/dmagna.c
+++ b/src/matrixOperations/magnitude/dmagna.c
@@ -18,7 +18,11 @@ double dmagna(double* in, int rows, int cols){
int i=0,j=0;
double out=0, colSum=0;
-
+ /* Other method :
+ drowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
if ((rows==1)||(cols==1)){
for(i=0;i<cols*rows;i++){
out += dmagns(in[i]);
diff --git a/src/matrixOperations/magnitude/dmagns.c b/src/matrixOperations/magnitude/dmagns.c
index 5160dab4..d651cacf 100644
--- a/src/matrixOperations/magnitude/dmagns.c
+++ b/src/matrixOperations/magnitude/dmagns.c
@@ -14,10 +14,10 @@
#include "matrixMagnitude.h"
+#include "abs.h"
double dmagns(double in){
- if (in<0) return -in;
- return in;
+ return dabss(in);
}
diff --git a/src/matrixOperations/magnitude/smagna.c b/src/matrixOperations/magnitude/smagna.c
index 5e53c008..761baf8e 100644
--- a/src/matrixOperations/magnitude/smagna.c
+++ b/src/matrixOperations/magnitude/smagna.c
@@ -18,6 +18,13 @@ float smagna(float* in, int rows, int cols){
int i=0,j=0;
float out=0, colSum=0;
+
+ /* Other method :
+ srowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+
if ((rows==1)||(cols==1)){
for(i=0;i<cols*rows;i++){
out += smagns(in[i]);
diff --git a/src/matrixOperations/magnitude/smagns.c b/src/matrixOperations/magnitude/smagns.c
index 2a2da2fb..3ccf383a 100644
--- a/src/matrixOperations/magnitude/smagns.c
+++ b/src/matrixOperations/magnitude/smagns.c
@@ -14,10 +14,10 @@
#include "matrixMagnitude.h"
+#include "abs.h"
float smagns(float in){
- if (in<0) return -in;
- return in;
+ return sabss(in);
}
diff --git a/src/matrixOperations/magnitude/testFloatMagnitude.c b/src/matrixOperations/magnitude/testFloatMagnitude.c
index acedf414..441d2600 100644
--- a/src/matrixOperations/magnitude/testFloatMagnitude.c
+++ b/src/matrixOperations/magnitude/testFloatMagnitude.c
@@ -15,6 +15,7 @@
#include <assert.h>
#include "matrixMagnitude.h"
#include <stdio.h>
+
static void smagnsTest(void){
float in[11]={-5.0f,-4.0f,-3.0f,-2.0f,-1.0f,0.0f,1.0f,2.0f,3.0f,4.0f,5.0f};
float res[11]={5.0f,4.0f,3.0f,2.0f,1.0f,0.0f,1.0f,2.0f,3.0f,4.0f,5.0f};
@@ -106,17 +107,67 @@ static void cmagnaTest(void){
0.5465334919281303882599f,\
0.9885407658293843269348f,0.7395656588487327098846f,0.0037173107266426086426f,\
0.5900572859682142734528f};
- float res = 3.8451319979533651327586f;
+ float result = 3.8451319979533651327586f;
+
+ float in1[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+ 0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+ 0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+ 0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float in2[12] = {0.2017172696068882942200f,0.8400885667651891708374f,0.3911573919467628002167f,\
+ 0.1205995907075703144074f,0.8300316557288169860840f,0.2855364168062806129456f,\
+ 0.5878720157779753208160f,0.8607514644972980022430f,0.4829179299995303153992f,\
+ 0.8494101651012897491455f,0.2232865034602582454681f,0.5257060811854898929596f};
+ float in3[12] = {0.2017172696068882942200f,0.4829179299995303153992f,0.2855364168062806129456f,\
+ 0.3911573919467628002167f,0.2232865034602582454681f,0.8607514644972980022430f,\
+ 0.8300316557288169860840f,0.8400885667651891708374f,0.8494101651012897491455f,\
+ 0.5878720157779753208160f,0.1205995907075703144074f,0.5257060811854898929596f};
+ float in4[12] = {0.2017172696068882942200f,0.5878720157779753208160f,0.8400885667651891708374f,\
+ 0.8607514644972980022430f,0.3911573919467628002167f,0.4829179299995303153992f,\
+ 0.1205995907075703144074f,0.8494101651012897491455f,0.8300316557288169860840f,\
+ 0.2232865034602582454681f,0.2855364168062806129456f,0.5257060811854898929596f};
+ float in5[12] = {0.2017172696068882942200f,0.8300316557288169860840f,0.4829179299995303153992f,\
+ 0.8400885667651891708374f,0.2855364168062806129456f,0.8494101651012897491455f,\
+ 0.3911573919467628002167f,0.5878720157779753208160f,0.2232865034602582454681f,\
+ 0.1205995907075703144074f,0.8607514644972980022430f,0.5257060811854898929596f};
+ float in6[12] = {0.2017172696068882942200f,0.3911573919467628002167f,0.8300316557288169860840f,\
+ 0.5878720157779753208160f,0.4829179299995303153992f,0.2232865034602582454681f,\
+ 0.8400885667651891708374f,0.1205995907075703144074f,0.2855364168062806129456f,\
+ 0.8607514644972980022430f,0.8494101651012897491455f,0.5257060811854898929596f};
+ float in7[12] = {0};
+ float res[6] = {6.1990750515833497047424f,1.448623480275273323059f,2.5195303875952959060669f,\
+ 2.4904293166473507881165f,3.4897020040079951286316f,6.1990750515833497047424f};
float out;
floatComplex *in;
+ floatComplex *In1,*In2,*In3,*In4,*In5,*In6;
+ float out1,out2,out3,out4,out5,out6;
in=FloatComplexMatrix(inR,inI,12);
out = cmagna(in, 4,3);
- assert(fabs(out-res)/fabs(out) <1e-6);
+ assert(fabs(out-result)/fabs(out) <1e-6);
+
+ In1=FloatComplexMatrix(in1,in7,12);
+ In2=FloatComplexMatrix(in2,in7,12);
+ In3=FloatComplexMatrix(in3,in7,12);
+ In4=FloatComplexMatrix(in4,in7,12);
+ In5=FloatComplexMatrix(in5,in7,12);
+ In6=FloatComplexMatrix(in6,in7,12);
+ out1=cmagna(In1,1,12);
+ out2=cmagna(In2,2,6);
+ out3=cmagna(In3,3,4);
+ out4=cmagna(In4,4,3);
+ out5=cmagna(In5,6,2);
+ out6=cmagna(In6,12,1);
+ assert( fabs(out1-res[0])/fabs(out1)<1e-6);
+ assert( fabs(out2-res[1])/fabs(out2)<1e-6);
+ assert( fabs(out3-res[2])/fabs(out3)<1e-6);
+ assert( fabs(out4-res[3])/fabs(out4)<1e-6);
+ assert( fabs(out5-res[4])/fabs(out5)<1e-6);
+ assert( fabs(out6-res[5])/fabs(out6)<1e-6);
}
+
static int magnTest(void){
printf("\n >>> Float Magnitude Tests <<< \n");
smagnsTest();
diff --git a/src/matrixOperations/magnitude/zmagna.c b/src/matrixOperations/magnitude/zmagna.c
index 3e20cf58..8982da1f 100644
--- a/src/matrixOperations/magnitude/zmagna.c
+++ b/src/matrixOperations/magnitude/zmagna.c
@@ -18,6 +18,13 @@ double zmagna(doubleComplex* in, int rows, int cols){
int i=0,j=0;
double out=0, colSum=0;
+
+ /* Other method :
+ zrowsuma(in,rows,cols,temp);
+ out=max(temp,cols);
+ but we have to malloc a array */
+
+
if ((rows==1)||(cols==1)){
for(i=0;i<cols*rows;i++){
diff --git a/src/matrixOperations/magnitude/zmagns.c b/src/matrixOperations/magnitude/zmagns.c
index f8466bbf..5f132aa0 100644
--- a/src/matrixOperations/magnitude/zmagns.c
+++ b/src/matrixOperations/magnitude/zmagns.c
@@ -12,14 +12,12 @@
*/
-#include "sqrt.h"
+
#include "matrixMagnitude.h"
+#include "abs.h"
double zmagns(doubleComplex in){
- double out;
-
- out = zreals(in)*zreals(in)+zimags(in)*zimags(in);
- return dsqrts(out);
+ return zabss(in);
}