private static MyPoint MultiplyByScalar(MyPoint point, MyBigInteger scalar) { var result = new MyPoint(null, null, point.Curve); while (scalar != 0) { if (scalar % 2 == 1) { result = result + point; scalar--; } else { point = point.Double(); scalar = scalar / 2; } } return(result); }