I'm having some trouble calculating the result of an 8-digit number to the power of a 3-digit number programmatically in Objective-C.
Take these numbers, for instance: 16468920^258
, which should result in a number that is 1862 digits in length.
I naïvely tried:
unsigned long long result = 1;
for (int i = 0; i < 258; i++)
result *= 16468920;
…but result
outputs 0
.
Then I tried:
long double result = powl(16468920, 258);
…but result
outputs inf
.
After finding out about NSDecimal, I tried this:
NSDecimal result;
NSDecimal number = [[NSDecimalNumber decimalNumberWithString:@"16468920"] decimalValue];
NSDecimalPower(&result, &number, 258, NSRoundPlain);
…but result
outputs NaN
, so I tried:
NSDecimalNumber *number = [[NSDecimalNumber alloc] initWithInt:16468920];
NSDecimalNumber *result = [number decimalNumberByRaisingToPower:258];
…but this code raises an NSDecimalNumberOverflowException
.
Any pointers as to which direction I should be going?