* numbers.c (logand, logior, logxor): Handle 0 or 1 arguments.
This commit is contained in:
parent
30d732a682
commit
d28da0496e
2 changed files with 42 additions and 8 deletions
|
|
@ -1,3 +1,7 @@
|
|||
Mon Sep 1 22:30:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
|
||||
|
||||
* numbers.c (logand, logior, logxor): Handle 0 or 1 arguments.
|
||||
|
||||
Sat Aug 30 18:56:19 1997 Gary Houston <ghouston@actrix.gen.nz>
|
||||
|
||||
* unif.c (scm_shap2ra): tighten the checking of the array dimension
|
||||
|
|
|
|||
|
|
@ -414,8 +414,14 @@ scm_logand(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
return scm_long2num(scm_num2long(n1, (char *)SCM_ARG1, s_logand)
|
||||
& scm_num2long(n2, (char *)SCM_ARG2, s_logand));
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_MAKINUM (-1);
|
||||
return n1;
|
||||
}
|
||||
return scm_long2num (scm_num2long(n1, (char *)SCM_ARG1, s_logand)
|
||||
& scm_num2long(n2, (char *)SCM_ARG2, s_logand));
|
||||
}
|
||||
|
||||
SCM_PROC1 (s_logior, "logior", scm_tc7_asubr, scm_logior);
|
||||
|
|
@ -425,6 +431,12 @@ scm_logior(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_INUM0;
|
||||
return n1;
|
||||
}
|
||||
return scm_long2num(scm_num2long(n1, (char *)SCM_ARG1, s_logior)
|
||||
| scm_num2long(n2, (char *)SCM_ARG2, s_logior));
|
||||
}
|
||||
|
|
@ -436,6 +448,12 @@ scm_logxor(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_INUM0;
|
||||
return n1;
|
||||
}
|
||||
return scm_long2num(scm_num2long(n1, (char *)SCM_ARG1, s_logxor)
|
||||
^ scm_num2long(n2, (char *)SCM_ARG2, s_logxor));
|
||||
}
|
||||
|
|
@ -474,8 +492,12 @@ scm_logand(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
SCM_ASSERT(SCM_INUMP(n1), n1, SCM_ARG1, s_logand);
|
||||
SCM_ASSERT(SCM_INUMP(n2), n2, SCM_ARG2, s_logand);
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_MAKINUM (-1);
|
||||
return n1;
|
||||
}
|
||||
return SCM_MAKINUM(SCM_INUM(n1) & SCM_INUM(n2));
|
||||
}
|
||||
|
||||
|
|
@ -486,8 +508,12 @@ scm_logior(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
SCM_ASSERT(SCM_INUMP(n1), n1, SCM_ARG1, s_logior);
|
||||
SCM_ASSERT(SCM_INUMP(n2), n2, SCM_ARG2, s_logior);
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_INUM0;
|
||||
return n1;
|
||||
}
|
||||
return SCM_MAKINUM(SCM_INUM(n1) | SCM_INUM(n2));
|
||||
}
|
||||
|
||||
|
|
@ -498,8 +524,12 @@ scm_logxor(n1, n2)
|
|||
SCM n1;
|
||||
SCM n2;
|
||||
{
|
||||
SCM_ASSERT(SCM_INUMP(n1), n1, SCM_ARG1, s_logxor);
|
||||
SCM_ASSERT(SCM_INUMP(n2), n2, SCM_ARG2, s_logxor);
|
||||
if SCM_UNBNDP (n2)
|
||||
{
|
||||
if (SCM_UNBNDP (n1))
|
||||
return SCM_INUM0;
|
||||
return n1;
|
||||
}
|
||||
return SCM_MAKINUM(SCM_INUM(n1) ^ SCM_INUM(n2));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue