У меня есть экспоненциальная функция x ^ n, где x - это число от 0 до 1, а n - большое целое число (обычно> 100). Предположим, что нет ошибки округления для x и n, когда они представлены числом двойной точности. Как я могу эффективно рассчитать числа в диапазоне цифр для x ^ n? Например, я хочу получить только цифры в двух тысячах и первых десятичных разрядах для 0,123 ^ 1000.
Я знаю, что высокоточная библиотека, такая как MPFR, прекрасно справляется с этой задачей, но она значительно медленнее, чем вычисления с двойной точностью. Поскольку мне не нужны все числа в числе, я ищу более эффективный способ сделать это, но я понятия не имею об этом. Будем благодарны за любые предложения или советы.
==================== update1 =============== =====
Спасибо за комментарии и ответы всех ваших парней, я заметил, что пример в вопросе может быть неуместным, потому что число все еще недостаточно мало, чтобы вызвать усечение, поэтому я изменяю его на 0.123 ^ 1000.
Для тех, кто предпочитает видеть какой-то реальный код, я сделал воспроизводимый пример в R
x <- 0.123^1000
sprintf("%.10e",x)
y <- mpfr(0.123,precBits = 10000)^1000
y
x - число с двойной точностью, и результат равен 0, y является числом с точностью до 10000 битов и может фактически показывать номер результата в 2001-м десятичном виде git. Обратите внимание, что первые несколько (может быть, много) значащих цифр, как правило, не представляют интереса, то есть, если истинный ответ экспоненциальной функции равен 0,123 + 4 * 10 ^ 10000, я бы заинтересовался этой "4", а не любые числа в 1,2,3. Вот почему высокоточная библиотека здесь может не подходить, поскольку она будет выполнять много ненужных вычислений.