version 1.9, 2015/08/06 00:43:20 |
version 1.10, 2015/08/06 09:12:29 |
|
|
/* |
/* |
* $OpenXM: OpenXM_contrib2/asir2000/engine/bf.c,v 1.8 2015/08/05 03:46:35 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/bf.c,v 1.9 2015/08/06 00:43:20 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
Line 172 void subbf(Num a,Num b,Num *c) |
|
Line 172 void subbf(Num a,Num b,Num *c) |
|
} else { /* NID(b)==N_B */ |
} else { /* NID(b)==N_B */ |
switch ( NID(a) ) { |
switch ( NID(a) ) { |
case N_Q: |
case N_Q: |
mpfr_init2(s,BFPREC(b)); |
|
mpfr_init2(r,BFPREC(b)); |
mpfr_init2(r,BFPREC(b)); |
if ( INT((Q)a) ) { |
if ( INT((Q)a) ) { |
z = ztogz((Q)a); |
z = ztogz((Q)a); |
mpfr_sub_z(s,((BF)b)->body,z->body,MPFR_RNDN); |
mpfr_sub_z(r,((BF)b)->body,z->body,MPFR_RNDN); |
} else { |
} else { |
q = qtogq((Q)a); |
q = qtogq((Q)a); |
mpfr_sub_q(s,((BF)b)->body,q->body,MPFR_RNDN); |
mpfr_sub_q(r,((BF)b)->body,q->body,MPFR_RNDN); |
} |
} |
mpfr_neg(r,s,MPFR_RNDN); |
mpfr_neg(r,r,MPFR_RNDN); |
break; |
break; |
case N_R: |
case N_R: |
/* double precision = 53 */ |
/* double precision = 53 */ |