;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; LUSH Lisp Universal Shell
;;;   Copyright (C) 2002 Leon Bottou, Yann Le Cun, AT&T Corp, NECI.
;;; Includes parts of TL3:
;;;   Copyright (C) 1987-1999 Leon Bottou and Neuristique.
;;; Includes selected parts of SN3.2:
;;;   Copyright (C) 1991-2001 AT&T Corp.
;;;
;;; Includes information derived from the GSL (Gnu Scientific Library)
;;;   header files which are copyrighted and distributed under the GPL
;;;   by their respective authors.
;;;
;;; This program is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 2 of the License, or
;;; (at your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program; if not, write to the Free Software
;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(libload "gsl/gsl-config")



#? *** complex

;; dummy function that adds GSL C header files in C file
(eval `(de dummy_complex () ,gsl-cpheader-cmd ()))

#? * (dummy_complex)
#? * (gsl_complex_rect <x> <y> <result>)
#? * (gsl_complex_polar <r> <theta> <result>)
#? * (gsl_real <z>)
#? * (gsl_imag <z>)
#? * (gsl_set_complex <zp> <x> <y>)
#? * (gsl_set_real <zp> <x>)
#? * (gsl_set_imag <zp> <y>)
#? * (gsl_complex_arg <z>)
#? * (gsl_complex_abs <z>)
#? * (gsl_complex_abs2 <z>)
#? * (gsl_complex_logabs <z>)
#? * (gsl_complex_add <a> <b> <result>)
#? * (gsl_complex_sub <a> <b> <result>)
#? * (gsl_complex_mul <a> <b> <result>)
#? * (gsl_complex_div <a> <b> <result>)
#? * (gsl_complex_add_real <a> <x> <result>)
#? * (gsl_complex_sub_real <a> <x> <result>)
#? * (gsl_complex_mul_real <a> <x> <result>)
#? * (gsl_complex_div_real <a> <x> <result>)
#? * (gsl_complex_add_imag <a> <y> <result>)
#? * (gsl_complex_sub_imag <a> <y> <result>)
#? * (gsl_complex_mul_imag <a> <y> <result>)
#? * (gsl_complex_div_imag <a> <y> <result>)
#? * (gsl_complex_conjugate <z> <result>)
#? * (gsl_complex_inverse <a> <result>)
#? * (gsl_complex_negative <a> <result>)
#? * (gsl_complex_sqrt <z> <result>)
#? * (gsl_complex_sqrt_real <x> <result>)
#? * (gsl_complex_pow <a> <b> <result>)
#? * (gsl_complex_pow_real <a> <b> <result>)
#? * (gsl_complex_exp <a> <result>)
#? * (gsl_complex_log <a> <result>)
#? * (gsl_complex_log10 <a> <result>)
#? * (gsl_complex_log_b <a> <b> <result>)
#? * (gsl_complex_sin <a> <result>)
#? * (gsl_complex_cos <a> <result>)
#? * (gsl_complex_sec <a> <result>)
#? * (gsl_complex_csc <a> <result>)
#? * (gsl_complex_tan <a> <result>)
#? * (gsl_complex_cot <a> <result>)
#? * (gsl_complex_arcsin <a> <result>)
#? * (gsl_complex_arcsin_real <a> <result>)
#? * (gsl_complex_arccos <a> <result>)
#? * (gsl_complex_arccos_real <a> <result>)
#? * (gsl_complex_arcsec <a> <result>)
#? * (gsl_complex_arcsec_real <a> <result>)
#? * (gsl_complex_arccsc <a> <result>)
#? * (gsl_complex_arccsc_real <a> <result>)
#? * (gsl_complex_arctan <a> <result>)
#? * (gsl_complex_arccot <a> <result>)
#? * (gsl_complex_sinh <a> <result>)
#? * (gsl_complex_cosh <a> <result>)
#? * (gsl_complex_sech <a> <result>)
#? * (gsl_complex_csch <a> <result>)
#? * (gsl_complex_tanh <a> <result>)
#? * (gsl_complex_coth <a> <result>)
#? * (gsl_complex_arcsinh <a> <result>)
#? * (gsl_complex_arccosh <a> <result>)
#? * (gsl_complex_arccosh_real <a> <result>)
#? * (gsl_complex_arcsech <a> <result>)
#? * (gsl_complex_arccsch <a> <result>)
#? * (gsl_complex_arctanh <a> <result>)
#? * (gsl_complex_arctanh_real <a> <result>)
#? * (gsl_complex_arccoth <a> <result>)

;; ********************************************************


(de gsl_complex_rect (    x  y  result )
    ((-double-) x) 
    ((-double-) y) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_rect (  $x ,$y);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_polar (    r  theta  result )
    ((-double-) r) 
    ((-double-) theta) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_polar (  $r ,$theta);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
 
;;#define GSL_REAL(z)     ((z).dat[0])
(de gsl_real ( z)
    ((-gptr- "gsl_complex *") z)
    (double #{ GSL_REAL(*$z) #} ))

;;#define GSL_IMAG(z)     ((z).dat[1])
(de gsl_imag (z)
    ((-gptr- "gsl_complex *") z)
    (double #{ GSL_IMAG(*$z) #} ))


;;#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
(de gsl_set_complex ( zp x y)
    ((-gptr- "gsl_complex *") zp)
    ((-double-) x y)
    #{ GSL_SET_COMPLEX($zp,$x, $y) #}
    ())

;;#define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
(de gsl_set_real (zp x)
    ((-gptr- "gsl_complex *") zp)
    ((-double-) x)
    #{ GSL_SET_REAL($zp,$x) #}
    ())

;;#define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
(de gsl_set_imag (zp y)
    ((-gptr- "gsl_complex *") zp)
    ((-double-) y)
    #{ GSL_SET_IMAG($zp, $y) #}
    ())


(de gsl_complex_arg (    z )
    ((-gptr- "gsl_complex *") z) 
    (double #{ gsl_complex_arg (  *$z) #} )
)
 
(de gsl_complex_abs (    z )
    ((-gptr- "gsl_complex *") z) 
    (double #{ gsl_complex_abs (  *$z) #} )
)
   
(de gsl_complex_abs2 (    z )
    ((-gptr- "gsl_complex *") z) 
    (double #{ gsl_complex_abs2 (  *$z) #} )
)
  
(de gsl_complex_logabs (    z )
    ((-gptr- "gsl_complex *") z) 
    (double #{ gsl_complex_logabs (  *$z) #} )
)
 



(de gsl_complex_add (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_add (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sub (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sub (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_mul (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_mul (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_div (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_div (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
                                                           
(de gsl_complex_add_real (    a  x  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) x) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_add_real (  *$a ,$x);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sub_real (    a  x  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) x) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sub_real (  *$a ,$x);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_mul_real (    a  x  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) x) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_mul_real (  *$a ,$x);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_div_real (    a  x  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) x) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_div_real (  *$a ,$x);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  

(de gsl_complex_add_imag (    a  y  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) y) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_add_imag (  *$a ,$y);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sub_imag (    a  y  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) y) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sub_imag (  *$a ,$y);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_mul_imag (    a  y  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) y) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_mul_imag (  *$a ,$y);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_div_imag (    a  y  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) y) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_div_imag (  *$a ,$y);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  

(de gsl_complex_conjugate (    z  result )
    ((-gptr- "gsl_complex *") z) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_conjugate (  *$z);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_inverse (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_inverse (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
    
(de gsl_complex_negative (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_negative (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
    



(de gsl_complex_sqrt (    z  result )
    ((-gptr- "gsl_complex *") z) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sqrt (  *$z);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sqrt_real (    x  result )
    ((-double-) x) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sqrt_real (  $x);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  

(de gsl_complex_pow (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_pow (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_pow_real (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-double-) b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_pow_real (  *$a ,$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  

(de gsl_complex_exp (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_exp (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
    
(de gsl_complex_log (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_log (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
    
(de gsl_complex_log10 (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_log10 (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_log_b (    a  b  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") b) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_log_b (  *$a ,*$b);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
   



(de gsl_complex_sin (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sin (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_cos (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_cos (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sec (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sec (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_csc (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_csc (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_tan (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_tan (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_cot (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_cot (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  



(de gsl_complex_arcsin (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsin (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arcsin_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsin_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccos (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccos (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccos_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccos_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arcsec (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsec (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arcsec_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsec_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccsc (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccsc (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccsc_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccsc_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arctan (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arctan (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccot (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccot (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  



(de gsl_complex_sinh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sinh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_cosh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_cosh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_sech (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_sech (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_csch (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_csch (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_tanh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_tanh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_coth (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_coth (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  



(de gsl_complex_arcsinh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsinh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccosh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccosh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccosh_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccosh_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arcsech (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arcsech (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccsch (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccsch (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arctanh (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arctanh (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arctanh_real (    a  result )
    ((-double-) a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arctanh_real (  $a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  
(de gsl_complex_arccoth (    a  result )
    ((-gptr- "gsl_complex *") a) 
    ((-gptr- "gsl_complex *") result)
    #{ {
    gsl_complex tmp;
    tmp = gsl_complex_arccoth (  *$a);
    memcpy($result,&tmp, sizeof(gsl_complex));
    } #} 
    ()
)
  




;; ********************************************************

(dhc-make ()
  dummy_complex
  gsl_complex_rect
  gsl_complex_polar
  gsl_real
  gsl_imag
  gsl_set_complex
  gsl_set_real
  gsl_set_imag
  gsl_complex_arg
  gsl_complex_abs
  gsl_complex_abs2
  gsl_complex_logabs
  gsl_complex_add
  gsl_complex_sub
  gsl_complex_mul
  gsl_complex_div
  gsl_complex_add_real
  gsl_complex_sub_real
  gsl_complex_mul_real
  gsl_complex_div_real
  gsl_complex_add_imag
  gsl_complex_sub_imag
  gsl_complex_mul_imag
  gsl_complex_div_imag
  gsl_complex_conjugate
  gsl_complex_inverse
  gsl_complex_negative
  gsl_complex_sqrt
  gsl_complex_sqrt_real
  gsl_complex_pow
  gsl_complex_pow_real
  gsl_complex_exp
  gsl_complex_log
  gsl_complex_log10
  gsl_complex_log_b
  gsl_complex_sin
  gsl_complex_cos
  gsl_complex_sec
  gsl_complex_csc
  gsl_complex_tan
  gsl_complex_cot
  gsl_complex_arcsin
  gsl_complex_arcsin_real
  gsl_complex_arccos
  gsl_complex_arccos_real
  gsl_complex_arcsec
  gsl_complex_arcsec_real
  gsl_complex_arccsc
  gsl_complex_arccsc_real
  gsl_complex_arctan
  gsl_complex_arccot
  gsl_complex_sinh
  gsl_complex_cosh
  gsl_complex_sech
  gsl_complex_csch
  gsl_complex_tanh
  gsl_complex_coth
  gsl_complex_arcsinh
  gsl_complex_arccosh
  gsl_complex_arccosh_real
  gsl_complex_arcsech
  gsl_complex_arccsch
  gsl_complex_arctanh
  gsl_complex_arctanh_real
  gsl_complex_arccoth
)
