Ho bisogno di valutare un logaritmo di qualsiasi base, non importa, con una certa precisione. C'è un algoritmo per questo? Programmo in Java, quindi sto bene con il codice Java.Algoritmo logaritmo
How to find a binary logarithm very fast? (O(1) at best) potrebbe essere in grado di rispondere alla mia domanda, ma non lo capisco. Può essere chiarito?
I trucchi menzionati in questa domanda sfruttano il modo in cui i numeri vengono memorizzati nella memoria. Faresti meglio a fare affidamento sui metodi di Math (o BigInteger/BigDecimal) se non comprendi pienamente questi trucchi. Ad ogni modo, sfruttano il fatto che i numeri sono internamente rappresentati molto vicino alla loro rappresentazione nella base 2. In Java non ci sono sindacati, invece si ottengono i bit grezzi di un doppio tramite [Double.doubleToRawLongBits] (http: // docs .oracle.com/JavaSE/6/docs/api/java/lang/Double.html # doubleToRawLongBits (doppio)). – ignis
BigInteger e BigDecimal non contengono metodi di registro. – Justin
esattamente. per ints usa quel ovvio spostamento di bit in un ciclo contato. – vaxquis