⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ami.h

📁 ami_snake算法源代码
💻 H
字号:
#define ami_abs(x) ((x)>0?(x):(-(x)))#define ami_max_vector(x,pos,max,dim) {int ml; pos=0; max=x[0]; \          for(ml=1;ml<dim;ml++) if(x[ml]>max) {max=x[ml]; pos=ml;} \        }#define ami_min_vector(x,pos,min,dim) {int ml; pos=0; min=x[0]; \          for(ml=1;ml<dim;ml++) if(x[ml]<min) {min=x[ml]; pos=ml;} \        }#define ami_media_vector(x,alh,dim) {int ml; alh=0; \          for(ml=0;ml<dim;ml++) alh+=x[ml]; \          alh=alh/dim; \        }#define ami_normalizar_vector(x,dim) {int ml; double alh=0; \          for(ml=0;ml<dim;ml++) alh+=x[ml]*x[ml]; \          if(alh>0){\            alh=sqrt(alh); \            for(ml=0;ml<dim;ml++) x[ml]/=alh;}\        }#define ami_norma_vector(x,norma,dim) {int ml; norma=0; \          for(ml=0;ml<dim;ml++) norma+=x[ml]*x[ml]; \          if(norma>0) norma=sqrt((double) norma); \        }#define ami_producto_vectorial(v,u,z) {\          z[0]=v[1]*u[2]-u[1]*v[2];\          z[1]=v[2]*u[0]-v[0]*u[2];\          z[2]=v[0]*u[1]-u[0]*v[1];\        }#define ami_matriz_vector(A,x,v,Nfil,Ncol) {int ml,mk;\          for(ml=0;ml<Nfil;ml++){ v[ml]=A[ml][0]*x[0]; \            for(mk=1;mk<Ncol;mk++) v[ml]+=A[ml][mk]*x[mk];}\        }#define ami_matriz_traspuesta_vector(A,x,v,Nfil,Ncol) {int ml,mk;\          for(ml=0;ml<Nfil;ml++){ v[ml]=A[0][ml]*x[0]; \            for(mk=1;mk<Ncol;mk++) v[ml]+=A[mk][ml]*x[mk];}\        }#define ami_matriz_traspuesta(A,At,NfilA,NcolA) {int ml,mk;\          for(ml=0;ml<NfilA;ml++){ \            for(mk=0;mk<NcolA;mk++) At[mk][ml]=A[ml][mk];}\        }#define ami_matriz_copia(A,B,NfilA,NcolA) {int ml,mk;\          for(ml=0;ml<NfilA;ml++){ \            for(mk=0;mk<NcolA;mk++) B[ml][mk]=A[ml][mk];}\        }#define ami_escalar_matriz(l,A,B,NfilA,NcolA) {int ml,mk;\          for(ml=0;ml<NfilA;ml++){ \            for(mk=0;mk<NcolA;mk++) B[ml][mk]=l*A[ml][mk];}\        }#define ami_vector_copia(u,v,N) {int ml;\          for(ml=0;ml<N;ml++){ \            v[ml]=u[ml];}\        }#define ami_vector_vector(x,v,a,dim) {int ml; a=x[0]*v[0];\          for(ml=1;ml<dim;ml++) a+=x[ml]*v[ml];\        }#define ami_vector_resta_vector(x,v,a,dim) {int ml; a=x[0]-v[0];\          for(ml=1;ml<dim;ml++) a+=x[ml]-v[ml];\        }#define ami_vector_suma_vector(x,v,a,dim) {int ml; a=x[0]+v[0];\          for(ml=1;ml<dim;ml++) a+=x[ml]+v[ml];\        }#define ami_escalar_vector(x,a,v,dim) {int ml; \          for(ml=0;ml<dim;ml++) v[ml]=x[ml]*a;\        }#define ami_matriz_matriz(A,B,C,NfilA,NcolA,NcolB) {int ml,mk,mu;\          for(mu=0;mu<NfilA;mu++) \            for(mk=0;mk<NcolB;mk++){\              C[mu][mk]=A[mu][0]*B[0][mk];\              for(ml=1;ml<NcolA;ml++) C[mu][mk]+=A[mu][ml]*B[ml][mk];}\        }#define ami_matriz_traspuesta_matriz(A,B,C,NfilA,NcolA,NcolB) {int ml,mk,mu;\          for(mu=0;mu<NfilA;mu++) \            for(mk=0;mk<NcolB;mk++){\              C[mu][mk]=A[0][mu]*B[0][mk];\              for(ml=1;ml<NcolA;ml++) C[mu][mk]+=A[ml][mu]*B[ml][mk];}\        }#define ami_calloc2d(direccion,tipo,height,width) {int ml,mk; \          direccion=(tipo **) malloc(sizeof(tipo *)*(height)); \          direccion[0]=(tipo *)malloc(sizeof(tipo)*(width)*(height)); \          for(ml=0;ml<(height);ml++) direccion[ml]=&(direccion[0][ml*(width)]); \          for(ml=0;ml<height;ml++) for(mk=0;mk<width;mk++) direccion[ml][mk]=0; \        }#define ami_malloc2d(direccion,tipo,height,width) {int ml; \          direccion=(tipo **) malloc(sizeof(tipo *)*(height)); \          direccion[0]=(tipo *)malloc(sizeof(tipo)*(width)*(height)); \          for(ml=0;ml<(height);ml++) direccion[ml]=&(direccion[0][ml*(width)]);\        }#define ami_malloc2d_punteros(direccion,puntero_simple,tipo,height,width) {int ml; \          direccion=(tipo **) malloc(sizeof(tipo *)*(height)); \          direccion[0]=(tipo *) puntero_simple; \          for(ml=0;ml<(height);ml++) direccion[ml]=&(direccion[0][ml*(width)]);\        }#define ami_free2d(direccion) { free(direccion[0]); free(direccion); }#define ami_free2d_punteros(direccion) { free(direccion); }#define ami_calloc3d(direccion,tipo,depth,height,width) {int ml,mk,mu; \          direccion=(tipo ***) malloc(sizeof(tipo **)*(depth)); \          direccion[0]=(tipo **)malloc(sizeof(tipo *)*(depth)*(height)); \          direccion[0][0]=(tipo *)malloc(sizeof(tipo)*(depth)*(height)*(width)); \          for(mu=0;mu<depth;mu++){ \            for(ml=0;ml<(height);ml++) \              direccion[0][ml+mu*(height)]=&(direccion[0][0][ml*(width)+mu*(width)*(height)]); \            direccion[mu]=&(direccion[0][mu*(height)]);}\          for(mu=0;mu<depth;mu++) for(ml=0;ml<height;ml++) for(mk=0;mk<width;mk++) direccion[mu][ml][mk]=0; \        }#define ami_malloc3d(direccion,tipo,depth,height,width) {int ml,mk,mu; \          direccion=(tipo ***) malloc(sizeof(tipo **)*(depth)); \          direccion[0]=(tipo **)malloc(sizeof(tipo *)*(depth)*(height)); \          direccion[0][0]=(tipo *)malloc(sizeof(tipo)*(depth)*(height)*(width)); \          for(mu=0;mu<depth;mu++){ \            for(ml=0;ml<(height);ml++) \              direccion[0][ml+mu*(height)]=&(direccion[0][0][ml*(width)+mu*(width)*(height)]); \            direccion[mu]=&(direccion[0][mu*(height)]);}\        }#define ami_malloc3d_punteros(direccion,puntero_simple,tipo,depth,height,width) {int ml,mk,mu; \          direccion=(tipo ***) malloc(sizeof(tipo **)*(depth)); \          direccion[0]=(tipo **)malloc(sizeof(tipo *)*(depth)*(height)); \          direccion[0][0]=(tipo *) puntero_simple; \          for(mu=0;mu<depth;mu++){ \            for(ml=0;ml<(height);ml++) \              direccion[0][ml+mu*(height)]=&(direccion[0][0][ml*(width)+mu*(width)*(height)]); \            direccion[mu]=&(direccion[0][mu*(height)]);}\        }#define ami_free3d(direccion) { free(direccion[0][0]); free(direccion[0]); free(direccion); }#define ami_free3d_punteros(direccion) { free(direccion[0]); free(direccion); }#define ami_malloc1d(direccion,tipo,size) {direccion=(tipo *) malloc(sizeof(tipo)*(size));}#define ami_calloc1d(direccion,tipo,size) {int ml; direccion=(tipo *) malloc(sizeof(tipo)*(size)); \          for(ml=0;ml<size;ml++) direccion[ml]=0;\        }#define ami_printf2d(comentario,direccion,height,width) {int ml,mk;  \          for(ml=0;ml<height;ml++){\            for(mk=0;mk<width;mk++) \              printf("%s[%d][%d]=%e ",comentario,ml,mk,(double) direccion[ml][mk]); \            printf("\n"); }printf("\n");\        }#define ami_printf2d_int(comentario,direccion,height,width) {int ml,mk;  \          for(ml=0;ml<height;ml++){\            for(mk=0;mk<width;mk++) \              printf("%s[%d][%d]=%d ",comentario,ml,mk,(int) direccion[ml][mk]); \            printf("\n");}\          printf("\n");\        }#define ami_printf1d(comentario,direccion,size){ int ml; \          for(ml=0;ml<size;ml++) printf("%s[%d]=%e \n",comentario,ml,(double) direccion[ml]); \          printf("\n");\        }#define ami_printf1d_int(comentario,direccion,size){ int ml; \          for(ml=0;ml<size;ml++) printf("%s[%d]=%d ",comentario,ml,(int) direccion[ml]); \          printf("\n");\        }#define ami_printf(comentario,valor) printf("%s=%e\n",comentario,(double) valor);  #define ami_printf_int(comentario,valor) printf("%s=%d\n",comentario,(int) valor);  #define ami_printf3d(comentario,direccion,depth,height,width) {int ml,mk,mu; \          for(mu=0;mu<depth;mu++){ for(ml=0;ml<height;ml++){ for(mk=0;mk<width;mk++) \              printf("%s[%d][%d][%d]=%e ",comentario,mu,ml,mk,(double) direccion[mu][ml][mk]); \              printf("\n");} printf("\n");} \        } #define ami_printf3d_int(comentario,direccion,depth,height,width) {int ml,mk,mu; \          for(mu=0;mu<depth;mu++){ for(ml=0;ml<height;ml++){ for(mk=0;mk<width;mk++) \              printf("%s[%d][%d][%d]=%d ",comentario,mu,ml,mk,(int) direccion[mu][ml][mk]); \              printf("\n");} printf("\n");} \        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -