return result;
}
-int64_t util64_pow(int32_t base, uint16_t exponent) {
+uint64_t util64_pow(uint32_t base, uint16_t exponent) {
if (base == 0) {
return 0;
}
- int64_t result = 1;
- int64_t pow = base;
+ uint64_t result = 1;
+ uint64_t pow = base;
while (exponent > 0) {
if ((exponent & 1) == 1) {
result *= pow;
/* U_HAVE_RBNF */
#endif
-
int64_t util64_fromDouble(double d);
// raise radix to the power exponent, only non-negative exponents
-int64_t util64_pow(int32_t radix, uint16_t exponent);
+// Arithmetic is performed in unsigned space since overflow in
+// signed space is undefined behavior.
+uint64_t util64_pow(uint32_t radix, uint16_t exponent);
// convert n to digit string in buffer, return length of string
uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
// NFRS_H
#endif
-