PDA

Visualizza Versione Completa : Per i cazzuti del forum, calcolare 1/x su ATMEGA



gnappinox1
13-07-17, 08:36
Come da titolo, ho cercato su google, ma non trovo niente di che, qualcuno sa consigliarmi l'algoritmo più veloce per calcolare 1/x su un Atmega ad 8 bit?

Chi mi da una mano otterrà via PM delle foto di HoneyPie nuda :sisi: :fag:

koba44
13-07-17, 08:41
Una lookup table da 255 posti. O(1).

Lo Zio
13-07-17, 08:44
1) che cazzo è un atmega ad 8 bit
2) che linguaggio di programmazione?

gnappinox1
13-07-17, 08:47
Una lookup table da 255 posti. O(1).

Grazie, anche se i posti che mi servono sono circa un migliaio, ma diciamo che la lookup table, vorrei usarla come seconda chance perché si fotterà un bel po' di memoria, cercavo un algoritmo, anche impreciso :sisi:

- - - Aggiornato - - -


1) che cazzo è un atmega ad 8 bit
2) che linguaggio di programmazione?

https://upload.wikimedia.org/wikipedia/commons/a/a9/ATmega8_01_Pengo.jpg
In c, ma il linguaggio non è importante, cerco un algoritmo :sisi:

Mad_One
13-07-17, 08:58
cerca asm bit arithmetic e studia

Fruttolo
13-07-17, 09:20
Ah buh fai in loop di sottrazioni.

koba44
13-07-17, 10:06
In c, ma il linguaggio non è importante, cerco un algoritmo :sisi:

C'è un po' da studiare ma come soluzione generale c'è questa, pagina 920 funzione mpinv.

http://www.aip.de/groups/soe/local/numres/bookcpdf/c20-6.pdf

Si lavora in base 256 con un numero rappresentato da stringhe di byte.

Ma visto che il tuo range di valori è limitato a 1024 valori, la dimensione della stringa di ottetti è costante per cui puoi espandere i loop.

gnappinox1
13-07-17, 11:05
Grande Koba, per ora ho "sistemato" il problema con un look-up table non ordinaria.
In pratica devo calcolare i tempi dei passi di una rampa d'accelerazione, i valori variano molto all'inizio, per poi variare molto di meno verso la fine.
In questo modo le 1024 posizioni disponibili li ho suddivisi così
da 0 a 300 -> Valore diretto
da 300 a 600 -> Valore a passi di 2
da 600 a 1024 -> Valore a passi di 4

In questo modo ottengo una look up table di 2596 valori usandone una di 1024
Tutto fila liscio come l'olio per ora.

Devo solo fare dei test per vedere se si fotte qualcosa cambiando di molto i valori