math.c (634B)
1 #include <module.h> 2 #include <types.h> 3 #include <algo/math/math.h> 4 5 MODULE(Math); 6 7 /* denominateur < 2^63 */ 8 Div64 div64 (uint64 numerateur, uint64 denominateur) { 9 uint64 reste = 0; 10 uint64 quotient = 0; 11 Div64 resultat; 12 13 int i; 14 for (i = 0; i < 64; i++) { 15 quotient <<= 1; 16 reste <<= 1; 17 reste |= (numerateur & 0x8000000000000000L) ? 1 : 0; 18 numerateur <<= 1; 19 if (reste >= denominateur) { 20 quotient |= 1; 21 reste -= denominateur; 22 } 23 } 24 25 resultat.quotient = quotient; 26 resultat.reste = reste; 27 28 return resultat; 29 } 30 31 32 33 void initMath (void** etat) { 34 *etat = etatMath; 35 } 36 37 void deinitMath (void** etat) { 38 *etat = NULL; 39 }