📄 ovector.h
字号:
#ifndef OVECTOR_H
#define OVECTOR_H
#include "spwtypes.h"
/*
* Fixed point defines for ObjPropsDefaults()
*/
#define VEC_MEM -1
#define VEC_MIRROR 64 /* used to define mirror vectors */
#ifndef FXP_CLIP
#define FXP_CLIP 0x2000 /* Saturate value: return closest min or max value */
#endif
#define FXP_ROUND 0x2
#define FXP_DEFAULT_MODES (FXP_ROUND | FXP_CLIP)
/*
* Defines for OvGenerate
*/
#ifndef OvFFT
#define OvFFT 16
#endif
#define OvBARTLETT 1
#define OvBLACKMAN 2
#define OvHAMMING 3
#define OvHANNING 4
#define OvKAISER 5
#define OvCHEBYSHEV 6
#define OvBARTLETT_FFT 9
#define OvBLACKMAN_FFT 10
#define OvHAMMING_FFT 11
#define OvHANNING_FFT 12
#define OvKAISER_FFT 13
#define OvCHEBYSHEV_FFT 14
#define OvFFT_WINDOW 8
/*
* Macros
*/
#define OvNext(sp_vec) ((sp_vec)->curr_loc += (sp_vec)->stepsize)
#define OvPrev(sp_vec) ((sp_vec)->curr_loc -= (sp_vec)->stepsize)
#define OvToBegin(sp_vec) ((sp_vec)->curr_loc = (sp_vec)->virtstart)
#define OvToEnd(sp_vec) ((sp_vec)->curr_loc = (sp_vec)->virtend)
#define OvAdvance(sp_vec, i_nelement) ((sp_vec)->curr_loc += (i_nelement) *\
((sp_vec)->stepsize))
#define OvGetType(sp_vec) ((sp_vec)->properties->type)
#define OvGetStepSize(sp_vec) ((sp_vec)->stepsize/Osizeof((sp_vec)->properties))
#define OvGetLength(sp_vec) ((sp_vec)->length)
#define OvGetCurr(sp_vec) ((sp_vec)->curr_loc)
#define OvGetData(sp_vec, i_element) ((sp_vec)->virtstart + (i_element) * \
(sp_vec)->stepsize)
#define OvGetStart(sp_vec) ((sp_vec)->start)
#define OvGetEnd(sp_vec) ((sp_vec)->end)
#define OvGetVirtStart(sp_vec) ((sp_vec)->virtstart)
#define OvGetVirtEnd(sp_vec) ((sp_vec)->virtend)
#define OvGetProps(sp_vec) ((sp_vec)->properties)
#define OvSetStepSize(sp_vec, i_step) ((sp_vec)->stepsize = (i_step)* \
Osizeof((sp_vec)->properties))
#define OvSetType(sp_vec, i_type) ((sp_vec)->properties->type = i_type)
#define OvSetProps(sp_vec, sp_props) ((sp_vec)->properties = sp_props)
#ifndef OvSetLength
#define OvSetLength(sp_vec,i_newlength) {\
(sp_vec)->length = i_newlength;\
(sp_vec)->virtend = (sp_vec)->virtstart +\
(i_newlength) * (sp_vec)->stepsize;\
}
#endif
#define OvUpdate(sp_vec, ptr) {\
(sp_vec)->virtstart = (sp_vec)->start = (Data) ptr;\
(sp_vec)->virtend = (sp_vec)->end = ((Data) ptr) +\
(sp_vec)->length * (sp_vec)->stepsize;\
}
#define OvSetLoc(sp_vec,i_element) ((sp_vec)->curr_loc = (sp_vec)->virtstart +\
(i_element) * (sp_vec)->stepsize)
#define OvSetStart(sp_vec,cp_newstart) ((sp_vec)->start = cp_newstart)
#define OvSetVirtStart(sp_vec,cp_virtstart) ((sp_vec)->virtstart = cp_virtstart)
#define OvCirclePtr(sp_vec,ptr) if ((Data)((ptr) = (void *)((Data)(ptr) + (sp_vec)->stepsize)) >= (sp_vec)->virtend) \
(ptr) = (void *) (sp_vec)->virtstart
#define IvGetCurr(sp_vec) (*(long *) (sp_vec)->curr_loc)
#define DvGetCurr(sp_vec) (*(double *) (sp_vec)->curr_loc)
#define LvGetCurr(sp_vec) (*(Logical *) (sp_vec)->curr_loc)
#define CvGetCurr(sp_vec) (*(Complex *) (sp_vec)->curr_loc)
#define ICvGetCurr(sp_vec) (*(IntCmplx *) (sp_vec)->curr_loc)
#define IvSetCurr(sp_vec,i_value) (*(long *) (sp_vec)->curr_loc = i_value)
#define DvSetCurr(sp_vec,d_value) (*(double *) (sp_vec)->curr_loc = d_value)
#define LvSetCurr(sp_vec,ui_value) (*(Logical *) (sp_vec)->curr_loc = ui_value)
#define CvSetCurr(sp_vec,s_cvalue) (*(Complex *) (sp_vec)->curr_loc = s_cvalue)
#define ICvSetCurr(sp_vec,s_icvalue) (*(IntCmplx *) (sp_vec)->curr_loc = s_icvalue)
/*
* Type conversion
*/
#define DvToCv(sp_vec) {\
(sp_vec)->stepsize <<= 1;\
(sp_vec)->length >>= 1;\
}
#define CvToDv(sp_vec) {\
(sp_vec)->stepsize >>= 1;\
(sp_vec)->length <<= 1;\
}
/*
* double data type function declarations
*/
#ifdef Dvfft
#undef Dvfft
#endif
#ifdef Dvifft
#undef Dvifft
#endif
Ovector CvConj(Ovector sp_v1, Ovector sp_v2);
Ovector CvEquate(Ovector sp_src, Ovector sp_dst);
Ovector CvMag2(Ovector sp_src, Ovector sp_dst);
Ovector CvMult(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector CvScale(Complex s_scalar, Ovector sp_src, Ovector sp_dst);
Ovector Dvadd(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Dvadd2(Ovector sp_src, Ovector sp_dst);
Ovector Dvsub(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Dvsub2(Ovector sp_src, Ovector sp_dst);
Ovector Dvsubr2(Ovector sp_src, Ovector sp_dst);
Ovector Dvmult(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Dvmult2(Ovector sp_src, Ovector sp_dst);
Ovector Dvsqrt(Ovector sp_src, Ovector sp_dst);
Ovector Dvequate(Ovector sp_src, Ovector sp_dst);
Ovector Dvscale(register double d_scalar, Ovector sp_src, Ovector sp_dst);
Ovector Dvfill(register double d_scalar, Ovector sp_dst);
Ovector Dvproc1(double (*fp_func)(double), Ovector sp_src, Ovector sp_dst);
Ovector Dvproc2(double (*fp_func)(double, double), Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Dvabs(Ovector sp_src, Ovector sp_dst);
Ovector Dvfft(Ovector sp_table, Ovector sp_in, Ovector sp_out);
Ovector Dvifft(Ovector sp_table, Ovector sp_in, Ovector sp_out);
Ovector Dvpivot(register double d_scale, Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Dvpivot2(register double d_scale, Ovector sp_src, Ovector sp_dst);
Ovector DvGenerate(int i_type, int i_length, Objprops sp_props);
Ovector DvGenWindow(int i_type, double d_param, Ovector sp_dst);
Ovector Dvabs(Ovector sp_src, Ovector sp_dst);
Ovector DvSwap(Ovector sp_v1, Ovector sp_v2);
long Dvmax(Ovector sp_src, double *dp_max_val);
long Dvmin(Ovector sp_src, double *dp_min_val);
int DvMaxAbs(Ovector sp_v, double *dp_val);
double Dvdot(Ovector sp_src1, Ovector sp_src2, double *dp_result);
double Dvfir(double d_input, Ovector sp_state, Ovector sp_coef);
double Dvfir2(double d_input, Ovector sp_state, Ovector sp_coef);
double Dviir(double d_input, Ovector sp_state, Ovector sp_num, Ovector sp_den);
double Dvcsum(Ovector sp_src, double *dp_res);
double Dvsumsqr(Ovector sp_src1, Ovector sp_src2);
double Dvcprod(Ovector sp_src, double *dp_res);
double Dvsos(register double d_input, Ovector sp_state, Ovector sp_num, Ovector sp_den);
/*
* long data type function declarations
*/
Ovector Ivadd(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Ivadd2(Ovector sp_src, Ovector sp_dst);
Ovector Ivsub(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Ivsub2(Ovector sp_src, Ovector sp_dst);
Ovector Ivsubr2(Ovector sp_src, Ovector sp_dst);
Ovector Ivmult(Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Ivmult2(Ovector sp_src, Ovector sp_dst);
Ovector Ivequate(Ovector sp_src, Ovector sp_dst);
Ovector Ivscale(long i_scalar, Ovector sp_src, Ovector sp_dst);
Ovector Ivfill(long i_scalar, Ovector sp_dst);
Ovector Ivproc1(long (*fp_func)(long), Ovector sp_src, Ovector sp_dst);
Ovector Ivproc2(long (*fp_func)(long, long), Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Ivabs(Ovector sp_src, Ovector sp_dst);
Ovector Ivpivot(long i_scale, Ovector sp_src1, Ovector sp_src2, Ovector sp_dst);
Ovector Ivpivot2(long i_scale, Ovector sp_src, Ovector sp_dst);
Ovector Ivabs(Ovector sp_src, Ovector sp_dst);
long Ivmax(Ovector sp_src, long *ip_max_val);
long Ivmin(Ovector sp_src, long *ip_min_val);
long Ivcsum(Ovector sp_src, long *ip_res);
/*
* Other miscellaneous function definitions
*/
Ovector OvAlloc(long i_numelem, Objprops sp_props);
Ovector OvAllocHdr(Objprops sp_props);
Ovector OvCopyHdr(Ovector sp_from);
Ovector OvConvert(Data dp_data, int i_length, Objprops sp_prop);
Ovector tableFind(int i_type, int i_len, Objprops sp_props);
Data Oalloc(int i_mem_type, long l_size);
int Osizeof(Objprops sp_props);
void OallocInit(int i_vec_mem, int i_slo_mem);
Objprops ObjPropDefault(DATA_TYPE type, int mem, short bits, short exp, short format);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -