\f
/********************************* Bigcs ********************************/
-#define HAVE_MPC 1
/***** Bigc: basic functions *****/
+#if defined(HAVE_MPC_INIT) && 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 *****/
extern Bufbyte *bigc_to_string(bigc, int);
/***** Bigc: converting assignments *****/
+#if ! defined(HAVE_MPC_SET_UI_FR) || ! 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);
+#else
+#error Cannot derived mpc_set_ui_fr without MPC_SET_X_Y!
+#endif
+#endif
+
#define bigc_set(f1, f2) mpc_set(f1, f2, GMP_RNDN)
#define bigc_set_long(f, l) mpc_set_si(f, l, GMP_RNDN)
#define bigc_set_ulong(f, l) mpc_set_ui(f, l, GMP_RNDN)