Sto cercando di implementare l'operazione di riduzione del campo per la trigonometria. Ma invece penso che potrebbe essere meglio eseguire semplicemente un'operazione modulo pi/2 sui dati in entrata. Mi chiedevo quali algoritmi esistono e sono efficienti per questa operazione per IEEE 754 a virgola mobile a 32 bit?Funzionamento modulo Floating Point
Devo implementarlo in assembly, quindi fmod, divisione, moltiplicazione, ecc. Non sono disponibili con un'unica istruzione. Il mio processore usa parole a 16 bit e ho implementato addizione a virgola mobile a 32 bit, sottrazione, moltiplicazione, divisione, radice quadrata, coseno e seno. Ho solo bisogno di ridurre la gamma (modulo) per l'immissione di valori a coseno e seno.
In realtà ci sono un sacco di algoritmi intelligenti per esempio google per "riduzione del range di payne hanek", ma penso che non sia quello che vuoi – hirschhornsalz
Il documento di Ng a cui ti sei collegato in una precedente domanda correlata spiega in realtà il Payne-Hanek algoritmo, che AFAIK è ancora lo stato dell'arte per una riduzione del range accurata. Devi solo adattarlo alla precisione singola. – janneb
@Everyone, cancellare/modificare la risposta in modo che si applichi alla mia domanda effettiva. Sto cercando l'algoritmo all'interno di un modulo a virgola mobile. Devo implementare ciò che fa fmod e minimizzare il numero di divisioni che eseguo. – Veridian