Fixed modulo function which affected 'random' procedure. (See bug #647541)

This commit is contained in:
Kevin Cozens
2011-04-13 13:38:04 -04:00
parent f64ff09d4b
commit f1c20cb165

View File

@ -516,12 +516,14 @@ static num num_mod(num a, num b) {
e1=num_ivalue(a);
e2=num_ivalue(b);
res=e1%e2;
if(res*e2<0) { /* modulo should have same sign as second operand */
e2=labs(e2);
if(res>0) {
res-=e2;
} else {
res+=e2;
/* modulo should have same sign as second operand */
if (res > 0) {
if (e2 < 0) {
res*=-1L;
}
} else {
if (e2 > 0) {
res*=-1L;
}
}
ret.value.ivalue=res;