Use portable 'static inline' semantics that work in GNU89 and C99 See also: http://www.greenend.org.uk/rjk/tech/inline.html --- a/src/dicg.c +++ b/src/dicg.c @@ -441,7 +441,7 @@ * Algorithm by Karin Schaber and Otmar Lendl. * */ -inline prng_num prng_dicg_multiply(int k,prng_num c, prng_num d) +prng_num prng_dicg_multiply(int k,prng_num c, prng_num d) { int i; struct mtable *t; --- a/src/external.c +++ b/src/external.c @@ -139,7 +139,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_tt800_get_next_int(struct prng *gen) +prng_num prng_tt800_get_next_int(struct prng *gen) { unsigned int y; struct tt800_state *g; --- a/src/icg.c +++ b/src/icg.c @@ -110,7 +110,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_icg_get_next_int(struct prng *gen) +prng_num prng_icg_get_next_int(struct prng *gen) { s_prng_num inv, current, prod; --- a/src/lcg.c +++ b/src/lcg.c @@ -111,7 +111,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_lcg_get_next_int(struct prng *gen) +prng_num prng_lcg_get_next_int(struct prng *gen) { s_prng_num ax, current; --- a/src/meicg.c +++ b/src/meicg.c @@ -106,7 +106,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_meicg_get_next_int(struct prng *gen) +prng_num prng_meicg_get_next_int(struct prng *gen) { s_prng_num an, sum, inv, n; --- a/src/mt19937.c +++ b/src/mt19937.c @@ -172,7 +172,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_mt19937_get_next_int(struct prng *gen) +prng_num prng_mt19937_get_next_int(struct prng *gen) { #define MT gen->data.mt19937_data.mt #define MTI gen->data.mt19937_data.mti --- a/src/prng.h +++ b/src/prng.h @@ -406,7 +406,7 @@ /* INLINE fnk def. for mult_mod, I don't know if this works for non-GCC */ #ifdef __GNUC__ -extern __inline__ prng_num mult_mod(prng_num s,struct mult_mod_struct *mm) +static inline prng_num mult_mod(prng_num s,struct mult_mod_struct *mm) { s_prng_num s_tmp; --- a/src/qcg.c +++ b/src/qcg.c @@ -107,7 +107,7 @@ * gen: Pointer to a struct prng. * */ -inline prng_num prng_qcg_get_next_int(struct prng *gen) +prng_num prng_qcg_get_next_int(struct prng *gen) { s_prng_num current, sum, square, q_term, l_term; --- a/src/support.c +++ b/src/support.c @@ -449,52 +449,6 @@ } } -#ifndef __cplusplus -/* - * Modular Multiplication. Uses the precalculated values from mult_mod_setup. - * - * - * Input: - * s An prng_num. - * mm pointer to a struct mult_mod_struct initialized - * by mult_mod_setup. - * - * Output: - * (mm->a*s) mod mm->p - * - */ -prng_num mult_mod(prng_num s,struct mult_mod_struct *mm) -{ -s_prng_num s_tmp; - -switch(mm->algorithm) - { - case PRNG_MM_ZERO: return(0); - break; - case PRNG_MM_ONE: return(s); - break; - case PRNG_MM_SIMPLE: return((s * mm->a) % mm->p ); - break; - case PRNG_MM_SCHRAGE: - s_tmp = mm->a * ( s % mm->q ) - - mm->r * ( s / mm->q ); - if (s_tmp < 0) s_tmp += mm->p; - return(s_tmp); - break; - case PRNG_MM_DECOMP: return(mult_mod_generic(s,mm->a,mm->p)); - break; -#ifdef HAVE_LONGLONG - case PRNG_MM_LL: return(mult_mod_ll(s,mm->a,mm->p)); - break; -#endif - case PRNG_MM_POW2: return((s*mm->a) & mm->mask); - break; - } -/* not reached */ -return(0); -} -#endif - /* * Modular Multiplication: Decomposition method (from L'Ecuyer & Cote)