[BACK]Return to call_gsl.c CVS log [TXT][DIR] 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, 1 month ago) by takayama
Branch: MAIN

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);
}