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

📄 gf.h

📁 包括RS码的编码,硬(BM)/软(KV)译码,AWGN信道调制解调仿真. 具体采用何种编译码方案和调制解调方式可在Profile.txt文件中指定(内有详细说明). 且扩展性极好,容易向其中加入新的调
💻 H
字号:
#ifndef _GF
#define _GF

#include "stdlib.h"

typedef unsigned int GFE;
/*表示一个GF(2)扩域的结构体,由两张表组成
,Pow2Vec实现从幂次表示到矢量表示的转换,Vec2Pow实现从矢量表示到幂次表示的转换
*/

#define Using_Pow2Vec_Vec2Pow_NG(GFS) GFE *Pow2Vec=(GFS).Pow2Vec; \
   int *Vec2Pow=(GFS).Vec2Pow; \
   int NG=(GFS).N
#define GFADD_P2P(deg1,deg2) Vec2Pow[Pow2Vec[deg1]^Pow2Vec[deg2]]
//给出两个GF中元素的alpha之幂次,求其和对应的幂次
#define GFMPY_V2V(vec1,vec2,NG) ((vec1==0 || vec2==0)? 0 : Pow2Vec[((Vec2Pow[vec1]+Vec2Pow[vec2]) % NG)])
#define GFDIV_V2V(vec1,vec2,NG) ((vec1==0)? 0 : Pow2Vec[((Vec2Pow[vec1]-Vec2Pow[vec2]+NG) % NG)])
//给出两个GF中元素的alpha之m重表示,求其积/商对应的m重表示
//使用以上这些宏的条件: 必须在调用程序中有名为Vec2Pow和Pow2Vec的两个查找表
#define MODQ(N,q)  (((q)>0)? (((N)>=0)? (N)%q : ((q-(-(N))%q)%q)) : N)
//m重表示的两GF元素之和直接用位异或即可;幂次表示的两GF元素之积/商直接用MODQ即可

static GFE primepolynom[9]={0,0x3,0x7,0xb,0x13,0x25,0x43,0x89,0x11d};

struct GF {
	int N;//指GF中乘群的阶数,即N=2^M-1
	int M;//2的M次扩域
    int* Vec2Pow;//从非零域元素的矢量表示到本原元幂次表示的查找表
	GFE* Pow2Vec;//从非零域元素的本原幂次表示到矢量表示的查找表
};

extern int GFEDeg(GFE p);
extern GFE CombMod2(GFE n1, GFE n2);
extern void InitGF(GF* gf, int m);
extern GF NewGF(int m);
extern void FreeGF(GF* g);

#endif

⌨️ 快捷键说明

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