AC_REQUIRE([SXE_CHECK_MPC_LIBS])
SXE_RESTORE_LIBS
+ if test "$ac_cv_lib_mpc_mpc_init" = "yes"; then
+ AC_DEFINE([HAVE_MPC_INIT], [1], [Whether simple mpc_init is available])
+ fi
+ if test "$ac_cv_lib_mpc_mpc_set_ui_fr" = "yes"; then
+ AC_DEFINE([HAVE_MPC_SET_UI_FR], [1], [Whether simple mpc_set_ui_fr is available])
+ fi
+ if test "$ac_cv_lib_mpc_mpc_init" = "yes" -o \
+ "$ac_cv_lib_mpc_mpc_init2" = "yes"; then
+ mpc_can_be_initted="yes"
+ fi
if test "$ac_cv_header_mpc_h" = "yes" -a \
- "$ac_cv_lib_mpc_mpc_init" = "yes" -a \
+ "$mpc_can_be_initted" = "yes" -a \
"$mpc_doth_need_mpfr" = "yes"; then
sxe_cv_feat_mpc="yes"
MPC_LIBS="-lmpfr -lmpc"
elif test "$ac_cv_header_mpc_h" = "yes" -a \
- "$ac_cv_lib_mpc_mpc_init" = "yes" -a \
+ "$mpc_can_be_initted" = "yes" -a \
"$mpc_doth_need_mpfr" = "no"; then
sxe_cv_feat_mpc="yes"
MPC_LIBS="-lmpc"
AC_REQUIRE([SXE_CHECK_MPFR_LIBS])
if test "$ac_cv_lib_mpfr_mpfr_init" = "yes"; then
AC_CHECK_LIB([mpc], [mpc_init], [:], [:], [-lmpfr])
+ AC_CHECK_LIB([mpc], [mpc_init2], [:], [:], [-lmpfr])
+ AC_CHECK_LIB([mpc], [mpc_set_ui_fr], [:], [:], [-lmpfr])
mpc_doth_need_mpfr="yes"
else
## try without mpfr.h, but this is definitely going to fail
## unless you're a developer of mpc ...
- ## ... and in that case: Fix teh MPC build chain, Andreas!!!
+ ## ... and in that case: Fix the MPC build chain, Andreas!!!
AC_CHECK_LIB([mpc], [mpc_init], [:])
+ AC_CHECK_LIB([mpc], [mpc_init2], [:])
+ AC_CHECK_LIB([mpc], [mpc_set_ui_fr], [:])
mpc_doth_need_mpfr="no"
fi
])dnl SXE_CHECK_MPC_LIBS
{ XD_END }
};
+#if ! HAVE_MPC_SET_UI_FR
+#if defined(MPC_SET_X_Y)
+int mpc_set_ui_fr (mpc_t rop, unsigned long int re, mpfr_t im, mpc_rnd_t rnd)
+ MPC_SET_X_Y (ui, fr, rop, re, im, rnd);
+#else
+#error Cannot derived mpc_set_ui_fr without MPC_SET_X_Y!
+#endif
+#endif
+
DEFINE_BASIC_LRECORD_IMPLEMENTATION("bigc", bigc,
bigc_mark, bigc_print, bigc_finalise,
bigc_equal, bigc_hash,
\f
/********************************* Bigcs ********************************/
-#define HAVE_MPC 1
/***** Bigc: basic functions *****/
+#if HAVE_MPC_INIT
#define bigc_init(f) mpc_init(f)
-#define bigc_init_prec(f,prec) mpc_init2(f, prec)
-#define bigc_init_2prec(f,p1,p2) mpc_init3(f, p1, p2)
+#else
+#define bigc_init(f) mpc_init2((f),internal_get_precision(Qnil))
+#endif
+#define bigc_init_prec(f,prec) mpc_init2((f), (prec))
+#define bigc_init_2prec(f,p1,p2) mpc_init3((f), (p1), (p2))
#define bigc_fini(f) mpc_clear(f)
#define bigc_hashcode(f) (bigfr_hashcode(bigc_re(f)) ^ \
bigfr_hashcode(bigc_im(f)))
#define bigc_get_prec(f) max(bigfr_get_prec(bigc_re(f)), \
bigfr_get_prec(bigc_im(f)))
-#define bigc_set_prec(f, prec) mpc_set_prec(f, prec)
-#define bigc_set_default_prec(prec) mpc_set_default_prec(prec)
+#define bigc_set_prec(f, prec) mpc_set_prec((f), (prec))
+#define bigc_set_default_prec(prec) mpc_set_default_prec((prec))
#define bigc_get_default_prec() mpc_get_default_prec()
/***** Bigc: conversions *****/