struct   type int_array = (int64, int64_elt, c_layout) Array1.t   type elt_array = (Complex.t, complex64_elt, c_layout) Array2.t   type mblk_struct   let mblk_struct : mblk_struct structure typ = structure "gsl_block_complex_struct"     let msize = field mblk_struct "size" int64_t     let mdata = field mblk_struct "data" (ptr complex64)   let () = seal mblk_struct   
  (** structure definition for vector, refer to gsl_vector_double.h *)
  type vec_struct   let vec_struct : vec_struct structure typ = structure "gsl_vector_complex"     let vsize  = field vec_struct "size" int64_t     let stride = field vec_struct "stride" int64_t     let vdata  = field vec_struct "data" (ptr complex64)     let vblock = field vec_struct "block" (ptr mblk_struct)     let vowner = field vec_struct "owner" int64_t   let () = seal vec_struct   
  (** structure definition for dense matrix, refer to gsl_matrix_double.h *)
  type mat_struct   let mat_struct : mat_struct structure typ = structure "gsl_matrix_complex"     let size1 = field mat_struct "size1" int64_t     let size2 = field mat_struct "size2" int64_t     let tda   = field mat_struct "tda" int64_t     let data  = field mat_struct "data" (ptr complex64)     let block = field mat_struct "block" (ptr mblk_struct)     let owner = field mat_struct "owner" int64_t   let () = seal mat_struct   
  (** define the vector record *)
  type vec_record = {     mutable vsize  : int;            (* size of a vector *)     mutable stride : int;            (* stride of a vector *)     mutable vdata  : elt_array;      (* actual data of a vector *)     mutable vptr   : vec_struct Ctypes_static.structure Ctypes_static.ptr;     (* pointer to a vector's memory *)   } end