@@ -702,6 +702,8 @@ register pointer argv[];
702
702
for (i=0; i<n; i++) fprintf(stderr, "%x ", argv[i]);
703
703
fprintf(stderr, "\n"); */
704
704
705
+ if (n == 0 ) return (makeint (1 ));
706
+
705
707
i = 1 ;
706
708
a = argv [0 ];
707
709
if (isint (a )) { is = intval (a ); goto ITIMES ;}
@@ -815,9 +817,7 @@ pointer argv[];
815
817
else if (pisbignum (a )) { rs = copy_big (a ); goto bquo ;}
816
818
else error (E_NONUMBER );
817
819
818
- if (n == 1 ) {
819
- fs = fltval (a );
820
- return (makeflt (1.0 /fs ));}
820
+ if (n == 1 ) return (makeflt (1.0 /is ));
821
821
822
822
while (i < n ) {
823
823
a = argv [i ];
@@ -1159,6 +1159,8 @@ pointer LOGAND(context *ctx, int n, pointer argv[])
1159
1159
eusinteger_t * rbv , * bbv , * pbv ;
1160
1160
pointer b ,p ,r = argv [0 ];
1161
1161
1162
+ if (n == 0 ) return (makeint (~0 ));
1163
+
1162
1164
if (isbignum (r )) {
1163
1165
r = copy_big (r ); rsize = bigsize (r ); rbv = bigvec (r );
1164
1166
p = argv [i ++ ];
@@ -1373,11 +1375,11 @@ pointer argv[];
1373
1375
#else
1374
1376
register unsigned int val ,target ,mask = ~0 ;
1375
1377
#endif
1376
- ckarg ( 4 );
1378
+ ckarg2 ( 3 , 4 );
1377
1379
val = ckintval (argv [0 ]);
1378
1380
target = ckintval (argv [1 ]);
1379
1381
pos = ckintval (argv [2 ]);
1380
- width = ckintval (argv [3 ]);
1382
+ if ( n == 4 ) width = ckintval (argv [3 ]);
1381
1383
mask = mask <<(WORD_SIZE - (pos + width ));
1382
1384
mask = mask >>(WORD_SIZE - width );
1383
1385
val &= mask ;
0 commit comments