Project

General

Profile

Revision 8cc55e2c doc/integer_division.org

View differences:

doc/integer_division.org
26 26

  
27 27
* From C to Euclidian
28 28

  
29
a mod_M b = (a mod_C b) + (a < 0 ? abs(b) : 0) 
29
a mod_M b = (a mod_C b) + (a mod_C b < 0 ? abs(b) : 0) 
30 30

  
31 31
a div_M b = (a - (a mod_M b)) div_C b
32
          = (a - ((a mod_C b) + (a < 0 ? abs(b) : 0))) div_C b
32
          = (a - ((a mod_C b) + (a mod_C b < 0 ? abs(b) : 0))) div_C b
33 33

  
34 34
* From Euclidian to C
35 35

  
36 36
a mod_C b = (a >= 0 ? a mod_M b : - ((-a) mod_M b)) 
37 37
            (using math def to ensure positiveness of remainder))
38
          = (a mod_M b) - (a < 0 ? abs(b) : 0)
38
          = (a mod_M b) - (a mod_C < 0 ? abs(b) : 0)
39
          = a mod_M b - ((a mod_M b <> 0 && a <= 0) ? abs(b) : 0)
39 40
            (using the def of mod_M above)
40 41

  
41 42
a div_C b = (a - (a mod_C b)) div_M b
42
          = (a - ((a mod_M b) - (a < 0 ? abs(b) : 0))) div_M b
43 43
          
44
Let's chosse the second, simpler, def of mod_C
44
Let's choose the second, simpler, def of mod_C
45 45

  

Also available in: Unified diff