make use of pre_cancelled flag to make_ratio - gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2013年10月17日 16:31:55 +0000
committerCamm Maguire <camm@debian.org>2013年10月17日 16:31:55 +0000
commit7c442a2e2b13d4e0111ab09ce415caf9c29e685f (patch)
tree9c979e0881146b151a49409d67bff05dd9467e78
parent34c3c9170463f7cd52b882bc00df214e7622acbf (diff)
downloadgcl-7c442a2e2b13d4e0111ab09ce415caf9c29e685f.tar.gz
make use of pre_cancelled flag to make_ratio
Diffstat
-rwxr-xr-xgcl/o/num_arith.c 6
-rwxr-xr-xgcl/o/num_sfun.c 9
2 files changed, 3 insertions, 12 deletions
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;
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月06日 02:49:51 +0000

AltStyle によって変換されたページ (->オリジナル) /