/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.14u-20020815-1412
 * 
 * This file is not intended to be easily readable and contains a number of 
 * coding conventions designed to improve portability and efficiency. Do not make
 * changes to this file unless you know what you are doing--modify the SWIG 
 * interface file instead. 
 * ----------------------------------------------------------------------------- */

/***********************************************************************
 * common.swg
 *
 *     This file contains generic SWIG runtime support for pointer
 *     type checking as well as a few commonly used macros to control
 *     external linkage.
 *
 * Author : David Beazley (beazley@cs.uchicago.edu)
 *
 * Copyright (c) 1999-2000, The University of Chicago
 * 
 * This file may be freely redistributed without license or fee provided
 * this copyright message remains intact.
 ************************************************************************/

#include <string.h>

#if defined(_WIN32) || defined(__WIN32__)
#       if defined(_MSC_VER)
#               if defined(STATIC_LINKED)
#                       define SWIGEXPORT(a) a
#                       define SWIGIMPORT(a) extern a
#               else
#                       define SWIGEXPORT(a) __declspec(dllexport) a
#                       define SWIGIMPORT(a) extern a
#               endif
#       else
#               if defined(__BORLANDC__)
#                       define SWIGEXPORT(a) a _export
#                       define SWIGIMPORT(a) a _export
#               else
#                       define SWIGEXPORT(a) a
#                       define SWIGIMPORT(a) a
#               endif
#       endif
#else
#       define SWIGEXPORT(a) a
#       define SWIGIMPORT(a) a
#endif

#ifdef SWIG_GLOBAL
#define SWIGRUNTIME(a) SWIGEXPORT(a)
#else
#define SWIGRUNTIME(a) static a
#endif

#ifdef __cplusplus
extern "C" {
#endif

typedef void *(*swig_converter_func)(void *);
typedef struct swig_type_info *(*swig_dycast_func)(void **);

typedef struct swig_type_info {
  const char             *name;                 
  swig_converter_func     converter;
  const char             *str;
  void                   *clientdata;	
  swig_dycast_func        dcast;
  struct swig_type_info  *next;
  struct swig_type_info  *prev;
} swig_type_info;

#ifdef SWIG_NOINCLUDE

SWIGIMPORT(swig_type_info *) SWIG_TypeRegister(swig_type_info *);
SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
SWIGIMPORT(void *)           SWIG_TypeCast(swig_type_info *, void *);
SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
SWIGIMPORT(void)             SWIG_TypeClientData(swig_type_info *, void *);

#else

static swig_type_info *swig_type_list = 0;

/* Register a type mapping with the type-checking */
SWIGRUNTIME(swig_type_info *)
SWIG_TypeRegister(swig_type_info *ti)
{
  swig_type_info *tc, *head, *ret, *next;
  /* Check to see if this type has already been registered */
  tc = swig_type_list;
  while (tc) {
    if (strcmp(tc->name, ti->name) == 0) {
      /* Already exists in the table.  Just add additional types to the list */
      if (tc->clientdata) ti->clientdata = tc->clientdata;	
      head = tc;
      next = tc->next;
      goto l1;
    }
    tc = tc->prev;
  }
  head = ti;
  next = 0;

  /* Place in list */
  ti->prev = swig_type_list;
  swig_type_list = ti;

  /* Build linked lists */
 l1:
  ret = head;
  tc = ti + 1;
  /* Patch up the rest of the links */
  while (tc->name) {
    head->next = tc;
    tc->prev = head;
    head = tc;
    tc++;
  }
  head->next = next;
  return ret;
}

/* Check the typename */
SWIGRUNTIME(swig_type_info *) 
SWIG_TypeCheck(char *c, swig_type_info *ty)
{
  swig_type_info *s;
  if (!ty) return 0;        /* Void pointer */
  s = ty->next;             /* First element always just a name */
  do {
    if (strcmp(s->name,c) == 0) {
      if (s == ty->next) return s;
      /* Move s to the top of the linked list */
      s->prev->next = s->next;
      if (s->next) {
	s->next->prev = s->prev;
      }
      /* Insert s as second element in the list */
      s->next = ty->next;
      if (ty->next) ty->next->prev = s;
      ty->next = s;
      return s;
    }
    s = s->next;
  } while (s && (s != ty->next));
  return 0;
}

/* Cast a pointer up an inheritance hierarchy */
SWIGRUNTIME(void *) 
SWIG_TypeCast(swig_type_info *ty, void *ptr) 
{
  if ((!ty) || (!ty->converter)) return ptr;
  return (*ty->converter)(ptr);
}

/* Dynamic pointer casting. Down an inheritance hierarchy */
SWIGRUNTIME(swig_type_info *) 
SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) 
{
  swig_type_info *lastty = ty;
  if (!ty || !ty->dcast) return ty;
  while (ty && (ty->dcast)) {
     ty = (*ty->dcast)(ptr);
     if (ty) lastty = ty;
  }
  return lastty;
}

/* Search for a swig_type_info structure */
SWIGRUNTIME(swig_type_info *)
SWIG_TypeQuery(const char *name) {
  swig_type_info *ty = swig_type_list;
  while (ty) {
    if (ty->str && (strcmp(name,ty->str) == 0)) return ty;
    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
    ty = ty->prev;
  }
  return 0;
}

/* Set the clientdata field for a type */
SWIGRUNTIME(void)
SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
  swig_type_info *tc, *equiv;
  if (ti->clientdata) return;
  ti->clientdata = clientdata;
  equiv = ti->next;
  while (equiv) {
    if (!equiv->converter) {
      tc = swig_type_list;
      while (tc) {
	if ((strcmp(tc->name, equiv->name) == 0))
	  SWIG_TypeClientData(tc,clientdata);
	tc = tc->prev;
      }
    }
    equiv = equiv->next;
  }
}
#endif

#ifdef __cplusplus
}

#endif

/* -----------------------------------------------------------------------------
 * perl5.swg
 *
 * Perl5 runtime library
 * $Header: /home/cvs/Math-Cephes/libmd/Cephes_wrap.c,v 1.7 2002/08/30 22:27:47 randy Exp $
 * ----------------------------------------------------------------------------- */

#define SWIGPERL
#define SWIGPERL5
#ifdef __cplusplus
/* Needed on some windows machines---since MS plays funny
   games with the header files under C++ */
#include <math.h>
#include <stdlib.h>
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

/* Get rid of free and malloc defined by perl */
#undef free
#undef malloc

#ifndef pTHX_
#define pTHX_
#endif

#include <string.h>
#ifdef __cplusplus
}
#endif

/* Macro to call an XS function */
#ifdef PERL_OBJECT
#define SWIG_CALLXS(_name) _name(cv,pPerl)
#else
#define SWIG_CALLXS(_name) _name(cv)
#endif


/* Note: SwigMagicFuncHack is a typedef used to get the C++
   compiler to just shut up already */

#ifdef PERL_OBJECT
#define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);

#ifdef __cplusplus
extern "C" {
#endif
typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
#define SWIGCLASS_STATIC
#else
#define MAGIC_PPERL
#define SWIGCLASS_STATIC static
#ifndef MULTIPLICITY
#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(SV *, MAGIC *);

#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
#ifdef __cplusplus
}
#endif


#else
#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#endif
#endif

#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
#endif

/* Modifications for newer Perl 5.005 releases */

#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
#ifndef PL_sv_yes
#define PL_sv_yes sv_yes
#endif
#ifndef PL_sv_undef
#define PL_sv_undef sv_undef
#endif
#ifndef PL_na
#define PL_na na
#endif
#endif

#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifdef SWIG_NOINCLUDE

#ifndef PERL_OBJECT
extern int SWIG_ConvertPtr(SV *, void **, swig_type_info *, int flags);
extern void SWIG_MakePtr(SV *, void *, swig_type_info *, int flags);
#else
extern int _SWIG_ConvertPtr(CPerlObj *, SV *, void **, swig_type_info *,int flags);
extern void _SWIG_MakePtr(CPerlObj *, SV *, void *, swig_type_info *, int flags);
#define SWIG_ConvertPtr(a,b,c,d) _SWIG_ConvertPtr(pPerl,a,b,c,d)
#define SWIG_MakePtr(a,b,c,d) _SWIG_MakePtr(pPerl,a,b,c,d)
#endif

#else

/* Function for getting a pointer value */

#ifndef PERL_OBJECT
SWIGRUNTIME(int) 
SWIG_ConvertPtr(SV *sv, void **ptr, swig_type_info *_t, int flags)
#else
#define SWIG_ConvertPtr(a,b,c,d) _SWIG_ConvertPtr(pPerl,a,b,c,d)
SWIGRUNTIME(int)
_SWIG_ConvertPtr(CPerlObj *pPerl, SV *sv, void **ptr, swig_type_info *_t, int flags)
#endif
{
  char *_c;
  swig_type_info *tc;
  IV   tmp;

  /* If magical, apply more magic */
  if (SvGMAGICAL(sv))
    mg_get(sv);

  /* Check to see if this is an object */
  if (sv_isobject(sv)) {
    SV *tsv = (SV*) SvRV(sv);
    if ((SvTYPE(tsv) == SVt_PVHV)) {
      MAGIC *mg;
      if (SvMAGICAL(tsv)) {
	mg = mg_find(tsv,'P');
	if (mg) {
	  SV *rsv = mg->mg_obj;
	  if (sv_isobject(rsv)) {
	    tmp = SvIV((SV*)SvRV(rsv));
	  }
	}
      } else {
	return -1;
      }
    } else {
      tmp = SvIV((SV*)SvRV(sv));
    }
    if (!_t) {
      *(ptr) = (void *) tmp;
      return 0;
    }
  } else if (! SvOK(sv)) {            /* Check for undef */
    *(ptr) = (void *) 0;
    return 0;
  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
    *(ptr) = (void *) 0;
    if (!SvROK(sv)) 
      return 0;
    else
      return -1;
  } else {                            /* Don't know what it is */
      *(ptr) = (void *) 0;
      return -1;
  }
  if (_t) {
    /* Now see if the types match */      
    _c = HvNAME(SvSTASH(SvRV(sv)));
    tc = SWIG_TypeCheck(_c,_t);
    if (!tc) {
      *ptr = (void *) tmp;
      return -1;
    }
    *ptr = SWIG_TypeCast(tc,(void *)tmp);
    return 0;
  }
  *ptr = (void *) tmp;
  return 0;
}
#ifndef PERL_OBJECT
SWIGRUNTIME(void) 
SWIG_MakePtr(SV *sv, void *ptr, swig_type_info *t,int flags)
#else
#define SWIG_MakePtr(a,b,c,d) _SWIG_MakePtr(pPerl,a,b,c,d)
SWIGRUNTIME(void)
_SWIG_MakePtr(CPerlObj *pPerl, SV *sv, void *ptr, swig_type_info *t, int flags)
#endif
{
  sv_setref_pv(sv, (char *) t->name, ptr);
}

#endif

typedef XS(SwigPerlWrapper);
typedef SwigPerlWrapper *SwigPerlWrapperPtr;

/* Structure for command table */
typedef struct {
  const char         *name;
  SwigPerlWrapperPtr  wrapper;
} swig_command_info;

/* Information for constant table */

#define SWIG_INT     1
#define SWIG_FLOAT   2
#define SWIG_STRING  3
#define SWIG_POINTER 4
#define SWIG_BINARY  5

/* Constant information structure */
typedef struct swig_constant_info {
    int              type;
    const char      *name;
    long             lvalue;
    double           dvalue;
    void            *pvalue;
    swig_type_info **ptype;
} swig_constant_info;

#ifdef __cplusplus
}
#endif

/* Structure for variable table */
typedef struct {
  const char   *name;
  SwigMagicFunc   set;
  SwigMagicFunc   get;
  swig_type_info  **type;
} swig_variable_info;

/* Magic variable code */
#ifndef PERL_OBJECT
#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
  #ifndef MULTIPLICITY 
       static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int \
(*get)(SV *,MAGIC *)) { 
  #else 
       static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*,\
 SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) { 
  #endif 
#else
#define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
#endif
  MAGIC *mg;
  sv_magic(sv,sv,'U',(char *) name,strlen(name));
  mg = mg_find(sv,'U');
  mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
  mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
  mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
  mg->mg_virtual->svt_len = 0;
  mg->mg_virtual->svt_clear = 0;
  mg->mg_virtual->svt_free = 0;
}







/* -------- TYPES TABLE (BEGIN) -------- */

#define  SWIGTYPE_p_arr1i swig_types[0] 
#define  SWIGTYPE_p_fract swig_types[1] 
#define  SWIGTYPE_p_double swig_types[2] 
#define  SWIGTYPE_p_arr1d swig_types[3] 
#define  SWIGTYPE_p_void swig_types[4] 
#define  SWIGTYPE_p_cmplx swig_types[5] 
#define  SWIGTYPE_p_int swig_types[6] 
static swig_type_info *swig_types[8];

/* -------- TYPES TABLE (END) -------- */

#define SWIG_init    boot_Math__Cephes

#define SWIG_name   "Math::Cephes::boot_Math__Cephes"
#define SWIG_prefix "Math::Cephes::"

#ifdef __cplusplus
extern "C"
#endif
#ifndef PERL_OBJECT
#ifndef MULTIPLICITY
SWIGEXPORT(void) SWIG_init (CV* cv);
#else
SWIGEXPORT(void) SWIG_init (pTHXo_ CV* cv);
#endif
#else
SWIGEXPORT(void) SWIG_init (CV *cv, CPerlObj *);
#endif


typedef struct {
    double n;
    double d;
} fract;

typedef struct {
    double r;
    double i;
} cmplx;

typedef double * arr1d;
typedef int * arr1i;

cmplx *new_cmplx(double r,double i){
   	    cmplx *c;
  	    c = (cmplx *) malloc(sizeof(cmplx));
    	    c->r = r;
    	    c->i = i;
    	    return c;
	  }
void delete_cmplx(cmplx *self){
	    free(self);
	  }
fract *new_fract(double n,double d){
   	    fract *f;
  	    f = (fract *) malloc(sizeof(fract));
    	    f->n = n;
    	    f->d = d;
    	    return f;
	  }
void delete_fract(fract *self){
	    free(self);
	  }
extern double MACHEP;
extern double MAXLOG;
extern double MINLOG;
extern double MAXNUM;
extern double PI;
extern double PIO2;
extern double PIO4;
extern double SQRT2;
extern double SQRTH;
extern double LOG2E;
extern double SQ2OPI;
extern double LOGE2;
extern double LOGSQ2;
extern double THPIO4;
extern double TWOOPI;
extern double acosh(double);
extern int airy(double,double *,double *,double *,double *);
extern double asin(double);
extern double acos(double);
extern double asinh(double);
extern double atan(double);
extern double atan2(double,double);
extern double atanh(double);
extern double bdtrc(int,int,double);
extern double bdtr(int,int,double);
extern double bdtri(int,int,double);
extern double beta(double,double);
extern double lbeta(double,double);
extern double btdtr(double,double,double);
extern double cbrt(double);
extern double chbevl(double,void *,int);
extern double chdtrc(double,double);
extern double chdtr(double,double);
extern double chdtri(double,double);
extern void clog(cmplx *,cmplx *);
extern void cexp(cmplx *,cmplx *);
extern void csin(cmplx *,cmplx *);
extern void ccos(cmplx *,cmplx *);
extern void ctan(cmplx *,cmplx *);
extern void ccot(cmplx *,cmplx *);
extern void casin(cmplx *,cmplx *);
extern void cacos(cmplx *,cmplx *);
extern void catan(cmplx *,cmplx *);
extern void csinh(cmplx *,cmplx *);
extern void casinh(cmplx *,cmplx *);
extern void ccosh(cmplx *,cmplx *);
extern void cacosh(cmplx *,cmplx *);
extern void ctanh(cmplx *,cmplx *);
extern void catanh(cmplx *,cmplx *);
extern void cpow(cmplx *,cmplx *,cmplx *);
extern void radd(fract *,fract *,fract *);
extern void rsub(fract *,fract *,fract *);
extern void rmul(fract *,fract *,fract *);
extern void rdiv(fract *,fract *,fract *);
extern double euclid(double *,double *);
extern void cadd(cmplx *,cmplx *,cmplx *);
extern void csub(cmplx *,cmplx *,cmplx *);
extern void cmul(cmplx *,cmplx *,cmplx *);
extern void cdiv(cmplx *,cmplx *,cmplx *);
extern void cmov(void *,void *);
extern void cneg(cmplx *);
extern double cabs(cmplx *);
extern void csqrt(cmplx *,cmplx *);
extern double hypot(double,double);
extern double cosh(double);
extern double dawsn(double);
extern double ellie(double,double);
extern double ellik(double,double);
extern double ellpe(double);
extern int ellpj(double,double,double *,double *,double *,double *);
extern double ellpk(double);
extern double exp(double);
extern double exp10(double);
extern double exp2(double);
extern double expn(int,double);
extern double ei(double);
extern double fabs(double);
extern double fac(int);
extern double fdtrc(int,int,double);
extern double fdtr(int,int,double);
extern double fdtri(int,int,double);
extern double ceil(double);
extern double floor(double);
extern double frexp(double,int *);
extern double ldexp(double,int);
extern int fresnl(double,double *,double *);
extern double gamma(double);
extern double lgam(double);
extern double gdtr(double,double,double);
extern double gdtrc(double,double,double);
extern double hyp2f1(double,double,double,double);
extern double hyperg(double,double,double);
extern double hyp2f0(double,double,double,int,double *);
extern double i0(double);
extern double i0e(double);
extern double i1(double);
extern double i1e(double);
extern double igamc(double,double);
extern double igam(double,double);
extern double igami(double,double);
extern double incbet(double,double,double);
extern double incbi(double,double,double);
extern double iv(double,double);
extern double j0(double);
extern double y0(double);
extern double j1(double);
extern double y1(double);
extern double jn(int,double);
extern double jv(double,double);
extern double k0(double);
extern double k0e(double);
extern double k1(double);
extern double k1e(double);
extern double kn(int,double);
extern double log(double);
extern double log10(double);
extern double log2(double);
extern long lrand(void);
extern long lsqrt(long);
extern int mtherr(char *,int);
extern double polevl(double,void *,int);
extern double p1evl(double,void *,int);
extern double nbdtrc(int,int,double);
extern double nbdtr(int,int,double);
extern double nbdtri(int,int,double);
extern double ndtr(double);
extern double erfc(double);
extern double erf(double);
extern double ndtri(double);
extern double pdtrc(int,double);
extern double pdtr(int,double);
extern double pdtri(int,double);
extern double pow(double,double);
extern double powi(double,int);
extern double psi(double);
extern double rgamma(double);
extern double round(double);
extern int shichi(double,double *,double *);
extern int sici(double,double *,double *);
extern double sin(double);
extern double cos(double);
extern double radian(double,double,double);
extern double sindg(double);
extern double cosdg(double);
extern double sinh(double);
extern double spence(double);
extern double sqrt(double);
extern double stdtr(int,double);
extern double stdtri(int,double);
extern double onef2(double,double,double,double,double *);
extern double threef0(double,double,double,double,double *);
extern double struve(double,double);
extern double tan(double);
extern double cot(double);
extern double tandg(double);
extern double cotdg(double);
extern double tanh(double);
extern double log1p(double);
extern double expm1(double);
extern double cosm1(double);
extern double yn(int,double);
extern double yv(double,double);
extern double zeta(double,double);
extern double zetac(double);
extern int drand(double *);
extern double plancki(double,double);
extern void polini(int);
extern void polmul(arr1d,int,arr1d,int,arr1d);
extern int poldiv(arr1d,int,arr1d,int,arr1d);
extern void poladd(arr1d,int,arr1d,int,arr1d);
extern void polsub(arr1d,int,arr1d,int,arr1d);
extern void polsbt(arr1d,int,arr1d,int,arr1d);
extern double poleva(arr1d,int,double);
extern void polatn(arr1d,arr1d,arr1d,int);
extern void polsqt(arr1d,arr1d,int);
extern void polsin(arr1d,arr1d,int);
extern void polcos(arr1d,arr1d,int);
extern int polrt_wrap(arr1d,arr1d,int,arr1d,arr1d);
extern int cpmul_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int *);
extern void fpolini(int);
extern void fpolmul_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int);
extern int fpoldiv_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int);
extern void fpoladd_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int);
extern void fpolsub_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int);
extern void fpolsbt_wrap(arr1d,arr1d,int,arr1d,arr1d,int,arr1d,arr1d,int);
extern void fpoleva_wrap(arr1d,arr1d,int,fract *,fract *);
extern void bernum_wrap(arr1d,arr1d);
extern double simpsn_wrap(arr1d,int,double);
extern int minv(arr1d,arr1d,int,arr1d,arr1i);
extern void mtransp(int,arr1d,arr1d);
extern void eigens(arr1d,arr1d,arr1d,int);
extern int simq(arr1d,arr1d,arr1d,int,int,arr1i);
extern double polylog(int,double);
extern double arcdot(arr1d,arr1d);
extern double expx2(double,int);
#ifdef PERL_OBJECT
#define MAGIC_CLASS _wrap_Math::Cephes_var::
class _wrap_Math::Cephes_var : public CPerlObj {
public:
#else
#define MAGIC_CLASS
#endif
SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    sv = sv; mg = mg;
    croak("Value is read-only.");
    return 0;
}
SWIGCLASS_STATIC int _wrap_set_MACHEP(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    MACHEP = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_MACHEP(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) MACHEP);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_MAXLOG(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    MAXLOG = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_MAXLOG(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) MAXLOG);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_MINLOG(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    MINLOG = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_MINLOG(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) MINLOG);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_MAXNUM(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    MAXNUM = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_MAXNUM(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) MAXNUM);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_PI(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    PI = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_PI(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) PI);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_PIO2(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    PIO2 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_PIO2(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) PIO2);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_PIO4(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    PIO4 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_PIO4(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) PIO4);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_SQRT2(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    SQRT2 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_SQRT2(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) SQRT2);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_SQRTH(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    SQRTH = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_SQRTH(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) SQRTH);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_LOG2E(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    LOG2E = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_LOG2E(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) LOG2E);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_SQ2OPI(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    SQ2OPI = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_SQ2OPI(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) SQ2OPI);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_LOGE2(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    LOGE2 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_LOGE2(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) LOGE2);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_LOGSQ2(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    LOGSQ2 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_LOGSQ2(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) LOGSQ2);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_THPIO4(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    THPIO4 = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_THPIO4(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) THPIO4);
    return 1;
}


SWIGCLASS_STATIC int _wrap_set_TWOOPI(pTHX_ SV* sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    TWOOPI = (double) SvNV(sv);
    
    return 1;
}


SWIGCLASS_STATIC int _wrap_val_TWOOPI(pTHX_ SV *sv, MAGIC *mg) {
    MAGIC_PPERL
    mg = mg;
    sv_setnv(sv, (double) TWOOPI);
    return 1;
}




#ifdef PERL_OBJECT
};
#endif

#ifdef __cplusplus
extern "C" {
#endif
XS(_wrap_cmplx_r_set) {
    cmplx *arg1 ;
    double arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cmplx_r_set(self,r);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cmplx_r_set. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    arg2 = (double) SvNV(ST(1));
    
    if (arg1) (arg1)->r = arg2;
    
    
    XSRETURN(argvi);
}


XS(_wrap_cmplx_r_get) {
    cmplx *arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cmplx_r_get(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cmplx_r_get. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    result = (double) ((arg1)->r);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cmplx_i_set) {
    cmplx *arg1 ;
    double arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cmplx_i_set(self,i);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cmplx_i_set. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    arg2 = (double) SvNV(ST(1));
    
    if (arg1) (arg1)->i = arg2;
    
    
    XSRETURN(argvi);
}


XS(_wrap_cmplx_i_get) {
    cmplx *arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cmplx_i_get(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cmplx_i_get. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    result = (double) ((arg1)->i);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_new_cmplx) {
    double arg1 = 0 ;
    double arg2 = 0 ;
    cmplx *result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 2)) {
        croak("Usage: new_cmplx(r,i);");
    }
    if (items > 0) {
        arg1 = (double) SvNV(ST(0));
        
    }
    if (items > 1) {
        arg2 = (double) SvNV(ST(1));
        
    }
    result = (cmplx *)new_cmplx(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_cmplx,0);
    XSRETURN(argvi);
}


XS(_wrap_delete_cmplx) {
    cmplx *arg1 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: delete_cmplx(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of delete_cmplx. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    delete_cmplx(arg1);
    
    
    XSRETURN(argvi);
}


XS(_wrap_fract_n_set) {
    fract *arg1 ;
    double arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: fract_n_set(self,n);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of fract_n_set. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    arg2 = (double) SvNV(ST(1));
    
    if (arg1) (arg1)->n = arg2;
    
    
    XSRETURN(argvi);
}


XS(_wrap_fract_n_get) {
    fract *arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: fract_n_get(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of fract_n_get. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    result = (double) ((arg1)->n);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fract_d_set) {
    fract *arg1 ;
    double arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: fract_d_set(self,d);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of fract_d_set. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    arg2 = (double) SvNV(ST(1));
    
    if (arg1) (arg1)->d = arg2;
    
    
    XSRETURN(argvi);
}


XS(_wrap_fract_d_get) {
    fract *arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: fract_d_get(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of fract_d_get. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    result = (double) ((arg1)->d);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_new_fract) {
    double arg1 = 0 ;
    double arg2 = 1 ;
    fract *result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 2)) {
        croak("Usage: new_fract(n,d);");
    }
    if (items > 0) {
        arg1 = (double) SvNV(ST(0));
        
    }
    if (items > 1) {
        arg2 = (double) SvNV(ST(1));
        
    }
    result = (fract *)new_fract(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_fract,0);
    XSRETURN(argvi);
}


XS(_wrap_delete_fract) {
    fract *arg1 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: delete_fract(self);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of delete_fract. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    delete_fract(arg1);
    
    
    XSRETURN(argvi);
}


XS(_wrap_acosh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: acosh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)acosh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_airy) {
    double arg1 ;
    double *arg2 ;
    double *arg3 ;
    double *arg4 ;
    double *arg5 ;
    int result;
    double temp2 ;
    double temp3 ;
    double temp4 ;
    double temp5 ;
    int argvi = 0;
    dXSARGS;
    
    arg2 = &temp2;
    arg3 = &temp3;
    arg4 = &temp4;
    arg5 = &temp5;
    if ((items < 1) || (items > 1)) {
        croak("Usage: airy(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (int)airy(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg2));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg3));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg4));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg5));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_asin) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: asin(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)asin(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_acos) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: acos(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)acos(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_asinh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: asinh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)asinh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_atan) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: atan(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)atan(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_atan2) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: atan2(y,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)atan2(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_atanh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: atanh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)atanh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_bdtrc) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: bdtrc(k,n,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)bdtrc(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_bdtr) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: bdtr(k,n,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)bdtr(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_bdtri) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: bdtri(k,n,y);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)bdtri(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_beta) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: beta(a,b);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)beta(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_lbeta) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: lbeta(a,b);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)lbeta(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_btdtr) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: btdtr(a,b,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)btdtr(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cbrt) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cbrt(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cbrt(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_chbevl) {
    double arg1 ;
    void *arg2 ;
    int arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: chbevl(x,P,n);");
    }
    arg1 = (double) SvNV(ST(0));
    
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, 0,0) < 0) {
            croak("Type error in argument 2 of chbevl. Expected %s", SWIGTYPE_p_void->name);
        }
    }
    arg3 = (int) SvIV(ST(2));
    result = (double)chbevl(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_chdtrc) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: chdtrc(df,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)chdtrc(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_chdtr) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: chdtr(df,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)chdtr(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_chdtri) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: chdtri(df,y);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)chdtri(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_clog) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: clog(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of clog. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of clog. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    clog(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cexp) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cexp(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cexp. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cexp. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cexp(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_csin) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: csin(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of csin. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of csin. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    csin(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_ccos) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ccos(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of ccos. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of ccos. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    ccos(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_ctan) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ctan(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of ctan. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of ctan. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    ctan(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_ccot) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ccot(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of ccot. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of ccot. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    ccot(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_casin) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: casin(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of casin. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of casin. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    casin(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cacos) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cacos(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cacos. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cacos. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cacos(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_catan) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: catan(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of catan. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of catan. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    catan(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_csinh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: csinh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of csinh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of csinh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    csinh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_casinh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: casinh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of casinh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of casinh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    casinh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_ccosh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ccosh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of ccosh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of ccosh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    ccosh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cacosh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cacosh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cacosh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cacosh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cacosh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_ctanh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ctanh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of ctanh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of ctanh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    ctanh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_catanh) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: catanh(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of catanh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of catanh. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    catanh(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cpow) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    cmplx *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: cpow(a,z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cpow. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cpow. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 3 of cpow. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cpow(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_radd) {
    fract *arg1 ;
    fract *arg2 ;
    fract *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: radd(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of radd. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 2 of radd. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 3 of radd. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    radd(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_rsub) {
    fract *arg1 ;
    fract *arg2 ;
    fract *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: rsub(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of rsub. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 2 of rsub. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 3 of rsub. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    rsub(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_rmul) {
    fract *arg1 ;
    fract *arg2 ;
    fract *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: rmul(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of rmul. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 2 of rmul. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 3 of rmul. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    rmul(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_rdiv) {
    fract *arg1 ;
    fract *arg2 ;
    fract *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: rdiv(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 1 of rdiv. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 2 of rdiv. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 3 of rdiv. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    rdiv(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_euclid) {
    double *arg1 ;
    double *arg2 ;
    double result;
    double temp1 ;
    double temp2 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: euclid(INOUT,INOUT);");
    }
    {
        temp1 = (double) SvNV(ST(0));
        arg1 = &temp1;
    }
    {
        temp2 = (double) SvNV(ST(1));
        arg2 = &temp2;
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    result = (double)euclid(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg1));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg2));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_cadd) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    cmplx *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: cadd(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cadd. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cadd. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 3 of cadd. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cadd(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_csub) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    cmplx *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: csub(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of csub. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of csub. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 3 of csub. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    csub(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cmul) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    cmplx *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: cmul(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cmul. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cmul. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 3 of cmul. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cmul(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cdiv) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    cmplx *arg3 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: cdiv(a,b,c);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cdiv. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of cdiv. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 3 of cdiv. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cdiv(arg1,arg2,arg3);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cmov) {
    void *arg1 ;
    void *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: cmov(a,b);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, 0,0) < 0) {
            croak("Type error in argument 1 of cmov. Expected %s", SWIGTYPE_p_void->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, 0,0) < 0) {
            croak("Type error in argument 2 of cmov. Expected %s", SWIGTYPE_p_void->name);
        }
    }
    cmov(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cneg) {
    cmplx *arg1 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cneg(a);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cneg. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    cneg(arg1);
    
    
    XSRETURN(argvi);
}


XS(_wrap_cabs) {
    cmplx *arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cabs(z);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of cabs. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    result = (double)cabs(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_csqrt) {
    cmplx *arg1 ;
    cmplx *arg2 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: csqrt(z,w);");
    }
    {
        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 1 of csqrt. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
            croak("Type error in argument 2 of csqrt. Expected %s", SWIGTYPE_p_cmplx->name);
        }
    }
    csqrt(arg1,arg2);
    
    
    XSRETURN(argvi);
}


XS(_wrap_hypot) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: hypot(x,y);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)hypot(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cosh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cosh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cosh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_dawsn) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: dawsn(xx);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)dawsn(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ellie) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ellie(phi,m);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)ellie(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ellik) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ellik(phi,m);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)ellik(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ellpe) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ellpe(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ellpe(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ellpj) {
    double arg1 ;
    double arg2 ;
    double *arg3 ;
    double *arg4 ;
    double *arg5 ;
    double *arg6 ;
    int result;
    double temp3 ;
    double temp4 ;
    double temp5 ;
    double temp6 ;
    int argvi = 0;
    dXSARGS;
    
    arg3 = &temp3;
    arg4 = &temp4;
    arg5 = &temp5;
    arg6 = &temp6;
    if ((items < 2) || (items > 2)) {
        croak("Usage: ellpj(u,m);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (int)ellpj(arg1,arg2,arg3,arg4,arg5,arg6);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg3));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg4));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg5));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg6));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_ellpk) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ellpk(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ellpk(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_exp) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: exp(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)exp(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_exp10) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: exp10(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)exp10(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_exp2) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: exp2(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)exp2(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_expn) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: expn(n,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)expn(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ei) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ei(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ei(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fabs) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: fabs(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)fabs(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fac) {
    int arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: fac(i);");
    }
    arg1 = (int) SvIV(ST(0));
    result = (double)fac(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fdtrc) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: fdtrc(ia,ib,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)fdtrc(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fdtr) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: fdtr(ia,ib,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)fdtr(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fdtri) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: fdtri(ia,ib,y);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)fdtri(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ceil) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ceil(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ceil(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_floor) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: floor(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)floor(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_frexp) {
    double arg1 ;
    int *arg2 ;
    double result;
    int temp2 ;
    int argvi = 0;
    dXSARGS;
    
    arg2 = &temp2;
    if ((items < 1) || (items > 1)) {
        croak("Usage: frexp(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)frexp(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi),(IV) *(arg2));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_ldexp) {
    double arg1 ;
    int arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: ldexp(x,pw2);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (int) SvIV(ST(1));
    result = (double)ldexp(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_fresnl) {
    double arg1 ;
    double *arg2 ;
    double *arg3 ;
    int result;
    double temp2 ;
    double temp3 ;
    int argvi = 0;
    dXSARGS;
    
    arg2 = &temp2;
    arg3 = &temp3;
    if ((items < 1) || (items > 1)) {
        croak("Usage: fresnl(xxa);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (int)fresnl(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg2));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg3));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_gamma) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: gamma(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)gamma(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_lgam) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: lgam(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)lgam(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_gdtr) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: gdtr(a,b,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)gdtr(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_gdtrc) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: gdtrc(a,b,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)gdtrc(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_hyp2f1) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
        croak("Usage: hyp2f1(a,b,c,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    arg4 = (double) SvNV(ST(3));
    
    result = (double)hyp2f1(arg1,arg2,arg3,arg4);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_hyperg) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: hyperg(a,b,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)hyperg(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_hyp2f0) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    int arg4 ;
    double *arg5 ;
    double result;
    double temp5 ;
    int argvi = 0;
    dXSARGS;
    
    arg5 = &temp5;
    if ((items < 4) || (items > 4)) {
        croak("Usage: hyp2f0(a,b,x,type);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    arg4 = (int) SvIV(ST(3));
    result = (double)hyp2f0(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg5));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_i0) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: i0(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)i0(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_i0e) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: i0e(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)i0e(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_i1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: i1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)i1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_i1e) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: i1e(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)i1e(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_igamc) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: igamc(a,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)igamc(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_igam) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: igam(a,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)igam(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_igami) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: igami(a,y0);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)igami(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_incbet) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: incbet(aa,bb,xx);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)incbet(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_incbi) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: incbi(aa,bb,yy0);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)incbi(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_iv) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: iv(v,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)iv(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_j0) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: j0(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)j0(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_y0) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: y0(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)y0(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_j1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: j1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)j1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_y1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: y1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)y1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_jn) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: jn(n,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)jn(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_jv) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: jv(n,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)jv(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_k0) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: k0(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)k0(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_k0e) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: k0e(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)k0e(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_k1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: k1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)k1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_k1e) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: k1e(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)k1e(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_kn) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: kn(nn,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)kn(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_log) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: log(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)log(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_log10) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: log10(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)log10(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_log2) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: log2(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)log2(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_lrand) {
    long result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
        croak("Usage: lrand();");
    }
    result = (long)lrand();
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    XSRETURN(argvi);
}


XS(_wrap_lsqrt) {
    long arg1 ;
    long result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: lsqrt(x);");
    }
    arg1 = (long) SvIV(ST(0));
    result = (long)lsqrt(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    XSRETURN(argvi);
}


XS(_wrap_mtherr) {
    char *arg1 ;
    int arg2 ;
    int result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: mtherr(name,code);");
    }
    if (!SvOK((SV*) ST(0))) arg1 = 0;
    else arg1 = (char *) SvPV(ST(0), PL_na);
    arg2 = (int) SvIV(ST(1));
    result = (int)mtherr(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    XSRETURN(argvi);
}


XS(_wrap_polevl) {
    double arg1 ;
    void *arg2 ;
    int arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: polevl(x,P,N);");
    }
    arg1 = (double) SvNV(ST(0));
    
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, 0,0) < 0) {
            croak("Type error in argument 2 of polevl. Expected %s", SWIGTYPE_p_void->name);
        }
    }
    arg3 = (int) SvIV(ST(2));
    result = (double)polevl(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_p1evl) {
    double arg1 ;
    void *arg2 ;
    int arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: p1evl(x,P,N);");
    }
    arg1 = (double) SvNV(ST(0));
    
    {
        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, 0,0) < 0) {
            croak("Type error in argument 2 of p1evl. Expected %s", SWIGTYPE_p_void->name);
        }
    }
    arg3 = (int) SvIV(ST(2));
    result = (double)p1evl(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_nbdtrc) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: nbdtrc(k,n,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)nbdtrc(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_nbdtr) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: nbdtr(k,n,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)nbdtr(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_nbdtri) {
    int arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: nbdtri(k,n,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    result = (double)nbdtri(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ndtr) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ndtr(a);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ndtr(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_erfc) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: erfc(a);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)erfc(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_erf) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: erf(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)erf(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_ndtri) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: ndtri(y0);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)ndtri(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_pdtrc) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: pdtrc(k,m);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)pdtrc(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_pdtr) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: pdtr(k,m);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)pdtr(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_pdtri) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: pdtri(k,y);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)pdtri(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_pow) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: pow(x,y);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)pow(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_powi) {
    double arg1 ;
    int arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: powi(x,nn);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (int) SvIV(ST(1));
    result = (double)powi(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_psi) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: psi(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)psi(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_rgamma) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: rgamma(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)rgamma(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_round) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: round(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)round(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_shichi) {
    double arg1 ;
    double *arg2 ;
    double *arg3 ;
    int result;
    double temp2 ;
    double temp3 ;
    int argvi = 0;
    dXSARGS;
    
    arg2 = &temp2;
    arg3 = &temp3;
    if ((items < 1) || (items > 1)) {
        croak("Usage: shichi(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (int)shichi(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg2));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg3));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_sici) {
    double arg1 ;
    double *arg2 ;
    double *arg3 ;
    int result;
    double temp2 ;
    double temp3 ;
    int argvi = 0;
    dXSARGS;
    
    arg2 = &temp2;
    arg3 = &temp3;
    if ((items < 1) || (items > 1)) {
        croak("Usage: sici(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (int)sici(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg2));
        argvi++;
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg3));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_sin) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: sin(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)sin(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cos) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cos(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cos(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_radian) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: radian(d,m,s);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    result = (double)radian(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_sindg) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: sindg(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)sindg(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cosdg) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cosdg(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cosdg(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_sinh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: sinh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)sinh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_spence) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: spence(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)spence(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_sqrt) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: sqrt(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)sqrt(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_stdtr) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: stdtr(k,t);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)stdtr(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_stdtri) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: stdtri(k,p);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)stdtri(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_onef2) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double *arg5 ;
    double result;
    double temp5 ;
    int argvi = 0;
    dXSARGS;
    
    arg5 = &temp5;
    if ((items < 4) || (items > 4)) {
        croak("Usage: onef2(a,b,c,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    arg4 = (double) SvNV(ST(3));
    
    result = (double)onef2(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg5));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_threef0) {
    double arg1 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double *arg5 ;
    double result;
    double temp5 ;
    int argvi = 0;
    dXSARGS;
    
    arg5 = &temp5;
    if ((items < 4) || (items > 4)) {
        croak("Usage: threef0(a,b,c,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    arg3 = (double) SvNV(ST(2));
    
    arg4 = (double) SvNV(ST(3));
    
    result = (double)threef0(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg5));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_struve) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: struve(v,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)struve(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_tan) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: tan(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)tan(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cot) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cot(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cot(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_tandg) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: tandg(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)tandg(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cotdg) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cotdg(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cotdg(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_tanh) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: tanh(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)tanh(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_log1p) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: log1p(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)log1p(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_expm1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: expm1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)expm1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_cosm1) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: cosm1(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)cosm1(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_yn) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: yn(n,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)yn(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_yv) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: yv(n,x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)yv(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_zeta) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: zeta(x,q);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)zeta(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_zetac) {
    double arg1 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: zetac(x);");
    }
    arg1 = (double) SvNV(ST(0));
    
    result = (double)zetac(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_drand) {
    double *arg1 ;
    int result;
    double temp1 ;
    int argvi = 0;
    dXSARGS;
    
    arg1 = &temp1;
    if ((items < 0) || (items > 0)) {
        croak("Usage: drand();");
    }
    result = (int)drand(arg1);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi),(double) *(arg1));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_plancki) {
    double arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: plancki(w,T);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (double) SvNV(ST(1));
    
    result = (double)plancki(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_polini) {
    int arg1 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: polini(maxdeg);");
    }
    arg1 = (int) SvIV(ST(0));
    polini(arg1);
    
    
    XSRETURN(argvi);
}


XS(_wrap_polmul) {
    arr1d arg1 ;
    int arg2 ;
    arr1d arg3 ;
    int arg4 ;
    arr1d arg5 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: polmul(A,na,B,nb,C);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(2);
    _saved[2] = ST(4);
    polmul(arg1,arg2,arg3,arg4,arg5);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_poldiv) {
    arr1d arg1 ;
    int arg2 ;
    arr1d arg3 ;
    int arg4 ;
    arr1d arg5 ;
    int result;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: poldiv(A,na,B,nb,C);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(2);
    _saved[2] = ST(4);
    result = (int)poldiv(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_poladd) {
    arr1d arg1 ;
    int arg2 ;
    arr1d arg3 ;
    int arg4 ;
    arr1d arg5 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: poladd(A,na,B,nb,C);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(2);
    _saved[2] = ST(4);
    poladd(arg1,arg2,arg3,arg4,arg5);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polsub) {
    arr1d arg1 ;
    int arg2 ;
    arr1d arg3 ;
    int arg4 ;
    arr1d arg5 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: polsub(A,na,B,nb,C);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(2);
    _saved[2] = ST(4);
    polsub(arg1,arg2,arg3,arg4,arg5);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polsbt) {
    arr1d arg1 ;
    int arg2 ;
    arr1d arg3 ;
    int arg4 ;
    arr1d arg5 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: polsbt(A,na,B,nb,C);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(2);
    _saved[2] = ST(4);
    polsbt(arg1,arg2,arg3,arg4,arg5);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_poleva) {
    arr1d arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    SV * _saved[1] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: poleva(A,na,x);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    _saved[0] = ST(0);
    result = (double)poleva(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polatn) {
    arr1d arg1 ;
    arr1d arg2 ;
    arr1d arg3 ;
    int arg4 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
        croak("Usage: polatn(A,B,C,n);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(2);
    polatn(arg1,arg2,arg3,arg4);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg3, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polsqt) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: polsqt(A,B,n);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    polsqt(arg1,arg2,arg3);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polsin) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: polsin(A,B,n);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    polsin(arg1,arg2,arg3);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polcos) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: polcos(A,B,n);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    polcos(arg1,arg2,arg3);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polrt_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int result;
    int argvi = 0;
    SV * _saved[4] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: polrt_wrap(xcof,cof,m,r,i);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    result = (int)polrt_wrap(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_cpmul_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int *arg9 ;
    int result;
    int temp9 ;
    int argvi = 0;
    SV * _saved[7] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: cpmul_wrap(ar,ai,da,br,bi,db,cr,ci,INOUT);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    {
        temp9 = (int) SvIV(ST(8));
        arg9 = &temp9;
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    _saved[6] = ST(8);
    result = (int)cpmul_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    {
        if (argvi >= items) {
            EXTEND(sp,1);
        }
        ST(argvi) = sv_newmortal();
        sv_setiv(ST(argvi),(IV) *(arg9));
        argvi++;
    }
    XSRETURN(argvi);
}


XS(_wrap_fpolini) {
    int arg1 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
        croak("Usage: fpolini(maxdeg);");
    }
    arg1 = (int) SvIV(ST(0));
    fpolini(arg1);
    
    
    XSRETURN(argvi);
}


XS(_wrap_fpolmul_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int arg9 ;
    int argvi = 0;
    SV * _saved[6] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: fpolmul_wrap(A,Ad,na,Bn,Bd,nb,Cn,Cd,nc);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    arg9 = (int) SvIV(ST(8));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    fpolmul_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_fpoldiv_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int arg9 ;
    int result;
    int argvi = 0;
    SV * _saved[6] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: fpoldiv_wrap(A,Ad,na,Bn,Bd,nb,Cn,Cd,nc);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    arg9 = (int) SvIV(ST(8));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    result = (int)fpoldiv_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_fpoladd_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int arg9 ;
    int argvi = 0;
    SV * _saved[6] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: fpoladd_wrap(A,Ad,na,Bn,Bd,nb,Cn,Cd,nc);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    arg9 = (int) SvIV(ST(8));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    fpoladd_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_fpolsub_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int arg9 ;
    int argvi = 0;
    SV * _saved[6] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: fpolsub_wrap(A,Ad,na,Bn,Bd,nb,Cn,Cd,nc);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    arg9 = (int) SvIV(ST(8));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    fpolsub_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_fpolsbt_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1d arg5 ;
    int arg6 ;
    arr1d arg7 ;
    arr1d arg8 ;
    int arg9 ;
    int argvi = 0;
    SV * _saved[6] ;
    dXSARGS;
    
    if ((items < 9) || (items > 9)) {
        croak("Usage: fpolsbt_wrap(A,Ad,na,Bn,Bd,nb,Cn,Cd,nc);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (double *) pack1D(ST(4),'d');
    }
    arg6 = (int) SvIV(ST(5));
    {
        arg7 = (double *) pack1D(ST(6),'d');
    }
    {
        arg8 = (double *) pack1D(ST(7),'d');
    }
    arg9 = (int) SvIV(ST(8));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    _saved[4] = ST(6);
    _saved[5] = ST(7);
    fpolsbt_wrap(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[4], (void *)arg7, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[5], (void *)arg8, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_fpoleva_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    fract *arg4 ;
    fract *arg5 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: fpoleva_wrap(An,Ad,na,x,s);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        if (SWIG_ConvertPtr(ST(3), (void **) &arg4, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 4 of fpoleva_wrap. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    {
        if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_fract,0) < 0) {
            croak("Type error in argument 5 of fpoleva_wrap. Expected %s", SWIGTYPE_p_fract->name);
        }
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    fpoleva_wrap(arg1,arg2,arg3,arg4,arg5);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_bernum_wrap) {
    arr1d arg1 ;
    arr1d arg2 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: bernum_wrap(num,den);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    bernum_wrap(arg1,arg2);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_simpsn_wrap) {
    arr1d arg1 ;
    int arg2 ;
    double arg3 ;
    double result;
    int argvi = 0;
    SV * _saved[1] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: simpsn_wrap(f,n,h);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    arg2 = (int) SvIV(ST(1));
    arg3 = (double) SvNV(ST(2));
    
    _saved[0] = ST(0);
    result = (double)simpsn_wrap(arg1,arg2,arg3);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_minv) {
    arr1d arg1 ;
    arr1d arg2 ;
    int arg3 ;
    arr1d arg4 ;
    arr1i arg5 ;
    int result;
    int argvi = 0;
    SV * _saved[4] ;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
        croak("Usage: minv(A,X,n,B,IPS);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    arg3 = (int) SvIV(ST(2));
    {
        arg4 = (double *) pack1D(ST(3),'d');
    }
    {
        arg5 = (int *) pack1D(ST(4),'i');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    result = (int)minv(arg1,arg2,arg3,arg4,arg5);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg4, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg5, 'i', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_mtransp) {
    int arg1 ;
    arr1d arg2 ;
    arr1d arg3 ;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
        croak("Usage: mtransp(n,A,X);");
    }
    arg1 = (int) SvIV(ST(0));
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    _saved[0] = ST(1);
    _saved[1] = ST(2);
    mtransp(arg1,arg2,arg3);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg3, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_eigens) {
    arr1d arg1 ;
    arr1d arg2 ;
    arr1d arg3 ;
    int arg4 ;
    int argvi = 0;
    SV * _saved[3] ;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
        croak("Usage: eigens(A,EV,E,n);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(2);
    eigens(arg1,arg2,arg3,arg4);
    
    
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg3, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_simq) {
    arr1d arg1 ;
    arr1d arg2 ;
    arr1d arg3 ;
    int arg4 ;
    int arg5 ;
    arr1i arg6 ;
    int result;
    int argvi = 0;
    SV * _saved[4] ;
    dXSARGS;
    
    if ((items < 6) || (items > 6)) {
        croak("Usage: simq(A,B,X,n,flag,IPS);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    {
        arg3 = (double *) pack1D(ST(2),'d');
    }
    arg4 = (int) SvIV(ST(3));
    arg5 = (int) SvIV(ST(4));
    {
        arg6 = (int *) pack1D(ST(5),'i');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    _saved[2] = ST(2);
    _saved[3] = ST(5);
    result = (int)simq(arg1,arg2,arg3,arg4,arg5,arg6);
    
    ST(argvi) = sv_newmortal();
    sv_setiv(ST(argvi++), (IV) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[2], (void *)arg3, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[3], (void *)arg6, 'i', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_polylog) {
    int arg1 ;
    double arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: polylog(n,x);");
    }
    arg1 = (int) SvIV(ST(0));
    arg2 = (double) SvNV(ST(1));
    
    result = (double)polylog(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}


XS(_wrap_arcdot) {
    arr1d arg1 ;
    arr1d arg2 ;
    double result;
    int argvi = 0;
    SV * _saved[2] ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: arcdot(p,q);");
    }
    {
        arg1 = (double *) pack1D(ST(0),'d');
    }
    {
        arg2 = (double *) pack1D(ST(1),'d');
    }
    _saved[0] = ST(0);
    _saved[1] = ST(1);
    result = (double)arcdot(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    {
        unpack1D((SV*)_saved[0], (void *)arg1, 'd', 0);
    }
    {
        unpack1D((SV*)_saved[1], (void *)arg2, 'd', 0);
    }
    XSRETURN(argvi);
}


XS(_wrap_expx2) {
    double arg1 ;
    int arg2 ;
    double result;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
        croak("Usage: expx2(x,sign);");
    }
    arg1 = (double) SvNV(ST(0));
    
    arg2 = (int) SvIV(ST(1));
    result = (double)expx2(arg1,arg2);
    
    ST(argvi) = sv_newmortal();
    sv_setnv(ST(argvi++), (double) result);
    XSRETURN(argvi);
}



/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */

static swig_type_info _swigt__p_arr1i[] = {{"_p_arr1i", 0, "arr1i *", 0},{"_p_arr1i"},{0}};
static swig_type_info _swigt__p_fract[] = {{"_p_fract", 0, "fract *", 0},{"Math::Cephes::Fraction"},{0}};
static swig_type_info _swigt__p_double[] = {{"_p_double", 0, "double *", 0},{"_p_double"},{0}};
static swig_type_info _swigt__p_arr1d[] = {{"_p_arr1d", 0, "arr1d *", 0},{"_p_arr1d"},{0}};
static swig_type_info _swigt__p_void[] = {{"_p_void", 0, "void *", 0},{"_p_void"},{0}};
static swig_type_info _swigt__p_cmplx[] = {{"_p_cmplx", 0, "cmplx *", 0},{"Math::Cephes::Complex"},{0}};
static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *", 0},{"_p_int"},{0}};

static swig_type_info *swig_types_initial[] = {
_swigt__p_arr1i, 
_swigt__p_fract, 
_swigt__p_double, 
_swigt__p_arr1d, 
_swigt__p_void, 
_swigt__p_cmplx, 
_swigt__p_int, 
0
};


/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */

static swig_constant_info swig_constants[] = {
{0}
};
#ifdef __cplusplus
}
#endif
static swig_variable_info swig_variables[] = {
    { "Math::Cephes::MACHEP", MAGIC_CLASS _wrap_set_MACHEP, MAGIC_CLASS _wrap_val_MACHEP,0 },
    { "Math::Cephes::MAXLOG", MAGIC_CLASS _wrap_set_MAXLOG, MAGIC_CLASS _wrap_val_MAXLOG,0 },
    { "Math::Cephes::MINLOG", MAGIC_CLASS _wrap_set_MINLOG, MAGIC_CLASS _wrap_val_MINLOG,0 },
    { "Math::Cephes::MAXNUM", MAGIC_CLASS _wrap_set_MAXNUM, MAGIC_CLASS _wrap_val_MAXNUM,0 },
    { "Math::Cephes::PI", MAGIC_CLASS _wrap_set_PI, MAGIC_CLASS _wrap_val_PI,0 },
    { "Math::Cephes::PIO2", MAGIC_CLASS _wrap_set_PIO2, MAGIC_CLASS _wrap_val_PIO2,0 },
    { "Math::Cephes::PIO4", MAGIC_CLASS _wrap_set_PIO4, MAGIC_CLASS _wrap_val_PIO4,0 },
    { "Math::Cephes::SQRT2", MAGIC_CLASS _wrap_set_SQRT2, MAGIC_CLASS _wrap_val_SQRT2,0 },
    { "Math::Cephes::SQRTH", MAGIC_CLASS _wrap_set_SQRTH, MAGIC_CLASS _wrap_val_SQRTH,0 },
    { "Math::Cephes::LOG2E", MAGIC_CLASS _wrap_set_LOG2E, MAGIC_CLASS _wrap_val_LOG2E,0 },
    { "Math::Cephes::SQ2OPI", MAGIC_CLASS _wrap_set_SQ2OPI, MAGIC_CLASS _wrap_val_SQ2OPI,0 },
    { "Math::Cephes::LOGE2", MAGIC_CLASS _wrap_set_LOGE2, MAGIC_CLASS _wrap_val_LOGE2,0 },
    { "Math::Cephes::LOGSQ2", MAGIC_CLASS _wrap_set_LOGSQ2, MAGIC_CLASS _wrap_val_LOGSQ2,0 },
    { "Math::Cephes::THPIO4", MAGIC_CLASS _wrap_set_THPIO4, MAGIC_CLASS _wrap_val_THPIO4,0 },
    { "Math::Cephes::TWOOPI", MAGIC_CLASS _wrap_set_TWOOPI, MAGIC_CLASS _wrap_val_TWOOPI,0 },
{0}
};
static swig_command_info swig_commands[] = {
{"Math::Cephes::cmplx_r_set", _wrap_cmplx_r_set},
{"Math::Cephes::cmplx_r_get", _wrap_cmplx_r_get},
{"Math::Cephes::cmplx_i_set", _wrap_cmplx_i_set},
{"Math::Cephes::cmplx_i_get", _wrap_cmplx_i_get},
{"Math::Cephes::new_cmplx", _wrap_new_cmplx},
{"Math::Cephes::delete_cmplx", _wrap_delete_cmplx},
{"Math::Cephes::fract_n_set", _wrap_fract_n_set},
{"Math::Cephes::fract_n_get", _wrap_fract_n_get},
{"Math::Cephes::fract_d_set", _wrap_fract_d_set},
{"Math::Cephes::fract_d_get", _wrap_fract_d_get},
{"Math::Cephes::new_fract", _wrap_new_fract},
{"Math::Cephes::delete_fract", _wrap_delete_fract},
{"Math::Cephes::acosh", _wrap_acosh},
{"Math::Cephes::airy", _wrap_airy},
{"Math::Cephes::asin", _wrap_asin},
{"Math::Cephes::acos", _wrap_acos},
{"Math::Cephes::asinh", _wrap_asinh},
{"Math::Cephes::atan", _wrap_atan},
{"Math::Cephes::atan2", _wrap_atan2},
{"Math::Cephes::atanh", _wrap_atanh},
{"Math::Cephes::bdtrc", _wrap_bdtrc},
{"Math::Cephes::bdtr", _wrap_bdtr},
{"Math::Cephes::bdtri", _wrap_bdtri},
{"Math::Cephes::beta", _wrap_beta},
{"Math::Cephes::lbeta", _wrap_lbeta},
{"Math::Cephes::btdtr", _wrap_btdtr},
{"Math::Cephes::cbrt", _wrap_cbrt},
{"Math::Cephes::chbevl", _wrap_chbevl},
{"Math::Cephes::chdtrc", _wrap_chdtrc},
{"Math::Cephes::chdtr", _wrap_chdtr},
{"Math::Cephes::chdtri", _wrap_chdtri},
{"Math::Cephes::clog", _wrap_clog},
{"Math::Cephes::cexp", _wrap_cexp},
{"Math::Cephes::csin", _wrap_csin},
{"Math::Cephes::ccos", _wrap_ccos},
{"Math::Cephes::ctan", _wrap_ctan},
{"Math::Cephes::ccot", _wrap_ccot},
{"Math::Cephes::casin", _wrap_casin},
{"Math::Cephes::cacos", _wrap_cacos},
{"Math::Cephes::catan", _wrap_catan},
{"Math::Cephes::csinh", _wrap_csinh},
{"Math::Cephes::casinh", _wrap_casinh},
{"Math::Cephes::ccosh", _wrap_ccosh},
{"Math::Cephes::cacosh", _wrap_cacosh},
{"Math::Cephes::ctanh", _wrap_ctanh},
{"Math::Cephes::catanh", _wrap_catanh},
{"Math::Cephes::cpow", _wrap_cpow},
{"Math::Cephes::radd", _wrap_radd},
{"Math::Cephes::rsub", _wrap_rsub},
{"Math::Cephes::rmul", _wrap_rmul},
{"Math::Cephes::rdiv", _wrap_rdiv},
{"Math::Cephes::euclid", _wrap_euclid},
{"Math::Cephes::cadd", _wrap_cadd},
{"Math::Cephes::csub", _wrap_csub},
{"Math::Cephes::cmul", _wrap_cmul},
{"Math::Cephes::cdiv", _wrap_cdiv},
{"Math::Cephes::cmov", _wrap_cmov},
{"Math::Cephes::cneg", _wrap_cneg},
{"Math::Cephes::cabs", _wrap_cabs},
{"Math::Cephes::csqrt", _wrap_csqrt},
{"Math::Cephes::hypot", _wrap_hypot},
{"Math::Cephes::cosh", _wrap_cosh},
{"Math::Cephes::dawsn", _wrap_dawsn},
{"Math::Cephes::ellie", _wrap_ellie},
{"Math::Cephes::ellik", _wrap_ellik},
{"Math::Cephes::ellpe", _wrap_ellpe},
{"Math::Cephes::ellpj", _wrap_ellpj},
{"Math::Cephes::ellpk", _wrap_ellpk},
{"Math::Cephes::exp", _wrap_exp},
{"Math::Cephes::exp10", _wrap_exp10},
{"Math::Cephes::exp2", _wrap_exp2},
{"Math::Cephes::expn", _wrap_expn},
{"Math::Cephes::ei", _wrap_ei},
{"Math::Cephes::fabs", _wrap_fabs},
{"Math::Cephes::fac", _wrap_fac},
{"Math::Cephes::fdtrc", _wrap_fdtrc},
{"Math::Cephes::fdtr", _wrap_fdtr},
{"Math::Cephes::fdtri", _wrap_fdtri},
{"Math::Cephes::ceil", _wrap_ceil},
{"Math::Cephes::floor", _wrap_floor},
{"Math::Cephes::frexp", _wrap_frexp},
{"Math::Cephes::ldexp", _wrap_ldexp},
{"Math::Cephes::fresnl", _wrap_fresnl},
{"Math::Cephes::gamma", _wrap_gamma},
{"Math::Cephes::lgam", _wrap_lgam},
{"Math::Cephes::gdtr", _wrap_gdtr},
{"Math::Cephes::gdtrc", _wrap_gdtrc},
{"Math::Cephes::hyp2f1", _wrap_hyp2f1},
{"Math::Cephes::hyperg", _wrap_hyperg},
{"Math::Cephes::hyp2f0", _wrap_hyp2f0},
{"Math::Cephes::i0", _wrap_i0},
{"Math::Cephes::i0e", _wrap_i0e},
{"Math::Cephes::i1", _wrap_i1},
{"Math::Cephes::i1e", _wrap_i1e},
{"Math::Cephes::igamc", _wrap_igamc},
{"Math::Cephes::igam", _wrap_igam},
{"Math::Cephes::igami", _wrap_igami},
{"Math::Cephes::incbet", _wrap_incbet},
{"Math::Cephes::incbi", _wrap_incbi},
{"Math::Cephes::iv", _wrap_iv},
{"Math::Cephes::j0", _wrap_j0},
{"Math::Cephes::y0", _wrap_y0},
{"Math::Cephes::j1", _wrap_j1},
{"Math::Cephes::y1", _wrap_y1},
{"Math::Cephes::jn", _wrap_jn},
{"Math::Cephes::jv", _wrap_jv},
{"Math::Cephes::k0", _wrap_k0},
{"Math::Cephes::k0e", _wrap_k0e},
{"Math::Cephes::k1", _wrap_k1},
{"Math::Cephes::k1e", _wrap_k1e},
{"Math::Cephes::kn", _wrap_kn},
{"Math::Cephes::log", _wrap_log},
{"Math::Cephes::log10", _wrap_log10},
{"Math::Cephes::log2", _wrap_log2},
{"Math::Cephes::lrand", _wrap_lrand},
{"Math::Cephes::lsqrt", _wrap_lsqrt},
{"Math::Cephes::mtherr", _wrap_mtherr},
{"Math::Cephes::polevl", _wrap_polevl},
{"Math::Cephes::p1evl", _wrap_p1evl},
{"Math::Cephes::nbdtrc", _wrap_nbdtrc},
{"Math::Cephes::nbdtr", _wrap_nbdtr},
{"Math::Cephes::nbdtri", _wrap_nbdtri},
{"Math::Cephes::ndtr", _wrap_ndtr},
{"Math::Cephes::erfc", _wrap_erfc},
{"Math::Cephes::erf", _wrap_erf},
{"Math::Cephes::ndtri", _wrap_ndtri},
{"Math::Cephes::pdtrc", _wrap_pdtrc},
{"Math::Cephes::pdtr", _wrap_pdtr},
{"Math::Cephes::pdtri", _wrap_pdtri},
{"Math::Cephes::pow", _wrap_pow},
{"Math::Cephes::powi", _wrap_powi},
{"Math::Cephes::psi", _wrap_psi},
{"Math::Cephes::rgamma", _wrap_rgamma},
{"Math::Cephes::round", _wrap_round},
{"Math::Cephes::shichi", _wrap_shichi},
{"Math::Cephes::sici", _wrap_sici},
{"Math::Cephes::sin", _wrap_sin},
{"Math::Cephes::cos", _wrap_cos},
{"Math::Cephes::radian", _wrap_radian},
{"Math::Cephes::sindg", _wrap_sindg},
{"Math::Cephes::cosdg", _wrap_cosdg},
{"Math::Cephes::sinh", _wrap_sinh},
{"Math::Cephes::spence", _wrap_spence},
{"Math::Cephes::sqrt", _wrap_sqrt},
{"Math::Cephes::stdtr", _wrap_stdtr},
{"Math::Cephes::stdtri", _wrap_stdtri},
{"Math::Cephes::onef2", _wrap_onef2},
{"Math::Cephes::threef0", _wrap_threef0},
{"Math::Cephes::struve", _wrap_struve},
{"Math::Cephes::tan", _wrap_tan},
{"Math::Cephes::cot", _wrap_cot},
{"Math::Cephes::tandg", _wrap_tandg},
{"Math::Cephes::cotdg", _wrap_cotdg},
{"Math::Cephes::tanh", _wrap_tanh},
{"Math::Cephes::log1p", _wrap_log1p},
{"Math::Cephes::expm1", _wrap_expm1},
{"Math::Cephes::cosm1", _wrap_cosm1},
{"Math::Cephes::yn", _wrap_yn},
{"Math::Cephes::yv", _wrap_yv},
{"Math::Cephes::zeta", _wrap_zeta},
{"Math::Cephes::zetac", _wrap_zetac},
{"Math::Cephes::drand", _wrap_drand},
{"Math::Cephes::plancki", _wrap_plancki},
{"Math::Cephes::polini", _wrap_polini},
{"Math::Cephes::polmul", _wrap_polmul},
{"Math::Cephes::poldiv", _wrap_poldiv},
{"Math::Cephes::poladd", _wrap_poladd},
{"Math::Cephes::polsub", _wrap_polsub},
{"Math::Cephes::polsbt", _wrap_polsbt},
{"Math::Cephes::poleva", _wrap_poleva},
{"Math::Cephes::polatn", _wrap_polatn},
{"Math::Cephes::polsqt", _wrap_polsqt},
{"Math::Cephes::polsin", _wrap_polsin},
{"Math::Cephes::polcos", _wrap_polcos},
{"Math::Cephes::polrt_wrap", _wrap_polrt_wrap},
{"Math::Cephes::cpmul_wrap", _wrap_cpmul_wrap},
{"Math::Cephes::fpolini", _wrap_fpolini},
{"Math::Cephes::fpolmul_wrap", _wrap_fpolmul_wrap},
{"Math::Cephes::fpoldiv_wrap", _wrap_fpoldiv_wrap},
{"Math::Cephes::fpoladd_wrap", _wrap_fpoladd_wrap},
{"Math::Cephes::fpolsub_wrap", _wrap_fpolsub_wrap},
{"Math::Cephes::fpolsbt_wrap", _wrap_fpolsbt_wrap},
{"Math::Cephes::fpoleva_wrap", _wrap_fpoleva_wrap},
{"Math::Cephes::bernum_wrap", _wrap_bernum_wrap},
{"Math::Cephes::simpsn_wrap", _wrap_simpsn_wrap},
{"Math::Cephes::minv", _wrap_minv},
{"Math::Cephes::mtransp", _wrap_mtransp},
{"Math::Cephes::eigens", _wrap_eigens},
{"Math::Cephes::simq", _wrap_simq},
{"Math::Cephes::polylog", _wrap_polylog},
{"Math::Cephes::arcdot", _wrap_arcdot},
{"Math::Cephes::expx2", _wrap_expx2},
{0,0}
};

#ifdef __cplusplus
extern "C"
#endif

XS(SWIG_init) {
    dXSARGS;
    int i;
    static int _init = 0;
    if (!_init) {
        for (i = 0; swig_types_initial[i]; i++) {
            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
        }
        _init = 1;
    }
    
    /* Install commands */
    for (i = 0; swig_commands[i].name; i++) {
        newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
    }
    
    /* Install variables */
    for (i = 0; swig_variables[i].name; i++) {
        SV *sv;
        sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
        if (swig_variables[i].type) {
            SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
        }else {
            sv_setiv(sv,(IV) 0);
        }
        swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
    }
    
    /* Install constant */
    for (i = 0; swig_constants[i].type; i++) {
        SV *sv;
        sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
        switch(swig_constants[i].type) {
            case SWIG_INT:
            sv_setiv(sv, (IV) swig_constants[i].lvalue);
            break;
            case SWIG_FLOAT:
            sv_setnv(sv, (double) swig_constants[i].dvalue);
            break;
            case SWIG_STRING:
            sv_setpv(sv, (char *) swig_constants[i].pvalue);
            break;
            case SWIG_POINTER:
            SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
            break;
            case SWIG_BINARY:
            /*      obj = SWIG_NewPackedObj(swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); */
            break;
            default:
            break;
        }
        SvREADONLY_on(sv);
    }
    
    ST(0) = &PL_sv_yes;
    XSRETURN(1);
}

