author | Camm Maguire <camm@debian.org> | 2013年10月17日 16:31:55 +0000 |
---|---|---|
committer | Camm Maguire <camm@debian.org> | 2013年10月17日 16:31:55 +0000 |
commit | 7c442a2e2b13d4e0111ab09ce415caf9c29e685f (patch) | |
tree | 9c979e0881146b151a49409d67bff05dd9467e78 | |
parent | 34c3c9170463f7cd52b882bc00df214e7622acbf (diff) | |
download | gcl-7c442a2e2b13d4e0111ab09ce415caf9c29e685f.tar.gz |
-rwxr-xr-x | gcl/o/num_arith.c | 6 | ||||
-rwxr-xr-x | gcl/o/num_sfun.c | 9 |
diff --git a/gcl/o/num_arith.c b/gcl/o/num_arith.c index ff61e26ba..16739849c 100755 --- a/gcl/o/num_arith.c +++ b/gcl/o/num_arith.c @@ -554,11 +554,7 @@ number_negate(object x) case t_bignum: return big_minus(x); case t_ratio: - z1 = number_negate(x->rat.rat_num); - z = alloc_object(t_ratio); - z->rat.rat_num = z1; - z->rat.rat_den = x->rat.rat_den; - return(z); + return make_ratio(number_negate(x->rat.rat_num),x->rat.rat_den,1); case t_shortfloat: z = alloc_object(t_shortfloat); diff --git a/gcl/o/num_sfun.c b/gcl/o/num_sfun.c index db57cc9f8..6de4b7183 100755 --- a/gcl/o/num_sfun.c +++ b/gcl/o/num_sfun.c @@ -163,12 +163,7 @@ number_ui_expt(object x,fixnum fy) { case t_bignum: MPOP(return,mpz_pow_ui,MP(x),fy); case t_ratio: - { - object n=number_ui_expt(x->rat.rat_num,fy),d=number_ui_expt(x->rat.rat_den,fy),z=alloc_object(t_ratio); - z->rat.rat_num=n; - z->rat.rat_den=d;/*No need to make_ratio as no common factors*/ - return z; - } + return make_ratio(number_ui_expt(x->rat.rat_num,fy),number_ui_expt(x->rat.rat_den,fy),1); case t_shortfloat: case t_longfloat: @@ -397,7 +392,7 @@ number_abs(object x) { return big_sign(x)<0 ? big_minus(x) : x; case t_ratio: - {object n=number_abs(x->rat.rat_num);return n==x ? x : make_ratio(n,x->rat.rat_den);} + {object n=number_abs(x->rat.rat_num);return n==x ? x : make_ratio(n,x->rat.rat_den,1);} case t_shortfloat: return sf(x)<0.0 ? make_shortfloat(-sf(x)) : x; |