www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 }