30 |
void |
void |
31 |
zero_divisor(void); |
zero_divisor(void); |
32 |
|
|
33 |
object fixnum_add(int i, int j) |
object fixnum_add(fixnum i, fixnum j) |
34 |
{ |
{ |
35 |
|
|
36 |
if (i>=0) |
if (i>=0) |
37 |
{ if (j<= (MOST_POSITIVE_FIX-i)) |
{ if (j<= (MOST_POSITIVE_FIX-i)) |
38 |
{ MYmake_fixnum(return,i+j); |
{ return make_fixnum(i+j); |
39 |
} |
} |
40 |
MPOP(return,addss,i,j); |
MPOP(return,addss,i,j); |
41 |
} else { /* i < 0 */ |
} else { /* i < 0 */ |
42 |
if ((MOST_NEG_FIXNUM -i) <= j) { |
if ((MOST_NEGATIVE_FIX -i) <= j) { |
43 |
MYmake_fixnum(return,i+j); |
return make_fixnum(i+j); |
44 |
} |
} |
45 |
MPOP(return,addss,i,j); |
MPOP(return,addss,i,j); |
46 |
} |
} |
47 |
} |
} |
48 |
/* return i - j */ |
/* return i - j */ |
49 |
object fixnum_sub(int i, int j) |
object fixnum_sub(fixnum i, fixnum j) |
50 |
{ |
{ |
51 |
|
|
52 |
if (i>=0) |
if (i>=0) |
53 |
{ if (j >= (i - MOST_POSITIVE_FIX)) |
{ if (j >= (i - MOST_POSITIVE_FIX)) |
54 |
{ MYmake_fixnum(return,i-j); |
{ return make_fixnum(i-j); |
55 |
} |
} |
56 |
MPOP(return,subss,i,j); |
MPOP(return,subss,i,j); |
57 |
} else { /* i < 0 */ |
} else { /* i < 0 */ |
58 |
if ((MOST_NEG_FIXNUM -i) <= -j) { |
if ((MOST_NEGATIVE_FIX -i) <= -j) { |
59 |
MYmake_fixnum(return,i-j); |
return make_fixnum(i-j); |
60 |
} |
} |
61 |
MPOP(return,subss,i,j); |
MPOP(return,subss,i,j); |
62 |
} |
} |
320 |
case t_fixnum: |
case t_fixnum: |
321 |
|
|
322 |
if (fix(x)< MOST_POSITIVE_FIX-1) { |
if (fix(x)< MOST_POSITIVE_FIX-1) { |
323 |
MYmake_fixnum(return,fix(x)+1); |
return make_fixnum(fix(x)+1); |
324 |
} |
} |
325 |
MPOP(return,addss,1,fix(x)); |
MPOP(return,addss,1,fix(x)); |
326 |
case t_bignum: |
case t_bignum: |