From afae3013c86d26dc1b233228431be208705acff0 Mon Sep 17 00:00:00 2001 From: Ankitr19 Date: Tue, 4 Jul 2017 15:26:35 +0530 Subject: New function and rpi issues resolved --- .../elementaryFunctions/Trigonometry/sinc/zsinca.c | 10 +- src/c/signalProcessing/%sn/zmodsna.c | 143 ++++++++++++++++++++- src/c/signalProcessing/amell/amell.h | 27 ++++ src/c/signalProcessing/amell/damella.c | 23 ++++ src/c/signalProcessing/amell/damells.c | 57 ++++++++ src/c/signalProcessing/amell/int_amell.h | 18 +++ src/c/signalProcessing/ell1mag/dell1maga.c | 40 ++++++ src/c/signalProcessing/ell1mag/ell1mag.h | 28 ++++ src/c/signalProcessing/ell1mag/int_ell1mag.h | 18 +++ src/c/signalProcessing/ell1mag/zell1maga.c | 40 ++++++ src/c/signalProcessing/filt_sinc/dfilt_sincs.c | 11 +- src/c/signalProcessing/includes/amell.h | 28 ++++ src/c/signalProcessing/includes/ell1mag.h | 29 +++++ src/c/signalProcessing/interfaces/int_amell.h | 19 +++ src/c/signalProcessing/interfaces/int_ell1mag.h | 19 +++ src/c/signalProcessing/interfaces/int_modsn.h | 2 +- src/c/string/ascii/gasciia.c | 4 +- src/c/string/strcspn/gstrcspna.c | 6 +- 18 files changed, 502 insertions(+), 20 deletions(-) create mode 100644 src/c/signalProcessing/amell/amell.h create mode 100644 src/c/signalProcessing/amell/damella.c create mode 100644 src/c/signalProcessing/amell/damells.c create mode 100644 src/c/signalProcessing/amell/int_amell.h create mode 100644 src/c/signalProcessing/ell1mag/dell1maga.c create mode 100644 src/c/signalProcessing/ell1mag/ell1mag.h create mode 100644 src/c/signalProcessing/ell1mag/int_ell1mag.h create mode 100644 src/c/signalProcessing/ell1mag/zell1maga.c create mode 100644 src/c/signalProcessing/includes/amell.h create mode 100644 src/c/signalProcessing/includes/ell1mag.h create mode 100644 src/c/signalProcessing/interfaces/int_amell.h create mode 100644 src/c/signalProcessing/interfaces/int_ell1mag.h (limited to 'src') diff --git a/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c b/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c index ad7d095..1f6cf9b 100644 --- a/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c +++ b/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c @@ -14,18 +14,22 @@ #include "sinc.h" #include "sin.h" #include "doubleComplex.h" +#include "division.h" void zsinca(doubleComplex* sample,int size,doubleComplex* oup) { int j; + double r,i; for(j=0;j #include "modsn.h" #include "doubleComplex.h" +#define CA 0.0003 + + +doubleComplex zmodsnsproto(doubleComplex uu,double emmc,doubleComplex* sni) +{ + doubleComplex ans; + double uur,uui; + uur=zreals(uu); + uui=zimags(uu); + double sr,cr,dr; + //Performing Elliptic Function operation for the real values + double a1,b1,c1,d1,emc1,u1; + double em1[14],en1[14]; + int i1,ii1,l1,bo1; + emc1=1-emmc; + u1=uur; + if(emc1) + { + bo1=(emc1<0.0); + if(bo1) + { + d1=1.0-emc1; + emc1/=-1.0/d1; + u1*=(d1=sqrt(d1)); + } + a1=1.0; + dr=1.0; + for(i1=1;i1<=13;i1++) + { + l1=i1; + em1[i1]=a1; + en1[i1]=(emc1=sqrt(emc1)); + c1=0.5*(a1+emc1); + if(fabs(a1-emc1)<=CA*a1)break; + emc1*=a1; + a1=c1; + } + u1*=c1; + sr=sin(u1); + cr=cos(u1); + if(sr) + { + a1=cr/sr; + c1*=a1; + for(ii1=l1;ii1>=1;ii1--) + { + b1=em1[ii1]; + a1*=c1; + c1*=dr; + dr=(en1[ii1]+a1)/(b1+a1); + a1=c1/b1; + } + a1=1.0/sqrt(c1*c1+1.0); + sr=(sr>=0.0?a1:-a1); + cr=c1*(sr); + } + if(bo1) + { + a1=dr; + dr=cr; + cr=a1; + sr/=d1; + } + } + else + { + cr=1.0/cosh(u1); + dr=cr; + sr=tanh(u1); + } + //////////////////////////////////////////////////////////////// + double si,ci,di; + //Performing Elleptic Function operation for the imaginary values + double a,b,c,d,emc,u; + double em[14],en[14]; + int i,ii,l,bo; + //double s1,c1,d1; + emc=emmc; + u=uui; + if(emc) + { + bo=(emc<0.0); + if(bo) + { + d=1.0-emc; + emc/=-1.0/d; + u*=(d=sqrt(d)); + } + a=1.0; + di=1.0; + for(i=1;i<=13;i++) + { + l=i; + em[i]=a; + en[i]=(emc=sqrt(emc)); + c=0.5*(a+emc); + if(fabs(a-emc)<=CA*a)break; + emc*=a; + a=c; + } + u*=c; + si=sin(u); + ci=cos(u); + if(si) + { + a=ci/si; + c*=a; + for(ii=l;ii>=1;ii--) + { + b=em[ii]; + a*=c; + c*=di; + di=(en[ii]+a)/(b+a); + a=c/b; + } + a=1.0/sqrt(c*c+1.0); + si=(si>=0.0?a:-a); + ci=c*(si); + } + if(bo) + { + a=di; + di=ci; + ci=a; + si/=d; + } + } + else + { + ci=1.0/cosh(u); + di=ci; + si=tanh(u); + } + ///////////////////////////////////////////////////////// + double delta; + delta=ci*ci + emmc*sr*sr*si*si; + double snir,snii; + snir=(sr*di)/delta; + snii=(cr*dr*si*ci)/delta; + *sni=DoubleComplex(snir,snii); +} void zmodsna(doubleComplex* uu,int size,double emmc,doubleComplex* sn) { int i; for(i=0;i +#include +#include "amell.h" + +void damella(double* u,int size,double x,double* oup) +{ + int i; + for(i=0;i +#include +#include "amell.h" +#define N 30 +#define DBL_EPSILON 2.2204460492503131E-16 + + +double damells(double u,double x) +{ + double a[N+1]; + double g[N+1]; + double c[N+1]; + double two_n; + double phi; + double k; + int n; + k=(long double)fabs(x); + if(k==1.0) + return 0; + if(k>1.0) + printf("Wrong type of input argument type #2"); + + a[0]=1.0; + g[0]=sqrt(1.0-k*k); + c[0]=k; + two_n=1.0; + for(n=0;n0;n--) + { + phi=0.5*(phi+asin(c[n]*sin(phi)/a[n])); + } + return (double)phi; +} + diff --git a/src/c/signalProcessing/amell/int_amell.h b/src/c/signalProcessing/amell/int_amell.h new file mode 100644 index 0000000..5d0c86f --- /dev/null +++ b/src/c/signalProcessing/amell/int_amell.h @@ -0,0 +1,18 @@ +/* Copyright (C) 2017 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Ankit Raj + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in + */ + +#ifndef __INT_AMELL_H__ +#define __INT_AMELL_H__ + +#define d0d0amelld0(u,x) damells(u,x) + +#endif /* !__INT_AMELL_H__! */ diff --git a/src/c/signalProcessing/ell1mag/dell1maga.c b/src/c/signalProcessing/ell1mag/dell1maga.c new file mode 100644 index 0000000..9af0c8e --- /dev/null +++ b/src/c/signalProcessing/ell1mag/dell1maga.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2017 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Ankit Raj + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in + */ + +#include +#include "modsn.h" +#include "ell1mag.h" +#include "doubleComplex.h" + +void dell1maga(double eps,double m1,double* z,int size,double* oup ) +{ + double s[size]; + int i; + for(i=0;i +#include "modsn.h" +#include "ell1mag.h" +#include "doubleComplex.h" + +void zell1maga(double eps,double m1,doubleComplex* z,int size,double* oup ) +{ + doubleComplex s[size]; + int i; + for(i=0;i