=================================================================== RCS file: /home/cvs/OpenXM/src/ox_gsl/ox_gsl.c,v retrieving revision 1.14 retrieving revision 1.18 diff -u -p -r1.14 -r1.18 --- OpenXM/src/ox_gsl/ox_gsl.c 2018/06/07 11:49:51 1.14 +++ OpenXM/src/ox_gsl/ox_gsl.c 2021/03/10 06:51:57 1.18 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/ox_gsl/ox_gsl.c,v 1.13 2018/06/07 11:13:05 takayama Exp $ +/* $OpenXM: OpenXM/src/ox_gsl/ox_gsl.c,v 1.17 2019/10/23 07:00:43 takayama Exp $ */ #include @@ -10,6 +10,7 @@ #include #include "ox_gsl.h" #include "call_gsl.h" // need only when you bind call_gsl functions. +#include "call_gsl_sf.h" OXFILE *fd_rw; @@ -400,6 +401,12 @@ int sm_executeFunction() call_gsl_monte_plain_miser_vegas_integrate(1); }else if (strcmp(func->s,"gsl_monte_vegas_integrate")==0) { call_gsl_monte_plain_miser_vegas_integrate(2); + }else if (strcmp(func->s,"gsl_odeiv_step_rk4")==0) { + call_gsl_odeiv_step("rk4"); + }else if (strcmp(func->s,"gsl_sf_gamma_inc")==0) { + call_gsl_sf_gamma_inc(); + }else if (strcmp(func->s,"gsl_eigen_nonsymmv")==0) { + call_gsl_eigen_nonsymmv(); }else { push(make_error2("sm_executeFunction, unknown function",NULL,0,-1)); return -1; @@ -482,7 +489,7 @@ void push_error_from_file() { FILE *fp; #define BUF_SIZE 1024 char logname[BUF_SIZE]; - char cmd[BUF_SIZE]; + char cmd[BUF_SIZE+100]; char file[BUF_SIZE]; char reason[BUF_SIZE]; int gsl_errno, line; @@ -565,4 +572,11 @@ cmo *element_of_at(cmo *list,int k) { cellp = list_next(cellp); } return(dic[k]); +} + +int get_length(cmo *c) { + if (c->tag != CMO_LIST) { + return(-1); + } + return(list_length((cmo_list *)c)); }