2009-systeme-exploitation-g.../src/modules/algo/math/math.c
Georges Dupéron ed1e0cf4c8 Initial commit.
2011-04-15 01:14:48 +02:00

40 lines
634 B
C

#include <module.h>
#include <types.h>
#include <algo/math/math.h>
MODULE(Math);
/* denominateur < 2^63 */
Div64 div64 (uint64 numerateur, uint64 denominateur) {
uint64 reste = 0;
uint64 quotient = 0;
Div64 resultat;
int i;
for (i = 0; i < 64; i++) {
quotient <<= 1;
reste <<= 1;
reste |= (numerateur & 0x8000000000000000L) ? 1 : 0;
numerateur <<= 1;
if (reste >= denominateur) {
quotient |= 1;
reste -= denominateur;
}
}
resultat.quotient = quotient;
resultat.reste = reste;
return resultat;
}
void initMath (void** etat) {
*etat = etatMath;
}
void deinitMath (void** etat) {
*etat = NULL;
}