public static DevInt root(DevInt number, DevInt root) { if (number == 0) return 0; Console.WriteLine("number = " + number + "\nroot = " + root); DevInt low = DevInt.root(DevInt.rightShift(number,root), root) << 1; DevInt high = low + 1; return DevInt.pow(high, root) > number ? low : high; }