Primero lea this article. Contiene lo que quieres hacer.
Luego, resuelva la expansión de fracción continua de dividendo/divisor, y deténgase cuando alcance la precisión deseada. No necesitará la operación de división costosa completa (supongo que es O (n log^2 n) o algo así), solo necesitará división/resto entero.
Sin embargo, siempre que BigInteger.Log devuelva los dobles, la operación exp (log a/log b) funcionará muy bien, y creo que puede ser más rápido que la expansión continua de fracciones. Necesita dos conversiones para duplicar (probablemente rápido), y la precisión se conserva durante toda la operación (incluso si el divisor de registro y el dividendo de registro están muy cerca el uno del otro).
¡es probable que no! Si quieres dobles al final, creo que es la mejor manera de hacerlo. Si desea números de coma flotante de precisión arbitraria, lea mi respuesta. Todo esto se proporciona BigInteger.Log genera dobles. –
Quizás pueda usar el tipo F # bignum; ellos apoyan la división directamente. – Jules