Prima lettura this article. Contiene ciò che vuoi fare.
Quindi, calcolare l'espansione della frazione continua del dividendo/divisore e fermarsi quando si raggiunge la precisione desiderata. Non ti servirà l'intera costosa operazione di divisione (suppongo che sia O (n log^2 n) o qualcosa del genere), avrai bisogno solo della divisione intera/resto.
Tuttavia, se BigInteger.Log restituisce i doppi, la cosa exp (log a/log b) funzionerà alla grande, e penso che potrebbe essere più veloce dell'espansione della frazione continua. Hai bisogno di raddoppiare due conversioni (probabilmente veloce) e l'accuratezza viene preservata durante l'operazione (anche se il divisore di registro e il dividendo del registro sono molto vicini tra loro).
fonte
2011-01-13 11:41:12
non è probabile! Se vuoi il doppio alla fine, penso che sia il modo migliore per andare. Se vuoi numeri in virgola mobile di precisione arbitraria, leggi la mia risposta. Tutto questo è fornito BigInteger.Log genera doppi. –
Forse puoi usare il tipo bignum F #; supportano direttamente la divisione. – Jules