/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.20
 * 
 * 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. 
 * ----------------------------------------------------------------------------- */

/*************************************************************** -*- c -*-
 * perl5/precommon.swg
 *
 * Rename all exported symbols from common.swg, to avoid symbol
 * clashes if multiple interpreters are included
 *
 ************************************************************************/

#define SWIG_TypeRegister    SWIG_Perl_TypeRegister
#define SWIG_TypeCheck       SWIG_Perl_TypeCheck
#define SWIG_TypeCast        SWIG_Perl_TypeCast
#define SWIG_TypeDynamicCast SWIG_Perl_TypeDynamicCast
#define SWIG_TypeName        SWIG_Perl_TypeName
#define SWIG_TypeQuery       SWIG_Perl_TypeQuery
#define SWIG_TypeClientData  SWIG_Perl_TypeClientData
#define SWIG_PackData        SWIG_Perl_PackData 
#define SWIG_UnpackData      SWIG_Perl_UnpackData 


/***********************************************************************
 * 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__) || defined(__CYGWIN__)
#  if defined(_MSC_VER) || defined(__GNUC__)
#    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(const char *)     SWIG_TypeName(const swig_type_info *);
SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
SWIGIMPORT(void)             SWIG_TypeClientData(swig_type_info *, void *);
SWIGIMPORT(char *)           SWIG_PackData(char *, void *, int);
SWIGIMPORT(char *)           SWIG_UnpackData(char *, void *, int);

#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++;
  }
  if (next) next->prev = head;
  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;
      s->prev = ty;
      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;
}

/* Return the name associated with this type */
SWIGRUNTIME(const char *)
SWIG_TypeName(const swig_type_info *ty) {
  return ty->name;
}

/* 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 == 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;
  }
}

/* Pack binary data into a string */
SWIGRUNTIME(char *)
SWIG_PackData(char *c, void *ptr, int sz) {
  static char hex[17] = "0123456789abcdef";
  int i;
  unsigned char *u = (unsigned char *) ptr;
  register unsigned char uu;
  for (i = 0; i < sz; i++,u++) {
    uu = *u;
    *(c++) = hex[(uu & 0xf0) >> 4];
    *(c++) = hex[uu & 0xf];
  }
  return c;
}

/* Unpack binary data from a string */
SWIGRUNTIME(char *)
SWIG_UnpackData(char *c, void *ptr, int sz) {
  register unsigned char uu = 0;
  register int d;
  unsigned char *u = (unsigned char *) ptr;
  int i;
  for (i = 0; i < sz; i++, u++) {
    d = *(c++);
    if ((d >= '0') && (d <= '9'))
      uu = ((d - '0') << 4);
    else if ((d >= 'a') && (d <= 'f'))
      uu = ((d - ('a'-10)) << 4);
    d = *(c++);
    if ((d >= '0') && (d <= '9'))
      uu |= (d - '0');
    else if ((d >= 'a') && (d <= 'f'))
      uu |= (d - ('a'-10));
    *u = uu;
  }
  return c;
}

#endif

#ifdef __cplusplus
}
#endif

/* ---------------------------------------------------------------------- -*- c -*-
 * perl5.swg
 *
 * Perl5 runtime library
 * $Header: /home/cvs/Math-Cephes/Cephes_wrap.c,v 1.1 2003/12/22 16:48:39 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"
#include "arrays.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 
#  ifndef MULTIPLICITY 
#    define SWIG_CALLXS(_name) _name(cv) 
#  else 
#    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) 
#  endif 
#endif 

/* Contract support */

#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else

/* 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

#define SWIG_OWNER 1
#define SWIG_SHADOW 2

/* Common SWIG API */

#ifdef PERL_OBJECT
#  define SWIG_ConvertPtr(obj, pp, type, flags) \
     SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
#  define SWIG_NewPointerObj(p, type, flags) \
     SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
#  define SWIG_MakePackedObj(sv, p, s, type)	\
     SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
     SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)

#else
#  define SWIG_ConvertPtr(obj, pp, type, flags) \
     SWIG_Perl_ConvertPtr(obj, pp, type, flags)
#  define SWIG_NewPointerObj(p, type, flags) \
     SWIG_Perl_NewPointerObj(p, type, flags)
#  define SWIG_MakePackedObj(sv, p, s, type)	\
     SWIG_Perl_MakePackedObj(sv, p, s, type )
#  define SWIG_ConvertPacked(obj, p, s, type, flags) \
     SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
#endif

/* Perl-specific API */
#ifdef PERL_OBJECT
#  define SWIG_MakePtr(sv, ptr, type, flags) \
     SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
#  define SWIG_TypeCheckRV(rv, ty) \
     SWIG_Perl_TypeCheckRV(pPerl, rv, ty)
#  define SWIG_SetError(str) \
     SWIG_Perl_SetError(pPerl, str)
#else
#  define SWIG_MakePtr(sv, ptr, type, flags) \
     SWIG_Perl_MakePtr(sv, ptr, type, flags)
#  define SWIG_TypeCheckRV(rv, ty) \
     SWIG_Perl_TypeCheckRV(rv, ty)
#  define SWIG_SetError(str) \
     SWIG_Perl_SetError(str)
#  define SWIG_SetErrorSV(str) \
     SWIG_Perl_SetErrorSV(str)
#endif

#define SWIG_SetErrorf SWIG_Perl_SetErrorf


#ifdef PERL_OBJECT
#  define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
#else
#  define SWIG_MAYBE_PERL_OBJECT
#endif

#ifdef SWIG_NOINCLUDE

SWIGIMPORT(int)               SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *, void **, swig_type_info *, int flags);
SWIGIMPORT(void)              SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *, void *, swig_type_info *, int flags);
SWIGIMPORT(SV *)              SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *, swig_type_info *, int flags);
SWIGIMPORT(void)              SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *, void *, int, swig_type_info *);
SWIGIMPORT(int)               SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *, void *, int, swig_type_info *, int flags);
SWIGIMPORT(swig_type_info *)  SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty);
SWIGIMPORT(SV *)              SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT char *);

#else

SWIGRUNTIME(swig_type_info *)
SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, 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 (sv_derived_from(rv, (char *) s->name)) {
      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;
      s->prev = ty;
      return s;
    }
    s = s->next;
  } while (s && (s != ty->next));
  return 0;
}

/* Function for getting a pointer value */

SWIGRUNTIME(int) 
SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
  swig_type_info *tc;
  void *voidptr = (void *)0;

  /* 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);
    IV tmp = 0;
    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));
    }
    voidptr = (void *)tmp;
    if (!_t) {
      *(ptr) = voidptr;
      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 */
    tc = SWIG_TypeCheckRV(sv,_t);
    if (!tc) {
      *ptr = voidptr;
      return -1;
    }
    *ptr = SWIG_TypeCast(tc,voidptr);
    return 0;
  }
  *ptr = voidptr;
  return 0;
}

SWIGRUNTIME(void)
SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
  if (ptr && (flags & SWIG_SHADOW)) {
    SV *self;
    SV *obj=newSV(0);
    HV *hash=newHV();
    HV *stash;
    sv_setref_pv(obj, (char *) t->name, ptr);
    stash=SvSTASH(SvRV(obj));
    if (flags & SWIG_OWNER) {
      HV *hv;
      GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
      if (!isGV(gv))
        gv_init(gv, stash, "OWNER", 5, FALSE);
      hv=GvHVn(gv);
      hv_store_ent(hv, obj, newSViv(1), 0);
    }
    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
    SvREFCNT_dec(obj);
    self=newRV_noinc((SV *)hash);
    sv_setsv(sv, self);
    SvREFCNT_dec((SV *)self);
    sv_bless(sv, stash);
  }
  else {
    sv_setref_pv(sv, (char *) t->name, ptr);
  }
}

SWIGRUNTIME(SV *)
SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
  SV *result = sv_newmortal();
  SWIG_MakePtr(result, ptr, t, flags);
  return result;
}

SWIGRUNTIME(void)
  SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
  char result[1024];
  char *r = result;
  if ((2*sz + 1 + strlen(type->name)) > 1000) return;
  *(r++) = '_';
  r = SWIG_PackData(r,ptr,sz);
  strcpy(r,type->name);
  sv_setpv(sv, result);
}

/* Convert a packed value value */
SWIGRUNTIME(int)
SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
  swig_type_info *tc;
  char  *c = 0;

  if ((!obj) || (!SvOK(obj))) return -1;
  c = SvPV(obj, PL_na);
  /* Pointer values must start with leading underscore */
  if (*c != '_') return -1;
  c++;
  c = SWIG_UnpackData(c,ptr,sz);
  if (ty) {
    tc = SWIG_TypeCheck(c,ty);
    if (!tc) return -1;
  }
  return 0;
}

SWIGRUNTIME(void)
SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
  if (error) sv_setpv(perl_get_sv("@", TRUE), error);
}

SWIGRUNTIME(void)
SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
  if (error) sv_setsv(perl_get_sv("@", TRUE), error);
}

SWIGRUNTIME(void)
SWIG_Perl_SetErrorf(const char *fmt, ...) {
  va_list args;
  va_start(args, fmt);
  sv_vsetpvfn(perl_get_sv("@", TRUE), fmt, strlen(fmt), &args, Null(SV**), 0, Null(bool*));
  va_end(args);
}

#endif

/* Macros for low-level exception handling */
#define SWIG_fail       goto fail
#define SWIG_croak(x)   { SWIG_SetError(x); goto fail; }
#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
/* most preprocessors do not support vararg macros :-( */
/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */


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






#ifdef do_open
  #undef do_open
#endif
#ifdef do_close
  #undef do_close
#endif
#ifdef scalar
  #undef scalar
#endif
#ifdef list
  #undef list
#endif
#ifdef apply
  #undef apply
#endif
#ifdef convert
  #undef convert
#endif
#ifdef Error
  #undef Error
#endif
#ifdef form
  #undef form
#endif
#ifdef vform
  #undef vform
#endif
#ifdef LABEL
  #undef LABEL
#endif
#ifdef METHOD
  #undef METHOD
#endif
#ifdef Move
  #undef Move
#endif
#ifdef yylex
  #undef yylex
#endif
#ifdef yyparse
  #undef yyparse
#endif
#ifdef yyerror
  #undef yyerror
#endif
#ifdef invert
  #undef invert
#endif
#ifdef ref
  #undef ref
#endif
#ifdef ENTER
  #undef ENTER
#endif


/* -------- 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_cmplx swig_types[4] 
#define  SWIGTYPE_p_int swig_types[5] 
static swig_type_info *swig_types[7];

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

#define SWIG_init    boot_Math__Cephes

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

#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 md_acosh(double);
extern int airy(double,double *,double *,double *,double *);
extern double md_asin(double);
extern double md_acos(double);
extern double md_asinh(double);
extern double md_atan(double);
extern double md_atan2(double,double);
extern double md_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 md_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 md_clog(cmplx *,cmplx *);
extern void md_cexp(cmplx *,cmplx *);
extern void md_csin(cmplx *,cmplx *);
extern void md_ccos(cmplx *,cmplx *);
extern void md_ctan(cmplx *,cmplx *);
extern void ccot(cmplx *,cmplx *);
extern void md_casin(cmplx *,cmplx *);
extern void md_cacos(cmplx *,cmplx *);
extern void md_catan(cmplx *,cmplx *);
extern void md_csinh(cmplx *,cmplx *);
extern void md_casinh(cmplx *,cmplx *);
extern void md_ccosh(cmplx *,cmplx *);
extern void md_cacosh(cmplx *,cmplx *);
extern void md_ctanh(cmplx *,cmplx *);
extern void md_catanh(cmplx *,cmplx *);
extern void md_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 md_cabs(cmplx *);
extern void md_csqrt(cmplx *,cmplx *);
extern double md_hypot(double,double);
extern double md_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 md_exp(double);
extern double md_exp10(double);
extern double md_exp2(double);
extern double md_expn(int,double);
extern double ei(double);
extern double md_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 md_ceil(double);
extern double md_floor(double);
extern double md_frexp(double,int *);
extern double md_ldexp(double,int);
extern int fresnl(double,double *,double *);
extern double md_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 md_j0(double);
extern double md_y0(double);
extern double md_j1(double);
extern double md_y1(double);
extern double md_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 md_log(double);
extern double md_log10(double);
extern double md_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 md_erfc(double);
extern double md_erf(double);
extern double ndtri(double);
extern double pdtrc(int,double);
extern double pdtr(int,double);
extern double pdtri(int,double);
extern double md_pow(double,double);
extern double md_powi(double,int);
extern double psi(double);
extern double rgamma(double);
extern double md_round(double);
extern int shichi(double,double *,double *);
extern int sici(double,double *,double *);
extern double md_sin(double);
extern double md_cos(double);
extern double radian(double,double,double);
extern double md_sindg(double);
extern double cosdg(double);
extern double md_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 md_tan(double);
extern double cot(double);
extern double tandg(double);
extern double cotdg(double);
extern double md_tanh(double);
extern double md_log1p(double);
extern double expm1(double);
extern double cosm1(double);
extern double md_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 = (cmplx *) 0 ;
        double arg2 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: cmplx_r_set(self,r);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of cmplx_r_set. Expected _p_cmplx");
            }
        }
        arg2 = (double) SvNV(ST(1));
        
        if (arg1) (arg1)->r = arg2;
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


XS(_wrap_new_cmplx) {
    {
        double arg1 = (double) 0 ;
        double arg2 = (double) 0 ;
        cmplx *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 2)) {
            SWIG_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, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


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


XS(_wrap_new_fract) {
    {
        double arg1 = (double) 0 ;
        double arg2 = (double) 1 ;
        fract *result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 0) || (items > 2)) {
            SWIG_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, SWIG_SHADOW|SWIG_OWNER);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_airy) {
    {
        double arg1 ;
        double *arg2 = (double *) 0 ;
        double *arg3 = (double *) 0 ;
        double *arg4 = (double *) 0 ;
        double *arg5 = (double *) 0 ;
        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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


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


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


XS(_wrap_bdtrc) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_bdtr) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_bdtri) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_beta) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_lbeta) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_btdtr) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_chdtrc) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_chdtr) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_chdtri) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_clog) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_clog(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_clog. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_clog. Expected _p_cmplx");
            }
        }
        md_clog(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_cexp) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_cexp(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_cexp. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_cexp. Expected _p_cmplx");
            }
        }
        md_cexp(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_csin) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_csin(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_csin. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_csin. Expected _p_cmplx");
            }
        }
        md_csin(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_ccos) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_ccos(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_ccos. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_ccos. Expected _p_cmplx");
            }
        }
        md_ccos(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_ctan) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_ctan(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_ctan. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_ctan. Expected _p_cmplx");
            }
        }
        md_ctan(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_md_casin) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_casin(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_casin. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_casin. Expected _p_cmplx");
            }
        }
        md_casin(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_cacos) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_cacos(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_cacos. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_cacos. Expected _p_cmplx");
            }
        }
        md_cacos(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_catan) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_catan(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_catan. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_catan. Expected _p_cmplx");
            }
        }
        md_catan(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_csinh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_csinh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_csinh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_csinh. Expected _p_cmplx");
            }
        }
        md_csinh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_casinh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_casinh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_casinh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_casinh. Expected _p_cmplx");
            }
        }
        md_casinh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_ccosh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_ccosh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_ccosh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_ccosh. Expected _p_cmplx");
            }
        }
        md_ccosh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_cacosh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_cacosh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_cacosh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_cacosh. Expected _p_cmplx");
            }
        }
        md_cacosh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_ctanh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_ctanh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_ctanh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_ctanh. Expected _p_cmplx");
            }
        }
        md_ctanh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_catanh) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_catanh(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_catanh. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_catanh. Expected _p_cmplx");
            }
        }
        md_catanh(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_cpow) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        cmplx *arg3 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_croak("Usage: md_cpow(a,z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_cpow. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_cpow. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(2), (void **) &arg3, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 3 of md_cpow. Expected _p_cmplx");
            }
        }
        md_cpow(arg1,arg2,arg3);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


XS(_wrap_euclid) {
    {
        double *arg1 = (double *) 0 ;
        double *arg2 = (double *) 0 ;
        double result;
        double temp1 ;
        double temp2 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


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


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


XS(_wrap_md_cabs) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: md_cabs(z);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_cabs. Expected _p_cmplx");
            }
        }
        result = (double)md_cabs(arg1);
        
        ST(argvi) = sv_newmortal();
        sv_setnv(ST(argvi++), (double) result);
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_md_csqrt) {
    {
        cmplx *arg1 = (cmplx *) 0 ;
        cmplx *arg2 = (cmplx *) 0 ;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: md_csqrt(z,w);");
        }
        {
            if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 1 of md_csqrt. Expected _p_cmplx");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_cmplx,0) < 0) {
                SWIG_croak("Type error in argument 2 of md_csqrt. Expected _p_cmplx");
            }
        }
        md_csqrt(arg1,arg2);
        
        
        XSRETURN(argvi);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_dawsn) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ellie) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ellik) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ellpe) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ellpj) {
    {
        double arg1 ;
        double arg2 ;
        double *arg3 = (double *) 0 ;
        double *arg4 = (double *) 0 ;
        double *arg5 = (double *) 0 ;
        double *arg6 = (double *) 0 ;
        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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ellpk) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


XS(_wrap_ei) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_fac) {
    {
        int arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_fdtrc) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_fdtr) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_fdtri) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_md_frexp) {
    {
        double arg1 ;
        int *arg2 = (int *) 0 ;
        double result;
        int temp2 ;
        int argvi = 0;
        dXSARGS;
        
        arg2 = &temp2;
        if ((items < 1) || (items > 1)) {
            SWIG_croak("Usage: md_frexp(x);");
        }
        arg1 = (double) SvNV(ST(0));
        
        result = (double)md_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_fresnl) {
    {
        double arg1 ;
        double *arg2 = (double *) 0 ;
        double *arg3 = (double *) 0 ;
        int result;
        double temp2 ;
        double temp3 ;
        int argvi = 0;
        dXSARGS;
        
        arg2 = &temp2;
        arg3 = &temp3;
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_lgam) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_gdtr) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_gdtrc) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_hyp2f1) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double arg4 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_hyperg) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_hyp2f0) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        int arg4 ;
        double *arg5 = (double *) 0 ;
        double result;
        double temp5 ;
        int argvi = 0;
        dXSARGS;
        
        arg5 = &temp5;
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_i0) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_i0e) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_i1) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_i1e) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_igamc) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_igam) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_igami) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_croak("Usage: igami(a,md_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_incbet) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_incbi) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_iv) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


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


XS(_wrap_jv) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_k0) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_k0e) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_k1) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_k1e) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_kn) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


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


XS(_wrap_lsqrt) {
    {
        long arg1 ;
        long result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_mtherr) {
    {
        char *arg1 ;
        int arg2 ;
        int result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_nbdtrc) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_nbdtr) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_nbdtri) {
    {
        int arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_ndtr) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


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


XS(_wrap_pdtrc) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_pdtr) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_pdtri) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_psi) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_rgamma) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_shichi) {
    {
        double arg1 ;
        double *arg2 = (double *) 0 ;
        double *arg3 = (double *) 0 ;
        int result;
        double temp2 ;
        double temp3 ;
        int argvi = 0;
        dXSARGS;
        
        arg2 = &temp2;
        arg3 = &temp3;
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_sici) {
    {
        double arg1 ;
        double *arg2 = (double *) 0 ;
        double *arg3 = (double *) 0 ;
        int result;
        double temp2 ;
        double temp3 ;
        int argvi = 0;
        dXSARGS;
        
        arg2 = &temp2;
        arg3 = &temp3;
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_radian) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_cosdg) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_spence) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_sqrt) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_stdtr) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_stdtri) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_onef2) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double arg4 ;
        double *arg5 = (double *) 0 ;
        double result;
        double temp5 ;
        int argvi = 0;
        dXSARGS;
        
        arg5 = &temp5;
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_threef0) {
    {
        double arg1 ;
        double arg2 ;
        double arg3 ;
        double arg4 ;
        double *arg5 = (double *) 0 ;
        double result;
        double temp5 ;
        int argvi = 0;
        dXSARGS;
        
        arg5 = &temp5;
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_struve) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_cot) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_tandg) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_cotdg) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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


XS(_wrap_expm1) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_cosm1) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


XS(_wrap_yv) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_zeta) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_zetac) {
    {
        double arg1 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 1) || (items > 1)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_drand) {
    {
        double *arg1 = (double *) 0 ;
        int result;
        double temp1 ;
        int argvi = 0;
        dXSARGS;
        
        arg1 = &temp1;
        if ((items < 0) || (items > 0)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_plancki) {
    {
        double arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_poleva) {
    {
        arr1d arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        SV * _saved[1] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_polatn) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        arr1d arg3 ;
        int arg4 ;
        int argvi = 0;
        SV * _saved[3] ;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_polsqt) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int arg3 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_polsin) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int arg3 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_polcos) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int arg3 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_cpmul_wrap) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int arg3 ;
        arr1d arg4 ;
        arr1d arg5 ;
        int arg6 ;
        arr1d arg7 ;
        arr1d arg8 ;
        int *arg9 = (int *) 0 ;
        int result;
        int temp9 ;
        int argvi = 0;
        SV * _saved[7] ;
        dXSARGS;
        
        if ((items < 9) || (items > 9)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_fpoleva_wrap) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int arg3 ;
        fract *arg4 = (fract *) 0 ;
        fract *arg5 = (fract *) 0 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 5) || (items > 5)) {
            SWIG_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) {
                SWIG_croak("Type error in argument 4 of fpoleva_wrap. Expected _p_fract");
            }
        }
        {
            if (SWIG_ConvertPtr(ST(4), (void **) &arg5, SWIGTYPE_p_fract,0) < 0) {
                SWIG_croak("Type error in argument 5 of fpoleva_wrap. Expected _p_fract");
            }
        }
        _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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_bernum_wrap) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_simpsn_wrap) {
    {
        arr1d arg1 ;
        int arg2 ;
        double arg3 ;
        double result;
        int argvi = 0;
        SV * _saved[1] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_mtransp) {
    {
        int arg1 ;
        arr1d arg2 ;
        arr1d arg3 ;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 3) || (items > 3)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_eigens) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        arr1d arg3 ;
        int arg4 ;
        int argvi = 0;
        SV * _saved[3] ;
        dXSARGS;
        
        if ((items < 4) || (items > 4)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


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)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_polylog) {
    {
        int arg1 ;
        double arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_arcdot) {
    {
        arr1d arg1 ;
        arr1d arg2 ;
        double result;
        int argvi = 0;
        SV * _saved[2] ;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}


XS(_wrap_expx2) {
    {
        double arg1 ;
        int arg2 ;
        double result;
        int argvi = 0;
        dXSARGS;
        
        if ((items < 2) || (items > 2)) {
            SWIG_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);
        fail:
        ;
    }
    croak(Nullch);
}



/* -------- 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[] = {{"Math::Cephes::Fraction", 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_cmplx[] = {{"Math::Cephes::Complex", 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_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::Cephesc::MACHEP", MAGIC_CLASS _wrap_set_MACHEP, MAGIC_CLASS _wrap_val_MACHEP,0 },
    { "Math::Cephesc::MAXLOG", MAGIC_CLASS _wrap_set_MAXLOG, MAGIC_CLASS _wrap_val_MAXLOG,0 },
    { "Math::Cephesc::MINLOG", MAGIC_CLASS _wrap_set_MINLOG, MAGIC_CLASS _wrap_val_MINLOG,0 },
    { "Math::Cephesc::MAXNUM", MAGIC_CLASS _wrap_set_MAXNUM, MAGIC_CLASS _wrap_val_MAXNUM,0 },
    { "Math::Cephesc::PI", MAGIC_CLASS _wrap_set_PI, MAGIC_CLASS _wrap_val_PI,0 },
    { "Math::Cephesc::PIO2", MAGIC_CLASS _wrap_set_PIO2, MAGIC_CLASS _wrap_val_PIO2,0 },
    { "Math::Cephesc::PIO4", MAGIC_CLASS _wrap_set_PIO4, MAGIC_CLASS _wrap_val_PIO4,0 },
    { "Math::Cephesc::SQRT2", MAGIC_CLASS _wrap_set_SQRT2, MAGIC_CLASS _wrap_val_SQRT2,0 },
    { "Math::Cephesc::SQRTH", MAGIC_CLASS _wrap_set_SQRTH, MAGIC_CLASS _wrap_val_SQRTH,0 },
    { "Math::Cephesc::LOG2E", MAGIC_CLASS _wrap_set_LOG2E, MAGIC_CLASS _wrap_val_LOG2E,0 },
    { "Math::Cephesc::SQ2OPI", MAGIC_CLASS _wrap_set_SQ2OPI, MAGIC_CLASS _wrap_val_SQ2OPI,0 },
    { "Math::Cephesc::LOGE2", MAGIC_CLASS _wrap_set_LOGE2, MAGIC_CLASS _wrap_val_LOGE2,0 },
    { "Math::Cephesc::LOGSQ2", MAGIC_CLASS _wrap_set_LOGSQ2, MAGIC_CLASS _wrap_val_LOGSQ2,0 },
    { "Math::Cephesc::THPIO4", MAGIC_CLASS _wrap_set_THPIO4, MAGIC_CLASS _wrap_val_THPIO4,0 },
    { "Math::Cephesc::TWOOPI", MAGIC_CLASS _wrap_set_TWOOPI, MAGIC_CLASS _wrap_val_TWOOPI,0 },
{0}
};
static swig_command_info swig_commands[] = {
{"Math::Cephesc::cmplx_r_set", _wrap_cmplx_r_set},
{"Math::Cephesc::cmplx_r_get", _wrap_cmplx_r_get},
{"Math::Cephesc::cmplx_i_set", _wrap_cmplx_i_set},
{"Math::Cephesc::cmplx_i_get", _wrap_cmplx_i_get},
{"Math::Cephesc::new_cmplx", _wrap_new_cmplx},
{"Math::Cephesc::delete_cmplx", _wrap_delete_cmplx},
{"Math::Cephesc::fract_n_set", _wrap_fract_n_set},
{"Math::Cephesc::fract_n_get", _wrap_fract_n_get},
{"Math::Cephesc::fract_d_set", _wrap_fract_d_set},
{"Math::Cephesc::fract_d_get", _wrap_fract_d_get},
{"Math::Cephesc::new_fract", _wrap_new_fract},
{"Math::Cephesc::delete_fract", _wrap_delete_fract},
{"Math::Cephesc::md_acosh", _wrap_md_acosh},
{"Math::Cephesc::airy", _wrap_airy},
{"Math::Cephesc::md_asin", _wrap_md_asin},
{"Math::Cephesc::md_acos", _wrap_md_acos},
{"Math::Cephesc::md_asinh", _wrap_md_asinh},
{"Math::Cephesc::md_atan", _wrap_md_atan},
{"Math::Cephesc::md_atan2", _wrap_md_atan2},
{"Math::Cephesc::md_atanh", _wrap_md_atanh},
{"Math::Cephesc::bdtrc", _wrap_bdtrc},
{"Math::Cephesc::bdtr", _wrap_bdtr},
{"Math::Cephesc::bdtri", _wrap_bdtri},
{"Math::Cephesc::beta", _wrap_beta},
{"Math::Cephesc::lbeta", _wrap_lbeta},
{"Math::Cephesc::btdtr", _wrap_btdtr},
{"Math::Cephesc::md_cbrt", _wrap_md_cbrt},
{"Math::Cephesc::chbevl", _wrap_chbevl},
{"Math::Cephesc::chdtrc", _wrap_chdtrc},
{"Math::Cephesc::chdtr", _wrap_chdtr},
{"Math::Cephesc::chdtri", _wrap_chdtri},
{"Math::Cephesc::md_clog", _wrap_md_clog},
{"Math::Cephesc::md_cexp", _wrap_md_cexp},
{"Math::Cephesc::md_csin", _wrap_md_csin},
{"Math::Cephesc::md_ccos", _wrap_md_ccos},
{"Math::Cephesc::md_ctan", _wrap_md_ctan},
{"Math::Cephesc::ccot", _wrap_ccot},
{"Math::Cephesc::md_casin", _wrap_md_casin},
{"Math::Cephesc::md_cacos", _wrap_md_cacos},
{"Math::Cephesc::md_catan", _wrap_md_catan},
{"Math::Cephesc::md_csinh", _wrap_md_csinh},
{"Math::Cephesc::md_casinh", _wrap_md_casinh},
{"Math::Cephesc::md_ccosh", _wrap_md_ccosh},
{"Math::Cephesc::md_cacosh", _wrap_md_cacosh},
{"Math::Cephesc::md_ctanh", _wrap_md_ctanh},
{"Math::Cephesc::md_catanh", _wrap_md_catanh},
{"Math::Cephesc::md_cpow", _wrap_md_cpow},
{"Math::Cephesc::radd", _wrap_radd},
{"Math::Cephesc::rsub", _wrap_rsub},
{"Math::Cephesc::rmul", _wrap_rmul},
{"Math::Cephesc::rdiv", _wrap_rdiv},
{"Math::Cephesc::euclid", _wrap_euclid},
{"Math::Cephesc::cadd", _wrap_cadd},
{"Math::Cephesc::csub", _wrap_csub},
{"Math::Cephesc::cmul", _wrap_cmul},
{"Math::Cephesc::cdiv", _wrap_cdiv},
{"Math::Cephesc::cmov", _wrap_cmov},
{"Math::Cephesc::cneg", _wrap_cneg},
{"Math::Cephesc::md_cabs", _wrap_md_cabs},
{"Math::Cephesc::md_csqrt", _wrap_md_csqrt},
{"Math::Cephesc::md_hypot", _wrap_md_hypot},
{"Math::Cephesc::md_cosh", _wrap_md_cosh},
{"Math::Cephesc::dawsn", _wrap_dawsn},
{"Math::Cephesc::ellie", _wrap_ellie},
{"Math::Cephesc::ellik", _wrap_ellik},
{"Math::Cephesc::ellpe", _wrap_ellpe},
{"Math::Cephesc::ellpj", _wrap_ellpj},
{"Math::Cephesc::ellpk", _wrap_ellpk},
{"Math::Cephesc::md_exp", _wrap_md_exp},
{"Math::Cephesc::md_exp10", _wrap_md_exp10},
{"Math::Cephesc::md_exp2", _wrap_md_exp2},
{"Math::Cephesc::md_expn", _wrap_md_expn},
{"Math::Cephesc::ei", _wrap_ei},
{"Math::Cephesc::md_fabs", _wrap_md_fabs},
{"Math::Cephesc::fac", _wrap_fac},
{"Math::Cephesc::fdtrc", _wrap_fdtrc},
{"Math::Cephesc::fdtr", _wrap_fdtr},
{"Math::Cephesc::fdtri", _wrap_fdtri},
{"Math::Cephesc::md_ceil", _wrap_md_ceil},
{"Math::Cephesc::md_floor", _wrap_md_floor},
{"Math::Cephesc::md_frexp", _wrap_md_frexp},
{"Math::Cephesc::md_ldexp", _wrap_md_ldexp},
{"Math::Cephesc::fresnl", _wrap_fresnl},
{"Math::Cephesc::md_gamma", _wrap_md_gamma},
{"Math::Cephesc::lgam", _wrap_lgam},
{"Math::Cephesc::gdtr", _wrap_gdtr},
{"Math::Cephesc::gdtrc", _wrap_gdtrc},
{"Math::Cephesc::hyp2f1", _wrap_hyp2f1},
{"Math::Cephesc::hyperg", _wrap_hyperg},
{"Math::Cephesc::hyp2f0", _wrap_hyp2f0},
{"Math::Cephesc::i0", _wrap_i0},
{"Math::Cephesc::i0e", _wrap_i0e},
{"Math::Cephesc::i1", _wrap_i1},
{"Math::Cephesc::i1e", _wrap_i1e},
{"Math::Cephesc::igamc", _wrap_igamc},
{"Math::Cephesc::igam", _wrap_igam},
{"Math::Cephesc::igami", _wrap_igami},
{"Math::Cephesc::incbet", _wrap_incbet},
{"Math::Cephesc::incbi", _wrap_incbi},
{"Math::Cephesc::iv", _wrap_iv},
{"Math::Cephesc::md_j0", _wrap_md_j0},
{"Math::Cephesc::md_y0", _wrap_md_y0},
{"Math::Cephesc::md_j1", _wrap_md_j1},
{"Math::Cephesc::md_y1", _wrap_md_y1},
{"Math::Cephesc::md_jn", _wrap_md_jn},
{"Math::Cephesc::jv", _wrap_jv},
{"Math::Cephesc::k0", _wrap_k0},
{"Math::Cephesc::k0e", _wrap_k0e},
{"Math::Cephesc::k1", _wrap_k1},
{"Math::Cephesc::k1e", _wrap_k1e},
{"Math::Cephesc::kn", _wrap_kn},
{"Math::Cephesc::md_log", _wrap_md_log},
{"Math::Cephesc::md_log10", _wrap_md_log10},
{"Math::Cephesc::md_log2", _wrap_md_log2},
{"Math::Cephesc::lrand", _wrap_lrand},
{"Math::Cephesc::lsqrt", _wrap_lsqrt},
{"Math::Cephesc::mtherr", _wrap_mtherr},
{"Math::Cephesc::polevl", _wrap_polevl},
{"Math::Cephesc::p1evl", _wrap_p1evl},
{"Math::Cephesc::nbdtrc", _wrap_nbdtrc},
{"Math::Cephesc::nbdtr", _wrap_nbdtr},
{"Math::Cephesc::nbdtri", _wrap_nbdtri},
{"Math::Cephesc::ndtr", _wrap_ndtr},
{"Math::Cephesc::md_erfc", _wrap_md_erfc},
{"Math::Cephesc::md_erf", _wrap_md_erf},
{"Math::Cephesc::ndtri", _wrap_ndtri},
{"Math::Cephesc::pdtrc", _wrap_pdtrc},
{"Math::Cephesc::pdtr", _wrap_pdtr},
{"Math::Cephesc::pdtri", _wrap_pdtri},
{"Math::Cephesc::md_pow", _wrap_md_pow},
{"Math::Cephesc::md_powi", _wrap_md_powi},
{"Math::Cephesc::psi", _wrap_psi},
{"Math::Cephesc::rgamma", _wrap_rgamma},
{"Math::Cephesc::md_round", _wrap_md_round},
{"Math::Cephesc::shichi", _wrap_shichi},
{"Math::Cephesc::sici", _wrap_sici},
{"Math::Cephesc::md_sin", _wrap_md_sin},
{"Math::Cephesc::md_cos", _wrap_md_cos},
{"Math::Cephesc::radian", _wrap_radian},
{"Math::Cephesc::md_sindg", _wrap_md_sindg},
{"Math::Cephesc::cosdg", _wrap_cosdg},
{"Math::Cephesc::md_sinh", _wrap_md_sinh},
{"Math::Cephesc::spence", _wrap_spence},
{"Math::Cephesc::sqrt", _wrap_sqrt},
{"Math::Cephesc::stdtr", _wrap_stdtr},
{"Math::Cephesc::stdtri", _wrap_stdtri},
{"Math::Cephesc::onef2", _wrap_onef2},
{"Math::Cephesc::threef0", _wrap_threef0},
{"Math::Cephesc::struve", _wrap_struve},
{"Math::Cephesc::md_tan", _wrap_md_tan},
{"Math::Cephesc::cot", _wrap_cot},
{"Math::Cephesc::tandg", _wrap_tandg},
{"Math::Cephesc::cotdg", _wrap_cotdg},
{"Math::Cephesc::md_tanh", _wrap_md_tanh},
{"Math::Cephesc::md_log1p", _wrap_md_log1p},
{"Math::Cephesc::expm1", _wrap_expm1},
{"Math::Cephesc::cosm1", _wrap_cosm1},
{"Math::Cephesc::md_yn", _wrap_md_yn},
{"Math::Cephesc::yv", _wrap_yv},
{"Math::Cephesc::zeta", _wrap_zeta},
{"Math::Cephesc::zetac", _wrap_zetac},
{"Math::Cephesc::drand", _wrap_drand},
{"Math::Cephesc::plancki", _wrap_plancki},
{"Math::Cephesc::polini", _wrap_polini},
{"Math::Cephesc::polmul", _wrap_polmul},
{"Math::Cephesc::poldiv", _wrap_poldiv},
{"Math::Cephesc::poladd", _wrap_poladd},
{"Math::Cephesc::polsub", _wrap_polsub},
{"Math::Cephesc::polsbt", _wrap_polsbt},
{"Math::Cephesc::poleva", _wrap_poleva},
{"Math::Cephesc::polatn", _wrap_polatn},
{"Math::Cephesc::polsqt", _wrap_polsqt},
{"Math::Cephesc::polsin", _wrap_polsin},
{"Math::Cephesc::polcos", _wrap_polcos},
{"Math::Cephesc::polrt_wrap", _wrap_polrt_wrap},
{"Math::Cephesc::cpmul_wrap", _wrap_cpmul_wrap},
{"Math::Cephesc::fpolini", _wrap_fpolini},
{"Math::Cephesc::fpolmul_wrap", _wrap_fpolmul_wrap},
{"Math::Cephesc::fpoldiv_wrap", _wrap_fpoldiv_wrap},
{"Math::Cephesc::fpoladd_wrap", _wrap_fpoladd_wrap},
{"Math::Cephesc::fpolsub_wrap", _wrap_fpolsub_wrap},
{"Math::Cephesc::fpolsbt_wrap", _wrap_fpolsbt_wrap},
{"Math::Cephesc::fpoleva_wrap", _wrap_fpoleva_wrap},
{"Math::Cephesc::bernum_wrap", _wrap_bernum_wrap},
{"Math::Cephesc::simpsn_wrap", _wrap_simpsn_wrap},
{"Math::Cephesc::minv", _wrap_minv},
{"Math::Cephesc::mtransp", _wrap_mtransp},
{"Math::Cephesc::eigens", _wrap_eigens},
{"Math::Cephesc::simq", _wrap_simq},
{"Math::Cephesc::polylog", _wrap_polylog},
{"Math::Cephesc::arcdot", _wrap_arcdot},
{"Math::Cephesc::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:
            SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
            break;
            default:
            break;
        }
        SvREADONLY_on(sv);
    }
    
    SWIG_TypeClientData(SWIGTYPE_p_cmplx, (void*) "Math::Cephes::cmplx");
    SWIG_TypeClientData(SWIGTYPE_p_fract, (void*) "Math::Cephes::fract");
    ST(0) = &PL_sv_yes;
    XSRETURN(1);
}

