2015-01-15 2 views
0

일부 유한 필드 GF (2^n)에서 다항식을 처리하고 순위 찾기/역변환 또는 A = X *를 지원하는 행렬 표현 지원을 사용하는 C++ 라이브러리를 찾으려고합니다. 비. Linbox를 사용하려고하는데 문서가 거의 없습니다. 라이브러리의 Givaro 부분을 사용하여 몇 가지 불쾌한 일을 한 후에 정수를 다항식 표현으로 변환하는 작업을 수행 할 수 있었지만 처리하지 않는 것처럼 Linbox의 부분을 해결할 수는 없었습니다. 다항식, 지수가 하나 인 소수 만 기본 (GF (2)). 디버깅의 rank는 항상 함수 (2) 위에 GF 요소로서 요소를 취급하고 잘못된 값을 반환하면최종 필드 라이브러리의 다항식

여기서 코드

LinBox::GivaroGfq GF28(2, 8); 
typedef LinBox::BlasMatrix<LinBox::GivaroGfq> Matrix; 
Matrix mat(GF28); 
//...Resize to MxM and insert M^2 elements 
unsigned long int r; 
rank(r, mat); 

로부터 부분.

이 라이브러리를 사용하는 방법에 대한 아이디어가 있습니까? GF (2^n)의 MxM 요소 행렬을 가지고이를 역수로하거나 계급을 얻거나 선형 방정식을 푸십시오? 아니면 다른 라이브러리를 사용해야합니까?

+0

LinBox 문서를 간략하게 살펴 보았습니다. 라이브러리의 Givaro 부분은 소수를 모듈로 처리하거나 소수를 소수로 처리하기위한 것이고 GF28은 Galios 필드 대신 256을 모듈로 나타납니다. 8 비트 숫자로 구성된 Galios 필드의 경우 필드가 기반으로하는 9 비트 다항식을 지정해야하며 LinBox 설명서에서이 필드가 지정된 곳을 볼 수 없습니다. – rcgldr

+0

계속해서, LinBox 라이브러리는 리드 솔로몬 유형 조작 모듈 929 (소수)에 사용될 수 있지만 두 개의 레이어가있는 Galios 필드에는 사용할 수없는 것으로 보입니다. 첫 번째 계층은 모듈로 2의 1 비트 수이고,이 경우 두 번째 계층은 8 비트 다항식 모듈로 9 비트 다항식입니다. 그러면 계수로 8 비트 다항식을 사용하는 다항식을 사용하는 세 번째 레이어가 있지만이 세 번째 레이어는 필드 나 링의 일부가 아닙니다. – rcgldr

+0

LinBox 라이브러리가 add (xor), subtract (xor), multiply (8 비트 다항식 모듈로 9 비트 다항식 곱하기, 로그 테이블 또는 65k 룩업 테이블 사용)과 같은 숫자에 대한 기본 연산을 지정할 수 있습니까? 로그 또는 룩업 테이블을 사용하여 다시 나눕니다. – rcgldr

답변

0

NTL이 해결책 인 것처럼 보입니다. 그것은 행렬 (inverse, solve 등)을 사용하여 GF (2^n) 다항식을 모듈화하고 쉽게 다룰 수있는 구현을 제공합니다.