62 |
} |
} |
63 |
} |
} |
64 |
|
|
65 |
|
object |
66 |
|
fixnum_times(fixnum i, fixnum j) { |
67 |
|
|
68 |
|
if (i>=0) { |
69 |
|
if (j>=0) { |
70 |
|
if (!i || j<= (MOST_POSITIVE_FIX/i)) |
71 |
|
goto FIX; |
72 |
|
} else { |
73 |
|
if (j==-1 || i<= (MOST_NEGATIVE_FIX/j)) |
74 |
|
goto FIX; |
75 |
|
} |
76 |
|
} else { |
77 |
|
if (j>=0) { |
78 |
|
if (i==-1 || j<= (MOST_NEGATIVE_FIX/i)) |
79 |
|
goto FIX; |
80 |
|
} else { |
81 |
|
if (-i<= (MOST_POSITIVE_FIX/-j)) |
82 |
|
goto FIX; |
83 |
|
} |
84 |
|
} |
85 |
|
MPOP(return,mulss,i,j); |
86 |
|
FIX: |
87 |
|
return make_fixnum(i*j); |
88 |
|
} |
89 |
|
|
90 |
|
/* return i - j */ |
91 |
/* static object */ |
/* static object */ |
92 |
/* fixnum_times(int i, int j) */ |
/* fixnum_times(int i, int j) */ |
93 |
/* { */ |
/* { */ |
615 |
case t_fixnum: |
case t_fixnum: |
616 |
switch (type_of(y)) { |
switch (type_of(y)) { |
617 |
case t_fixnum: |
case t_fixnum: |
618 |
MPOP(return,mulss,fix(x),fix(y)); |
return fixnum_times(fix(x),fix(y)); |
619 |
|
/* MPOP(return,mulss,fix(x),fix(y)); */ |
620 |
case t_bignum: |
case t_bignum: |
621 |
MPOP(return,mulsi,fix(x),MP(y)); |
MPOP(return,mulsi,fix(x),MP(y)); |
622 |
case t_ratio: |
case t_ratio: |