-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; |