With

gcc -DDIRECT -c binomial_tpe.c -o binomial_tpe.o 
-I/nix/store/5rdvp5g7yix9rsjqhp8mwsjgxxfzkygq-gsl-2.7.1-dev/include

I get

binomial_tpe.c:371:11: error: use of undeclared identifier 'var'
      if (var <= accept)
          ^
binomial_tpe.c:371:18: error: use of undeclared identifier 'accept'
      if (var <= accept)
                 ^
binomial_tpe.c:139:22: error: use of undeclared label 'Finish'
                goto Finish;
                     ^
binomial_tpe.c:381:1: error: type specifier missing, defaults to 'int'; ISO C99 
and later do not
      support implicit int [-Wimplicit-int]
Finish:
^
int
binomial_tpe.c:381:7: error: expected ';' after top level declarator
Finish:
      ^
      ;
binomial_tpe.c:383:3: error: expected identifier or '('
  return (flipped) ? (n - ix) : (unsigned int)ix;
  ^
binomial_tpe.c:384:1: error: extraneous closing brace ('}')
}
^
7 errors generated.

With this patch, compilation succeeds. Caveat: I haven’t tried chi-squared yet 
and given it doesn’t compile it can’t have been tested.

diff --git a/randist/binomial_tpe.c b/randist/binomial_tpe.c
index d32423cc..e2dacf9f 100644
--- a/randist/binomial_tpe.c
+++ b/randist/binomial_tpe.c
@@ -319,6 +319,7 @@ gsl_ran_binomial (const gsl_rng * rng, double p, unsigned 
int n)
               if (var > ynorm + amaxp)
                 goto TryAgain;
             }
+        }
 
           /* Now, again: do the test log(v) vs. log f(x)/f(M) */
 
@@ -362,7 +363,6 @@ gsl_ran_binomial (const gsl_rng * rng, double p, unsigned 
int n)
           }
 #endif
 #endif
-        }
 
 
       if (var <= accept)

Dominic Steinitz
domi...@steinitz.org
http://idontgetoutmuch.org
Twitter: @idontgetoutmuch

Reply via email to