Fixed a couple of bugs that I introduced in previous revision.
This commit is contained in:
parent
15ea12f915
commit
993a3ad6c4
|
@ -1 +1 @@
|
||||||
1303
|
1304
|
||||||
|
|
|
@ -156,7 +156,7 @@ ikrt_fxbnplus(ikptr x, ikptr y, ikpcb* pcb){
|
||||||
long int limb_count = bnfst_limb_count(fst);
|
long int limb_count = bnfst_limb_count(fst);
|
||||||
long int intx = unfix(x);
|
long int intx = unfix(x);
|
||||||
if(intx > 0){
|
if(intx > 0){
|
||||||
if(bnfst_negative(fst)){
|
if(!bnfst_negative(fst)){
|
||||||
/* positive fx + positive bn = even bigger positive */
|
/* positive fx + positive bn = even bigger positive */
|
||||||
pcb->root0 = &y;
|
pcb->root0 = &y;
|
||||||
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+(limb_count+1)*wordsize));
|
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+(limb_count+1)*wordsize));
|
||||||
|
@ -218,7 +218,7 @@ ikrt_fxbnplus(ikptr x, ikptr y, ikpcb* pcb){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(bnfst_negative(fst)){
|
if(! bnfst_negative(fst)){
|
||||||
/* negative fx + positive bn = smaller positive */
|
/* negative fx + positive bn = smaller positive */
|
||||||
pcb->root0 = &y;
|
pcb->root0 = &y;
|
||||||
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+limb_count*wordsize));
|
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+limb_count*wordsize));
|
||||||
|
@ -442,7 +442,7 @@ ikrt_bnnegate(ikptr x, ikpcb* pcb){
|
||||||
ikptr fst = ref(x, -vector_tag);
|
ikptr fst = ref(x, -vector_tag);
|
||||||
long int limb_count = bnfst_limb_count(fst);
|
long int limb_count = bnfst_limb_count(fst);
|
||||||
if(limb_count == 1){
|
if(limb_count == 1){
|
||||||
if(bnfst_negative(fst)){
|
if(! bnfst_negative(fst)){
|
||||||
/* positive bignum */
|
/* positive bignum */
|
||||||
mp_limb_t limb =
|
mp_limb_t limb =
|
||||||
(mp_limb_t) ref(x, disp_bignum_data - vector_tag);
|
(mp_limb_t) ref(x, disp_bignum_data - vector_tag);
|
||||||
|
@ -600,7 +600,7 @@ ikrt_bnfxminus(ikptr x, ikptr y, ikpcb* pcb){
|
||||||
long int limb_count = bnfst_limb_count(fst);
|
long int limb_count = bnfst_limb_count(fst);
|
||||||
long int inty = unfix(y);
|
long int inty = unfix(y);
|
||||||
if(inty < 0){
|
if(inty < 0){
|
||||||
if(bnfst_negative(fst)){
|
if(!bnfst_negative(fst)){
|
||||||
/* - negative fx + positive bn = positive bn */
|
/* - negative fx + positive bn = positive bn */
|
||||||
pcb->root0 = &x;
|
pcb->root0 = &x;
|
||||||
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+(limb_count+1)*wordsize));
|
ikptr r = ik_safe_alloc(pcb, align(disp_bignum_data+(limb_count+1)*wordsize));
|
||||||
|
|
Loading…
Reference in New Issue