blob: 4cb363b5111a50a8c4be46cebba3d581ee0e9420 [file] [log] [blame]
Rachel Dowdall2d15dee2014-03-22 20:29:56 +00001#include "mpconfig.h"
2
3machine_int_t python_modulo(machine_int_t dividend, machine_int_t divisor) {
4 machine_int_t lsign = (dividend >= 0) ? 1 :-1;
5 machine_int_t rsign = (divisor >= 0) ? 1 :-1;
6 dividend %= divisor;
7 if (lsign != rsign) {
8 dividend += divisor;
9 }
10 return dividend;
11}
12
13
14machine_int_t python_floor_divide(machine_int_t num, machine_int_t denom) {
15 machine_int_t lsign = num > 0 ? 1 : -1;
16 machine_int_t rsign = denom > 0 ? 1 : -1;
17 if (lsign == -1) {num *= -1;}
18 if (rsign == -1) {denom *= -1;}
19 if (lsign != rsign){
20 return - ( num + denom - 1) / denom;
21 } else {
22 return num / denom;
23 }
24}