#include "ocsTools.hh"
#include "ocsConst.hh"
#include <math.h>
#include "nrutil.h"
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
Defines | |
#define | IM1 2147483563 |
#define | IM2 2147483399 |
#define | AM (1.0/IM1) |
#define | IMM1 (IM1-1) |
#define | IA1 40014 |
#define | IA2 40692 |
#define | IQ1 53668 |
#define | IQ2 52774 |
#define | IR1 12211 |
#define | IR2 3791 |
#define | NTAB 32 |
#define | NDIV (1+IMM1/NTAB) |
#define | EPS 1.2e-7 |
#define | RNMX (1.0-EPS) |
#define | IA 16807 |
#define | IM 2147483647 |
#define | AM (1.0/IM) |
#define | IQ 127773 |
#define | IR 2836 |
#define | NTAB 32 |
#define | NDIV (1+(IM-1)/NTAB) |
#define | EPS 1.2e-7 |
#define | RNMX (1.0-EPS) |
#define | NRANSI |
#define | ITMAX 200 |
#define | NRANSI |
#define | TOL 2.0e-4 |
#define | NRANSI |
#define | NRANSI |
#define | GOLD 1.618034 |
#define | GLIMIT 100.0 |
#define | TINY 1.0e-20 |
#define | SHFT(a, b, c, d) (a)=(b);(b)=(c);(c)=(d); |
#define | NRANSI |
#define | ITMAX 100 |
#define | CGOLD 0.3819660 |
#define | ZEPS 1.0e-10 |
#define | SHFT(a, b, c, d) (a)=(b);(b)=(c);(c)=(d); |
#define | NRANSI |
#define | ITMAX 200 |
#define | EPS 1.0e-10 |
#define | FREEALLD free_dvector(xi,1,n);free_dvector(h,1,n);free_dvector(g,1,n); |
#define | NRANSI |
#define | TOL 2.0e-4 |
#define | NRANSI |
#define | NRANSI |
#define | GOLD 1.618034 |
#define | GLIMIT 100.0 |
#define | TINY 1.0e-20 |
#define | SHFT(a, b, c, d) (a)=(b);(b)=(c);(c)=(d); |
#define | NRANSI |
#define | ITMAX 100 |
#define | CGOLD 0.3819660 |
#define | ZEPS 1.0e-10 |
#define | SHFT(a, b, c, d) (a)=(b);(b)=(c);(c)=(d); |
#define | NRANSI |
#define | ITMAX 200 |
#define | EPS 1.0e-10 |
#define | FREEALL free_nrvector(xi,1,n);free_nrvector(h,1,n);free_nrvector(g,1,n); |
#define | NR_END 1 |
#define | FREE_ARG char* |
#define | NRANSI |
#define | SWAP(a, b) {temp=(a);(a)=(b);(b)=temp;} |
#define | NRANSI |
#define | SWAP(a, b) {temp=(a);(a)=(b);(b)=temp;} |
#define | ITMAX 100 |
#define | EPS 3.0e-7 |
#define | FPMIN 1.0e-30 |
#define | ITMAX 100 |
#define | EPS 3.0e-7 |
#define | NRANSI |
#define | ITMAX 100 |
#define | EPS 3.0e-8 |
Functions | |
double | GetRadiusCircle (double *PointA, double *PointB, double *PointC) |
double | GetDistance2Points (double *PointA, double *PointB, int FirstCoord) |
int | Periodicity (int ii, int Periodicity) |
void | TransRzRyV3toXhat (double *Vector, double *thetaZthetaY) |
void | TransRzRyV3to_Xhat (double *Vector, double *thetaZthetaY) |
void | TransRyV3to_YZ (double *Vector, double *thetaY) |
void | TransRzRxV3toXhat (double *Vector, double *thetaZthetaY) |
void | TransRzRxV3to_Xhat (double *Vector, double *thetaZthetaX) |
void | TransRzRxV3to_Xhat (double *Vector, double *thetaZ, double *thetaX) |
void | Multiply (double Left[][3], double Right[][3]) |
void | Multiply (double Left[][3], double Right[3]) |
void | Multiply (cplx Left[][2], cplx Right[][2]) |
void | URotatesAboutZ (double angle, cplx UMatrix[][2]) |
void | URotatesAboutY (double angle, cplx UMatrix[][2]) |
void | URotatesAboutX (double angle, cplx UMatrix[][2]) |
void | MRotatesAboutZ (double angle, double MMatrix[][3]) |
void | MRotatesAboutX (double angle, double MMatrix[][3]) |
void | MRotatesAboutY (double angle, double MMatrix[][3]) |
void | MGeneralRotation (double angle, double *r_vec, double MMatrix[][3]) |
void | CrossProduct (double *Left, double *Right, int FirstCoord) |
void | CrossProduct (double *Left, double *Right, double *Product) |
void | RotatesAboutZ (double angle, double *Vector) |
void | RotatesAboutX (double angle, double *Vector) |
void | RotatesAboutY (double angle, double *Vector) |
double | ScalarProduct (double *VectorA, double *VectorB) |
double | GetVectorLength (double *Vector, int Dimension) |
void | RotatesAboutX (double angle, cplx *JonesVector) |
void | RotatesAboutY (double angle, cplx *JonesVector) |
void | RotatesAboutZ (double angle, cplx *JonesVector) |
double | dB2Linear (double dBvalue) |
double | dBm2Linear (double dBmPower) |
double | Linear2dB (double LinearValue) |
double | Linear2dBm (double LinearPower) |
double | Linear2dB_Limited (double LinearValue, double MaxValue_dB) |
double | GetDegreeOfPolarization (double *StokesVector) |
double | GetPhase (const cplx Phasor) |
void | Stokes2Jones (const double *Stokes, cplx *Jones) |
void | Stokes2JonesKeepPower (const double *Stokes, cplx *Jones) |
void | Jones2Stokes (const cplx *Jones, double *Stokes) |
void | Jones2StokesKeepPower (const cplx *Jones, double *Stokes) |
void | JonesPair2MixedStokes (const cplx *Jones1, const cplx *Jones2, cplx *MixedStokes) |
double | Frequency2Wavelength (double Frequency) |
double | Wavelength2Frequency (double Wavelength) |
double | MaxOfArray (double *Array, int Length) |
Returns the maximum element of the array Array. | |
double | MinOfArray (double *Array, int Length) |
Returns the minimum element of the array Array. | |
void | MinAndArgMin (double *Vec, int Length, double &MinValue, int &ArgMin) |
void | MaxAndArgMax (double *Vec, int Length, double &MaxValue, int &ArgMax) |
double | Quadrature (double *Data, int NumPts, double LeftEndPt, double RightEndPt) |
void | gaussian_pdf (int N, double stan_dev, double *vec) |
cplx | bessel5 (double omega, double omega_0, double FWHM) |
void | electrical_filter (cplx *my_power_time, cfftw *fft, double fwhm_norm) |
void | optical_filter (cplx *my_field_time, cplx *my_field_freq, cfftw *fft, double fwhm_norm) |
int | lock_or_unlock_mosix (int what) |
int | cpujob_mosix (void) |
int | slow_mosix (void) |
double | peak_power (cplx *in, int N) |
double | pulse_energy (cplx *in, int N, double width) |
float | ranG (long *idum) |
float | ran1 (long *idum) |
float | Gaussian_pdf (long *idum) |
void | powell (float p[], float xi[][4], int n, float ftol, int *iter, float *fret, float(*func)(float[])) |
void | linmin (float p[], float xi[], int n, float *fret, float(*func)(float[])) |
float | f1dim (float x) |
void | mnbrak (float *ax, float *bx, float *cx, float *fa, float *fb, float *fc, float(*func)(float)) |
float | brent (float ax, float bx, float cx, float(*f)(float), float tol, float *xmin) |
void | frprmnd (double p[], int n, double ftol, int *iter, double *fret, double(*func)(double[]), void(*dfunc)(double[], double[])) |
void | linmind (double p[], double xi[], int n, double *fret, double(*func)(double[])) |
double | f1dim (double x) |
void | mnbrakd (double *ax, double *bx, double *cx, double *fa, double *fb, double *fc, double(*func)(double)) |
double | brentd (double ax, double bx, double cx, double(*f)(double), double tol, double *xmin) |
void | frprmn (float p[], int n, float ftol, int *iter, float *fret, float(*func)(float[]), void(*dfunc)(float[], float[])) |
void | nrerror (char error_text[]) |
float * | nrvector (long nl, long nh) |
int * | ivector (long nl, long nh) |
unsigned char * | cvector (long nl, long nh) |
unsigned long * | lvector (long nl, long nh) |
double * | dvector (long nl, long nh) |
float ** | matrix (long nrl, long nrh, long ncl, long nch) |
double ** | dmatrix (long nrl, long nrh, long ncl, long nch) |
cplx ** | cmatrix (long nrl, long nrh, long ncl, long nch) |
int ** | imatrix (long nrl, long nrh, long ncl, long nch) |
float ** | submatrix (float **a, long oldrl, long oldrh, long oldcl, long oldch, long newrl, long newcl) |
float ** | convert_matrix (float *a, long nrl, long nrh, long ncl, long nch) |
float *** | f3tensor (long nrl, long nrh, long ncl, long nch, long ndl, long ndh) |
void | free_dvector (double *v, long nl, long nh) |
void | free_nrvector (float *v, long nl, long nh) |
void | free_ivector (int *v, long nl, long nh) |
void | free_cvector (unsigned char *v, long nl, long nh) |
void | free_lvector (unsigned long *v, long nl, long nh) |
void | free_matrix (float **m, long nrl, long nrh, long ncl, long nch) |
void | free_dmatrix (double **m, long nrl, long nrh, long ncl, long nch) |
void | free_cmatrix (cplx **m, long nrl, long nrh, long ncl, long nch) |
void | free_imatrix (int **m, long nrl, long nrh, long ncl, long nch) |
void | free_submatrix (float **b, long nrl, long nrh, long ncl, long nch) |
void | free_convert_matrix (float **b, long nrl, long nrh, long ncl, long nch) |
void | free_f3tensor (float ***t, long nrl, long nrh, long ncl, long nch, long ndl, long ndh) |
void | gaussj (double **a, int n, double **b, int m) |
void | gaussj_complex (cplx **a, int n, cplx **b, int m) |
float | erffc (float x) |
float | gammp (float a, float x) |
void | gcf (float *gammcf, float a, float x, float *gln) |
void | gser (float *gamser, float a, float x, float *gln) |
float | gammln (float xx) |
float | gammq (float a, float x) |
double | erfccExtendedRange (double x) |
float | erfcc (float x) |
float | zbrent (float(*func)(float), float x1, float x2, float tol) |
void | spline (double *x, double *y, int n, double yp1, double ypn, double *y2) |
double | splint (double *xa, double *ya, double *y2a, int n, double x) |
Variables | |
ofstream * | LogFile |
int | ncom |
float * | pcom |
float * | xicom |
float(* | nrfunc )(float[]) |
double * | pcomd |
double * | xicomd |
double(* | nrfuncd )(double[]) |
#define AM (1.0/IM) |
#define CGOLD 0.3819660 |
#define CGOLD 0.3819660 |
#define EPS 3.0e-7 |
#define EPS 3.0e-7 |
#define EPS 3.0e-8 |
#define EPS 1.2e-7 |
#define EPS 1.0e-10 |
#define EPS 1.2e-7 |
#define EPS 1.0e-10 |
#define FPMIN 1.0e-30 |
Referenced by gcf().
#define FREE_ARG char* |
#define FREEALL free_nrvector(xi,1,n);free_nrvector(h,1,n);free_nrvector(g,1,n); |
Referenced by frprmn().
#define FREEALLD free_dvector(xi,1,n);free_dvector(h,1,n);free_dvector(g,1,n); |
Referenced by frprmnd().
#define GLIMIT 100.0 |
#define GOLD 1.618034 |
#define IA 16807 |
Referenced by ran1().
#define IA1 40014 |
Referenced by ranG().
#define IA2 40692 |
Referenced by ranG().
#define IM 2147483647 |
#define IM1 2147483563 |
#define IM2 2147483399 |
#define IMM1 (IM1-1) |
#define IQ 127773 |
#define IQ1 53668 |
#define IQ2 52774 |
#define IR 2836 |
Referenced by ran1().
#define IR1 12211 |
Referenced by ranG().
#define IR2 3791 |
Referenced by ranG().
#define ITMAX 100 |
#define ITMAX 100 |
#define ITMAX 100 |
#define ITMAX 100 |
#define ITMAX 200 |
#define ITMAX 200 |
#define ITMAX 100 |
#define ITMAX 200 |
#define NDIV (1+(IM-1)/NTAB) |
#define NDIV (1+IMM1/NTAB) |
#define NR_END 1 |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NRANSI |
#define NTAB 32 |
#define RNMX (1.0-EPS) |
#define SHFT | ( | a, | ||
b, | ||||
c, | ||||
d | ||||
) | (a)=(b);(b)=(c);(c)=(d); |
#define SHFT | ( | a, | ||
b, | ||||
c, | ||||
d | ||||
) | (a)=(b);(b)=(c);(c)=(d); |
#define SHFT | ( | a, | ||
b, | ||||
c, | ||||
d | ||||
) | (a)=(b);(b)=(c);(c)=(d); |
#define SHFT | ( | a, | ||
b, | ||||
c, | ||||
d | ||||
) | (a)=(b);(b)=(c);(c)=(d); |
#define SWAP | ( | a, | ||
b | ||||
) | {temp=(a);(a)=(b);(b)=temp;} |
Referenced by gaussj(), and gaussj_complex().
#define SWAP | ( | a, | ||
b | ||||
) | {temp=(a);(a)=(b);(b)=temp;} |
#define TINY 1.0e-20 |
#define TINY 1.0e-20 |
#define TOL 2.0e-4 |
#define ZEPS 1.0e-10 |
#define ZEPS 1.0e-10 |
cplx bessel5 | ( | double | omega, | |
double | omega_0, | |||
double | FWHM | |||
) |
Referenced by electrical_filter().
float brent | ( | float | ax, | |
float | bx, | |||
float | cx, | |||
float(*)(float) | f, | |||
float | tol, | |||
float * | xmin | |||
) |
double brentd | ( | double | ax, | |
double | bx, | |||
double | cx, | |||
double(*)(double) | f, | |||
double | tol, | |||
double * | xmin | |||
) |
cplx** cmatrix | ( | long | nrl, | |
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References nrerror().
Referenced by ElecEqualizer::AllocateMemory().
float** convert_matrix | ( | float * | a, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References nrerror().
int cpujob_mosix | ( | void | ) |
void CrossProduct | ( | double * | Left, | |
double * | Right, | |||
double * | Product | |||
) |
void CrossProduct | ( | double * | Left, | |
double * | Right, | |||
int | FirstCoord | |||
) |
unsigned char* cvector | ( | long | nl, | |
long | nh | |||
) |
References nrerror().
double dB2Linear | ( | double | dBvalue | ) |
double dBm2Linear | ( | double | dBmPower | ) |
double** dmatrix | ( | long | nrl, | |
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References nrerror().
Referenced by ElecEqualizer::AllocateMemory(), and GetRadiusCircle().
double* dvector | ( | long | nl, | |
long | nh | |||
) |
References bessel5(), cfftw::FFT(), cfftw::freq(), cfftw::give_N(), cfftw::IFFT(), and cfftw::work.
float erfcc | ( | float | x | ) |
Referenced by erfccExtendedRange().
double erfccExtendedRange | ( | double | x | ) |
References erfcc(), pi, sq(), and sqrt().
Referenced by ElecSignalStat::GetBER_GaussianStatisticsFromDecisionThreshold(), ElecSignalStat::GetQ_FactorGaussianStatisticsFromBER(), and ElecSignalStat::MinimizeSqQ_FactorVersusBER().
double f1dim | ( | double | x | ) |
References dvector(), and free_dvector().
float f1dim | ( | float | x | ) |
References free_nrvector(), and nrvector().
float*** f3tensor | ( | long | nrl, | |
long | nrh, | |||
long | ncl, | |||
long | nch, | |||
long | ndl, | |||
long | ndh | |||
) |
References nrerror().
void free_cmatrix | ( | cplx ** | m, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References FREE_ARG, and NR_END.
Referenced by ElecEqualizer::~ElecEqualizer().
void free_convert_matrix | ( | float ** | b, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
void free_dmatrix | ( | double ** | m, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References FREE_ARG, and NR_END.
Referenced by ElecEqualizer::~ElecEqualizer().
void free_dvector | ( | double * | v, | |
long | nl, | |||
long | nh | |||
) |
void free_f3tensor | ( | float *** | t, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch, | |||
long | ndl, | |||
long | ndh | |||
) |
void free_imatrix | ( | int ** | m, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
void free_ivector | ( | int * | v, | |
long | nl, | |||
long | nh | |||
) |
References FREE_ARG, and NR_END.
Referenced by gaussj(), and gaussj_complex().
void free_matrix | ( | float ** | m, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
void free_nrvector | ( | float * | v, | |
long | nl, | |||
long | nh | |||
) |
void free_submatrix | ( | float ** | b, | |
long | nrl, | |||
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
double Frequency2Wavelength | ( | double | Frequency | ) |
References LightSpeed.
void frprmn | ( | float | p[], | |
int | n, | |||
float | ftol, | |||
int * | iter, | |||
float * | fret, | |||
float(*)(float[]) | func, | |||
void(*)(float[], float[]) | dfunc | |||
) |
References EPS, FREEALL, linmin(), nrerror(), and nrvector().
void frprmnd | ( | double | p[], | |
int | n, | |||
double | ftol, | |||
int * | iter, | |||
double * | fret, | |||
double(*)(double[]) | func, | |||
void(*)(double[], double[]) | dfunc | |||
) |
float gammln | ( | float | xx | ) |
References log().
void gaussj | ( | double ** | a, | |
int | n, | |||
double ** | b, | |||
int | m | |||
) |
References free_ivector(), ivector(), nrerror(), and SWAP.
Referenced by ElecEqualizer::EqualizeBitIntensityWiener(), ElecEqualizer::EqualizeBitIntensityWienerReal(), and GetRadiusCircle().
References free_ivector(), ivector(), nrerror(), and SWAP.
Referenced by ElecEqualizer::EqualizeBitIntensityWienerCplx().
void gcf | ( | float * | gammcf, | |
float | a, | |||
float | x, | |||
float * | gln | |||
) |
double GetDistance2Points | ( | double * | PointA, | |
double * | PointB, | |||
int | FirstCoord | |||
) |
Referenced by GetRadiusCircle().
double GetRadiusCircle | ( | double * | PointA, | |
double * | PointB, | |||
double * | PointC | |||
) |
References CrossProduct(), dmatrix(), gaussj(), GetDistance2Points(), pi, sq(), and sqrt().
void gser | ( | float * | gamser, | |
float | a, | |||
float | x, | |||
float * | gln | |||
) |
int** imatrix | ( | long | nrl, | |
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References nrerror().
int* ivector | ( | long | nl, | |
long | nh | |||
) |
References nrerror().
Referenced by gaussj(), and gaussj_complex().
void Jones2StokesKeepPower | ( | const cplx * | Jones, | |
double * | Stokes | |||
) |
References Jones2Stokes(), and sq().
Converts a pair of Jones vectors v_1, v_2 into the mixed Stokes vector S_12 = ConjugateTranspose(v_1)*Sigma*v_2 where Sigma is the Pauli Spin 4-vector
Converts a pair of Jones vectors v_1, v_2 into the mixed Stokes vector S_12 = ConjugateTranspose(v_1)*Sigma*v_2 where Sigma is the Pauli Spin 4-vector.
Here the Jones vectors are complex 2x1 column vectors and S_12 is a complex 4-vector.
If v_1 = v_2, then the Mixed Stokes vector is just the standard Stokes vector of v_1, and is in particular real.
In general, the complex conjugate of S_12 is S_21.
If v_1 and v_2 form an orthonormal basis, then the zero-th entry of S_12 is zero
We do not normalize by the zero-th entry of S_12, as it may be 0!
Written by JZ, Dec 2005
References jc.
Referenced by GaussianReceiver::ComputeFirstOrderPMDParameters(), and GaussianReceiver::ReceiveSignalDGD_NoisePartiallyPolarized().
double Linear2dB | ( | double | LinearValue | ) |
double Linear2dB_Limited | ( | double | LinearValue, | |
double | MaxValue_dB | |||
) |
double Linear2dBm | ( | double | LinearPower | ) |
void linmin | ( | float | p[], | |
float | xi[], | |||
int | n, | |||
float * | fret, | |||
float(*)(float[]) | func | |||
) |
References brent(), f1dim(), free_nrvector(), mnbrak(), nrfunc, nrvector(), and TOL.
void linmind | ( | double | p[], | |
double | xi[], | |||
int | n, | |||
double * | fret, | |||
double(*)(double[]) | func | |||
) |
int lock_or_unlock_mosix | ( | int | what | ) |
unsigned long* lvector | ( | long | nl, | |
long | nh | |||
) |
References nrerror().
float** matrix | ( | long | nrl, | |
long | nrh, | |||
long | ncl, | |||
long | nch | |||
) |
References nrerror().
void MaxAndArgMax | ( | double * | Vec, | |
int | Length, | |||
double & | MaxValue, | |||
int & | ArgMax | |||
) |
double MaxOfArray | ( | double * | Array, | |
int | Length | |||
) |
Returns the maximum element of the array Array.
Referenced by ChiSquareReceiver::ComputePDFAtTimeValue().
void MGeneralRotation | ( | double | angle, | |
double * | r_vec, | |||
double | MMatrix[][3] | |||
) |
References Multiply(), sq(), and sqrt().
void MinAndArgMin | ( | double * | Vec, | |
int | Length, | |||
double & | MinValue, | |||
int & | ArgMin | |||
) |
double MinOfArray | ( | double * | Array, | |
int | Length | |||
) |
Returns the minimum element of the array Array.
Referenced by ChiSquareReceiver::ComputePDFAtTimeValue().
void mnbrak | ( | float * | ax, | |
float * | bx, | |||
float * | cx, | |||
float * | fa, | |||
float * | fb, | |||
float * | fc, | |||
float(*)(float) | func | |||
) |
void mnbrakd | ( | double * | ax, | |
double * | bx, | |||
double * | cx, | |||
double * | fa, | |||
double * | fb, | |||
double * | fc, | |||
double(*)(double) | func | |||
) |
void MRotatesAboutX | ( | double | angle, | |
double | MMatrix[][3] | |||
) |
void MRotatesAboutY | ( | double | angle, | |
double | MMatrix[][3] | |||
) |
void MRotatesAboutZ | ( | double | angle, | |
double | MMatrix[][3] | |||
) |
void Multiply | ( | double | Left[][3], | |
double | Right[][3] | |||
) |
void Multiply | ( | double | Left[][3], | |
double | Right[3] | |||
) |
void nrerror | ( | char | error_text[] | ) |
float* nrvector | ( | long | nl, | |
long | nh | |||
) |
References cfftw::freq(), cfftw::give_N(), cfftw::IFFT(), and sq().
Referenced by OptFilter::FilterOptSignal_OLD(), OptSignal::GenerateSignalStringGaussianOrSech(), OptSignal::GenerateSignalStringGaussianOrSechWithPhaseShift(), OptSignal::GenerateSignalStringRZGaussianPattern(), OptSignal::GenerateSignalStringUsingInputSequence(), and OptSignal::InitializeFirstOrderPMDSignal().
double peak_power | ( | cplx * | in, | |
int | N | |||
) |
int Periodicity | ( | int | ii, | |
int | Periodicity | |||
) |
Referenced by OptSignal::ChangeAbsoluteCenterFreq(), Photodetector::ComputeWorkSumDelayedHalfBitPeriodThenSquare(), ElecEqualizer::EqualizeBitIntensityWiener(), ElecEqualizer::EqualizeBitIntensityWienerCplx(), ElecEqualizer::EqualizeBitIntensityWienerReal(), ElecSignalStat::GetClockTimeForMonteCarloEye(), ElecSignalStat::GetIntegralForSignalNoiseVariance(), ElecSignalStat::GetMeanCurrentIsolatedBit0(), ElecSignalStat::GetMeanCurrentIsolatedBit1(), ElecSignalStat::GetStdDevSignal_ASE_BitSlot(), ElecSignalStat::GetStdDevSignal_ASE_TimeIndex(), ElecSignalStat::GetTargetIndexTimeBestMinEyeOpening(), ElecSignalStat::GetTargetIndexTimeBestQ_Factor(), ElecSignalStat::UpdateEqualizedPerformanceStatistics(), ElecSignalStat::UpdateMoments(), ElecSignalStat::UpdatePerformanceStatistics(), ElecSignalStat::WriteFileEyeDiagram(), ElecEqualizer::WriteFileEyeDiagram(), and ElecSignalStat::WriteFileEyeDiagramFixedCLK().
void powell | ( | float | p[], | |
float | xi[][4], | |||
int | n, | |||
float | ftol, | |||
int * | iter, | |||
float * | fret, | |||
float(*)(float[]) | func | |||
) |
References free_nrvector(), ITMAX, linmin(), nrerror(), nrvector(), and SQR.
double pulse_energy | ( | cplx * | in, | |
int | N, | |||
double | width | |||
) |
double Quadrature | ( | double * | Data, | |
int | NumPts, | |||
double | LeftEndPt, | |||
double | RightEndPt | |||
) |
Computes $^RightEndPt f(x) dx, where function is given by Data[k] = f(LeftEndPt + k*Delta) with Delta = (RightEndPt - LeftEndPt)/(NumPts-1)
So Data[0] = f(LeftEndPt) and Data[NumPts-1] = RightEndPt The method uses Simpson's rule, which estimates the integral as
Integral = Delta/3( f(x_0) + 4[f(x_1) + f(x_3) +... f(x_{n-3}) + f(x_{n-1})] + 2[f(x_2) + f(x_4) +... f(x_{n-2})] + f(x_n) )
where n is even.
For us if NumPts is odd then n=NumPts-1, and if NumPts is even then n=NumPts-2, and we use Simpson on the subarray of the first NumPts-1 points, with the final part of the integral being done using trapezoid rule with 2 points.
If NumPts < 5 then Simpson's rule doesn't really apply and so we just use Trapezoid rule.
Integral=0.0;
for(int ii=0;ii < NumPts;ii++) Integral+=Data[ii];
Integral *= Delta;
Referenced by ElecSignalStat::ComputeAveragePDFs(), GaussianReceiver::ComputeAveragePDFs(), ChiSquareReceiver::ComputeGaussianPDFsAndBER(), Histogram2D::ComputeIntegralPDF(), OptSignal::ComputeMeanFreqSignal(), OptSignal::ComputeMeanPhasePulse(), OptSignal::ComputeMeanTimePulse(), Histogram2D::ComputeMeanX_PDF(), Histogram2D::ComputeMeanY_PDF(), ElecSignalStat::ComputeMinimumBERAndDecisionThreshold(), GaussianReceiver::ComputeMinimumBERAndDecisionThreshold(), ChiSquareReceiver::ComputeMinimumBERAndDecisionThreshold(), ChiSquareReceiver::ComputeMomentsInEachBit(), ChiSquareReceiver::ComputePDFAtTimeValue(), OptSignal::ComputeRMSPulseWidth(), Histogram2D::ComputeXMarginalPDF(), Histogram2D::ComputeYMarginalPDF(), and OptSignal::GetEnergyInTimeRange().
float ranG | ( | long * | idum | ) |
void RotatesAboutX | ( | double | angle, | |
double * | Vector | |||
) |
void RotatesAboutY | ( | double | angle, | |
double * | Vector | |||
) |
void RotatesAboutZ | ( | double | angle, | |
cplx * | JonesVector | |||
) |
void RotatesAboutZ | ( | double | angle, | |
double * | Vector | |||
) |
double ScalarProduct | ( | double * | VectorA, | |
double * | VectorB | |||
) |
int slow_mosix | ( | void | ) |
void spline | ( | double * | x, | |
double * | y, | |||
int | n, | |||
double | yp1, | |||
double | ypn, | |||
double * | y2 | |||
) |
Referenced by OptSignal::GenerateSignalStringUsingInputSequence().
double splint | ( | double * | xa, | |
double * | ya, | |||
double * | y2a, | |||
int | n, | |||
double | x | |||
) |
References nrerror().
Referenced by OptSignal::GenerateSignalStringUsingInputSequence().
void Stokes2JonesKeepPower | ( | const double * | Stokes, | |
cplx * | Jones | |||
) |
References sq(), sqrt(), and Stokes2Jones().
float** submatrix | ( | float ** | a, | |
long | oldrl, | |||
long | oldrh, | |||
long | oldcl, | |||
long | oldch, | |||
long | newrl, | |||
long | newcl | |||
) |
References nrerror().
void TransRyV3to_YZ | ( | double * | Vector, | |
double * | thetaY | |||
) |
References pi, RotatesAboutY(), sgn(), and sq().
void TransRzRxV3to_Xhat | ( | double * | Vector, | |
double * | thetaZthetaX | |||
) |
References pi, RotatesAboutX(), RotatesAboutZ(), and TransRzRxV3to_Xhat().
void TransRzRxV3to_Xhat | ( | double * | Vector, | |
double * | thetaZ, | |||
double * | thetaX | |||
) |
References pi, RotatesAboutX(), RotatesAboutZ(), and sq().
void TransRzRxV3toXhat | ( | double * | Vector, | |
double * | thetaZthetaY | |||
) |
References pi, and TransRzRxV3to_Xhat().
void TransRzRyV3to_Xhat | ( | double * | Vector, | |
double * | thetaZthetaY | |||
) |
References pi, RotatesAboutY(), RotatesAboutZ(), and sq().
void TransRzRyV3toXhat | ( | double * | Vector, | |
double * | thetaZthetaY | |||
) |
References pi, and TransRzRyV3to_Xhat().
void URotatesAboutZ | ( | double | angle, | |
cplx | UMatrix[][2] | |||
) |
double Wavelength2Frequency | ( | double | Wavelength | ) |
References LightSpeed.
float zbrent | ( | float(*)(float) | func, | |
float | x1, | |||
float | x2, | |||
float | tol | |||
) |
ofstream* LogFile |
int ncom |
float * pcom |
double * pcomd |
float * xicom |
double * xicomd |