下载了NTL(Number Theory Library),简单对正方矩阵(square matrix)求秩和nclib 进行了测试,测试参数如下:
- 有限域大小为:GF(28)、GF(216)和GF(232)
- 正方矩阵维度从2 到255(横坐标)
测试方法:随机生成指定大小的矩阵,计算其秩大小,仅计算一次。
测试结果如下(分别是GF(28)、GF(216)和GF(232) 域上的结果):
在域大小为GF(28)和GF(216)时差别还不是很大,但为GF(232) 时,计算速度差距就有些大了,主要还是矩阵的表示方法不同,nclib 用uint_8/uint_16/uint_32 类型表示三个域中元素,而NTL 中域中元素全部二进制表示,计算秩更多的使用了单个元素求逆和而不是像nclib 建立域上计算表。比如GF(232) 上进行求秩,方阵很小的时候速度也很慢,是把有限域上计算表(乘法表、对数表)时间给算进去了。nclib 可以对此进行改进。