/*
 *  call-seq:
 *     NMath.tanh(arg)  -> narray
 */
static VALUE na_math_tanh(VALUE obj, VALUE x)
{ return na_math_func(x,tanhFuncs); }

/*
 *  call-seq:
 *     NMath.exp(arg)  -> narray
 */
static VALUE na_math_exp(VALUE obj, VALUE x)
{ return na_math_func(x,expFuncs); }

/*
 *  call-seq:
 *     NMath.log(arg)  -> narray
 */
static VALUE na_math_log(VALUE obj, VALUE x)
{ return na_math_func(x,logFuncs); }

/*
 *  call-seq:
 *     NMath.log10(arg)  -> narray
 */
static VALUE na_math_log10(VALUE obj, VALUE x)
{ return na_math_func(x,log10Funcs); }

/*
 *  call-seq:
 *     NMath.log2(arg)  -> narray
 */
static VALUE na_math_log2(VALUE obj, VALUE x)
{ return na_math_func(x,log2Funcs); }

/*
 *  call-seq:
 *     NMath.asin(arg)  -> narray
 */
static VALUE na_math_asin(VALUE obj, VALUE x)
{ return na_math_func(x,asinFuncs); }

/*
 *  call-seq:
 *     NMath.asinh(arg)  -> narray
 */
static VALUE na_math_asinh(VALUE obj, VALUE x)
{ return na_math_func(x,asinhFuncs); }

/*
 *  call-seq:
 *     NMath.acos(arg)  -> narray
 */
static VALUE na_math_acos(VALUE obj, VALUE x)
{ return na_math_func(x,acosFuncs); }

/*
 *  call-seq:
 *     NMath.acosh(arg)  -> narray
 */
static VALUE na_math_acosh(VALUE obj, VALUE x)
{ return na_math_func(x,acoshFuncs); }

/*
 *  call-seq:
 *     NMath.atan(arg)  -> narray
 */
static VALUE na_math_atan(VALUE obj, VALUE x)
{ return na_math_func(x,atanFuncs); }

/*
 *  call-seq:
 *     NMath.atanh(arg)  -> narray
 */
static VALUE na_math_atanh(VALUE obj, VALUE x)
{ return na_math_func(x,atanhFuncs); }


/* Initialization of NMath module */
void Init_nmath(void)
{
  /* define ExtMath module */
  rb_mNMath = rb_define_module("NMath");

  /* methods */
  rb_define_module_function(rb_mNMath,"sqrt",na_math_sqrt,1);
  rb_define_module_function(rb_mNMath,"sin",na_math_sin,1);
  rb_define_module_function(rb_mNMath,"cos",na_math_cos,1);
  rb_define_module_function(rb_mNMath,"tan",na_math_tan,1);
  rb_define_module_function(rb_mNMath,"sinh",na_math_sinh,1);
  rb_define_module_function(rb_mNMath,"cosh",na_math_cosh,1);
  rb_define_module_function(rb_mNMath,"tanh",na_math_tanh,1);
  rb_define_module_function(rb_mNMath,"exp",na_math_exp,1);
  rb_define_module_function(rb_mNMath,"log",na_math_log,1);
  rb_define_module_function(rb_mNMath,"log10",na_math_log10,1);
  rb_define_module_function(rb_mNMath,"log2",na_math_log2,1);
  rb_define_module_function(rb_mNMath,"asin",na_math_asin,1);
  rb_define_module_function(rb_mNMath,"asinh",na_math_asinh,1);
  rb_define_module_function(rb_mNMath,"acos",na_math_acos,1);
  rb_define_module_function(rb_mNMath,"acosh",na_math_acosh,1);
  rb_define_module_function(rb_mNMath,"atan",na_math_atan,1);
  rb_define_module_function(rb_mNMath,"atanh",na_math_atanh,1);
}