일부 유한 필드 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 요소 행렬을 가지고이를 역수로하거나 계급을 얻거나 선형 방정식을 푸십시오? 아니면 다른 라이브러리를 사용해야합니까?
LinBox 문서를 간략하게 살펴 보았습니다. 라이브러리의 Givaro 부분은 소수를 모듈로 처리하거나 소수를 소수로 처리하기위한 것이고 GF28은 Galios 필드 대신 256을 모듈로 나타납니다. 8 비트 숫자로 구성된 Galios 필드의 경우 필드가 기반으로하는 9 비트 다항식을 지정해야하며 LinBox 설명서에서이 필드가 지정된 곳을 볼 수 없습니다. – rcgldr
계속해서, LinBox 라이브러리는 리드 솔로몬 유형 조작 모듈 929 (소수)에 사용될 수 있지만 두 개의 레이어가있는 Galios 필드에는 사용할 수없는 것으로 보입니다. 첫 번째 계층은 모듈로 2의 1 비트 수이고,이 경우 두 번째 계층은 8 비트 다항식 모듈로 9 비트 다항식입니다. 그러면 계수로 8 비트 다항식을 사용하는 다항식을 사용하는 세 번째 레이어가 있지만이 세 번째 레이어는 필드 나 링의 일부가 아닙니다. – rcgldr
LinBox 라이브러리가 add (xor), subtract (xor), multiply (8 비트 다항식 모듈로 9 비트 다항식 곱하기, 로그 테이블 또는 65k 룩업 테이블 사용)과 같은 숫자에 대한 기본 연산을 지정할 수 있습니까? 로그 또는 룩업 테이블을 사용하여 다시 나눕니다. – rcgldr