<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0" />

Org.BouncyCastle.Math.BinPoly.BinPolys

static class BinPolys
Static entry point for binary-polynomial helpers. Reducer-independent ops ( Size, Create, Add, AddTo) sit at the top level; IBinPolyMul factories classified by reduction polynomial shape live under the nested Mul sub-class, and inversion factories under Inv (Itoh-Tsujii today; safegcd a possible future sibling).
namespace Org.BouncyCastle.Math.BinPoly { internal static class BinPolys { public static class Mul { public static IBinPolyMul Binomial(int n); public static IBinPolyMul Trinomial(int n, int k); public static IBinPolyMul Pentanomial(int n, int k1, int k2, int k3); } public static class Inv { public static IBinPolyInv ItohTsujii(IBinPolyMul mul); } public static int Size(int n); public static ulong[] Create(int size); public static void Add(int size, ulong[] x, int xOff, ulong[] y, int yOff, ulong[] z, int zOff); public static void AddTo(int size, ulong[] x, int xOff, ulong[] z, int zOff); public static void Copy(int size, ulong[] x, int xOff, ulong[] z, int zOff); public static void Zero(int size, ulong[] z, int zOff); public static void Clear(int size, ulong[] z, int zOff); public static void One(int size, ulong[] z, int zOff); public static ulong EqualTo(int size, ulong[] x, int xOff, ulong[] y, int yOff); public static ulong EqualToOne(int size, ulong[] x, int xOff); public static ulong EqualToZero(int size, ulong[] x, int xOff); public static int BitLengthVar(int size, ulong[] x, int xOff); } }