You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.4 KiB
147 lines
3.4 KiB
7 years ago
|
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)
|