📄 cwp.h
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved. *//* cwp.h - include file for general purpose CWP stuff */#ifndef CWP_H#define CWP_H/* INCLUDES */#include <stdio.h>#include <stddef.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <ctype.h>#include <limits.h>#include <float.h>#include <fcntl.h> /* non-ANSI */#include <unistd.h> /* non-ANSI */#include <sys/types.h> /* non-ANSI */#ifdef CADDR_T_NOT_DEFINEDtypedef char * caddr_t;#endif/* TYPEDEFS */#ifdef CRAYtypedef struct _complexStruct { /* complex number */ float r,i;} cwp_complex;typedef struct _dcomplexStruct { /* double-precision complex number */ double r,i;} cwp_dcomplex;#define complex cwp_complex#define dcomplex cwp_dcomplex#define cadd cwp_cadd#define csub cwp_csub#define cmul cwp_cmul#define cdiv cwp_cdiv#define rcabs cwp_rcabs#define cmplx cwp_cmplx#define conjg cwp_conjg#define cneg cwp_cneg#define cinv cwp_cinv#define csqrt cwp_csqrt#define cexp cwp_cexp#define crmul cwp_crmul#define cipow cwp_cipow#define crpow cwp_crpow#define rcpow cwp_rcpow#define ccpow cwp_ccpow#define ccos cwp_ccos#define csin cwp_csin#define ccosh cwp_ccosh#define csinh cwp_csinh#define cexp1 cwp_cexp1#define clog cwp_clog#else #ifndef __cplusplus /* if not C++, define the C struct complex */#ifndef complextypedef struct _complexStruct { /* complex number */ float r,i;} complex;#endif/* complex */#ifndef dcomplextypedef struct _dcomplexStruct { /* double-precision complex number */ double r,i;} dcomplex;#endif/* dcomplex */#else /* if C++, define the C++ class complex */#include "Complex.h"/**********Lines added *******Daniel Tradd *******/ #ifndef dcomplextypedef struct _dcomplexStruct { /* double-precision complex number */ double r,i;} dcomplex;#endif/*******************************/#endif /* C++ */#endif/* DEFINES *//* uncomment the next block if you are installing *//* under ultrix, but not using the GCC compiler *//*#ifdef ultrix#define const#endef*//* CWP ENDIAN */#ifdef CWP_BIG_ENDIAN#define CWPENDIAN 1#endif#ifdef CWP_LITTLE_ENDIAN#define CWPENDIAN 0#endif#ifndef NULL#define NULL ((void *)0)#endif#ifndef EXIT_FAILURE#define EXIT_FAILURE (1)#endif#ifndef EXIT_SUCCESS#define EXIT_SUCCESS (0)#endif#ifndef SEEK_SET#define SEEK_SET (0)#endif#ifndef SEEK_CUR#define SEEK_CUR (1)#endif#ifndef SEEK_END#define SEEK_END (2)#endif#ifndef PI#define PI (3.141592653589793)#endif#ifndef D_PI #define D_PI (double) (3.1415926535897932385)#endif#ifndef GOLDEN_RATIO #define GOLDEN_RATIO (1.618034) /* the golden ratio */#endif#ifndef TRUE#define TRUE (1)#endif#ifndef FALSE#define FALSE (0)#endif#ifndef YES#define YES (1)#endif#ifndef NO#define NO (0)#endif#ifndef SGN#define SGN(x) ((x) < 0 ? -1.0 : 1.0)#endif#ifndef ABS#define ABS(x) ((x) < 0 ? -(x) : (x))#endif#ifndef MAX#define MAX(x,y) ((x) > (y) ? (x) : (y))#endif#ifndef MIN#define MIN(x,y) ((x) < (y) ? (x) : (y))#endif#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))#define CLOSETO(x, y) ((ABS((x) - (y)) <= FLT_EPSILON*ABS(y))?cwp_true:cwp_false)#define ISODD(n) ((n) & 01)#define ISIZE sizeof(int)#define FSIZE sizeof(float)#define DSIZE sizeof(double)#define STREQ(s,t) (strcmp(s,t) == 0)#define STRLT(s,t) (strcmp(s,t) < 0)#define STRGT(s,t) (strcmp(s,t) > 0)#define DIM(a) (sizeof(a)/sizeof(a[0]))/* FUNCTION PROTOTYPES */#ifdef __cplusplus /* if C++, specify external linkage to C functions */extern "C" {#endif/* allocate and free multi-dimensional arrays */void *alloc1 (size_t n1, size_t size);void *realloc1 (void *v, size_t n1, size_t size);void **alloc2 (size_t n1, size_t n2, size_t size);void ***alloc3 (size_t n1, size_t n2, size_t n3, size_t size);void ****alloc4 (size_t n1, size_t n2, size_t n3, size_t n4, size_t size);void *****alloc5 (size_t n1, size_t n2, size_t n3, size_t n4, size_t n5, size_t size);void ******alloc6 (size_t n1, size_t n2, size_t n3, size_t n4, size_t n5, size_t n6, size_t size);void free1 (void *p);void free2 (void **p);void free3 (void ***p);void free4 (void ****p);void free5 (void *****p);void free6 (void ******p);int *alloc1int (size_t n1);int *realloc1int (int *v, size_t n1);int **alloc2int (size_t n1, size_t n2);int ***alloc3int (size_t n1, size_t n2, size_t n3);float *alloc1float (size_t n1);float *realloc1float (float *v, size_t n1);float **alloc2float (size_t n1, size_t n2);float ***alloc3float (size_t n1, size_t n2, size_t n3);float ****alloc4float (size_t n1, size_t n2, size_t n3, size_t n4);void free4float (float ****p);float *****alloc5float (size_t n1, size_t n2, size_t n3, size_t n4, size_t n5);void free5float (float *****p);float ******alloc6float (size_t n1, size_t n2, size_t n3, size_t n4, size_t n5, size_t n6);void free6float (float ******p);int ****alloc4int (size_t n1, size_t n2, size_t n3, size_t n4);void free4int (int ****p);int *****alloc5int (size_t n1, size_t n2, size_t n3, size_t n4, size_t n5);void free5int (int *****p);unsigned short ******alloc6ushort(size_t n1,size_t n2,size_t n3,size_t n4, size_t n5, size_t n6);unsigned char *****alloc5uchar(size_t n1,size_t n2,size_t n3,size_t n4, size_t n5);void free5uchar(unsigned char *****p);unsigned short *****alloc5ushort(size_t n1,size_t n2,size_t n3,size_t n4, size_t n5);void free5ushort(unsigned short *****p);unsigned char ******alloc6uchar(size_t n1,size_t n2,size_t n3,size_t n4, size_t n5, size_t n6);void free6uchar(unsigned char ******p);unsigned short ******alloc6ushort(size_t n1,size_t n2,size_t n3,size_t n4, size_t n5, size_t n6);void free6ushort(unsigned short ******p);double *alloc1double (size_t n1);double *realloc1double (double *v, size_t n1);double **alloc2double (size_t n1, size_t n2);double ***alloc3double (size_t n1, size_t n2, size_t n3);complex *alloc1complex (size_t n1);complex *realloc1complex (complex *v, size_t n1);complex **alloc2complex (size_t n1, size_t n2);complex ***alloc3complex (size_t n1, size_t n2, size_t n3);dcomplex *alloc1dcomplex (size_t n1);dcomplex *realloc1dcomplex (dcomplex *v, size_t n1);dcomplex **alloc2dcomplex (size_t n1, size_t n2);dcomplex ***alloc3dcomplex (size_t n1, size_t n2, size_t n3);void free1int (int *p);void free2int (int **p);void free3int (int ***p);void free1float (float *p);void free2float (float **p);void free3float (float ***p);void free1double (double *p);void free2double (double **p);void free3double (double ***p);void free1complex (complex *p);void free2complex (complex **p);void free3complex (complex ***p);void free1dcomplex (dcomplex *p);void free2dcomplex (dcomplex **p);void free3dcomplex (dcomplex ***p);#ifndef __cplusplus /* if not C++, declare C complex functions *//* complex number manipulation */complex cadd (complex a, complex b);complex csub (complex a, complex b);complex cmul (complex a, complex b);complex cdiv (complex a, complex b);float rcabs (complex z);complex cmplx (float re, float im);complex conjg (complex z);complex cneg (complex z);complex cinv (complex z);complex csqrt (complex z);complex cexp (complex z);complex crmul (complex a, float x);/* complex functions */complex cipow(complex a, int p);complex crpow(complex a, float p);complex rcpow(float a, complex p);complex ccpow (complex a, complex p);complex ccos(complex a);complex csin(complex a);complex ccosh(complex a);complex csinh(complex a);complex cexp1(complex a);complex clog(complex a);/* double complex */dcomplex dcadd (dcomplex a, dcomplex b);dcomplex dcsub (dcomplex a, dcomplex b);dcomplex dcmul (dcomplex a, dcomplex b);dcomplex dcdiv (dcomplex a, dcomplex b);double drcabs (dcomplex z);dcomplex dcmplx (double re, double im);dcomplex dconjg (dcomplex z);dcomplex dcneg (dcomplex z);dcomplex dcinv (dcomplex z);dcomplex dcsqrt (dcomplex z);dcomplex dcexp (dcomplex z);dcomplex dcrmul (dcomplex a, double x);/* double complex functions */dcomplex dcipow(dcomplex a, int p);dcomplex dcrpow(dcomplex a, float p);dcomplex rdcpow(float a, dcomplex p);dcomplex dcdcpow(dcomplex a, dcomplex p);dcomplex dccos(dcomplex a);dcomplex dcsin(dcomplex a);dcomplex dccosh(dcomplex a);dcomplex dcsinh(dcomplex a);dcomplex dcexp1(dcomplex a);dcomplex dclog(dcomplex a);#endif /* endif C++ *//* big matrix handler */void *bmalloc (int nbpe, int n1, int n2);void bmfree (void *bm);void bmread (void *bm, int dir, int k1, int k2, int n, void *v);void bmwrite (void *bm, int dir, int k1, int k2, int n, void *v);/* interpolation */float fsinc (float x);double dsinc (double x);void mksinc (float d, int lsinc, float sinc[]);void ints8r (int nxin, float dxin, float fxin, float yin[], float yinl, float yinr, int nxout, float xout[], float yout[]);void ints8c (int nxin, float dxin, float fxin, complex yin[], complex yinl, complex yinr, int nxout, float xout[], complex yout[]);void intt8r (int ntable, float table[][8], int nxin, float dxin, float fxin, float yin[], float yinl, float yinr, int nxout, float xout[], float yout[]);void intt8c (int ntable, float table[][8], int nxin, float dxin, float fxin, complex yin[], complex yinl, complex yinr, int nxout, float xout[], complex yout[]);void ress8r (int nxin, float dxin, float fxin, float yin[], float yinl, float yinr, int nxout, float dxout, float fxout, float yout[]);void ress8c (int nxin, float dxin, float fxin, complex yin[], complex yinl, complex yinr, int nxout, float dxout, float fxout, complex yout[]);void shfs8r (float dx, int nxin, float fxin, float yin[], float yinl, float yinr, int nxout, float fxout, float yout[]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -