internal static Number FastPower(Number a, LongIntegerNumber b)
 {
     Number re = One;
     while(b != Zero) {
         if(b.parts.First() % 2 == 1)
             re = re * a;
         a = (a * a);
         b = b.IntDivide(Two);
     }
     return b.isNegative ? (One / re) : re;
 }