Here is what I have at this point. I think GSL_MIN_INT() is broken.
/* Maximum and Minimum functions */
besFUNCTION(_MIN)
double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MIN(a, b));
besEND
besFUNCTION(_MAX)
double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MAX(a, b));
besEND
besFUNCTION(_MIN_DBL)
double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MIN_DBL(a, b));
besEND
besFUNCTION(_MAX_DBL)
double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MAX_DBL(a, b));
besEND
besFUNCTION(_MIN_INT)
int a,b;
besARGUMENTS("ii")
&a,&b
besARGEND
besRETURN_LONG(GSL_MIN_INT(a, b));
besEND
besFUNCTION(_MAX_INT)
int a,b;
besARGUMENTS("ii")
&a,&b
besARGEND
besRETURN_LONG(GSL_MAX_INT(a, b));
besEND
besFUNCTION(_MIN_LDBL)
long double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MIN_LDBL(a, b));
besEND
besFUNCTION(_MAX_LDBL)
long double a,b;
besARGUMENTS("rr")
&a,&b
besARGEND
besRETURN_DOUBLE(GSL_MAX_LDBL(a, b));
besEND
DECLARE SUB _MIN ALIAS "_MIN" LIB "gsl"
DECLARE SUB _MAX ALIAS "_MAX" LIB "gsl"
DECLARE SUB MIN_DBL ALIAS "_MIN_DBL" LIB "gsl"
DECLARE SUB MAX_DBL ALIAS "_MAX_DBL" LIB "gsl"
DECLARE SUB MIN_INT ALIAS "_MIN_INT" LIB "gsl"
DECLARE SUB MAX_INT ALIAS "_MAX_INT" LIB "gsl"
DECLARE SUB MIN_LDBL ALIAS "_MIN_LDBL" LIB "gsl"
DECLARE SUB MAX_LDBL ALIAS "_MAX_LDBL" LIB "gsl"
a_d = 12.5
b_d = 25.0
a_i = 10
b_i = 20
PRINT "MIN: ",FORMAT("%g",_MIN(a_d,b_d)),"\n"
PRINT "MAX: ",FORMAT("%g",_MAX(a_d,b_d)),"\n"
PRINT "MIN_DBL: ",FORMAT("%g",MIN_DBL(a_d,b_d)),"\n"
PRINT "MAX_DBL: ",FORMAT("%g",MAX_DBL(a_d,b_d)),"\n"
PRINT "MIN_INT: ",FORMAT("%g",MIN_INT(a_i,b_i)),"\n"
PRINT "MAX_INT: ",FORMAT("%g",MAX_INT(a_i,b_i)),"\n"
PRINT "MIN_LDBL: ",FORMAT("%g",MIN_LDBL(a_d,b_d)),"\n"
PRINT "MAX_LDBL: ",FORMAT("%g",MAX_LDBL(a_d,b_d)),"\n"
MIN: 12.5
MAX: 25
MIN_DBL: 12.5
MAX_DBL: 25
MIN_INT: 0
MAX_INT: 20
MIN_LDBL: -nan
MAX_LDBL: -nan
Based on your comment of MIN / MAX is used by default, I used a_i and b_i for the GSL_MIN and GSL_MAX functions and it work fine. I still think GSL_MIN_INT is broken. I'm not sure what is going on with GSL_MIN_LDBL and GSL_MAX_LDBL.