Diff for /gforth/prim between versions 1.198 and 1.199

version 1.198, 2006/10/22 16:54:00 version 1.199, 2006/10/22 20:45:34
Line 844  if (FLOORED_DIV && ((n1^n2) < 0) && n3!= Line 844  if (FLOORED_DIV && ((n1^n2) < 0) && n3!=

*/mod   ( n1 n2 n3 -- n4 n5 )   core    star_slash_mod  */mod   ( n1 n2 n3 -- n4 n5 )   core    star_slash_mod
""n1*n2=n3*n5+n4, with the intermediate result (n1*n2) being double.""  ""n1*n2=n3*n5+n4, with the intermediate result (n1*n2) being double.""
DCell d5;
#ifdef BUGGY_LL_MUL  #ifdef BUGGY_LL_MUL
DCell d = mmul(n1,n2);  DCell d = mmul(n1,n2);
#else  #else
Line 856  n4=DHI(r); Line 855  n4=DHI(r);
n5=DLO(r);  n5=DLO(r);
#else  #else
/* assumes that the processor uses either floored or symmetric division */  /* assumes that the processor uses either floored or symmetric division */
d5 = d/n3;  DCell d5 = d/n3;
n4 = d%n3;  n4 = d%n3;
if (CHECK_DIVISION && n3 == 0)  if (CHECK_DIVISION && n3 == 0)
throw(BALL_DIVZERO);    throw(BALL_DIVZERO);
Line 873  if (d5 != n5) Line 872  if (d5 != n5)

*/      ( n1 n2 n3 -- n4 )      core    star_slash  */      ( n1 n2 n3 -- n4 )      core    star_slash
""n4=(n1*n2)/n3, with the intermediate result being double.""  ""n4=(n1*n2)/n3, with the intermediate result being double.""
DCell d4;
#ifdef BUGGY_LL_MUL  #ifdef BUGGY_LL_MUL
DCell d = mmul(n1,n2);  DCell d = mmul(n1,n2);
#else  #else
Line 884  DCell r = fmdiv(d,n3); Line 882  DCell r = fmdiv(d,n3);
n4=DLO(r);  n4=DLO(r);
#else  #else
/* assumes that the processor uses either floored or symmetric division */  /* assumes that the processor uses either floored or symmetric division */
d4 = d/n3;  DCell d4 = d/n3;
if (CHECK_DIVISION && n3 == 0)  if (CHECK_DIVISION && n3 == 0)
throw(BALL_DIVZERO);    throw(BALL_DIVZERO);
if (FLOORED_DIV && ((DHI(d)^n3)<0) && (d%n3)!=0)  if (FLOORED_DIV && ((DHI(d)^n3)<0) && (d%n3)!=0)

 Removed from v.1.198 changed lines Added in v.1.199

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>