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

📄 graphcreate.h

📁 This a framework to test new ideas in transmission technology. Actual development is a LDPC-coder in
💻 H
字号:
#ifndef GRAPHCREATE_H__#define GRAPHCREATE_H__#include "debugging.h"#include "memory.h"#define MAXDEGREENUM 100#define MAXCYCLE 4#define vnodedegree (*((*graph).vnodelist+node)).degree#define cnodedegree (*((*graph).cnodelist+node)).degree#define vtonodedegree (*((*graph).vnodelist+tonode)).degree#define ctonodedegree (*((*graph).cnodelist+tonode)).degree//#define vnodevalue (*((*graph).vnodelist+node)).value#define vtonodevalue (*((*graph).vnodelist+tonode)).value#define vnodeedgelist (*((*graph).vnodelist+node)).edgelist#define cnodeedgelist (*((*graph).cnodelist+node)).edgelist#define vtonodeedgelist (*((*graph).vnodelist+tonode)).edgelist#define ctonodeedgelist (*((*graph).cnodelist+tonode)).edgelist#define vnodeedge (*((*((*graph).vnodelist+node)).edgelist+socket))#define cnodeedge (*((*((*graph).cnodelist+node)).edgelist+socket))#define vnodetoedge (*((*((*graph).vnodelist+tonode)).edgelist+tosocket))#define cnodetoedge (*((*((*graph).cnodelist+tonode)).edgelist+tosocket))#define vvalue (*graph).getnode[degindex][dispindex]#define vnodevalue (*graph).rec[degindex][dispindex]/*#define vmessage (*graph).vnodes[(*graph).vdegreelookup[(*graph).vdegrees[node]]][(*graph).vdegreedisp[node]][socket]#define cmessage  (*graph).cnodes[(*graph).cdegreelookup[(*graph).cdegrees[node]]][(*graph).cdegreedisp[node]][socket] #define vtomessage (*((*graph).cnodeedges[(*graph).cdegreelookup[(*graph).cdegrees[node]]][(*graph).cdegreedisp[node]][socket]).msgforvnode) #define ctomessage (*((*graph).vnodeedges[(*graph).vdegreelookup[(*graph).vdegrees[node]]][(*graph).vdegreedisp[node]][socket]).msgforcnode)*/#define vmessage (*graph).vnodes[degindex][socket][dispindex]#define cmessage  (*graph).cnodes[degindex][socket][dispindex+temp]#define vtomessage (*((*graph).cnodeedges[degindex][socket][dispindex+temp]).msgforvnode)#define ctomessage (*((*graph).vnodeedges[degindex][socket][dispindex+temp]).msgforcnode)#define vnodedeg (*graph).vdegrees[node]#define cnodedeg (*graph).cdegrees[node]/*************************** edge: one integer which ** denotes the destination ** node and a double which ** contains the message    ***************************/typedef struct {  int dest;              /* destination node */  int socket;            /* socket at the destination */  double message;        /* incoming message from distination node */}edge;typedef struct {  short int *msgforcnode;  short int *msgforvnode;}edge1;/************************* define structure of a ** variable node         *************************/typedef struct {  int degree;             /* degree of node */  double value;           /* received value */  edge *edgelist;         /* list of connected edges */}vnode;/************************* define structure of a ** check node            *************************/typedef struct {  int degree;             /* degree of node */  edge *edgelist;         /* list of connected edges */}cnode;/************************* define structure of a ** degreelist            *************************/typedef struct {  int degree[MAXDEGREENUM];       /* particular degree */  int numofnodes[MAXDEGREENUM];   /* number of nodes with this particular degree */}degreelist;/************************* define structure of a ** graph                 *************************/typedef struct {  int vnodenum;               /* number of vnodes */  int cnodenum;               /* number of cnodes */  double rate;                /* rate of the code */  int vdegreesnum;            /* number of different vdegrees */  int cdegreesnum;            /* number of different cdegrees */  int vmaxdegree;             /* maximum vdegree              */  int cmaxdegree;             /* maximum cdegree              */  double sumc;                /* sum of rho_i/i               */  double sumv;                /* sum of lambda_i/i            */  degreelist *vdegreelist;    /* list of vdegrees             */  degreelist *cdegreelist;    /* list of cdegrees             */  vnode *vnodelist;           /* list of vnodes               */  cnode *cnodelist;           /* list of cnodes               */}graphs;typedef struct {  short int *** cnodes;  short int *** vnodes;  short int ** rec;  double rate;  int **getnode;  int * cdegreelookup, * vdegreelookup;  int vnodenum;  int cnodenum;  int vdegreesnum;  int cdegreesnum;  int vmaxdegree;  int cmaxdegree;  int * vdegrees, * cdegrees;  int * vdegreedisp , * cdegreedisp;  degreelist *vdegreelist;  degreelist *cdegreelist;  edge1 *** cnodeedges;  edge1 *** vnodeedges;}graphstemp;extern int *codes[];int getGraph(int index, graphs *graph, int *gap, int **iphi);int getGraphtemp(int index, graphstemp *graph, int *gap, int **iphi);void freeGraph(graphs *graph,int *iphi);void freeGraphtemp(graphstemp *graph, int *iphi);#endif

⌨️ 快捷键说明

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