public static XPolynom operator +(XPolynom left, XPolynom right) { XPolynom @short, @long; if (left.PolynomsCount > right.PolynomsCount) { @long = left; @short = right; } else { @short = left; @long = right; } var ret = new XPolynom(@long.PolynomsCount); int i = 0; for (; i < @short.PolynomsCount; i++) { ret[i] = @long[i] + @short[i]; } for (; i < @long.PolynomsCount; i++) { ret[i] = @long[i]; } ret.ReLength(); return(ret); }
public static XPolynom operator *(XPolynom left, GF right) { var ret = new XPolynom(left.PolynomsCount); for (int i = 0; i < left.PolynomsCount; i++) { ret[i] = left[i] * right; } ret.ReLength(); return(ret); }