Home
Accesso / Registrazione
 di 

Come fare il logaritmo di un numero

4 risposte [Ultimo post]
ritratto di Vittorio Crapella
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
27 settimane 21 ore fa
Utente dal: 21/09/2011
Messaggi: 281

Mentre conosco il metodo in assembler per implementare la radice quadrata, non conosco e non ho mai visto un pezzo di sorgente o una spiegazione del principio di come fare il logaritmo di un numero con istruzioni in linguaggio macchina..
Chi mi sa illuminare ? grazie

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
10 settimane 6 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
Bisogna implementare la serie

Bisogna implementare la serie di potenze del logaritmo cm ad esempio é stato fatto qui....
http://phimuemue.wordpress.com/2009/06/08/logarithm-of-float-numbers/

Poi ovviamente se lo vuoi fare in base due le cose si semplificano ragionando con gli shift a destra..

ritratto di Vittorio Crapella
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
27 settimane 21 ore fa
Utente dal: 21/09/2011
Messaggi: 281
Ti ringrazio per il link

Ti ringrazio per il link segnalatomi..
poi lo guarderò con calma e spero di comprendere bene il meccanismo ..
ma con gli schift a destra non si fanno le divisioni e a sinistra le moltiplicazioni x 2

ritratto di Fabrizio87
Offline
Titolo: User++
Utente++
Ultima visita:
1 anno 44 settimane fa
Utente dal: 30/01/2011
Messaggi: 91
Io un metodo un po'

Io un metodo un po' diverso,

Visto che avevo necessità di incrementare una funzione un po' complessa matematicamente all'interno di un micro ho analizzato la situazione così visto che all'ingresso della funzione sapevo che poteva entrare valori solo 0 a 255 ho pensato incrementare una tabella che avrei calcolato in anticipo sul mio computer,
e dopo con un po' d'istruzione semplice ritrovare il valore nella tabella che avrei messa in una EEPROM,
così velocizzato moltissimo l'algoritmo visto che funzionava solo 4 MHz,

Dopo esiste un'altra soluzione un po' più avanzataè incrementare un coprocessore algoritmico,
questo basta collegarlo a tramite il bus I2C E lui si occupa di fare tutte le pazzie complesse e rimandare il risultato di indietro utilissimo ad esempio dei dispositivi che devono eseguire una grossa mole di calcoli con potenze ridotte.

Inoltre facendo degli schift a destra o sinistra più volte successive o di moltiplicare per potenze di 2

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
1 settimana 6 giorni fa
Utente dal: 21/03/2011
Messaggi: 195
Il metodo che elenchi tu

Il metodo che elenchi tu Fabrizio87 è sicuramente veloce ma non molto pratico se ti trovi a dover calcolare logaritmi con numeri più grandi di 255.
Se non ho capito male, quello che fai tu è di tabellarti tutti i valori del logaritmo calcolato per 256 valori che vanno da "0" (anche se non lo puoi fare) fino a 255 giusto? questi valori sono salvati all'interno di una eeprom che leggi ogni volta che devi calcolare il logaritmo, leggendo il valore all'indirizzo corrispondente.

Se ti trovi a dover modificare l'algoritmo del calcolo del logaritmo e per esempio devi eseguire un calcolo di un numero a 16 bit, non avrai più solo 256 valori da memorizzare ma 65536, operazione un po laboriosa da fare a mano.

La tua idea è sicuramente valida e veloce ma credo che l'algoritmo proposto da divivoma sia più malleabile e più facile da modificare nel caso in cui sono richieste specifiche diverse.
E poi fa sempre piacere imbattersi in certi "giochetti di logica" :)

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti