--- gforth/prim 2002/12/13 15:49:53 1.104 +++ gforth/prim 2002/12/16 20:40:10 1.106 @@ -1288,7 +1288,8 @@ while(u1--) ASCII strings (larger if ubits is large), and should share no divisors with ubits. */ -unsigned rot = ((char []){5,0,1,2,3,4,5,5,5,5,3,5,5,5,5,7,5,5,5,5,7,5,5,5,5,6,5,5,5,5,7,5,5})[ubits]; +static char rot_values[] = {5,0,1,2,3,4,5,5,5,5,3,5,5,5,5,7,5,5,5,5,7,5,5,5,5,6,5,5,5,5,7,5,5}; +unsigned rot = rot_values[ubits]; Char *cp = c_addr; for (ukey=0; cp>(ubits-rot))) @@ -1808,16 +1809,9 @@ floor ( r1 -- r2 ) float /* !! unclear wording */ r2 = floor(r1); -(fround) ( r1 -- r2 ) gforth paren_f_round -""Round to the nearest integral value. Primitive variant (unused)"" -/* !! eliminate this as primitive? */ -/* !! unclear wording */ -#ifdef HAVE_RINT +fround ( r1 -- r2 ) gforth f_round +""Round to the nearest integral value."" r2 = rint(r1); -#else -r2 = floor(r1+0.5); -/* !! This is not quite true to the rounding rules given in the standard */ -#endif fmax ( r1 r2 -- r3 ) float f_max if (r1