Return to call_gsl.c CVS log | Up to [local] / OpenXM / src / ox_gsl |
File: [local] / OpenXM / src / ox_gsl / call_gsl.c (download)
Revision 1.1, Thu Mar 29 11:52:18 2018 UTC (6 years, 2 months ago) by takayama
The complex gamma function implemented in GSL is installed. Ex. ox_launch(0,"/Users/nobuki/OX4/OpenXM/src/ox_gsl/ox_gsl"); 0 [1916] ox_cmo_rpc(0,"gsl_sf_lngamma_complex_e",3,0); ox_pop_cmo(0); 0 [1917] [0.693147,0,0] [log( |Gamma(z)| ), arg( Gamma(z)), status] [1918] ox_cmo_rpc(0,"gsl_sf_lngamma_complex_e",3,2); ox_pop_cmo(0); 0 [1919] [4.44406e+15,2.32392,0] CVS ---------------------------------------------------------------------- |
//#include <gsl/gsl_types.h> //#include <gsl/gsl_sys.h> #include <gsl/gsl_sf_result.h> #include <gsl/gsl_sf_gamma.h> #include "ox_gsl.h" extern int Debug; void call_gsl_sf_lngamma_complex_e() { cmo *c; double zr; double zi; gsl_sf_result lnr; gsl_sf_result arg; int status; cmo *r[3]; cmo *ans; gsl_set_error_handler_off(); // Todo, gsl_set_error_handler(my_handler); c = pop(); // number of args zr=get_double(); zi=get_double(); if (Debug) printf("gsl_sf_lngamma_complex_e(zr=%lg,zi=%lg)\n",zr,zi); status = gsl_sf_lngamma_complex_e(zr,zi,&lnr,&arg); r[0] = (cmo *)new_cmo_double(lnr.val); r[1] = (cmo *)new_cmo_double(arg.val); r[2] = (cmo *)new_cmo_int32(status); ans = (cmo *)new_cmo_list_array((void **)r,3); push(ans); }