diff --git a/bindings-gsl.cabal b/bindings-gsl.cabal
--- a/bindings-gsl.cabal
+++ b/bindings-gsl.cabal
@@ -3,7 +3,7 @@
 homepage: http://bitbucket.org/mauricio/bindings-gsl
 synopsis:
   Low level bindings to GNU GSL.
-version: 0.0.2
+version: 0.1
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
@@ -17,14 +17,33 @@
     ForeignFunctionInterface
   build-depends:
     base >= 3 && < 5,
-    bindings-common >= 1.3 && < 1.4
+    bindings-DSL >= 1.0 && < 1.1
   exposed-modules:
+    Bindings.Gsl
+    Bindings.Gsl.BlasSupport
+    Bindings.Gsl.Cblas
+    Bindings.Gsl.ComplexNumbers
+    Bindings.Gsl.DiscreteHankelTransforms
     Bindings.Gsl.Eigensystems
+    Bindings.Gsl.FastFourierTransforms
+    Bindings.Gsl.Histograms
+    Bindings.Gsl.IeeeFloatingPointArithmetic
     Bindings.Gsl.LeastSquaresFitting
-    Bindings.Gsl.Mode
     Bindings.Gsl.NonlinearLeastSquaresFitting
+    Bindings.Gsl.NTuples
+    Bindings.Gsl.PhysicalConstants
+    Bindings.Gsl.Polynomials
+    Bindings.Gsl.QuasiRandomSequences
+    Bindings.Gsl.RandomNumberDistributions
+    Bindings.Gsl.RandomNumberGeneration
+    Bindings.Gsl.Sorting
     Bindings.Gsl.SpecialFunctions
     Bindings.Gsl.VectorsAndMatrices
+    Bindings.Gsl.VectorsAndMatrices.Blocks
+    Bindings.Gsl.VectorsAndMatrices.DataTypes
+    Bindings.Gsl.VectorsAndMatrices.Matrices
+    Bindings.Gsl.VectorsAndMatrices.Vectors
     Bindings.Gsl.Version
+    Bindings.Gsl.WaveletTransforms
   c-sources: src/inlines.c
   pkgconfig-depends: gsl >= 1.12
diff --git a/src/Bindings/Gsl.hs b/src/Bindings/Gsl.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl.hs
@@ -0,0 +1,1 @@
+module Bindings.Gsl (module Bindings.Gsl.BlasSupport,module Bindings.Gsl.Cblas,module Bindings.Gsl.ComplexNumbers,module Bindings.Gsl.DiscreteHankelTransforms,module Bindings.Gsl.Eigensystems,module Bindings.Gsl.FastFourierTransforms,module Bindings.Gsl.Histograms,module Bindings.Gsl.IeeeFloatingPointArithmetic,module Bindings.Gsl.LeastSquaresFitting,module Bindings.Gsl.NonlinearLeastSquaresFitting,module Bindings.Gsl.NTuples,module Bindings.Gsl.PhysicalConstants,module Bindings.Gsl.Polynomials,module Bindings.Gsl.QuasiRandomSequences,module Bindings.Gsl.RandomNumberDistributions,module Bindings.Gsl.RandomNumberGeneration,module Bindings.Gsl.Sorting,module Bindings.Gsl.SpecialFunctions,module Bindings.Gsl.VectorsAndMatrices,module Bindings.Gsl.Version,module Bindings.Gsl.WaveletTransforms) where {import Bindings.Gsl.BlasSupport;import Bindings.Gsl.Cblas;import Bindings.Gsl.ComplexNumbers;import Bindings.Gsl.DiscreteHankelTransforms;import Bindings.Gsl.Eigensystems;import Bindings.Gsl.FastFourierTransforms;import Bindings.Gsl.Histograms;import Bindings.Gsl.IeeeFloatingPointArithmetic;import Bindings.Gsl.LeastSquaresFitting;import Bindings.Gsl.NonlinearLeastSquaresFitting;import Bindings.Gsl.NTuples;import Bindings.Gsl.PhysicalConstants;import Bindings.Gsl.Polynomials;import Bindings.Gsl.QuasiRandomSequences;import Bindings.Gsl.RandomNumberDistributions;import Bindings.Gsl.RandomNumberGeneration;import Bindings.Gsl.Sorting;import Bindings.Gsl.SpecialFunctions;import Bindings.Gsl.VectorsAndMatrices;import Bindings.Gsl.Version;import Bindings.Gsl.WaveletTransforms}
diff --git a/src/Bindings/Gsl/BlasSupport.hsc b/src/Bindings/Gsl/BlasSupport.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/BlasSupport.hsc
@@ -0,0 +1,124 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_blas.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/BLAS-Support.html>
+
+module Bindings.Gsl.BlasSupport where
+#strict_import
+import Bindings.Gsl.ComplexNumbers
+import Bindings.Gsl.VectorsAndMatrices
+
+#integral_t CBLAS_INDEX_t
+#integral_t CBLAS_ORDER_t
+#integral_t CBLAS_TRANSPOSE_t
+#integral_t CBLAS_UPLO_t
+#integral_t CBLAS_DIAG_t
+#integral_t CBLAS_SIDE_t
+
+#ccall gsl_blas_sdsdot , CFloat -> Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr CFloat  -> IO CInt
+#ccall gsl_blas_dsdot , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr CDouble  -> IO CInt
+#ccall gsl_blas_sdot , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr CFloat  -> IO CInt
+#ccall gsl_blas_ddot , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr CDouble  -> IO CInt
+#ccall gsl_blas_cdotu , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_complex_float> -> IO CInt
+#ccall gsl_blas_cdotc , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_complex_float> -> IO CInt
+#ccall gsl_blas_zdotu , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_complex> -> IO CInt
+#ccall gsl_blas_zdotc , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_complex> -> IO CInt
+#ccall gsl_blas_snrm2 , Ptr <gsl_vector_float> -> IO CFloat
+#ccall gsl_blas_sasum , Ptr <gsl_vector_float> -> IO CFloat
+#ccall gsl_blas_dnrm2 , Ptr <gsl_vector> -> IO CDouble
+#ccall gsl_blas_dasum , Ptr <gsl_vector> -> IO CDouble
+#ccall gsl_blas_scnrm2 , Ptr <gsl_vector_complex_float> -> IO CFloat
+#ccall gsl_blas_scasum , Ptr <gsl_vector_complex_float> -> IO CFloat
+#ccall gsl_blas_dznrm2 , Ptr <gsl_vector_complex> -> IO CDouble
+#ccall gsl_blas_dzasum , Ptr <gsl_vector_complex> -> IO CDouble
+#ccall gsl_blas_isamax , Ptr <gsl_vector_float> -> IO <CBLAS_INDEX_t>
+#ccall gsl_blas_idamax , Ptr <gsl_vector> -> IO <CBLAS_INDEX_t>
+#ccall gsl_blas_icamax , Ptr <gsl_vector_complex_float> -> IO <CBLAS_INDEX_t>
+#ccall gsl_blas_izamax , Ptr <gsl_vector_complex> -> IO <CBLAS_INDEX_t>
+#ccall gsl_blas_sswap , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_scopy , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_saxpy , CFloat -> Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_dswap , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_dcopy , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_daxpy , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_cswap , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_blas_ccopy , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_blas_caxpy , <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_blas_zswap , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_blas_zcopy , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_blas_zaxpy , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_blas_srotg , Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> IO CInt
+#ccall gsl_blas_srotmg , Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> CFloat -> Ptr CFloat -> IO CInt
+#ccall gsl_blas_srot , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> CFloat -> CFloat -> IO CInt
+#ccall gsl_blas_srotm , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr CFloat -> IO CInt
+#ccall gsl_blas_drotg , Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_blas_drotmg , Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_blas_drot , Ptr <gsl_vector> -> Ptr <gsl_vector> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_blas_drotm , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr CDouble -> IO CInt
+#ccall gsl_blas_sscal , CFloat -> Ptr <gsl_vector_float> -> IO ()
+#ccall gsl_blas_dscal , CDouble -> Ptr <gsl_vector> -> IO ()
+-- ccall gsl_blas_cscal , <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> IO ()
+-- ccall gsl_blas_zscal , <gsl_complex> -> Ptr <gsl_vector_complex> -> IO ()
+#ccall gsl_blas_csscal , CFloat -> Ptr <gsl_vector_complex_float> -> IO ()
+#ccall gsl_blas_zdscal , CDouble -> Ptr <gsl_vector_complex> -> IO ()
+#ccall gsl_blas_sgemv , <CBLAS_TRANSPOSE_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_vector_float> -> CFloat -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_strmv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_strsv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_dgemv , <CBLAS_TRANSPOSE_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> CDouble -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_dtrmv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_dtrsv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+-- ccall gsl_blas_cgemv , <CBLAS_TRANSPOSE_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_vector_complex_float> -> <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_blas_ctrmv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_blas_ctrsv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_blas_zgemv , <CBLAS_TRANSPOSE_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> <gsl_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_blas_ztrmv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_blas_ztrsv , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_blas_ssymv , <CBLAS_UPLO_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_vector_float> -> CFloat -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_blas_sger , CFloat -> Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_ssyr , <CBLAS_UPLO_t> -> CFloat -> Ptr <gsl_vector_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_ssyr2 , <CBLAS_UPLO_t> -> CFloat -> Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_dsymv , <CBLAS_UPLO_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> CDouble -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_blas_dger , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dsyr , <CBLAS_UPLO_t> -> CDouble -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dsyr2 , <CBLAS_UPLO_t> -> CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+-- ccall gsl_blas_chemv , <CBLAS_UPLO_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_vector_complex_float> -> <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_blas_cgeru , <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_cgerc , <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_blas_cher , <CBLAS_UPLO_t> -> CFloat -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_cher2 , <CBLAS_UPLO_t> -> <gsl_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_zhemv , <CBLAS_UPLO_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> <gsl_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_blas_zgeru , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zgerc , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_blas_zher , <CBLAS_UPLO_t> -> CDouble -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zher2 , <CBLAS_UPLO_t> -> <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_blas_sgemm , <CBLAS_TRANSPOSE_t> -> <CBLAS_TRANSPOSE_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> CFloat -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_ssymm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> CFloat -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_ssyrk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CFloat -> Ptr <gsl_matrix_float> -> CFloat -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_ssyr2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> CFloat -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_strmm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_strsm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> CFloat -> Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_blas_dgemm , <CBLAS_TRANSPOSE_t> -> <CBLAS_TRANSPOSE_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> CDouble -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dsymm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> CDouble -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dsyrk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CDouble -> Ptr <gsl_matrix> -> CDouble -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dsyr2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> CDouble -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dtrmm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_blas_dtrsm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+-- ccall gsl_blas_cgemm , <CBLAS_TRANSPOSE_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_csymm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_csyrk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_csyr2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_ctrmm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_ctrsm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_zgemm , <CBLAS_TRANSPOSE_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zsymm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zsyrk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zsyr2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_ztrmm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_ztrsm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <CBLAS_DIAG_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_chemm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_blas_cherk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CFloat -> Ptr <gsl_matrix_complex_float> -> CFloat -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_cher2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex_float> -> Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> CFloat -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_blas_zhemm , <CBLAS_SIDE_t> -> <CBLAS_UPLO_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_blas_zherk , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> CDouble -> Ptr <gsl_matrix_complex> -> CDouble -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_blas_zher2k , <CBLAS_UPLO_t> -> <CBLAS_TRANSPOSE_t> -> <gsl_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> CDouble -> Ptr <gsl_matrix_complex> -> IO CInt
+
diff --git a/src/Bindings/Gsl/Cblas.hsc b/src/Bindings/Gsl/Cblas.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Cblas.hsc
@@ -0,0 +1,178 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_cblas.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/GSL-CBLAS-Library.html>
+
+module Bindings.Gsl.Cblas where
+#strict_import
+
+#integral_t CBLAS_INDEX
+#integral_t enum CBLAS_ORDER
+
+#num CblasRowMajor
+#num CblasColMajor
+
+#integral_t enum CBLAS_TRANSPOSE
+
+#num CblasNoTrans
+#num CblasTrans
+#num CblasConjTrans
+
+#integral_t enum CBLAS_UPLO
+
+#num CblasUpper
+#num CblasLower
+
+#integral_t enum CBLAS_DIAG
+
+#num CblasNonUnit
+#num CblasUnit
+
+#integral_t enum CBLAS_SIDE
+
+#num CblasLeft
+#num CblasRight
+
+#ccall cblas_sdsdot , CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO CFloat
+#ccall cblas_dsdot , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO CDouble
+#ccall cblas_sdot , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO CFloat
+#ccall cblas_ddot , CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO CDouble
+#ccall cblas_cdotu_sub , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_cdotc_sub , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_zdotu_sub , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_zdotc_sub , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_snrm2 , CInt -> CInt -> Ptr CFloat -> CInt -> IO CFloat
+#ccall cblas_sasum , CInt -> CInt -> Ptr CFloat -> CInt -> IO CFloat
+#ccall cblas_dnrm2 , CInt -> CInt -> Ptr CDouble -> CInt -> IO CDouble
+#ccall cblas_dasum , CInt -> CInt -> Ptr CDouble -> CInt -> IO CDouble
+#ccall cblas_scnrm2 , CInt -> CInt -> Ptr () -> CInt -> IO CFloat
+#ccall cblas_scasum , CInt -> CInt -> Ptr () -> CInt -> IO CFloat
+#ccall cblas_dznrm2 , CInt -> CInt -> Ptr () -> CInt -> IO CDouble
+#ccall cblas_dzasum , CInt -> CInt -> Ptr () -> CInt -> IO CDouble
+#ccall cblas_isamax , CInt -> CInt -> Ptr CFloat -> CInt -> IO <CBLAS_INDEX>
+#ccall cblas_idamax , CInt -> CInt -> Ptr CDouble -> CInt -> IO <CBLAS_INDEX>
+#ccall cblas_icamax , CInt -> CInt -> Ptr () -> CInt -> IO <CBLAS_INDEX>
+#ccall cblas_izamax , CInt -> CInt -> Ptr () -> CInt -> IO <CBLAS_INDEX>
+#ccall cblas_sswap , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_scopy , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_saxpy , CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_dswap , CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dcopy , CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_daxpy , CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_cswap , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ccopy , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_caxpy , CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zswap , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zcopy , CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zaxpy , CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_srotg , Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> IO ()
+#ccall cblas_srotmg , Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> CFloat -> Ptr CFloat -> IO ()
+#ccall cblas_srot , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> CFloat -> IO ()
+#ccall cblas_srotm , CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> IO ()
+#ccall cblas_drotg , Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall cblas_drotmg , Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr CDouble -> IO ()
+#ccall cblas_drot , CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> CDouble -> IO ()
+#ccall cblas_drotm , CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> IO ()
+#ccall cblas_sscal , CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_dscal , CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_cscal , CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zscal , CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_csscal , CInt -> CInt -> CFloat -> Ptr () -> CInt -> IO ()
+#ccall cblas_zdscal , CInt -> CInt -> CDouble -> Ptr () -> CInt -> IO ()
+#ccall cblas_sgemv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_sgbmv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_strmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_stbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_stpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_strsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_stbsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_stpsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_dgemv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dgbmv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtrmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtrsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtbsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtpsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_cgemv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_cgbmv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctrmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctrsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctbsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctpsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zgemv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zgbmv , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztrmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztrsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztbsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztpsv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ssymv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_ssbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_sspmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_sger , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_ssyr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_sspr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> IO ()
+#ccall cblas_ssyr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_sspr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> IO ()
+#ccall cblas_dsymv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dsbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dspmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dger , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dsyr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dspr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> IO ()
+#ccall cblas_dsyr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dspr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> IO ()
+#ccall cblas_chemv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_chbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_chpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_cgeru , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_cgerc , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_cher , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_chpr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CFloat -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_cher2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_chpr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_zhemv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zhbmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zhpmv , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zgeru , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zgerc , <CBLAS_ORDER> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zher , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zhpr , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> CDouble -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_zher2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zhpr2 , <CBLAS_ORDER> -> <CBLAS_UPLO> -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> IO ()
+#ccall cblas_sgemm , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_ssymm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_ssyrk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_ssyr2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_strmm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_strsm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> CInt -> IO ()
+#ccall cblas_dgemm , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dsymm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dsyrk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dsyr2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtrmm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_dtrsm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> CInt -> IO ()
+#ccall cblas_cgemm , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_csymm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_csyrk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_csyr2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctrmm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ctrsm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_zgemm , <CBLAS_ORDER> -> <CBLAS_TRANSPOSE> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zsymm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zsyrk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zsyr2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztrmm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_ztrsm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> <CBLAS_DIAG> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> IO ()
+#ccall cblas_chemm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_cherk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CFloat -> Ptr () -> CInt -> CInt -> CFloat -> Ptr () -> CInt -> IO ()
+#ccall cblas_cher2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> CFloat -> Ptr () -> CInt -> IO ()
+#ccall cblas_zhemm , <CBLAS_ORDER> -> <CBLAS_SIDE> -> <CBLAS_UPLO> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> IO ()
+#ccall cblas_zherk , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> CDouble -> Ptr () -> CInt -> CInt -> CDouble -> Ptr () -> CInt -> IO ()
+#ccall cblas_zher2k , <CBLAS_ORDER> -> <CBLAS_UPLO> -> <CBLAS_TRANSPOSE> -> CInt -> CInt -> CInt -> CInt -> Ptr () -> Ptr () -> CInt -> CInt -> Ptr () -> CInt -> CInt -> CDouble -> Ptr () -> CInt -> IO ()
+
diff --git a/src/Bindings/Gsl/ComplexNumbers.hsc b/src/Bindings/Gsl/ComplexNumbers.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/ComplexNumbers.hsc
@@ -0,0 +1,39 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_complex_math.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Complex-Numbers.html>
+
+module Bindings.Gsl.ComplexNumbers where
+#strict_import
+
+#integral_t gsl_complex_packed
+#integral_t gsl_complex_packed_float
+#integral_t gsl_complex_packed_long_double
+#integral_t gsl_const_complex_packed
+#integral_t gsl_const_complex_packed_float
+#integral_t gsl_const_complex_packed_long_double
+#integral_t gsl_complex_packed_array
+#integral_t gsl_complex_packed_array_float
+#integral_t gsl_complex_packed_array_long_double
+#integral_t gsl_const_complex_packed_array
+#integral_t gsl_const_complex_packed_array_float
+#integral_t gsl_const_complex_packed_array_long_double
+#integral_t gsl_complex_packed_ptr
+#integral_t gsl_complex_packed_float_ptr
+#integral_t gsl_complex_packed_long_double_ptr
+#integral_t gsl_const_complex_packed_ptr
+#integral_t gsl_const_complex_packed_float_ptr
+#integral_t gsl_const_complex_packed_long_double_ptr
+
+#starttype gsl_complex_long_double
+#array_field dat , CLDouble
+#stoptype
+
+#starttype gsl_complex
+#array_field dat , CDouble
+#stoptype
+
+#starttype gsl_complex_float
+#array_field dat , CFloat
+#stoptype
+
diff --git a/src/Bindings/Gsl/DiscreteHankelTransforms.hsc b/src/Bindings/Gsl/DiscreteHankelTransforms.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/DiscreteHankelTransforms.hsc
@@ -0,0 +1,26 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_dht.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Discrete-Hankel-Transforms.html>
+
+module Bindings.Gsl.DiscreteHankelTransforms where
+#strict_import
+
+#starttype gsl_dht
+#field size , CSize
+#field nu , CDouble
+#field xmax , CDouble
+#field kmax , CDouble
+#field j , Ptr CDouble
+#field Jjj , Ptr CDouble
+#field J2 , Ptr CDouble
+#stoptype
+
+#ccall gsl_dht_alloc , CSize -> IO (Ptr <gsl_dht>)
+#ccall gsl_dht_new , CSize -> CDouble -> CDouble -> IO (Ptr <gsl_dht>)
+#ccall gsl_dht_init , Ptr <gsl_dht> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_dht_x_sample , Ptr <gsl_dht> -> CInt -> IO CDouble
+#ccall gsl_dht_k_sample , Ptr <gsl_dht> -> CInt -> IO CDouble
+#ccall gsl_dht_free , Ptr <gsl_dht> -> IO ()
+#ccall gsl_dht_apply , Ptr <gsl_dht> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
diff --git a/src/Bindings/Gsl/Eigensystems.hsc b/src/Bindings/Gsl/Eigensystems.hsc
--- a/src/Bindings/Gsl/Eigensystems.hsc
+++ b/src/Bindings/Gsl/Eigensystems.hsc
@@ -1,9 +1,201 @@
-#include <bindings.macros.h>
+#include <bindings.dsl.h>
 #include <gsl/gsl_eigen.h>
 
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Eigensystems.html>
+
 module Bindings.Gsl.Eigensystems where
 #strict_import
+import Bindings.Gsl.ComplexNumbers
+import Bindings.Gsl.VectorsAndMatrices
 
+#starttype gsl_eigen_symm_workspace
+#field size , CSize
+#field d , Ptr CDouble
+#field sd , Ptr CDouble
+#stoptype
+
+#ccall gsl_eigen_symm_alloc , CSize -> IO  (Ptr <gsl_eigen_symm_workspace>)
+#ccall gsl_eigen_symm_free , Ptr <gsl_eigen_symm_workspace> -> IO ()
+#ccall gsl_eigen_symm , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_eigen_symm_workspace> -> IO CInt
+
 #starttype gsl_eigen_symmv_workspace
+#field size , CSize
+#field d , Ptr CDouble
+#field sd , Ptr CDouble
+#field gc , Ptr CDouble
+#field gs , Ptr CDouble
 #stoptype
+
+#ccall gsl_eigen_symmv_alloc , CSize -> IO  (Ptr <gsl_eigen_symmv_workspace>)
+#ccall gsl_eigen_symmv_free , Ptr <gsl_eigen_symmv_workspace> -> IO ()
+#ccall gsl_eigen_symmv , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_symmv_workspace> -> IO CInt
+
+#starttype gsl_eigen_herm_workspace
+#field size , CSize
+#field d , Ptr CDouble
+#field sd , Ptr CDouble
+#field tau , Ptr CDouble
+#stoptype
+
+#ccall gsl_eigen_herm_alloc , CSize -> IO  (Ptr <gsl_eigen_herm_workspace>)
+#ccall gsl_eigen_herm_free , Ptr <gsl_eigen_herm_workspace> -> IO ()
+#ccall gsl_eigen_herm , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_eigen_herm_workspace> -> IO CInt
+
+#starttype gsl_eigen_hermv_workspace
+#field size , CSize
+#field d , Ptr CDouble
+#field sd , Ptr CDouble
+#field tau , Ptr CDouble
+#field gc , Ptr CDouble
+#field gs , Ptr CDouble
+#stoptype
+
+#ccall gsl_eigen_hermv_alloc , CSize -> IO  (Ptr <gsl_eigen_hermv_workspace>)
+#ccall gsl_eigen_hermv_free , Ptr <gsl_eigen_hermv_workspace> -> IO ()
+#ccall gsl_eigen_hermv , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_eigen_hermv_workspace> -> IO CInt
+
+#starttype gsl_eigen_francis_workspace
+#field size , CSize
+#field max_iterations , CSize
+#field n_iter , CSize
+#field n_evals , CSize
+#field compute_t , CInt
+#field H , Ptr <gsl_matrix>
+#field Z , Ptr <gsl_matrix>
+#stoptype
+
+#ccall gsl_eigen_francis_alloc , IO  (Ptr <gsl_eigen_francis_workspace>)
+#ccall gsl_eigen_francis_free , Ptr <gsl_eigen_francis_workspace> -> IO ()
+#ccall gsl_eigen_francis_T , CInt -> CInt -> Ptr <gsl_eigen_francis_workspace> -> IO ()
+#ccall gsl_eigen_francis , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_eigen_francis_workspace> -> IO CInt
+#ccall gsl_eigen_francis_Z , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_francis_workspace> -> IO CInt
+
+#starttype gsl_eigen_nonsymm_workspace
+#field size , CSize
+#field diag , Ptr <gsl_vector>
+#field tau , Ptr <gsl_vector>
+#field Z , Ptr <gsl_matrix>
+#field do_balance , CInt
+#field n_evals , CSize
+#field francis_workspace_p , Ptr <gsl_eigen_francis_workspace>
+#stoptype
+
+#ccall gsl_eigen_nonsymm_alloc , CSize -> IO  (Ptr <gsl_eigen_nonsymm_workspace>)
+#ccall gsl_eigen_nonsymm_free , Ptr <gsl_eigen_nonsymm_workspace> -> IO ()
+#ccall gsl_eigen_nonsymm_params , CInt -> CInt -> CInt -> CInt -> Ptr <gsl_eigen_nonsymm_workspace> -> IO ()
+#ccall gsl_eigen_nonsymm , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_eigen_nonsymm_workspace> -> IO CInt
+#ccall gsl_eigen_nonsymm_Z , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_nonsymm_workspace> -> IO CInt
+
+#starttype gsl_eigen_nonsymmv_workspace
+#field size , CSize
+#field work , Ptr <gsl_vector>
+#field work2 , Ptr <gsl_vector>
+#field work3 , Ptr <gsl_vector>
+#field Z , Ptr <gsl_matrix>
+#field nonsymm_workspace_p , Ptr <gsl_eigen_nonsymm_workspace>
+#stoptype
+
+#ccall gsl_eigen_nonsymmv_alloc , CSize -> IO  (Ptr <gsl_eigen_nonsymmv_workspace>)
+#ccall gsl_eigen_nonsymmv_free , Ptr <gsl_eigen_nonsymmv_workspace> -> IO ()
+#ccall gsl_eigen_nonsymmv , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_eigen_nonsymmv_workspace> -> IO CInt
+#ccall gsl_eigen_nonsymmv_Z , Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_nonsymmv_workspace> -> IO CInt
+
+#starttype gsl_eigen_gensymm_workspace
+#field size , CSize
+#field symm_workspace_p , Ptr <gsl_eigen_symm_workspace>
+#stoptype
+
+#ccall gsl_eigen_gensymm_alloc , CSize -> IO  (Ptr <gsl_eigen_gensymm_workspace>)
+#ccall gsl_eigen_gensymm_free , Ptr <gsl_eigen_gensymm_workspace> -> IO ()
+#ccall gsl_eigen_gensymm , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_eigen_gensymm_workspace> -> IO CInt
+#ccall gsl_eigen_gensymm_standardize , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+
+#starttype gsl_eigen_gensymmv_workspace
+#field size , CSize
+#field symmv_workspace_p , Ptr <gsl_eigen_symmv_workspace>
+#stoptype
+
+#ccall gsl_eigen_gensymmv_alloc , CSize -> IO  (Ptr <gsl_eigen_gensymmv_workspace>)
+#ccall gsl_eigen_gensymmv_free , Ptr <gsl_eigen_gensymmv_workspace> -> IO ()
+#ccall gsl_eigen_gensymmv , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_gensymmv_workspace> -> IO CInt
+
+#starttype gsl_eigen_genherm_workspace
+#field size , CSize
+#field herm_workspace_p , Ptr <gsl_eigen_herm_workspace>
+#stoptype
+
+#ccall gsl_eigen_genherm_alloc , CSize -> IO  (Ptr <gsl_eigen_genherm_workspace>)
+#ccall gsl_eigen_genherm_free , Ptr <gsl_eigen_genherm_workspace> -> IO ()
+#ccall gsl_eigen_genherm , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_eigen_genherm_workspace> -> IO CInt
+#ccall gsl_eigen_genherm_standardize , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+
+#starttype gsl_eigen_genhermv_workspace
+#field size , CSize
+#field hermv_workspace_p , Ptr <gsl_eigen_hermv_workspace>
+#stoptype
+
+#ccall gsl_eigen_genhermv_alloc , CSize -> IO  (Ptr <gsl_eigen_genhermv_workspace>)
+#ccall gsl_eigen_genhermv_free , Ptr <gsl_eigen_genhermv_workspace> -> IO ()
+#ccall gsl_eigen_genhermv , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_eigen_genhermv_workspace> -> IO CInt
+
+#starttype gsl_eigen_gen_workspace
+#field size , CSize
+#field work , Ptr <gsl_vector>
+#field n_evals , CSize
+#field max_iterations , CSize
+#field n_iter , CSize
+#field eshift , CDouble
+#field needtop , CInt
+#field atol , CDouble
+#field btol , CDouble
+#field ascale , CDouble
+#field bscale , CDouble
+#field H , Ptr <gsl_matrix>
+#field R , Ptr <gsl_matrix>
+#field compute_s , CInt
+#field compute_t , CInt
+#field Q , Ptr <gsl_matrix>
+#field Z , Ptr <gsl_matrix>
+#stoptype
+
+#ccall gsl_eigen_gen_alloc , CSize -> IO  (Ptr <gsl_eigen_gen_workspace>)
+#ccall gsl_eigen_gen_free , Ptr <gsl_eigen_gen_workspace> -> IO ()
+#ccall gsl_eigen_gen_params , CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> Ptr <gsl_eigen_gen_workspace> -> IO ()
+#ccall gsl_eigen_gen , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector> -> Ptr <gsl_eigen_gen_workspace> -> IO CInt
+#ccall gsl_eigen_gen_QZ , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_gen_workspace> -> IO CInt
+
+#starttype gsl_eigen_genv_workspace
+#field size , CSize
+#field work1 , Ptr <gsl_vector>
+#field work2 , Ptr <gsl_vector>
+#field work3 , Ptr <gsl_vector>
+#field work4 , Ptr <gsl_vector>
+#field work5 , Ptr <gsl_vector>
+#field work6 , Ptr <gsl_vector>
+#field Q , Ptr <gsl_matrix>
+#field Z , Ptr <gsl_matrix>
+#field gen_workspace_p , Ptr <gsl_eigen_gen_workspace>
+#stoptype
+
+#ccall gsl_eigen_genv_alloc , CSize -> IO  (Ptr <gsl_eigen_genv_workspace>)
+#ccall gsl_eigen_genv_free , Ptr <gsl_eigen_genv_workspace> -> IO ()
+#ccall gsl_eigen_genv , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_eigen_genv_workspace> -> IO CInt
+#ccall gsl_eigen_genv_QZ , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_eigen_genv_workspace> -> IO CInt
+
+#integral_t gsl_eigen_sort_t
+
+#num GSL_EIGEN_SORT_VAL_ASC
+#num GSL_EIGEN_SORT_VAL_DESC
+#num GSL_EIGEN_SORT_ABS_ASC
+#num GSL_EIGEN_SORT_ABS_DESC
+
+#ccall gsl_eigen_symmv_sort , Ptr <gsl_vector> -> Ptr <gsl_matrix> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_eigen_hermv_sort , Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_eigen_nonsymmv_sort , Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_eigen_gensymmv_sort , Ptr <gsl_vector> -> Ptr <gsl_matrix> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_eigen_genhermv_sort , Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_eigen_genv_sort , Ptr <gsl_vector_complex> -> Ptr <gsl_vector> -> Ptr <gsl_matrix_complex> -> <gsl_eigen_sort_t> -> IO CInt
+#ccall gsl_schur_gen_eigvals , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_schur_solve_equation , CDouble -> Ptr <gsl_matrix> -> CDouble -> CDouble -> CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr CDouble -> CDouble -> IO CInt
+#ccall gsl_schur_solve_equation_z , CDouble -> Ptr <gsl_matrix> -> Ptr <gsl_complex> -> CDouble -> CDouble -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr CDouble -> Ptr CDouble -> CDouble -> IO CInt
 
diff --git a/src/Bindings/Gsl/FastFourierTransforms.hsc b/src/Bindings/Gsl/FastFourierTransforms.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/FastFourierTransforms.hsc
@@ -0,0 +1,13 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_fft.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Fast-Fourier-Transforms.html>
+
+module Bindings.Gsl.FastFourierTransforms where
+#strict_import
+
+#integral_t gsl_fft_direction
+
+#num gsl_fft_forward
+#num gsl_fft_backward
+
diff --git a/src/Bindings/Gsl/Histograms.hsc b/src/Bindings/Gsl/Histograms.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Histograms.hsc
@@ -0,0 +1,126 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_histogram.h>
+#include <gsl/gsl_histogram2d.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Histograms.html>
+
+module Bindings.Gsl.Histograms where
+#strict_import
+
+#starttype gsl_histogram
+#field n , CSize
+#field range , Ptr CDouble
+#field bin , Ptr CDouble
+#stoptype
+
+#starttype gsl_histogram_pdf
+#field n , CSize
+#field range , Ptr CDouble
+#field sum , Ptr CDouble
+#stoptype
+
+#ccall gsl_histogram_alloc , CSize -> IO (Ptr <gsl_histogram>)
+#ccall gsl_histogram_calloc , CSize -> IO (Ptr <gsl_histogram>)
+#ccall gsl_histogram_calloc_uniform , CSize -> CDouble -> CDouble -> IO (Ptr <gsl_histogram>)
+#ccall gsl_histogram_free , Ptr <gsl_histogram> -> IO ()
+#ccall gsl_histogram_increment , Ptr <gsl_histogram> -> CDouble -> IO CInt
+#ccall gsl_histogram_accumulate , Ptr <gsl_histogram> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_histogram_find , Ptr <gsl_histogram> -> CDouble -> Ptr CSize -> IO CInt
+#ccall gsl_histogram_get , Ptr <gsl_histogram> -> CSize -> IO CDouble
+#ccall gsl_histogram_get_range , Ptr <gsl_histogram> -> CSize -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_histogram_max , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_min , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_bins , Ptr <gsl_histogram> -> IO CSize
+#ccall gsl_histogram_reset , Ptr <gsl_histogram> -> IO ()
+#ccall gsl_histogram_calloc_range , CSize -> Ptr CDouble -> IO (Ptr <gsl_histogram>)
+#ccall gsl_histogram_set_ranges , Ptr <gsl_histogram> -> Ptr CDouble -> CSize -> IO CInt
+#ccall gsl_histogram_set_ranges_uniform , Ptr <gsl_histogram> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_histogram_memcpy , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_clone , Ptr <gsl_histogram> -> IO (Ptr <gsl_histogram>)
+#ccall gsl_histogram_max_val , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_max_bin , Ptr <gsl_histogram> -> IO CSize
+#ccall gsl_histogram_min_val , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_min_bin , Ptr <gsl_histogram> -> IO CSize
+#ccall gsl_histogram_equal_bins_p , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_add , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_sub , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_mul , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_div , Ptr <gsl_histogram> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_scale , Ptr <gsl_histogram> -> CDouble -> IO CInt
+#ccall gsl_histogram_shift , Ptr <gsl_histogram> -> CDouble -> IO CInt
+#ccall gsl_histogram_sigma , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_mean , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_sum , Ptr <gsl_histogram> -> IO CDouble
+#ccall gsl_histogram_fwrite , Ptr CFile -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_fread , Ptr CFile -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_fprintf , Ptr CFile -> Ptr <gsl_histogram> -> CString -> CString -> IO CInt
+#ccall gsl_histogram_fscanf , Ptr CFile -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_pdf_alloc , CSize -> IO (Ptr <gsl_histogram_pdf>)
+#ccall gsl_histogram_pdf_init , Ptr <gsl_histogram_pdf> -> Ptr <gsl_histogram> -> IO CInt
+#ccall gsl_histogram_pdf_free , Ptr <gsl_histogram_pdf> -> IO ()
+#ccall gsl_histogram_pdf_sample , Ptr <gsl_histogram_pdf> -> CDouble -> IO CDouble
+
+#starttype gsl_histogram2d
+#field nx , CSize
+#field ny , CSize
+#field xrange , Ptr CDouble
+#field yrange , Ptr CDouble
+#field bin , Ptr CDouble
+#stoptype
+
+#starttype gsl_histogram2d_pdf
+#field nx , CSize
+#field ny , CSize
+#field xrange , Ptr CDouble
+#field yrange , Ptr CDouble
+#field sum , Ptr CDouble
+#stoptype
+
+#ccall gsl_histogram2d_alloc , CSize -> CSize -> IO (Ptr <gsl_histogram2d>)
+#ccall gsl_histogram2d_calloc , CSize -> CSize -> IO (Ptr <gsl_histogram2d>)
+#ccall gsl_histogram2d_calloc_uniform , CSize -> CSize -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr <gsl_histogram2d>)
+#ccall gsl_histogram2d_free , Ptr <gsl_histogram2d> -> IO ()
+#ccall gsl_histogram2d_increment , Ptr <gsl_histogram2d> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_histogram2d_accumulate , Ptr <gsl_histogram2d> -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_histogram2d_find , Ptr <gsl_histogram2d> -> CDouble -> CDouble -> Ptr CSize -> Ptr CSize -> IO CInt
+#ccall gsl_histogram2d_get , Ptr <gsl_histogram2d> -> CSize -> CSize -> IO CDouble
+#ccall gsl_histogram2d_get_xrange , Ptr <gsl_histogram2d> -> CSize -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_histogram2d_get_yrange , Ptr <gsl_histogram2d> -> CSize -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_histogram2d_xmax , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_xmin , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_nx , Ptr <gsl_histogram2d> -> IO CSize
+#ccall gsl_histogram2d_ymax , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_ymin , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_ny , Ptr <gsl_histogram2d> -> IO CSize
+#ccall gsl_histogram2d_reset , Ptr <gsl_histogram2d> -> IO ()
+#ccall gsl_histogram2d_calloc_range , CSize -> CSize -> Ptr CDouble -> Ptr CDouble -> IO (Ptr <gsl_histogram2d>)
+#ccall gsl_histogram2d_set_ranges_uniform , Ptr <gsl_histogram2d> -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_histogram2d_set_ranges , Ptr <gsl_histogram2d> -> Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> IO CInt
+#ccall gsl_histogram2d_memcpy , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_clone , Ptr <gsl_histogram2d> -> IO (Ptr <gsl_histogram2d>)
+#ccall gsl_histogram2d_max_val , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_max_bin , Ptr <gsl_histogram2d> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_histogram2d_min_val , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_min_bin , Ptr <gsl_histogram2d> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_histogram2d_xmean , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_ymean , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_xsigma , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_ysigma , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_cov , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_sum , Ptr <gsl_histogram2d> -> IO CDouble
+#ccall gsl_histogram2d_equal_bins_p , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_add , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_sub , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_mul , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_div , Ptr <gsl_histogram2d> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_scale , Ptr <gsl_histogram2d> -> CDouble -> IO CInt
+#ccall gsl_histogram2d_shift , Ptr <gsl_histogram2d> -> CDouble -> IO CInt
+#ccall gsl_histogram2d_fwrite , Ptr CFile -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_fread , Ptr CFile -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_fprintf , Ptr CFile -> Ptr <gsl_histogram2d> -> CString -> CString -> IO CInt
+#ccall gsl_histogram2d_fscanf , Ptr CFile -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_pdf_alloc , CSize -> CSize -> IO (Ptr <gsl_histogram2d_pdf>)
+#ccall gsl_histogram2d_pdf_init , Ptr <gsl_histogram2d_pdf> -> Ptr <gsl_histogram2d> -> IO CInt
+#ccall gsl_histogram2d_pdf_free , Ptr <gsl_histogram2d_pdf> -> IO ()
+#ccall gsl_histogram2d_pdf_sample , Ptr <gsl_histogram2d_pdf> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
diff --git a/src/Bindings/Gsl/IeeeFloatingPointArithmetic.hsc b/src/Bindings/Gsl/IeeeFloatingPointArithmetic.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/IeeeFloatingPointArithmetic.hsc
@@ -0,0 +1,54 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_ieee_utils.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/IEEE-floating_002dpoint-arithmetic.html>
+
+module Bindings.Gsl.IeeeFloatingPointArithmetic where
+#strict_import
+
+#num GSL_IEEE_TYPE_NAN
+#num GSL_IEEE_TYPE_INF
+#num GSL_IEEE_TYPE_NORMAL
+#num GSL_IEEE_TYPE_DENORMAL
+#num GSL_IEEE_TYPE_ZERO
+
+#starttype gsl_ieee_float_rep
+#field sign , CInt
+#array_field mantissa , CChar
+#field exponent , CInt
+#field type , CInt
+#stoptype
+
+#starttype gsl_ieee_double_rep
+#field sign , CInt
+#array_field mantissa , CChar
+#field exponent , CInt
+#field type , CInt
+#stoptype
+
+#ccall gsl_ieee_printf_float , Ptr CFloat -> IO ()
+#ccall gsl_ieee_printf_double , Ptr CDouble -> IO ()
+#ccall gsl_ieee_fprintf_float , Ptr CFile -> Ptr CFloat -> IO ()
+#ccall gsl_ieee_fprintf_double , Ptr CFile -> Ptr CDouble -> IO ()
+#ccall gsl_ieee_float_to_rep , Ptr CFloat -> Ptr <gsl_ieee_float_rep> -> IO ()
+#ccall gsl_ieee_double_to_rep , Ptr CDouble -> Ptr <gsl_ieee_double_rep> -> IO ()
+
+#num GSL_IEEE_SINGLE_PRECISION
+#num GSL_IEEE_DOUBLE_PRECISION
+#num GSL_IEEE_EXTENDED_PRECISION
+#num GSL_IEEE_ROUND_TO_NEAREST
+#num GSL_IEEE_ROUND_DOWN
+#num GSL_IEEE_ROUND_UP
+#num GSL_IEEE_ROUND_TO_ZERO
+#num GSL_IEEE_MASK_INVALID
+#num GSL_IEEE_MASK_DENORMALIZED
+#num GSL_IEEE_MASK_DIVISION_BY_ZERO
+#num GSL_IEEE_MASK_OVERFLOW
+#num GSL_IEEE_MASK_UNDERFLOW
+#num GSL_IEEE_MASK_ALL
+#num GSL_IEEE_TRAP_INEXACT
+
+#ccall gsl_ieee_env_setup , IO ()
+#ccall gsl_ieee_read_mode_string , CString -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO CInt
+#ccall gsl_ieee_set_mode , CInt -> CInt -> CInt -> CInt -> CInt -> IO CInt
+
diff --git a/src/Bindings/Gsl/LeastSquaresFitting.hsc b/src/Bindings/Gsl/LeastSquaresFitting.hsc
--- a/src/Bindings/Gsl/LeastSquaresFitting.hsc
+++ b/src/Bindings/Gsl/LeastSquaresFitting.hsc
@@ -1,4 +1,4 @@
-#include <bindings.macros.h>
+#include <bindings.dsl.h>
 #include <gsl/gsl_fit.h>
 
 -- | <http://www.gnu.org/software/gsl/manual/html_node/Least_002dSquares-Fitting.html>
diff --git a/src/Bindings/Gsl/Mode.hsc b/src/Bindings/Gsl/Mode.hsc
deleted file mode 100644
--- a/src/Bindings/Gsl/Mode.hsc
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <bindings.macros.h>
-#include <gsl/gsl_mode.h>
-
-module Bindings.Gsl.Mode where
-#strict_import
-
-#integral_t gsl_mode_t
-
-#fractional GSL_PREC_DOUBLE
-#fractional GSL_PREC_SINGLE
-#fractional GSL_PREC_APPROX
-
-#cinline GSL_MODE_PREC , <gsl_mode_t> -> CUInt
-
-#num GSL_MODE_DEFAULT
-
diff --git a/src/Bindings/Gsl/NTuples.hsc b/src/Bindings/Gsl/NTuples.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/NTuples.hsc
@@ -0,0 +1,33 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_ntuple.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/N_002dtuples.html>
+
+module Bindings.Gsl.NTuples where
+#strict_import
+import Bindings.Gsl.Histograms
+
+#starttype gsl_ntuple
+#field file , Ptr CFile
+#field ntuple_data , Ptr ()
+#field size , CSize
+#stoptype
+
+#starttype gsl_ntuple_select_fn
+#field function , FunPtr (Ptr () -> Ptr () -> IO  CInt)
+#field params , Ptr ()
+#stoptype
+
+#starttype gsl_ntuple_value_fn
+#field function , FunPtr (Ptr () -> Ptr () -> IO  CDouble)
+#field params , Ptr ()
+#stoptype
+
+#ccall gsl_ntuple_open , CString -> Ptr () -> CSize -> IO (Ptr <gsl_ntuple>)
+#ccall gsl_ntuple_create , CString -> Ptr () -> CSize -> IO (Ptr <gsl_ntuple>)
+#ccall gsl_ntuple_write , Ptr <gsl_ntuple> -> IO CInt
+#ccall gsl_ntuple_read , Ptr <gsl_ntuple> -> IO CInt
+#ccall gsl_ntuple_bookdata , Ptr <gsl_ntuple> -> IO CInt
+#ccall gsl_ntuple_project , Ptr <gsl_histogram> -> Ptr <gsl_ntuple> -> Ptr <gsl_ntuple_value_fn> -> Ptr <gsl_ntuple_select_fn> -> IO CInt
+#ccall gsl_ntuple_close , Ptr <gsl_ntuple> -> IO CInt
+
diff --git a/src/Bindings/Gsl/NonlinearLeastSquaresFitting.hsc b/src/Bindings/Gsl/NonlinearLeastSquaresFitting.hsc
--- a/src/Bindings/Gsl/NonlinearLeastSquaresFitting.hsc
+++ b/src/Bindings/Gsl/NonlinearLeastSquaresFitting.hsc
@@ -1,4 +1,4 @@
-#include <bindings.macros.h>
+#include <bindings.dsl.h>
 #include <gsl/gsl_multifit_nlin.h>
 
 -- | <http://www.gnu.org/software/gsl/manual/html_node/Nonlinear-Least_002dSquares-Fitting.html>
@@ -19,8 +19,7 @@
 #field params , Ptr ()
 #stoptype
 
-#cinline GSL_MULTIFIT_FN_EVAL , Ptr <gsl_multifit_function> -> \
-    Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO ()
+#cinline GSL_MULTIFIT_FN_EVAL , Ptr <gsl_multifit_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO ()
 
 #starttype gsl_multifit_fsolver_type
 #field name , CString
@@ -64,12 +63,9 @@
 #field params , Ptr ()
 #stoptype
 
-#cinline GSL_MULTIFIT_FN_EVAL_F , Ptr <gsl_multifit_function_fdf> -> \
-    Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
-#cinline GSL_MULTIFIT_FN_EVAL_DF , Ptr <gsl_multifit_function_fdf> -> \
-    Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
-#cinline GSL_MULTIFIT_FN_EVAL_F_DF , Ptr <gsl_multifit_function_fdf> -> \
-    Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#cinline GSL_MULTIFIT_FN_EVAL_F , Ptr <gsl_multifit_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#cinline GSL_MULTIFIT_FN_EVAL_DF , Ptr <gsl_multifit_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#cinline GSL_MULTIFIT_FN_EVAL_F_DF , Ptr <gsl_multifit_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
 
 #starttype gsl_multifit_fdfsolver_type
 #field name , CString
diff --git a/src/Bindings/Gsl/PhysicalConstants.hsc b/src/Bindings/Gsl/PhysicalConstants.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/PhysicalConstants.hsc
@@ -0,0 +1,425 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_const.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Physical-Constants.html>
+
+module Bindings.Gsl.PhysicalConstants where
+#strict_import
+
+#fractional GSL_CONST_CGS_ACRE
+#fractional GSL_CONST_CGSM_ACRE
+#fractional GSL_CONST_MKS_ACRE
+#fractional GSL_CONST_MKSA_ACRE
+#fractional GSL_CONST_CGS_ANGSTROM
+#fractional GSL_CONST_CGSM_ANGSTROM
+#fractional GSL_CONST_MKS_ANGSTROM
+#fractional GSL_CONST_MKSA_ANGSTROM
+#fractional GSL_CONST_CGS_ASTRONOMICAL_UNIT
+#fractional GSL_CONST_CGSM_ASTRONOMICAL_UNIT
+#fractional GSL_CONST_MKS_ASTRONOMICAL_UNIT
+#fractional GSL_CONST_MKSA_ASTRONOMICAL_UNIT
+#fractional GSL_CONST_NUM_ATTO
+#fractional GSL_CONST_NUM_AVOGADRO
+#fractional GSL_CONST_CGS_BAR
+#fractional GSL_CONST_CGSM_BAR
+#fractional GSL_CONST_MKS_BAR
+#fractional GSL_CONST_MKSA_BAR
+#fractional GSL_CONST_CGS_BARN
+#fractional GSL_CONST_CGSM_BARN
+#fractional GSL_CONST_MKS_BARN
+#fractional GSL_CONST_MKSA_BARN
+#fractional GSL_CONST_CGS_BOHR_MAGNETON
+#fractional GSL_CONST_CGSM_BOHR_MAGNETON
+#fractional GSL_CONST_MKS_BOHR_MAGNETON
+#fractional GSL_CONST_MKSA_BOHR_MAGNETON
+#fractional GSL_CONST_CGS_BOHR_RADIUS
+#fractional GSL_CONST_CGSM_BOHR_RADIUS
+#fractional GSL_CONST_MKS_BOHR_RADIUS
+#fractional GSL_CONST_MKSA_BOHR_RADIUS
+#fractional GSL_CONST_CGS_BOLTZMANN
+#fractional GSL_CONST_CGSM_BOLTZMANN
+#fractional GSL_CONST_MKS_BOLTZMANN
+#fractional GSL_CONST_MKSA_BOLTZMANN
+#fractional GSL_CONST_CGS_BTU
+#fractional GSL_CONST_CGSM_BTU
+#fractional GSL_CONST_MKS_BTU
+#fractional GSL_CONST_MKSA_BTU
+#fractional GSL_CONST_CGS_CALORIE
+#fractional GSL_CONST_CGSM_CALORIE
+#fractional GSL_CONST_MKS_CALORIE
+#fractional GSL_CONST_MKSA_CALORIE
+#fractional GSL_CONST_CGS_CANADIAN_GALLON
+#fractional GSL_CONST_CGSM_CANADIAN_GALLON
+#fractional GSL_CONST_MKS_CANADIAN_GALLON
+#fractional GSL_CONST_MKSA_CANADIAN_GALLON
+#fractional GSL_CONST_CGS_CARAT
+#fractional GSL_CONST_CGSM_CARAT
+#fractional GSL_CONST_MKS_CARAT
+#fractional GSL_CONST_MKSA_CARAT
+#fractional GSL_CONST_CGS_CUP
+#fractional GSL_CONST_CGSM_CUP
+#fractional GSL_CONST_MKS_CUP
+#fractional GSL_CONST_MKSA_CUP
+#fractional GSL_CONST_CGS_CURIE
+#fractional GSL_CONST_CGSM_CURIE
+#fractional GSL_CONST_MKS_CURIE
+#fractional GSL_CONST_MKSA_CURIE
+#fractional GSL_CONST_CGS_DAY
+#fractional GSL_CONST_CGSM_DAY
+#fractional GSL_CONST_MKS_DAY
+#fractional GSL_CONST_MKSA_DAY
+#fractional GSL_CONST_MKS_DEBYE
+#fractional GSL_CONST_MKSA_DEBYE
+#fractional GSL_CONST_CGS_DYNE
+#fractional GSL_CONST_CGSM_DYNE
+#fractional GSL_CONST_MKS_DYNE
+#fractional GSL_CONST_MKSA_DYNE
+#fractional GSL_CONST_CGS_ELECTRON_CHARGE
+#fractional GSL_CONST_CGSM_ELECTRON_CHARGE
+#fractional GSL_CONST_MKS_ELECTRON_CHARGE
+#fractional GSL_CONST_MKSA_ELECTRON_CHARGE
+#fractional GSL_CONST_CGS_ELECTRON_MAGNETIC_MOMENT
+#fractional GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT
+#fractional GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT
+#fractional GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT
+#fractional GSL_CONST_CGS_ELECTRON_VOLT
+#fractional GSL_CONST_CGSM_ELECTRON_VOLT
+#fractional GSL_CONST_MKS_ELECTRON_VOLT
+#fractional GSL_CONST_MKSA_ELECTRON_VOLT
+#fractional GSL_CONST_CGS_ERG
+#fractional GSL_CONST_CGSM_ERG
+#fractional GSL_CONST_MKS_ERG
+#fractional GSL_CONST_MKSA_ERG
+#fractional GSL_CONST_NUM_EXA
+#fractional GSL_CONST_CGS_FARADAY
+#fractional GSL_CONST_CGSM_FARADAY
+#fractional GSL_CONST_MKS_FARADAY
+#fractional GSL_CONST_MKSA_FARADAY
+#fractional GSL_CONST_CGS_FATHOM
+#fractional GSL_CONST_CGSM_FATHOM
+#fractional GSL_CONST_MKS_FATHOM
+#fractional GSL_CONST_MKSA_FATHOM
+#fractional GSL_CONST_NUM_FEMTO
+#fractional GSL_CONST_NUM_FINE_STRUCTURE
+#fractional GSL_CONST_CGS_FLUID_OUNCE
+#fractional GSL_CONST_CGSM_FLUID_OUNCE
+#fractional GSL_CONST_MKS_FLUID_OUNCE
+#fractional GSL_CONST_MKSA_FLUID_OUNCE
+#fractional GSL_CONST_CGS_FOOT
+#fractional GSL_CONST_CGSM_FOOT
+#fractional GSL_CONST_MKS_FOOT
+#fractional GSL_CONST_MKSA_FOOT
+#fractional GSL_CONST_CGS_FOOTCANDLE
+#fractional GSL_CONST_CGSM_FOOTCANDLE
+#fractional GSL_CONST_MKS_FOOTCANDLE
+#fractional GSL_CONST_MKSA_FOOTCANDLE
+#fractional GSL_CONST_CGS_FOOTLAMBERT
+#fractional GSL_CONST_CGSM_FOOTLAMBERT
+#fractional GSL_CONST_MKS_FOOTLAMBERT
+#fractional GSL_CONST_MKSA_FOOTLAMBERT
+#fractional GSL_CONST_CGS_GAUSS
+#fractional GSL_CONST_CGSM_GAUSS
+#fractional GSL_CONST_MKS_GAUSS
+#fractional GSL_CONST_MKSA_GAUSS
+#fractional GSL_CONST_NUM_GIGA
+#fractional GSL_CONST_CGS_GRAM_FORCE
+#fractional GSL_CONST_CGSM_GRAM_FORCE
+#fractional GSL_CONST_MKS_GRAM_FORCE
+#fractional GSL_CONST_MKSA_GRAM_FORCE
+#fractional GSL_CONST_CGS_GRAVITATIONAL_CONSTANT
+#fractional GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT
+#fractional GSL_CONST_MKS_GRAVITATIONAL_CONSTANT
+#fractional GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT
+#fractional GSL_CONST_CGS_GRAV_ACCEL
+#fractional GSL_CONST_CGSM_GRAV_ACCEL
+#fractional GSL_CONST_MKS_GRAV_ACCEL
+#fractional GSL_CONST_MKSA_GRAV_ACCEL
+#fractional GSL_CONST_CGS_HECTARE
+#fractional GSL_CONST_CGSM_HECTARE
+#fractional GSL_CONST_MKS_HECTARE
+#fractional GSL_CONST_MKSA_HECTARE
+#fractional GSL_CONST_CGS_HORSEPOWER
+#fractional GSL_CONST_CGSM_HORSEPOWER
+#fractional GSL_CONST_MKS_HORSEPOWER
+#fractional GSL_CONST_MKSA_HORSEPOWER
+#fractional GSL_CONST_CGS_HOUR
+#fractional GSL_CONST_CGSM_HOUR
+#fractional GSL_CONST_MKS_HOUR
+#fractional GSL_CONST_MKSA_HOUR
+#fractional GSL_CONST_CGS_INCH
+#fractional GSL_CONST_CGSM_INCH
+#fractional GSL_CONST_MKS_INCH
+#fractional GSL_CONST_MKSA_INCH
+#fractional GSL_CONST_CGS_INCH_OF_MERCURY
+#fractional GSL_CONST_CGSM_INCH_OF_MERCURY
+#fractional GSL_CONST_MKS_INCH_OF_MERCURY
+#fractional GSL_CONST_MKSA_INCH_OF_MERCURY
+#fractional GSL_CONST_CGS_INCH_OF_WATER
+#fractional GSL_CONST_CGSM_INCH_OF_WATER
+#fractional GSL_CONST_MKS_INCH_OF_WATER
+#fractional GSL_CONST_MKSA_INCH_OF_WATER
+#fractional GSL_CONST_CGS_JOULE
+#fractional GSL_CONST_CGSM_JOULE
+#fractional GSL_CONST_MKS_JOULE
+#fractional GSL_CONST_MKSA_JOULE
+#fractional GSL_CONST_NUM_KILO
+#fractional GSL_CONST_CGS_KILOMETERS_PER_HOUR
+#fractional GSL_CONST_CGSM_KILOMETERS_PER_HOUR
+#fractional GSL_CONST_MKS_KILOMETERS_PER_HOUR
+#fractional GSL_CONST_MKSA_KILOMETERS_PER_HOUR
+#fractional GSL_CONST_CGS_KILOPOUND_FORCE
+#fractional GSL_CONST_CGSM_KILOPOUND_FORCE
+#fractional GSL_CONST_MKS_KILOPOUND_FORCE
+#fractional GSL_CONST_MKSA_KILOPOUND_FORCE
+#fractional GSL_CONST_CGS_KNOT
+#fractional GSL_CONST_CGSM_KNOT
+#fractional GSL_CONST_MKS_KNOT
+#fractional GSL_CONST_MKSA_KNOT
+#fractional GSL_CONST_CGS_LAMBERT
+#fractional GSL_CONST_CGSM_LAMBERT
+#fractional GSL_CONST_MKS_LAMBERT
+#fractional GSL_CONST_MKSA_LAMBERT
+#fractional GSL_CONST_CGS_LIGHT_YEAR
+#fractional GSL_CONST_CGSM_LIGHT_YEAR
+#fractional GSL_CONST_MKS_LIGHT_YEAR
+#fractional GSL_CONST_MKSA_LIGHT_YEAR
+#fractional GSL_CONST_CGS_LITER
+#fractional GSL_CONST_CGSM_LITER
+#fractional GSL_CONST_MKS_LITER
+#fractional GSL_CONST_MKSA_LITER
+#fractional GSL_CONST_CGS_LUMEN
+#fractional GSL_CONST_CGSM_LUMEN
+#fractional GSL_CONST_MKS_LUMEN
+#fractional GSL_CONST_MKSA_LUMEN
+#fractional GSL_CONST_CGS_LUX
+#fractional GSL_CONST_CGSM_LUX
+#fractional GSL_CONST_MKS_LUX
+#fractional GSL_CONST_MKSA_LUX
+#fractional GSL_CONST_CGS_MASS_ELECTRON
+#fractional GSL_CONST_CGSM_MASS_ELECTRON
+#fractional GSL_CONST_MKS_MASS_ELECTRON
+#fractional GSL_CONST_MKSA_MASS_ELECTRON
+#fractional GSL_CONST_CGS_MASS_MUON
+#fractional GSL_CONST_CGSM_MASS_MUON
+#fractional GSL_CONST_MKS_MASS_MUON
+#fractional GSL_CONST_MKSA_MASS_MUON
+#fractional GSL_CONST_CGS_MASS_NEUTRON
+#fractional GSL_CONST_CGSM_MASS_NEUTRON
+#fractional GSL_CONST_MKS_MASS_NEUTRON
+#fractional GSL_CONST_MKSA_MASS_NEUTRON
+#fractional GSL_CONST_CGS_MASS_PROTON
+#fractional GSL_CONST_CGSM_MASS_PROTON
+#fractional GSL_CONST_MKS_MASS_PROTON
+#fractional GSL_CONST_MKSA_MASS_PROTON
+#fractional GSL_CONST_NUM_MEGA
+#fractional GSL_CONST_CGS_METER_OF_MERCURY
+#fractional GSL_CONST_CGSM_METER_OF_MERCURY
+#fractional GSL_CONST_MKS_METER_OF_MERCURY
+#fractional GSL_CONST_MKSA_METER_OF_MERCURY
+#fractional GSL_CONST_CGS_METRIC_TON
+#fractional GSL_CONST_CGSM_METRIC_TON
+#fractional GSL_CONST_MKS_METRIC_TON
+#fractional GSL_CONST_MKSA_METRIC_TON
+#fractional GSL_CONST_NUM_MICRO
+#fractional GSL_CONST_CGS_MICRON
+#fractional GSL_CONST_CGSM_MICRON
+#fractional GSL_CONST_MKS_MICRON
+#fractional GSL_CONST_MKSA_MICRON
+#fractional GSL_CONST_CGS_MIL
+#fractional GSL_CONST_CGSM_MIL
+#fractional GSL_CONST_MKS_MIL
+#fractional GSL_CONST_MKSA_MIL
+#fractional GSL_CONST_CGS_MILE
+#fractional GSL_CONST_CGSM_MILE
+#fractional GSL_CONST_MKS_MILE
+#fractional GSL_CONST_MKSA_MILE
+#fractional GSL_CONST_CGS_MILES_PER_HOUR
+#fractional GSL_CONST_CGSM_MILES_PER_HOUR
+#fractional GSL_CONST_MKS_MILES_PER_HOUR
+#fractional GSL_CONST_MKSA_MILES_PER_HOUR
+#fractional GSL_CONST_NUM_MILLI
+#fractional GSL_CONST_CGS_MINUTE
+#fractional GSL_CONST_CGSM_MINUTE
+#fractional GSL_CONST_MKS_MINUTE
+#fractional GSL_CONST_MKSA_MINUTE
+#fractional GSL_CONST_CGS_MOLAR_GAS
+#fractional GSL_CONST_CGSM_MOLAR_GAS
+#fractional GSL_CONST_MKS_MOLAR_GAS
+#fractional GSL_CONST_MKSA_MOLAR_GAS
+#fractional GSL_CONST_NUM_NANO
+#fractional GSL_CONST_CGS_NAUTICAL_MILE
+#fractional GSL_CONST_CGSM_NAUTICAL_MILE
+#fractional GSL_CONST_MKS_NAUTICAL_MILE
+#fractional GSL_CONST_MKSA_NAUTICAL_MILE
+#fractional GSL_CONST_CGS_NEWTON
+#fractional GSL_CONST_CGSM_NEWTON
+#fractional GSL_CONST_MKS_NEWTON
+#fractional GSL_CONST_MKSA_NEWTON
+#fractional GSL_CONST_CGS_NUCLEAR_MAGNETON
+#fractional GSL_CONST_CGSM_NUCLEAR_MAGNETON
+#fractional GSL_CONST_MKS_NUCLEAR_MAGNETON
+#fractional GSL_CONST_MKSA_NUCLEAR_MAGNETON
+#fractional GSL_CONST_CGS_OUNCE_MASS
+#fractional GSL_CONST_CGSM_OUNCE_MASS
+#fractional GSL_CONST_MKS_OUNCE_MASS
+#fractional GSL_CONST_MKSA_OUNCE_MASS
+#fractional GSL_CONST_CGS_PARSEC
+#fractional GSL_CONST_CGSM_PARSEC
+#fractional GSL_CONST_MKS_PARSEC
+#fractional GSL_CONST_MKSA_PARSEC
+#fractional GSL_CONST_NUM_PETA
+#fractional GSL_CONST_CGS_PHOT
+#fractional GSL_CONST_CGSM_PHOT
+#fractional GSL_CONST_MKS_PHOT
+#fractional GSL_CONST_MKSA_PHOT
+#fractional GSL_CONST_NUM_PICO
+#fractional GSL_CONST_CGS_PINT
+#fractional GSL_CONST_CGSM_PINT
+#fractional GSL_CONST_MKS_PINT
+#fractional GSL_CONST_MKSA_PINT
+#fractional GSL_CONST_CGS_PLANCKS_CONSTANT_H
+#fractional GSL_CONST_CGSM_PLANCKS_CONSTANT_H
+#fractional GSL_CONST_MKS_PLANCKS_CONSTANT_H
+#fractional GSL_CONST_MKSA_PLANCKS_CONSTANT_H
+#fractional GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR
+#fractional GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR
+#fractional GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR
+#fractional GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR
+#fractional GSL_CONST_CGS_POINT
+#fractional GSL_CONST_CGSM_POINT
+#fractional GSL_CONST_MKS_POINT
+#fractional GSL_CONST_MKSA_POINT
+#fractional GSL_CONST_CGS_POISE
+#fractional GSL_CONST_CGSM_POISE
+#fractional GSL_CONST_MKS_POISE
+#fractional GSL_CONST_MKSA_POISE
+#fractional GSL_CONST_CGS_POUNDAL
+#fractional GSL_CONST_CGSM_POUNDAL
+#fractional GSL_CONST_MKS_POUNDAL
+#fractional GSL_CONST_MKSA_POUNDAL
+#fractional GSL_CONST_CGS_POUND_FORCE
+#fractional GSL_CONST_CGSM_POUND_FORCE
+#fractional GSL_CONST_MKS_POUND_FORCE
+#fractional GSL_CONST_MKSA_POUND_FORCE
+#fractional GSL_CONST_CGS_POUND_MASS
+#fractional GSL_CONST_CGSM_POUND_MASS
+#fractional GSL_CONST_MKS_POUND_MASS
+#fractional GSL_CONST_MKSA_POUND_MASS
+#fractional GSL_CONST_CGS_PROTON_MAGNETIC_MOMENT
+#fractional GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT
+#fractional GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT
+#fractional GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT
+#fractional GSL_CONST_CGS_PSI
+#fractional GSL_CONST_CGSM_PSI
+#fractional GSL_CONST_MKS_PSI
+#fractional GSL_CONST_MKSA_PSI
+#fractional GSL_CONST_CGS_QUART
+#fractional GSL_CONST_CGSM_QUART
+#fractional GSL_CONST_MKS_QUART
+#fractional GSL_CONST_MKSA_QUART
+#fractional GSL_CONST_CGS_RAD
+#fractional GSL_CONST_CGSM_RAD
+#fractional GSL_CONST_MKS_RAD
+#fractional GSL_CONST_MKSA_RAD
+#fractional GSL_CONST_CGS_ROENTGEN
+#fractional GSL_CONST_CGSM_ROENTGEN
+#fractional GSL_CONST_MKS_ROENTGEN
+#fractional GSL_CONST_MKSA_ROENTGEN
+#fractional GSL_CONST_CGS_RYDBERG
+#fractional GSL_CONST_CGSM_RYDBERG
+#fractional GSL_CONST_MKS_RYDBERG
+#fractional GSL_CONST_MKSA_RYDBERG
+#fractional GSL_CONST_CGS_SOLAR_MASS
+#fractional GSL_CONST_CGSM_SOLAR_MASS
+#fractional GSL_CONST_MKS_SOLAR_MASS
+#fractional GSL_CONST_MKSA_SOLAR_MASS
+#fractional GSL_CONST_CGS_SPEED_OF_LIGHT
+#fractional GSL_CONST_CGSM_SPEED_OF_LIGHT
+#fractional GSL_CONST_MKS_SPEED_OF_LIGHT
+#fractional GSL_CONST_MKSA_SPEED_OF_LIGHT
+#fractional GSL_CONST_CGS_STANDARD_GAS_VOLUME
+#fractional GSL_CONST_CGSM_STANDARD_GAS_VOLUME
+#fractional GSL_CONST_MKS_STANDARD_GAS_VOLUME
+#fractional GSL_CONST_MKSA_STANDARD_GAS_VOLUME
+#fractional GSL_CONST_CGS_STD_ATMOSPHERE
+#fractional GSL_CONST_CGSM_STD_ATMOSPHERE
+#fractional GSL_CONST_MKS_STD_ATMOSPHERE
+#fractional GSL_CONST_MKSA_STD_ATMOSPHERE
+#fractional GSL_CONST_CGS_STEFAN_BOLTZMANN_CONSTANT
+#fractional GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT
+#fractional GSL_CONST_MKS_STEFAN_BOLTZMANN_CONSTANT
+#fractional GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT
+#fractional GSL_CONST_CGS_STILB
+#fractional GSL_CONST_CGSM_STILB
+#fractional GSL_CONST_MKS_STILB
+#fractional GSL_CONST_MKSA_STILB
+#fractional GSL_CONST_CGS_STOKES
+#fractional GSL_CONST_CGSM_STOKES
+#fractional GSL_CONST_MKS_STOKES
+#fractional GSL_CONST_MKSA_STOKES
+#fractional GSL_CONST_CGS_TABLESPOON
+#fractional GSL_CONST_CGSM_TABLESPOON
+#fractional GSL_CONST_MKS_TABLESPOON
+#fractional GSL_CONST_MKSA_TABLESPOON
+#fractional GSL_CONST_CGS_TEASPOON
+#fractional GSL_CONST_CGSM_TEASPOON
+#fractional GSL_CONST_MKS_TEASPOON
+#fractional GSL_CONST_MKSA_TEASPOON
+#fractional GSL_CONST_NUM_TERA
+#fractional GSL_CONST_CGS_TEXPOINT
+#fractional GSL_CONST_CGSM_TEXPOINT
+#fractional GSL_CONST_MKS_TEXPOINT
+#fractional GSL_CONST_MKSA_TEXPOINT
+#fractional GSL_CONST_CGS_THERM
+#fractional GSL_CONST_CGSM_THERM
+#fractional GSL_CONST_MKS_THERM
+#fractional GSL_CONST_MKSA_THERM
+#fractional GSL_CONST_CGS_THOMSON_CROSS_SECTION
+#fractional GSL_CONST_CGSM_THOMSON_CROSS_SECTION
+#fractional GSL_CONST_MKS_THOMSON_CROSS_SECTION
+#fractional GSL_CONST_MKSA_THOMSON_CROSS_SECTION
+#fractional GSL_CONST_CGS_TON
+#fractional GSL_CONST_CGSM_TON
+#fractional GSL_CONST_MKS_TON
+#fractional GSL_CONST_MKSA_TON
+#fractional GSL_CONST_CGS_TORR
+#fractional GSL_CONST_CGSM_TORR
+#fractional GSL_CONST_MKS_TORR
+#fractional GSL_CONST_MKSA_TORR
+#fractional GSL_CONST_CGS_TROY_OUNCE
+#fractional GSL_CONST_CGSM_TROY_OUNCE
+#fractional GSL_CONST_MKS_TROY_OUNCE
+#fractional GSL_CONST_MKSA_TROY_OUNCE
+#fractional GSL_CONST_CGS_UK_GALLON
+#fractional GSL_CONST_CGSM_UK_GALLON
+#fractional GSL_CONST_MKS_UK_GALLON
+#fractional GSL_CONST_MKSA_UK_GALLON
+#fractional GSL_CONST_CGS_UK_TON
+#fractional GSL_CONST_CGSM_UK_TON
+#fractional GSL_CONST_MKS_UK_TON
+#fractional GSL_CONST_MKSA_UK_TON
+#fractional GSL_CONST_CGS_UNIFIED_ATOMIC_MASS
+#fractional GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS
+#fractional GSL_CONST_MKS_UNIFIED_ATOMIC_MASS
+#fractional GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS
+#fractional GSL_CONST_CGS_US_GALLON
+#fractional GSL_CONST_CGSM_US_GALLON
+#fractional GSL_CONST_MKS_US_GALLON
+#fractional GSL_CONST_MKSA_US_GALLON
+#fractional GSL_CONST_MKS_VACUUM_PERMEABILITY
+#fractional GSL_CONST_MKSA_VACUUM_PERMEABILITY
+#fractional GSL_CONST_MKS_VACUUM_PERMITTIVITY
+#fractional GSL_CONST_MKSA_VACUUM_PERMITTIVITY
+#fractional GSL_CONST_CGS_WEEK
+#fractional GSL_CONST_CGSM_WEEK
+#fractional GSL_CONST_MKS_WEEK
+#fractional GSL_CONST_MKSA_WEEK
+#fractional GSL_CONST_CGS_YARD
+#fractional GSL_CONST_CGSM_YARD
+#fractional GSL_CONST_MKS_YARD
+#fractional GSL_CONST_MKSA_YARD
+#fractional GSL_CONST_NUM_YOCTO
+#fractional GSL_CONST_NUM_YOTTA
+#fractional GSL_CONST_NUM_ZEPTO
+#fractional GSL_CONST_NUM_ZETTA
+
diff --git a/src/Bindings/Gsl/Polynomials.hsc b/src/Bindings/Gsl/Polynomials.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Polynomials.hsc
@@ -0,0 +1,27 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_poly.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Polynomials.html>
+
+module Bindings.Gsl.Polynomials where
+#strict_import
+import Bindings.Gsl.ComplexNumbers
+
+#ccall gsl_poly_eval , Ptr CDouble -> CInt -> CInt -> CDouble -> IO CDouble
+-- ccall gsl_poly_complex_eval , Ptr CDouble -> CInt -> CInt -> <gsl_complex> -> IO <gsl_complex>
+-- ccall gsl_complex_poly_complex_eval , Ptr <gsl_complex> -> CInt -> CInt -> <gsl_complex> -> IO <gsl_complex>
+#ccall gsl_poly_dd_taylor , Ptr CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> CSize -> Ptr CDouble -> IO CInt
+#ccall gsl_poly_solve_quadratic , CDouble -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_poly_complex_solve_quadratic , CDouble -> CDouble -> CDouble -> Ptr <gsl_complex> -> Ptr <gsl_complex> -> IO CInt
+#ccall gsl_poly_solve_cubic , CDouble -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_poly_complex_solve_cubic , CDouble -> CDouble -> CDouble -> Ptr <gsl_complex> -> Ptr <gsl_complex> -> Ptr <gsl_complex> -> IO CInt
+
+#starttype gsl_poly_complex_workspace
+#field nc , CSize
+#field matrix , Ptr CDouble
+#stoptype
+
+#ccall gsl_poly_complex_workspace_alloc , CSize -> IO (Ptr <gsl_poly_complex_workspace>)
+#ccall gsl_poly_complex_workspace_free , Ptr <gsl_poly_complex_workspace> -> IO ()
+#ccall gsl_poly_complex_solve , Ptr CDouble -> CSize -> Ptr <gsl_poly_complex_workspace> -> <gsl_complex_packed_ptr> -> IO CInt
+
diff --git a/src/Bindings/Gsl/QuasiRandomSequences.hsc b/src/Bindings/Gsl/QuasiRandomSequences.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/QuasiRandomSequences.hsc
@@ -0,0 +1,38 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_qrng.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Quasi_002dRandom-Sequences.html>
+
+module Bindings.Gsl.QuasiRandomSequences where
+#strict_import
+
+#starttype gsl_qrng_type
+#field name , CString
+#field max_dimension , CUInt
+#field state_size , FunPtr (CUInt -> IO  CSize)
+#field init_state , FunPtr (Ptr () -> CUInt -> IO  CInt)
+#field get , FunPtr (Ptr () -> CUInt -> Ptr CDouble -> IO  CInt)
+#stoptype
+
+#starttype gsl_qrng
+#field type , Ptr <gsl_qrng_type>
+#field dimension , CUInt
+#field state_size , CSize
+#field state , Ptr ()
+#stoptype
+
+#globalvar gsl_qrng_niederreiter_2 , Ptr gsl_qrng_type
+#globalvar gsl_qrng_sobol , Ptr gsl_qrng_type
+#globalvar gsl_qrng_halton , Ptr gsl_qrng_type
+#globalvar gsl_qrng_reversehalton , Ptr gsl_qrng_type
+
+#ccall gsl_qrng_alloc , Ptr <gsl_qrng_type> -> CUInt -> IO (Ptr <gsl_qrng>)
+#ccall gsl_qrng_memcpy , Ptr <gsl_qrng> -> Ptr <gsl_qrng> -> IO CInt
+#ccall gsl_qrng_clone , Ptr <gsl_qrng> -> IO (Ptr <gsl_qrng>)
+#ccall gsl_qrng_free , Ptr <gsl_qrng> -> IO ()
+#ccall gsl_qrng_init , Ptr <gsl_qrng> -> IO ()
+#ccall gsl_qrng_name , Ptr <gsl_qrng> -> IO CString 
+#ccall gsl_qrng_size , Ptr <gsl_qrng> -> IO CSize
+#ccall gsl_qrng_state , Ptr <gsl_qrng> -> IO (Ptr ())
+#ccall gsl_qrng_get , Ptr <gsl_qrng> -> Ptr CDouble -> IO CInt
+
diff --git a/src/Bindings/Gsl/RandomNumberDistributions.hsc b/src/Bindings/Gsl/RandomNumberDistributions.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/RandomNumberDistributions.hsc
@@ -0,0 +1,199 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_randist.h>
+#include <gsl/gsl_cdf.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html>
+
+module Bindings.Gsl.RandomNumberDistributions where
+#strict_import
+import Bindings.Gsl.RandomNumberGeneration
+
+#ccall gsl_ran_bernoulli , Ptr <gsl_rng> -> CDouble -> IO CUInt
+#ccall gsl_ran_bernoulli_pdf , CUInt -> CDouble -> IO CDouble
+#ccall gsl_ran_beta , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_beta_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_binomial , Ptr <gsl_rng> -> CDouble -> CUInt -> IO CUInt
+#ccall gsl_ran_binomial_knuth , Ptr <gsl_rng> -> CDouble -> CUInt -> IO CUInt
+#ccall gsl_ran_binomial_tpe , Ptr <gsl_rng> -> CDouble -> CUInt -> IO CUInt
+#ccall gsl_ran_binomial_pdf , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_ran_exponential , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_exponential_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_exppow , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_exppow_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_cauchy , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_cauchy_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_chisq , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_chisq_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_dirichlet , Ptr <gsl_rng> -> CSize -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_ran_dirichlet_pdf , CSize -> Ptr CDouble -> Ptr CDouble -> IO CDouble
+#ccall gsl_ran_dirichlet_lnpdf , CSize -> Ptr CDouble -> Ptr CDouble -> IO CDouble
+#ccall gsl_ran_erlang , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_erlang_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_fdist , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_fdist_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_flat , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_flat_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gamma , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gamma_int , Ptr <gsl_rng> -> CUInt -> IO CDouble
+#ccall gsl_ran_gamma_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gamma_mt , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gamma_knuth , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gaussian , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_gaussian_ratio_method , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_gaussian_ziggurat , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_gaussian_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_ugaussian , Ptr <gsl_rng> -> IO CDouble
+#ccall gsl_ran_ugaussian_ratio_method , Ptr <gsl_rng> -> IO CDouble
+#ccall gsl_ran_ugaussian_pdf , CDouble -> IO CDouble
+#ccall gsl_ran_gaussian_tail , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gaussian_tail_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_ugaussian_tail , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_ugaussian_tail_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_bivariate_gaussian , Ptr <gsl_rng> -> CDouble -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_ran_bivariate_gaussian_pdf , CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_landau , Ptr <gsl_rng> -> IO CDouble
+#ccall gsl_ran_landau_pdf , CDouble -> IO CDouble
+#ccall gsl_ran_geometric , Ptr <gsl_rng> -> CDouble -> IO CUInt
+#ccall gsl_ran_geometric_pdf , CUInt -> CDouble -> IO CDouble
+#ccall gsl_ran_hypergeometric , Ptr <gsl_rng> -> CUInt -> CUInt -> CUInt -> IO CUInt
+#ccall gsl_ran_hypergeometric_pdf , CUInt -> CUInt -> CUInt -> CUInt -> IO CDouble
+#ccall gsl_ran_gumbel1 , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gumbel1_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gumbel2 , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_gumbel2_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_logistic , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_logistic_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_lognormal , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_lognormal_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_logarithmic , Ptr <gsl_rng> -> CDouble -> IO CUInt
+#ccall gsl_ran_logarithmic_pdf , CUInt -> CDouble -> IO CDouble
+#ccall gsl_ran_multinomial , Ptr <gsl_rng> -> CSize -> CUInt -> Ptr CDouble -> Ptr CUInt  -> IO ()
+#ccall gsl_ran_multinomial_pdf , CSize -> Ptr CDouble -> Ptr CUInt  -> IO CDouble
+#ccall gsl_ran_multinomial_lnpdf , CSize -> Ptr CDouble -> Ptr CUInt  -> IO CDouble
+#ccall gsl_ran_negative_binomial , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CUInt
+#ccall gsl_ran_negative_binomial_pdf , CUInt -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_pascal , Ptr <gsl_rng> -> CDouble -> CUInt -> IO CUInt
+#ccall gsl_ran_pascal_pdf , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_ran_pareto , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_pareto_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_poisson , Ptr <gsl_rng> -> CDouble -> IO CUInt
+#ccall gsl_ran_poisson_array , Ptr <gsl_rng> -> CSize -> Ptr CUInt -> CDouble -> IO ()
+#ccall gsl_ran_poisson_pdf , CUInt -> CDouble -> IO CDouble
+#ccall gsl_ran_rayleigh , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_rayleigh_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_rayleigh_tail , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_rayleigh_tail_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_tdist , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_tdist_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_laplace , Ptr <gsl_rng> -> CDouble -> IO CDouble
+#ccall gsl_ran_laplace_pdf , CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_levy , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_levy_skew , Ptr <gsl_rng> -> CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_weibull , Ptr <gsl_rng> -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_weibull_pdf , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_ran_dir_2d , Ptr <gsl_rng> -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_ran_dir_2d_trig_method , Ptr <gsl_rng> -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_ran_dir_3d , Ptr <gsl_rng> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_ran_dir_nd , Ptr <gsl_rng> -> CSize -> Ptr CDouble -> IO ()
+#ccall gsl_ran_shuffle , Ptr <gsl_rng> -> Ptr () -> CSize -> CSize -> IO ()
+#ccall gsl_ran_choose , Ptr <gsl_rng> -> Ptr () -> CSize -> Ptr () -> CSize -> CSize -> IO CInt
+#ccall gsl_ran_sample , Ptr <gsl_rng> -> Ptr () -> CSize -> Ptr () -> CSize -> CSize -> IO ()
+
+#starttype gsl_ran_discrete_t
+#field K , CSize
+#field A , Ptr CSize
+#field F , Ptr CDouble
+#stoptype
+
+#ccall gsl_ran_discrete_preproc , CSize -> Ptr CDouble -> IO (Ptr <gsl_ran_discrete_t>)
+#ccall gsl_ran_discrete_free , Ptr <gsl_ran_discrete_t> -> IO ()
+#ccall gsl_ran_discrete , Ptr <gsl_rng> -> Ptr <gsl_ran_discrete_t> -> IO CSize
+#ccall gsl_ran_discrete_pdf , CSize -> Ptr <gsl_ran_discrete_t> -> IO CDouble
+
+#ccall gsl_cdf_ugaussian_P , CDouble -> IO CDouble
+#ccall gsl_cdf_ugaussian_Q , CDouble -> IO CDouble
+#ccall gsl_cdf_ugaussian_Pinv , CDouble -> IO CDouble
+#ccall gsl_cdf_ugaussian_Qinv , CDouble -> IO CDouble
+#ccall gsl_cdf_gaussian_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gaussian_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gaussian_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gaussian_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gamma_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gamma_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gamma_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gamma_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_cauchy_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_cauchy_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_cauchy_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_cauchy_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_laplace_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_laplace_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_laplace_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_laplace_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_rayleigh_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_rayleigh_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_rayleigh_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_rayleigh_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_chisq_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_chisq_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_chisq_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_chisq_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exponential_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exponential_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exponential_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exponential_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exppow_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_exppow_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_tdist_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_tdist_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_tdist_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_tdist_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_fdist_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_fdist_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_fdist_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_fdist_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_beta_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_beta_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_beta_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_beta_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_flat_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_flat_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_flat_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_flat_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_lognormal_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_lognormal_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_lognormal_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_lognormal_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel1_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel1_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel1_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel1_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel2_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel2_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel2_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_gumbel2_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_weibull_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_weibull_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_weibull_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_weibull_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_pareto_P , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_pareto_Q , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_pareto_Pinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_pareto_Qinv , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_logistic_P , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_logistic_Q , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_logistic_Pinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_logistic_Qinv , CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_binomial_P , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_cdf_binomial_Q , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_cdf_poisson_P , CUInt -> CDouble -> IO CDouble
+#ccall gsl_cdf_poisson_Q , CUInt -> CDouble -> IO CDouble
+#ccall gsl_cdf_geometric_P , CUInt -> CDouble -> IO CDouble
+#ccall gsl_cdf_geometric_Q , CUInt -> CDouble -> IO CDouble
+#ccall gsl_cdf_negative_binomial_P , CUInt -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_negative_binomial_Q , CUInt -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_cdf_pascal_P , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_cdf_pascal_Q , CUInt -> CDouble -> CUInt -> IO CDouble
+#ccall gsl_cdf_hypergeometric_P , CUInt -> CUInt -> CUInt -> CUInt -> IO CDouble
+#ccall gsl_cdf_hypergeometric_Q , CUInt -> CUInt -> CUInt -> CUInt -> IO CDouble
+
diff --git a/src/Bindings/Gsl/RandomNumberGeneration.hsc b/src/Bindings/Gsl/RandomNumberGeneration.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/RandomNumberGeneration.hsc
@@ -0,0 +1,110 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_rng.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html>
+
+module Bindings.Gsl.RandomNumberGeneration where
+#strict_import
+
+#starttype gsl_rng_type
+#field name , CString
+#field max , CULong
+#field min , CULong
+#field size , CSize
+#field set , FunPtr (Ptr () -> CULong -> IO ())
+#field get , FunPtr (Ptr () -> IO  CULong)
+#field get_double , FunPtr (Ptr () -> IO  CDouble)
+#stoptype
+
+#starttype gsl_rng
+#field type , Ptr <gsl_rng_type>
+#field state , Ptr ()
+#stoptype
+
+#globalvar gsl_rng_borosh13 , Ptr gsl_rng_type
+#globalvar gsl_rng_coveyou , Ptr gsl_rng_type
+#globalvar gsl_rng_cmrg , Ptr gsl_rng_type
+#globalvar gsl_rng_fishman18 , Ptr gsl_rng_type
+#globalvar gsl_rng_fishman20 , Ptr gsl_rng_type
+#globalvar gsl_rng_fishman2x , Ptr gsl_rng_type
+#globalvar gsl_rng_gfsr4 , Ptr gsl_rng_type
+#globalvar gsl_rng_knuthran , Ptr gsl_rng_type
+#globalvar gsl_rng_knuthran2 , Ptr gsl_rng_type
+#globalvar gsl_rng_knuthran2002 , Ptr gsl_rng_type
+#globalvar gsl_rng_lecuyer21 , Ptr gsl_rng_type
+#globalvar gsl_rng_minstd , Ptr gsl_rng_type
+#globalvar gsl_rng_mrg , Ptr gsl_rng_type
+#globalvar gsl_rng_mt19937 , Ptr gsl_rng_type
+#globalvar gsl_rng_mt19937_1999 , Ptr gsl_rng_type
+#globalvar gsl_rng_mt19937_1998 , Ptr gsl_rng_type
+#globalvar gsl_rng_r250 , Ptr gsl_rng_type
+#globalvar gsl_rng_ran0 , Ptr gsl_rng_type
+#globalvar gsl_rng_ran1 , Ptr gsl_rng_type
+#globalvar gsl_rng_ran2 , Ptr gsl_rng_type
+#globalvar gsl_rng_ran3 , Ptr gsl_rng_type
+#globalvar gsl_rng_rand , Ptr gsl_rng_type
+#globalvar gsl_rng_rand48 , Ptr gsl_rng_type
+#globalvar gsl_rng_random128_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random128_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random128_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_random256_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random256_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random256_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_random32_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random32_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random32_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_random64_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random64_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random64_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_random8_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random8_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random8_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_random_bsd , Ptr gsl_rng_type
+#globalvar gsl_rng_random_glibc2 , Ptr gsl_rng_type
+#globalvar gsl_rng_random_libc5 , Ptr gsl_rng_type
+#globalvar gsl_rng_randu , Ptr gsl_rng_type
+#globalvar gsl_rng_ranf , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlux , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlux389 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlxd1 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlxd2 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlxs0 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlxs1 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranlxs2 , Ptr gsl_rng_type
+#globalvar gsl_rng_ranmar , Ptr gsl_rng_type
+#globalvar gsl_rng_slatec , Ptr gsl_rng_type
+#globalvar gsl_rng_taus , Ptr gsl_rng_type
+#globalvar gsl_rng_taus2 , Ptr gsl_rng_type
+#globalvar gsl_rng_taus113 , Ptr gsl_rng_type
+#globalvar gsl_rng_transputer , Ptr gsl_rng_type
+#globalvar gsl_rng_tt800 , Ptr gsl_rng_type
+#globalvar gsl_rng_uni , Ptr gsl_rng_type
+#globalvar gsl_rng_uni32 , Ptr gsl_rng_type
+#globalvar gsl_rng_vax , Ptr gsl_rng_type
+#globalvar gsl_rng_waterman14 , Ptr gsl_rng_type
+#globalvar gsl_rng_zuf , Ptr gsl_rng_type
+
+#ccall gsl_rng_types_setup , IO (Ptr (Ptr <gsl_rng_type>))
+
+#globalvar gsl_rng_default , Ptr gsl_rng_type
+#globalvar gsl_rng_default_seed , CULong
+
+#ccall gsl_rng_alloc , Ptr <gsl_rng_type> -> IO (Ptr <gsl_rng>)
+#ccall gsl_rng_memcpy , Ptr <gsl_rng> -> Ptr <gsl_rng> -> IO CInt
+#ccall gsl_rng_clone , Ptr <gsl_rng> -> IO (Ptr <gsl_rng>)
+#ccall gsl_rng_free , Ptr <gsl_rng> -> IO ()
+#ccall gsl_rng_set , Ptr <gsl_rng> -> CULong -> IO ()
+#ccall gsl_rng_max , Ptr <gsl_rng> -> IO CULong
+#ccall gsl_rng_min , Ptr <gsl_rng> -> IO CULong
+#ccall gsl_rng_name , Ptr <gsl_rng> -> IO CString
+#ccall gsl_rng_fread , Ptr CFile -> Ptr <gsl_rng> -> IO CInt
+#ccall gsl_rng_fwrite , Ptr CFile -> Ptr <gsl_rng> -> IO CInt
+#ccall gsl_rng_size , Ptr <gsl_rng> -> IO CSize
+#ccall gsl_rng_state , Ptr <gsl_rng> -> IO (Ptr ())
+#ccall gsl_rng_print_state , Ptr <gsl_rng> -> IO ()
+#ccall gsl_rng_env_setup , IO (Ptr <gsl_rng_type>)
+#ccall gsl_rng_get , Ptr <gsl_rng> -> IO CULong
+#ccall gsl_rng_uniform , Ptr <gsl_rng> -> IO CDouble
+#ccall gsl_rng_uniform_pos , Ptr <gsl_rng> -> IO CDouble
+#ccall gsl_rng_uniform_int , Ptr <gsl_rng> -> CULong -> IO CULong
+
diff --git a/src/Bindings/Gsl/Sorting.hsc b/src/Bindings/Gsl/Sorting.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Sorting.hsc
@@ -0,0 +1,13 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_heapsort.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Sorting.html>
+
+module Bindings.Gsl.Sorting where
+#strict_import
+
+#callback gsl_comparison_fn_t , FunPtr ( Ptr (), Ptr () -> IO CInt)
+
+#ccall gsl_heapsort , Ptr () -> CSize -> CSize -> <gsl_comparison_fn_t> -> IO ()
+#ccall gsl_heapsort_index , Ptr CSize -> Ptr () -> CSize -> CSize -> <gsl_comparison_fn_t> -> IO CInt
+
diff --git a/src/Bindings/Gsl/SpecialFunctions.hsc b/src/Bindings/Gsl/SpecialFunctions.hsc
--- a/src/Bindings/Gsl/SpecialFunctions.hsc
+++ b/src/Bindings/Gsl/SpecialFunctions.hsc
@@ -1,4 +1,4 @@
-#include <bindings.macros.h>
+#include <bindings.dsl.h>
 #include <gsl/gsl_sf.h>
 
 -- | <http://www.gnu.org/software/gsl/manual/html_node/Special-Functions.html>
@@ -6,8 +6,17 @@
 module Bindings.Gsl.SpecialFunctions where
 #strict_import
 import Bindings.Gsl.Eigensystems
-import Bindings.Gsl.Mode
 import Bindings.Gsl.VectorsAndMatrices
+
+#integral_t gsl_mode_t
+
+#fractional GSL_PREC_DOUBLE
+#fractional GSL_PREC_SINGLE
+#fractional GSL_PREC_APPROX
+
+#cinline GSL_MODE_PREC , <gsl_mode_t> -> CUInt
+
+#num GSL_MODE_DEFAULT
 
 #fractional GSL_SF_GAMMA_XMAX
 #num GSL_SF_FACT_NMAX
diff --git a/src/Bindings/Gsl/VectorsAndMatrices.hs b/src/Bindings/Gsl/VectorsAndMatrices.hs
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/VectorsAndMatrices.hs
@@ -0,0 +1,1 @@
+module Bindings.Gsl.VectorsAndMatrices (module Bindings.Gsl.VectorsAndMatrices.Blocks,module Bindings.Gsl.VectorsAndMatrices.DataTypes,module Bindings.Gsl.VectorsAndMatrices.Matrices,module Bindings.Gsl.VectorsAndMatrices.Vectors) where {import Bindings.Gsl.VectorsAndMatrices.Blocks;import Bindings.Gsl.VectorsAndMatrices.DataTypes;import Bindings.Gsl.VectorsAndMatrices.Matrices;import Bindings.Gsl.VectorsAndMatrices.Vectors}
diff --git a/src/Bindings/Gsl/VectorsAndMatrices.hsc b/src/Bindings/Gsl/VectorsAndMatrices.hsc
deleted file mode 100644
--- a/src/Bindings/Gsl/VectorsAndMatrices.hsc
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <bindings.macros.h>
-#include <gsl/gsl_vector.h>
-#include <gsl/gsl_matrix.h>
-
-module Bindings.Gsl.VectorsAndMatrices where
-#strict_import
-
-#starttype gsl_vector
-#stoptype
-
-#starttype gsl_matrix
-#stoptype
-
diff --git a/src/Bindings/Gsl/VectorsAndMatrices/Blocks.hsc b/src/Bindings/Gsl/VectorsAndMatrices/Blocks.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/VectorsAndMatrices/Blocks.hsc
@@ -0,0 +1,191 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_block.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Blocks.html>
+
+module Bindings.Gsl.VectorsAndMatrices.Blocks where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#ccall gsl_block_alloc , CSize -> IO (Ptr <gsl_block>)
+#ccall gsl_block_calloc , CSize -> IO (Ptr <gsl_block>)
+#ccall gsl_block_char_alloc , CSize -> IO (Ptr <gsl_block_char>)
+#ccall gsl_block_char_calloc , CSize -> IO (Ptr <gsl_block_char>)
+#ccall gsl_block_char_data , Ptr <gsl_block_char> -> IO CString
+#ccall gsl_block_char_fprintf , Ptr CFile -> Ptr <gsl_block_char> -> CString -> IO CInt
+#ccall gsl_block_char_fread , Ptr CFile -> Ptr <gsl_block_char> -> IO CInt
+#ccall gsl_block_char_free , Ptr <gsl_block_char> -> IO ()
+#ccall gsl_block_char_fscanf , Ptr CFile -> Ptr <gsl_block_char> -> IO CInt
+#ccall gsl_block_char_fwrite , Ptr CFile -> Ptr <gsl_block_char> -> IO CInt
+#ccall gsl_block_char_raw_fprintf , Ptr CFile -> CString -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_char_raw_fread , Ptr CFile -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_block_char_raw_fscanf , Ptr CFile -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_block_char_raw_fwrite , Ptr CFile -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_block_char_size , Ptr <gsl_block_char> -> IO CSize
+#ccall gsl_block_complex_alloc , CSize -> IO (Ptr <gsl_block_complex>)
+#ccall gsl_block_complex_calloc , CSize -> IO (Ptr <gsl_block_complex>)
+#ccall gsl_block_complex_data , Ptr <gsl_block_complex> -> IO (Ptr CDouble)
+#ccall gsl_block_complex_float_alloc , CSize -> IO (Ptr <gsl_block_complex_float>)
+#ccall gsl_block_complex_float_calloc , CSize -> IO (Ptr <gsl_block_complex_float>)
+#ccall gsl_block_complex_float_data , Ptr <gsl_block_complex_float> -> IO (Ptr CFloat)
+#ccall gsl_block_complex_float_fprintf , Ptr CFile -> Ptr <gsl_block_complex_float> -> CString -> IO CInt
+#ccall gsl_block_complex_float_fread , Ptr CFile -> Ptr <gsl_block_complex_float> -> IO CInt
+#ccall gsl_block_complex_float_free , Ptr <gsl_block_complex_float> -> IO ()
+#ccall gsl_block_complex_float_fscanf , Ptr CFile -> Ptr <gsl_block_complex_float> -> IO CInt
+#ccall gsl_block_complex_float_fwrite , Ptr CFile -> Ptr <gsl_block_complex_float> -> IO CInt
+#ccall gsl_block_complex_float_raw_fprintf , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_complex_float_raw_fread , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_float_raw_fscanf , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_float_raw_fwrite , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_float_size , Ptr <gsl_block_complex_float> -> IO CSize
+#ccall gsl_block_complex_fprintf , Ptr CFile -> Ptr <gsl_block_complex> -> CString -> IO CInt
+#ccall gsl_block_complex_fread , Ptr CFile -> Ptr <gsl_block_complex> -> IO CInt
+#ccall gsl_block_complex_free , Ptr <gsl_block_complex> -> IO ()
+#ccall gsl_block_complex_fscanf , Ptr CFile -> Ptr <gsl_block_complex> -> IO CInt
+#ccall gsl_block_complex_fwrite , Ptr CFile -> Ptr <gsl_block_complex> -> IO CInt
+#ccall gsl_block_complex_long_double_alloc , CSize -> IO (Ptr <gsl_block_complex_long_double>)
+#ccall gsl_block_complex_long_double_calloc , CSize -> IO (Ptr <gsl_block_complex_long_double>)
+#ccall gsl_block_complex_long_double_data , Ptr <gsl_block_complex_long_double> -> IO (Ptr CLDouble)
+#ccall gsl_block_complex_long_double_fprintf , Ptr CFile -> Ptr <gsl_block_complex_long_double> -> CString -> IO CInt
+#ccall gsl_block_complex_long_double_fread , Ptr CFile -> Ptr <gsl_block_complex_long_double> -> IO CInt
+#ccall gsl_block_complex_long_double_free , Ptr <gsl_block_complex_long_double> -> IO ()
+#ccall gsl_block_complex_long_double_fscanf , Ptr CFile -> Ptr <gsl_block_complex_long_double> -> IO CInt
+#ccall gsl_block_complex_long_double_fwrite , Ptr CFile -> Ptr <gsl_block_complex_long_double> -> IO CInt
+#ccall gsl_block_complex_long_double_raw_fprintf , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_complex_long_double_raw_fread , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_long_double_raw_fscanf , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_long_double_raw_fwrite , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_long_double_size , Ptr <gsl_block_complex_long_double> -> IO CSize
+#ccall gsl_block_complex_raw_fprintf , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_complex_raw_fread , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_raw_fscanf , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_raw_fwrite , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_complex_size , Ptr <gsl_block_complex> -> IO CSize
+#ccall gsl_block_data , Ptr <gsl_block> -> IO (Ptr CDouble)
+#ccall gsl_block_float_alloc , CSize -> IO (Ptr <gsl_block_float>)
+#ccall gsl_block_float_calloc , CSize -> IO (Ptr <gsl_block_float>)
+#ccall gsl_block_float_data , Ptr <gsl_block_float> -> IO (Ptr CFloat)
+#ccall gsl_block_float_fprintf , Ptr CFile -> Ptr <gsl_block_float> -> CString -> IO CInt
+#ccall gsl_block_float_fread , Ptr CFile -> Ptr <gsl_block_float> -> IO CInt
+#ccall gsl_block_float_free , Ptr <gsl_block_float> -> IO ()
+#ccall gsl_block_float_fscanf , Ptr CFile -> Ptr <gsl_block_float> -> IO CInt
+#ccall gsl_block_float_fwrite , Ptr CFile -> Ptr <gsl_block_float> -> IO CInt
+#ccall gsl_block_float_raw_fprintf , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_float_raw_fread , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_float_raw_fscanf , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_float_raw_fwrite , Ptr CFile -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_block_float_size , Ptr <gsl_block_float> -> IO CSize
+#ccall gsl_block_fprintf , Ptr CFile -> Ptr <gsl_block> -> CString -> IO CInt
+#ccall gsl_block_fread , Ptr CFile -> Ptr <gsl_block> -> IO CInt
+#ccall gsl_block_free , Ptr <gsl_block> -> IO ()
+#ccall gsl_block_fscanf , Ptr CFile -> Ptr <gsl_block> -> IO CInt
+#ccall gsl_block_fwrite , Ptr CFile -> Ptr <gsl_block> -> IO CInt
+#ccall gsl_block_int_alloc , CSize -> IO (Ptr <gsl_block_int>)
+#ccall gsl_block_int_calloc , CSize -> IO (Ptr <gsl_block_int>)
+#ccall gsl_block_int_data , Ptr <gsl_block_int> -> IO (Ptr CInt)
+#ccall gsl_block_int_fprintf , Ptr CFile -> Ptr <gsl_block_int> -> CString -> IO CInt
+#ccall gsl_block_int_fread , Ptr CFile -> Ptr <gsl_block_int> -> IO CInt
+#ccall gsl_block_int_free , Ptr <gsl_block_int> -> IO ()
+#ccall gsl_block_int_fscanf , Ptr CFile -> Ptr <gsl_block_int> -> IO CInt
+#ccall gsl_block_int_fwrite , Ptr CFile -> Ptr <gsl_block_int> -> IO CInt
+#ccall gsl_block_int_raw_fprintf , Ptr CFile -> Ptr CInt -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_int_raw_fread , Ptr CFile -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_int_raw_fscanf , Ptr CFile -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_int_raw_fwrite , Ptr CFile -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_int_size , Ptr <gsl_block_int> -> IO CSize
+#ccall gsl_block_long_alloc , CSize -> IO (Ptr <gsl_block_long>)
+#ccall gsl_block_long_calloc , CSize -> IO (Ptr <gsl_block_long>)
+#ccall gsl_block_long_data , Ptr <gsl_block_long> -> IO (Ptr CLong)
+#ccall gsl_block_long_double_alloc , CSize -> IO (Ptr <gsl_block_long_double>)
+#ccall gsl_block_long_double_calloc , CSize -> IO (Ptr <gsl_block_long_double>)
+#ccall gsl_block_long_double_data , Ptr <gsl_block_long_double> -> IO (Ptr CLDouble)
+#ccall gsl_block_long_double_fprintf , Ptr CFile -> Ptr <gsl_block_long_double> -> CString -> IO CInt
+#ccall gsl_block_long_double_fread , Ptr CFile -> Ptr <gsl_block_long_double> -> IO CInt
+#ccall gsl_block_long_double_free , Ptr <gsl_block_long_double> -> IO ()
+#ccall gsl_block_long_double_fscanf , Ptr CFile -> Ptr <gsl_block_long_double> -> IO CInt
+#ccall gsl_block_long_double_fwrite , Ptr CFile -> Ptr <gsl_block_long_double> -> IO CInt
+#ccall gsl_block_long_double_raw_fprintf , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_long_double_raw_fread , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_double_raw_fscanf , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_double_raw_fwrite , Ptr CFile -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_double_size , Ptr <gsl_block_long_double> -> IO CSize
+#ccall gsl_block_long_fprintf , Ptr CFile -> Ptr <gsl_block_long> -> CString -> IO CInt
+#ccall gsl_block_long_fread , Ptr CFile -> Ptr <gsl_block_long> -> IO CInt
+#ccall gsl_block_long_free , Ptr <gsl_block_long> -> IO ()
+#ccall gsl_block_long_fscanf , Ptr CFile -> Ptr <gsl_block_long> -> IO CInt
+#ccall gsl_block_long_fwrite , Ptr CFile -> Ptr <gsl_block_long> -> IO CInt
+#ccall gsl_block_long_raw_fprintf , Ptr CFile -> Ptr CLong -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_long_raw_fread , Ptr CFile -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_raw_fscanf , Ptr CFile -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_raw_fwrite , Ptr CFile -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_long_size , Ptr <gsl_block_long> -> IO CSize
+#ccall gsl_block_raw_fprintf , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_raw_fread , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_raw_fscanf , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_raw_fwrite , Ptr CFile -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_block_short_alloc , CSize -> IO (Ptr <gsl_block_short>)
+#ccall gsl_block_short_calloc , CSize -> IO (Ptr <gsl_block_short>)
+#ccall gsl_block_short_data , Ptr <gsl_block_short> -> IO (Ptr CShort)
+#ccall gsl_block_short_fprintf , Ptr CFile -> Ptr <gsl_block_short> -> CString -> IO CInt
+#ccall gsl_block_short_fread , Ptr CFile -> Ptr <gsl_block_short> -> IO CInt
+#ccall gsl_block_short_free , Ptr <gsl_block_short> -> IO ()
+#ccall gsl_block_short_fscanf , Ptr CFile -> Ptr <gsl_block_short> -> IO CInt
+#ccall gsl_block_short_fwrite , Ptr CFile -> Ptr <gsl_block_short> -> IO CInt
+#ccall gsl_block_short_raw_fprintf , Ptr CFile -> Ptr CShort -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_short_raw_fread , Ptr CFile -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_short_raw_fscanf , Ptr CFile -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_short_raw_fwrite , Ptr CFile -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_short_size , Ptr <gsl_block_short> -> IO CSize
+#ccall gsl_block_size , Ptr <gsl_block> -> IO CSize
+#ccall gsl_block_uchar_alloc , CSize -> IO (Ptr <gsl_block_uchar>)
+#ccall gsl_block_uchar_calloc , CSize -> IO (Ptr <gsl_block_uchar>)
+#ccall gsl_block_uchar_data , Ptr <gsl_block_uchar> -> IO (Ptr CUChar)
+#ccall gsl_block_uchar_fprintf , Ptr CFile -> Ptr <gsl_block_uchar> -> CString -> IO CInt
+#ccall gsl_block_uchar_fread , Ptr CFile -> Ptr <gsl_block_uchar> -> IO CInt
+#ccall gsl_block_uchar_free , Ptr <gsl_block_uchar> -> IO ()
+#ccall gsl_block_uchar_fscanf , Ptr CFile -> Ptr <gsl_block_uchar> -> IO CInt
+#ccall gsl_block_uchar_fwrite , Ptr CFile -> Ptr <gsl_block_uchar> -> IO CInt
+#ccall gsl_block_uchar_raw_fprintf , Ptr CFile -> Ptr CUChar -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_uchar_raw_fread , Ptr CFile -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uchar_raw_fscanf , Ptr CFile -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uchar_raw_fwrite , Ptr CFile -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uchar_size , Ptr <gsl_block_uchar> -> IO CSize
+#ccall gsl_block_uint_alloc , CSize -> IO (Ptr <gsl_block_uint>)
+#ccall gsl_block_uint_calloc , CSize -> IO (Ptr <gsl_block_uint>)
+#ccall gsl_block_uint_data , Ptr <gsl_block_uint> -> IO (Ptr CUInt)
+#ccall gsl_block_uint_fprintf , Ptr CFile -> Ptr <gsl_block_uint> -> CString -> IO CInt
+#ccall gsl_block_uint_fread , Ptr CFile -> Ptr <gsl_block_uint> -> IO CInt
+#ccall gsl_block_uint_free , Ptr <gsl_block_uint> -> IO ()
+#ccall gsl_block_uint_fscanf , Ptr CFile -> Ptr <gsl_block_uint> -> IO CInt
+#ccall gsl_block_uint_fwrite , Ptr CFile -> Ptr <gsl_block_uint> -> IO CInt
+#ccall gsl_block_uint_raw_fprintf , Ptr CFile -> Ptr CUInt -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_uint_raw_fread , Ptr CFile -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uint_raw_fscanf , Ptr CFile -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uint_raw_fwrite , Ptr CFile -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_block_uint_size , Ptr <gsl_block_uint> -> IO CSize
+#ccall gsl_block_ulong_alloc , CSize -> IO (Ptr <gsl_block_ulong>)
+#ccall gsl_block_ulong_calloc , CSize -> IO (Ptr <gsl_block_ulong>)
+#ccall gsl_block_ulong_data , Ptr <gsl_block_ulong> -> IO (Ptr CULong)
+#ccall gsl_block_ulong_fprintf , Ptr CFile -> Ptr <gsl_block_ulong> -> CString -> IO CInt
+#ccall gsl_block_ulong_fread , Ptr CFile -> Ptr <gsl_block_ulong> -> IO CInt
+#ccall gsl_block_ulong_free , Ptr <gsl_block_ulong> -> IO ()
+#ccall gsl_block_ulong_fscanf , Ptr CFile -> Ptr <gsl_block_ulong> -> IO CInt
+#ccall gsl_block_ulong_fwrite , Ptr CFile -> Ptr <gsl_block_ulong> -> IO CInt
+#ccall gsl_block_ulong_raw_fprintf , Ptr CFile -> Ptr CULong -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_ulong_raw_fread , Ptr CFile -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ulong_raw_fscanf , Ptr CFile -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ulong_raw_fwrite , Ptr CFile -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ulong_size , Ptr <gsl_block_ulong> -> IO CSize
+#ccall gsl_block_ushort_alloc , CSize -> IO (Ptr <gsl_block_ushort>)
+#ccall gsl_block_ushort_calloc , CSize -> IO (Ptr <gsl_block_ushort>)
+#ccall gsl_block_ushort_data , Ptr <gsl_block_ushort> -> IO (Ptr CUShort)
+#ccall gsl_block_ushort_fprintf , Ptr CFile -> Ptr <gsl_block_ushort> -> CString -> IO CInt
+#ccall gsl_block_ushort_fread , Ptr CFile -> Ptr <gsl_block_ushort> -> IO CInt
+#ccall gsl_block_ushort_free , Ptr <gsl_block_ushort> -> IO ()
+#ccall gsl_block_ushort_fscanf , Ptr CFile -> Ptr <gsl_block_ushort> -> IO CInt
+#ccall gsl_block_ushort_fwrite , Ptr CFile -> Ptr <gsl_block_ushort> -> IO CInt
+#ccall gsl_block_ushort_raw_fprintf , Ptr CFile -> Ptr CUShort -> CSize -> CSize -> CString -> IO CInt
+#ccall gsl_block_ushort_raw_fread , Ptr CFile -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ushort_raw_fscanf , Ptr CFile -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ushort_raw_fwrite , Ptr CFile -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_block_ushort_size , Ptr <gsl_block_ushort> -> IO CSize
diff --git a/src/Bindings/Gsl/VectorsAndMatrices/DataTypes.hsc b/src/Bindings/Gsl/VectorsAndMatrices/DataTypes.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/VectorsAndMatrices/DataTypes.hsc
@@ -0,0 +1,542 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_block.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Data-types.html>
+
+module Bindings.Gsl.VectorsAndMatrices.DataTypes where
+#strict_import
+
+#starttype gsl_block
+#field size , CSize
+#field data , Ptr CDouble
+#stoptype
+
+#starttype gsl_block_char
+#field size , CSize
+#field data , CString
+#stoptype
+
+#starttype gsl_block_complex
+#field size , CSize
+#field data , Ptr CDouble
+#stoptype
+
+#starttype gsl_block_complex_float
+#field size , CSize
+#field data , Ptr CFloat
+#stoptype
+
+#starttype gsl_block_complex_long_double
+#field size , CSize
+#field data , Ptr CLDouble
+#stoptype
+
+#starttype gsl_block_float
+#field size , CSize
+#field data , Ptr CFloat
+#stoptype
+
+#starttype gsl_block_int
+#field size , CSize
+#field data , Ptr CInt
+#stoptype
+
+#starttype gsl_block_long
+#field size , CSize
+#field data , Ptr CLong
+#stoptype
+
+#starttype gsl_block_long_double
+#field size , CSize
+#field data , Ptr CLDouble
+#stoptype
+
+#starttype gsl_block_short
+#field size , CSize
+#field data , Ptr CShort
+#stoptype
+
+#starttype gsl_block_uchar
+#field size , CSize
+#field data , Ptr CUChar
+#stoptype
+
+#starttype gsl_block_uint
+#field size , CSize
+#field data , Ptr CUInt
+#stoptype
+
+#starttype gsl_block_ulong
+#field size , CSize
+#field data , Ptr CULong
+#stoptype
+
+#starttype gsl_block_ushort
+#field size , CSize
+#field data , Ptr CUShort
+#stoptype
+
+#starttype gsl_matrix
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CDouble
+#field block , Ptr <gsl_block>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_char
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , CString
+#field block , Ptr <gsl_block_char>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_char_const_view
+#field matrix , <gsl_matrix_char>
+#stoptype
+
+#starttype gsl_matrix_char_view
+#field matrix , <gsl_matrix_char>
+#stoptype
+
+#starttype gsl_matrix_complex
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CDouble
+#field block , Ptr <gsl_block_complex>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_complex_const_view
+#field matrix , <gsl_matrix_complex>
+#stoptype
+
+#starttype gsl_matrix_complex_float
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CFloat
+#field block , Ptr <gsl_block_complex_float>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_complex_float_const_view
+#field matrix , <gsl_matrix_complex_float>
+#stoptype
+
+#starttype gsl_matrix_complex_float_view
+#field matrix , <gsl_matrix_complex_float>
+#stoptype
+
+#starttype gsl_matrix_complex_long_double
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CLDouble
+#field block , Ptr <gsl_block_complex_long_double>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_complex_long_double_const_view
+#field matrix , <gsl_matrix_complex_long_double>
+#stoptype
+
+#starttype gsl_matrix_complex_long_double_view
+#field matrix , <gsl_matrix_complex_long_double>
+#stoptype
+
+#starttype gsl_matrix_complex_view
+#field matrix , <gsl_matrix_complex>
+#stoptype
+
+#starttype gsl_matrix_const_view
+#field matrix , <gsl_matrix>
+#stoptype
+
+#starttype gsl_matrix_float
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CFloat
+#field block , Ptr <gsl_block_float>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_float_const_view
+#field matrix , <gsl_matrix_float>
+#stoptype
+
+#starttype gsl_matrix_float_view
+#field matrix , <gsl_matrix_float>
+#stoptype
+
+#starttype gsl_matrix_int
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CInt
+#field block , Ptr <gsl_block_int>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_int_const_view
+#field matrix , <gsl_matrix_int>
+#stoptype
+
+#starttype gsl_matrix_int_view
+#field matrix , <gsl_matrix_int>
+#stoptype
+
+#starttype gsl_matrix_long
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CLong
+#field block , Ptr <gsl_block_long>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_long_const_view
+#field matrix , <gsl_matrix_long>
+#stoptype
+
+#starttype gsl_matrix_long_double
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CLDouble
+#field block , Ptr <gsl_block_long_double>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_long_double_const_view
+#field matrix , <gsl_matrix_long_double>
+#stoptype
+
+#starttype gsl_matrix_long_double_view
+#field matrix , <gsl_matrix_long_double>
+#stoptype
+
+#starttype gsl_matrix_long_view
+#field matrix , <gsl_matrix_long>
+#stoptype
+
+#starttype gsl_matrix_short
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CShort
+#field block , Ptr <gsl_block_short>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_short_const_view
+#field matrix , <gsl_matrix_short>
+#stoptype
+
+#starttype gsl_matrix_short_view
+#field matrix , <gsl_matrix_short>
+#stoptype
+
+#starttype gsl_matrix_uchar
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CUChar
+#field block , Ptr <gsl_block_uchar>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_uchar_const_view
+#field matrix , <gsl_matrix_uchar>
+#stoptype
+
+#starttype gsl_matrix_uchar_view
+#field matrix , <gsl_matrix_uchar>
+#stoptype
+
+#starttype gsl_matrix_uint
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CUInt
+#field block , Ptr <gsl_block_uint>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_uint_const_view
+#field matrix , <gsl_matrix_uint>
+#stoptype
+
+#starttype gsl_matrix_uint_view
+#field matrix , <gsl_matrix_uint>
+#stoptype
+
+#starttype gsl_matrix_ulong
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CULong
+#field block , Ptr <gsl_block_ulong>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_ulong_const_view
+#field matrix , <gsl_matrix_ulong>
+#stoptype
+
+#starttype gsl_matrix_ulong_view
+#field matrix , <gsl_matrix_ulong>
+#stoptype
+
+#starttype gsl_matrix_ushort
+#field size1 , CSize
+#field size2 , CSize
+#field tda , CSize
+#field data , Ptr CUShort
+#field block , Ptr <gsl_block_ushort>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_matrix_ushort_const_view
+#field matrix , <gsl_matrix_ushort>
+#stoptype
+
+#starttype gsl_matrix_ushort_view
+#field matrix , <gsl_matrix_ushort>
+#stoptype
+
+#starttype gsl_matrix_view
+#field matrix , <gsl_matrix>
+#stoptype
+
+#starttype gsl_vector
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CDouble
+#field block , Ptr <gsl_block>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_char
+#field size , CSize
+#field stride , CSize
+#field data , CString
+#field block , Ptr <gsl_block_char>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_char_const_view
+#field vector , <gsl_vector_char>
+#stoptype
+
+#starttype gsl_vector_char_view
+#field vector , <gsl_vector_char>
+#stoptype
+
+#starttype gsl_vector_complex
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CDouble
+#field block , Ptr <gsl_block_complex>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_complex_const_view
+#field vector , <gsl_vector_complex>
+#stoptype
+
+#starttype gsl_vector_complex_float
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CFloat
+#field block , Ptr <gsl_block_complex_float>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_complex_float_const_view
+#field vector , <gsl_vector_complex_float>
+#stoptype
+
+#starttype gsl_vector_complex_float_view
+#field vector , <gsl_vector_complex_float>
+#stoptype
+
+#starttype gsl_vector_complex_long_double
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CLDouble
+#field block , Ptr <gsl_block_complex_long_double>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_complex_long_double_const_view
+#field vector , <gsl_vector_complex_long_double>
+#stoptype
+
+#starttype gsl_vector_complex_long_double_view
+#field vector , <gsl_vector_complex_long_double>
+#stoptype
+
+#starttype gsl_vector_complex_view
+#field vector , <gsl_vector_complex>
+#stoptype
+
+#starttype gsl_vector_const_view
+#field vector , <gsl_vector>
+#stoptype
+
+#starttype gsl_vector_float
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CFloat
+#field block , Ptr <gsl_block_float>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_float_const_view
+#field vector , <gsl_vector_float>
+#stoptype
+
+#starttype gsl_vector_float_view
+#field vector , <gsl_vector_float>
+#stoptype
+
+#starttype gsl_vector_int
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CInt
+#field block , Ptr <gsl_block_int>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_int_const_view
+#field vector , <gsl_vector_int>
+#stoptype
+
+#starttype gsl_vector_int_view
+#field vector , <gsl_vector_int>
+#stoptype
+
+#starttype gsl_vector_long
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CLong
+#field block , Ptr <gsl_block_long>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_long_const_view
+#field vector , <gsl_vector_long>
+#stoptype
+
+#starttype gsl_vector_long_double
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CLDouble
+#field block , Ptr <gsl_block_long_double>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_long_double_const_view
+#field vector , <gsl_vector_long_double>
+#stoptype
+
+#starttype gsl_vector_long_double_view
+#field vector , <gsl_vector_long_double>
+#stoptype
+
+#starttype gsl_vector_long_view
+#field vector , <gsl_vector_long>
+#stoptype
+
+#starttype gsl_vector_short
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CShort
+#field block , Ptr <gsl_block_short>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_short_const_view
+#field vector , <gsl_vector_short>
+#stoptype
+
+#starttype gsl_vector_short_view
+#field vector , <gsl_vector_short>
+#stoptype
+
+#starttype gsl_vector_uchar
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CUChar
+#field block , Ptr <gsl_block_uchar>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_uchar_const_view
+#field vector , <gsl_vector_uchar>
+#stoptype
+
+#starttype gsl_vector_uchar_view
+#field vector , <gsl_vector_uchar>
+#stoptype
+
+#starttype gsl_vector_uint
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CUInt
+#field block , Ptr <gsl_block_uint>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_uint_const_view
+#field vector , <gsl_vector_uint>
+#stoptype
+
+#starttype gsl_vector_uint_view
+#field vector , <gsl_vector_uint>
+#stoptype
+
+#starttype gsl_vector_ulong
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CULong
+#field block , Ptr <gsl_block_ulong>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_ulong_const_view
+#field vector , <gsl_vector_ulong>
+#stoptype
+
+#starttype gsl_vector_ulong_view
+#field vector , <gsl_vector_ulong>
+#stoptype
+
+#starttype gsl_vector_ushort
+#field size , CSize
+#field stride , CSize
+#field data , Ptr CUShort
+#field block , Ptr <gsl_block_ushort>
+#field owner , CInt
+#stoptype
+
+#starttype gsl_vector_ushort_const_view
+#field vector , <gsl_vector_ushort>
+#stoptype
+
+#starttype gsl_vector_ushort_view
+#field vector , <gsl_vector_ushort>
+#stoptype
+
+#starttype gsl_vector_view
+#field vector , <gsl_vector>
+#stoptype
+
diff --git a/src/Bindings/Gsl/VectorsAndMatrices/Matrices.hsc b/src/Bindings/Gsl/VectorsAndMatrices/Matrices.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/VectorsAndMatrices/Matrices.hsc
@@ -0,0 +1,832 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_matrix.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Matrices.html>
+
+module Bindings.Gsl.VectorsAndMatrices.Matrices where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+import Bindings.Gsl.ComplexNumbers
+
+#ccall gsl_matrix_add , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_add_constant , Ptr <gsl_matrix> -> CDouble -> IO CInt
+#ccall gsl_matrix_add_diagonal , Ptr <gsl_matrix> -> CDouble -> IO CInt
+#ccall gsl_matrix_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix>)
+#ccall gsl_matrix_alloc_from_block , Ptr <gsl_block> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix>)
+#ccall gsl_matrix_alloc_from_matrix , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix>)
+#ccall gsl_matrix_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix>)
+#ccall gsl_matrix_char_add , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_add_constant , Ptr <gsl_matrix_char> -> CDouble -> IO CInt
+#ccall gsl_matrix_char_add_diagonal , Ptr <gsl_matrix_char> -> CDouble -> IO CInt
+#ccall gsl_matrix_char_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_char>)
+#ccall gsl_matrix_char_alloc_from_block , Ptr <gsl_block_char> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_char>)
+#ccall gsl_matrix_char_alloc_from_matrix , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_char>)
+#ccall gsl_matrix_char_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_char>)
+-- ccall gsl_matrix_char_column , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_matrix_char_const_column , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_diagonal , Ptr <gsl_matrix_char> -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_row , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_subcolumn , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_subdiagonal , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_submatrix , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_const_view>
+-- ccall gsl_matrix_char_const_subrow , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_superdiagonal , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_matrix_char_const_view_array , CString -> CSize -> CSize -> IO <gsl_matrix_char_const_view>
+-- ccall gsl_matrix_char_const_view_array_with_tda , CString -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_const_view>
+-- ccall gsl_matrix_char_const_view_vector , Ptr <gsl_vector_char> -> CSize -> CSize -> IO <gsl_matrix_char_const_view>
+-- ccall gsl_matrix_char_const_view_vector_with_tda , Ptr <gsl_vector_char> -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_const_view>
+-- ccall gsl_matrix_char_diagonal , Ptr <gsl_matrix_char> -> IO <gsl_vector_char_view>
+#ccall gsl_matrix_char_div_elements , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_fprintf , Ptr CFile -> Ptr <gsl_matrix_char> -> CString -> IO CInt
+#ccall gsl_matrix_char_fread , Ptr CFile -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_free , Ptr <gsl_matrix_char> -> IO ()
+#ccall gsl_matrix_char_fscanf , Ptr CFile -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_fwrite , Ptr CFile -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_isneg , Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_isnonneg , Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_isnull , Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_ispos , Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_max , Ptr <gsl_matrix_char> -> IO CChar
+#ccall gsl_matrix_char_max_index , Ptr <gsl_matrix_char> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_char_memcpy , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_min , Ptr <gsl_matrix_char> -> IO CChar
+#ccall gsl_matrix_char_min_index , Ptr <gsl_matrix_char> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_char_minmax , Ptr <gsl_matrix_char> -> CString -> CString -> IO ()
+#ccall gsl_matrix_char_minmax_index , Ptr <gsl_matrix_char> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_char_mul_elements , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+-- ccall gsl_matrix_char_row , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_view>
+#ccall gsl_matrix_char_scale , Ptr <gsl_matrix_char> -> CDouble -> IO CInt
+#ccall gsl_matrix_char_set_all , Ptr <gsl_matrix_char> -> CChar -> IO ()
+#ccall gsl_matrix_char_set_identity , Ptr <gsl_matrix_char> -> IO ()
+#ccall gsl_matrix_char_set_zero , Ptr <gsl_matrix_char> -> IO ()
+#ccall gsl_matrix_char_sub , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+-- ccall gsl_matrix_char_subcolumn , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_matrix_char_subdiagonal , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_matrix_char_submatrix , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_view>
+-- ccall gsl_matrix_char_subrow , Ptr <gsl_matrix_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_matrix_char_superdiagonal , Ptr <gsl_matrix_char> -> CSize -> IO <gsl_vector_char_view>
+#ccall gsl_matrix_char_swap , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_swap_columns , Ptr <gsl_matrix_char> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_char_swap_rowcol , Ptr <gsl_matrix_char> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_char_swap_rows , Ptr <gsl_matrix_char> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_char_transpose , Ptr <gsl_matrix_char> -> IO CInt
+#ccall gsl_matrix_char_transpose_memcpy , Ptr <gsl_matrix_char> -> Ptr <gsl_matrix_char> -> IO CInt
+-- ccall gsl_matrix_char_view_array , CString -> CSize -> CSize -> IO <gsl_matrix_char_view>
+-- ccall gsl_matrix_char_view_array_with_tda , CString -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_view>
+-- ccall gsl_matrix_char_view_vector , Ptr <gsl_vector_char> -> CSize -> CSize -> IO <gsl_matrix_char_view>
+-- ccall gsl_matrix_char_view_vector_with_tda , Ptr <gsl_vector_char> -> CSize -> CSize -> CSize -> IO <gsl_matrix_char_view>
+-- ccall gsl_matrix_column , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_view>
+#ccall gsl_matrix_complex_add , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_matrix_complex_add_constant , Ptr <gsl_matrix_complex> -> <gsl_complex> -> IO CInt
+-- ccall gsl_matrix_complex_add_diagonal , Ptr <gsl_matrix_complex> -> <gsl_complex> -> IO CInt
+#ccall gsl_matrix_complex_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex>)
+#ccall gsl_matrix_complex_alloc_from_block , Ptr <gsl_block_complex> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex>)
+#ccall gsl_matrix_complex_alloc_from_matrix , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex>)
+#ccall gsl_matrix_complex_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex>)
+-- ccall gsl_matrix_complex_column , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_matrix_complex_const_column , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_diagonal , Ptr <gsl_matrix_complex> -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_row , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_subcolumn , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_subdiagonal , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_submatrix , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_const_view>
+-- ccall gsl_matrix_complex_const_subrow , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_superdiagonal , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_matrix_complex_const_view_array , Ptr CDouble -> CSize -> CSize -> IO <gsl_matrix_complex_const_view>
+-- ccall gsl_matrix_complex_const_view_array_with_tda , Ptr CDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_const_view>
+-- ccall gsl_matrix_complex_const_view_vector , Ptr <gsl_vector_complex> -> CSize -> CSize -> IO <gsl_matrix_complex_const_view>
+-- ccall gsl_matrix_complex_const_view_vector_with_tda , Ptr <gsl_vector_complex> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_const_view>
+-- ccall gsl_matrix_complex_diagonal , Ptr <gsl_matrix_complex> -> IO <gsl_vector_complex_view>
+#ccall gsl_matrix_complex_div_elements , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_float_add , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_add_constant , Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_add_diagonal , Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex_float>)
+#ccall gsl_matrix_complex_float_alloc_from_block , Ptr <gsl_block_complex_float> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex_float>)
+#ccall gsl_matrix_complex_float_alloc_from_matrix , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex_float>)
+#ccall gsl_matrix_complex_float_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex_float>)
+-- ccall gsl_matrix_complex_float_column , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_matrix_complex_float_const_column , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_diagonal , Ptr <gsl_matrix_complex_float> -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_row , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_subcolumn , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_subdiagonal , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_submatrix , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_subrow , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_superdiagonal , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_view_array , Ptr CFloat -> CSize -> CSize -> IO <gsl_matrix_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_view_array_with_tda , Ptr CFloat -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_view_vector , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> IO <gsl_matrix_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_const_view_vector_with_tda , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_const_view>
+-- ccall gsl_matrix_complex_float_diagonal , Ptr <gsl_matrix_complex_float> -> IO <gsl_vector_complex_float_view>
+#ccall gsl_matrix_complex_float_div_elements , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_fprintf , Ptr CFile -> Ptr <gsl_matrix_complex_float> -> CString -> IO CInt
+#ccall gsl_matrix_complex_float_fread , Ptr CFile -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_free , Ptr <gsl_matrix_complex_float> -> IO ()
+#ccall gsl_matrix_complex_float_fscanf , Ptr CFile -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_fwrite , Ptr CFile -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_isneg , Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_isnonneg , Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_isnull , Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_ispos , Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_memcpy , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_mul_elements , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_row , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_matrix_complex_float_scale , Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_set_all , Ptr <gsl_matrix_complex_float> -> <gsl_complex_float> -> IO ()
+#ccall gsl_matrix_complex_float_set_identity , Ptr <gsl_matrix_complex_float> -> IO ()
+#ccall gsl_matrix_complex_float_set_zero , Ptr <gsl_matrix_complex_float> -> IO ()
+#ccall gsl_matrix_complex_float_sub , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_subcolumn , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_matrix_complex_float_subdiagonal , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_matrix_complex_float_submatrix , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_view>
+-- ccall gsl_matrix_complex_float_subrow , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_matrix_complex_float_superdiagonal , Ptr <gsl_matrix_complex_float> -> CSize -> IO <gsl_vector_complex_float_view>
+#ccall gsl_matrix_complex_float_swap , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_swap_columns , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_float_swap_rowcol , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_float_swap_rows , Ptr <gsl_matrix_complex_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_float_transpose , Ptr <gsl_matrix_complex_float> -> IO CInt
+#ccall gsl_matrix_complex_float_transpose_memcpy , Ptr <gsl_matrix_complex_float> -> Ptr <gsl_matrix_complex_float> -> IO CInt
+-- ccall gsl_matrix_complex_float_view_array , Ptr CFloat -> CSize -> CSize -> IO <gsl_matrix_complex_float_view>
+-- ccall gsl_matrix_complex_float_view_array_with_tda , Ptr CFloat -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_view>
+-- ccall gsl_matrix_complex_float_view_vector , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> IO <gsl_matrix_complex_float_view>
+-- ccall gsl_matrix_complex_float_view_vector_with_tda , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_float_view>
+#ccall gsl_matrix_complex_fprintf , Ptr CFile -> Ptr <gsl_matrix_complex> -> CString -> IO CInt
+#ccall gsl_matrix_complex_fread , Ptr CFile -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_free , Ptr <gsl_matrix_complex> -> IO ()
+#ccall gsl_matrix_complex_fscanf , Ptr CFile -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_fwrite , Ptr CFile -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_isneg , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_isnonneg , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_isnull , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_ispos , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_long_double_add , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_add_constant , Ptr <gsl_matrix_complex_long_double> -> <gsl_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_add_diagonal , Ptr <gsl_matrix_complex_long_double> -> <gsl_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex_long_double>)
+#ccall gsl_matrix_complex_long_double_alloc_from_block , Ptr <gsl_block_complex_long_double> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex_long_double>)
+#ccall gsl_matrix_complex_long_double_alloc_from_matrix , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_complex_long_double>)
+#ccall gsl_matrix_complex_long_double_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_complex_long_double>)
+-- ccall gsl_matrix_complex_long_double_column , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_const_column , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_diagonal , Ptr <gsl_matrix_complex_long_double> -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_row , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_subcolumn , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_subdiagonal , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_submatrix , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_subrow , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_superdiagonal , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_view_array , Ptr CLDouble -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_view_array_with_tda , Ptr CLDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_view_vector , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_const_view_vector_with_tda , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_const_view>
+-- ccall gsl_matrix_complex_long_double_diagonal , Ptr <gsl_matrix_complex_long_double> -> IO <gsl_vector_complex_long_double_view>
+#ccall gsl_matrix_complex_long_double_div_elements , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_fprintf , Ptr CFile -> Ptr <gsl_matrix_complex_long_double> -> CString -> IO CInt
+#ccall gsl_matrix_complex_long_double_fread , Ptr CFile -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_free , Ptr <gsl_matrix_complex_long_double> -> IO ()
+#ccall gsl_matrix_complex_long_double_fscanf , Ptr CFile -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_fwrite , Ptr CFile -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_isneg , Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_isnonneg , Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_isnull , Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_ispos , Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_memcpy , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_mul_elements , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_row , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_scale , Ptr <gsl_matrix_complex_long_double> -> <gsl_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_set_all , Ptr <gsl_matrix_complex_long_double> -> <gsl_complex_long_double> -> IO ()
+#ccall gsl_matrix_complex_long_double_set_identity , Ptr <gsl_matrix_complex_long_double> -> IO ()
+#ccall gsl_matrix_complex_long_double_set_zero , Ptr <gsl_matrix_complex_long_double> -> IO ()
+#ccall gsl_matrix_complex_long_double_sub , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_subcolumn , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_subdiagonal , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_submatrix , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_subrow , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_superdiagonal , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO <gsl_vector_complex_long_double_view>
+#ccall gsl_matrix_complex_long_double_swap , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_swap_columns , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_long_double_swap_rowcol , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_long_double_swap_rows , Ptr <gsl_matrix_complex_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_long_double_transpose , Ptr <gsl_matrix_complex_long_double> -> IO CInt
+#ccall gsl_matrix_complex_long_double_transpose_memcpy , Ptr <gsl_matrix_complex_long_double> -> Ptr <gsl_matrix_complex_long_double> -> IO CInt
+-- ccall gsl_matrix_complex_long_double_view_array , Ptr CLDouble -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_view_array_with_tda , Ptr CLDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_view_vector , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_view>
+-- ccall gsl_matrix_complex_long_double_view_vector_with_tda , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_long_double_view>
+#ccall gsl_matrix_complex_memcpy , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_mul_elements , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_matrix_complex_row , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_matrix_complex_scale , Ptr <gsl_matrix_complex> -> <gsl_complex> -> IO CInt
+-- ccall gsl_matrix_complex_set_all , Ptr <gsl_matrix_complex> -> <gsl_complex> -> IO ()
+#ccall gsl_matrix_complex_set_identity , Ptr <gsl_matrix_complex> -> IO ()
+#ccall gsl_matrix_complex_set_zero , Ptr <gsl_matrix_complex> -> IO ()
+#ccall gsl_matrix_complex_sub , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_matrix_complex_subcolumn , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_matrix_complex_subdiagonal , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_matrix_complex_submatrix , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_view>
+-- ccall gsl_matrix_complex_subrow , Ptr <gsl_matrix_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_matrix_complex_superdiagonal , Ptr <gsl_matrix_complex> -> CSize -> IO <gsl_vector_complex_view>
+#ccall gsl_matrix_complex_swap , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_swap_columns , Ptr <gsl_matrix_complex> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_swap_rowcol , Ptr <gsl_matrix_complex> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_swap_rows , Ptr <gsl_matrix_complex> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_complex_transpose , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_matrix_complex_transpose_memcpy , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_matrix_complex_view_array , Ptr CDouble -> CSize -> CSize -> IO <gsl_matrix_complex_view>
+-- ccall gsl_matrix_complex_view_array_with_tda , Ptr CDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_view>
+-- ccall gsl_matrix_complex_view_vector , Ptr <gsl_vector_complex> -> CSize -> CSize -> IO <gsl_matrix_complex_view>
+-- ccall gsl_matrix_complex_view_vector_with_tda , Ptr <gsl_vector_complex> -> CSize -> CSize -> CSize -> IO <gsl_matrix_complex_view>
+-- ccall gsl_matrix_const_column , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_diagonal , Ptr <gsl_matrix> -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_row , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_subcolumn , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_subdiagonal , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_submatrix , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_const_view>
+-- ccall gsl_matrix_const_subrow , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_superdiagonal , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_matrix_const_view_array , Ptr CDouble -> CSize -> CSize -> IO <gsl_matrix_const_view>
+-- ccall gsl_matrix_const_view_array_with_tda , Ptr CDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_const_view>
+-- ccall gsl_matrix_const_view_vector , Ptr <gsl_vector> -> CSize -> CSize -> IO <gsl_matrix_const_view>
+-- ccall gsl_matrix_const_view_vector_with_tda , Ptr <gsl_vector> -> CSize -> CSize -> CSize -> IO <gsl_matrix_const_view>
+-- ccall gsl_matrix_diagonal , Ptr <gsl_matrix> -> IO <gsl_vector_view>
+#ccall gsl_matrix_div_elements , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_float_add , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_add_constant , Ptr <gsl_matrix_float> -> CDouble -> IO CInt
+#ccall gsl_matrix_float_add_diagonal , Ptr <gsl_matrix_float> -> CDouble -> IO CInt
+#ccall gsl_matrix_float_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_float>)
+#ccall gsl_matrix_float_alloc_from_block , Ptr <gsl_block_float> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_float>)
+#ccall gsl_matrix_float_alloc_from_matrix , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_float>)
+#ccall gsl_matrix_float_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_float>)
+-- ccall gsl_matrix_float_column , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_matrix_float_const_column , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_diagonal , Ptr <gsl_matrix_float> -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_row , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_subcolumn , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_subdiagonal , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_submatrix , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_const_view>
+-- ccall gsl_matrix_float_const_subrow , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_superdiagonal , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_matrix_float_const_view_array , Ptr CFloat -> CSize -> CSize -> IO <gsl_matrix_float_const_view>
+-- ccall gsl_matrix_float_const_view_array_with_tda , Ptr CFloat -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_const_view>
+-- ccall gsl_matrix_float_const_view_vector , Ptr <gsl_vector_float> -> CSize -> CSize -> IO <gsl_matrix_float_const_view>
+-- ccall gsl_matrix_float_const_view_vector_with_tda , Ptr <gsl_vector_float> -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_const_view>
+-- ccall gsl_matrix_float_diagonal , Ptr <gsl_matrix_float> -> IO <gsl_vector_float_view>
+#ccall gsl_matrix_float_div_elements , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_fprintf , Ptr CFile -> Ptr <gsl_matrix_float> -> CString -> IO CInt
+#ccall gsl_matrix_float_fread , Ptr CFile -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_free , Ptr <gsl_matrix_float> -> IO ()
+#ccall gsl_matrix_float_fscanf , Ptr CFile -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_fwrite , Ptr CFile -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_isneg , Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_isnonneg , Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_isnull , Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_ispos , Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_max , Ptr <gsl_matrix_float> -> IO CFloat
+#ccall gsl_matrix_float_max_index , Ptr <gsl_matrix_float> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_float_memcpy , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_min , Ptr <gsl_matrix_float> -> IO CFloat
+#ccall gsl_matrix_float_min_index , Ptr <gsl_matrix_float> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_float_minmax , Ptr <gsl_matrix_float> -> Ptr CFloat -> Ptr CFloat -> IO ()
+#ccall gsl_matrix_float_minmax_index , Ptr <gsl_matrix_float> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_float_mul_elements , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+-- ccall gsl_matrix_float_row , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_view>
+#ccall gsl_matrix_float_scale , Ptr <gsl_matrix_float> -> CDouble -> IO CInt
+#ccall gsl_matrix_float_set_all , Ptr <gsl_matrix_float> -> CFloat -> IO ()
+#ccall gsl_matrix_float_set_identity , Ptr <gsl_matrix_float> -> IO ()
+#ccall gsl_matrix_float_set_zero , Ptr <gsl_matrix_float> -> IO ()
+#ccall gsl_matrix_float_sub , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+-- ccall gsl_matrix_float_subcolumn , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_matrix_float_subdiagonal , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_matrix_float_submatrix , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_view>
+-- ccall gsl_matrix_float_subrow , Ptr <gsl_matrix_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_matrix_float_superdiagonal , Ptr <gsl_matrix_float> -> CSize -> IO <gsl_vector_float_view>
+#ccall gsl_matrix_float_swap , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_swap_columns , Ptr <gsl_matrix_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_float_swap_rowcol , Ptr <gsl_matrix_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_float_swap_rows , Ptr <gsl_matrix_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_float_transpose , Ptr <gsl_matrix_float> -> IO CInt
+#ccall gsl_matrix_float_transpose_memcpy , Ptr <gsl_matrix_float> -> Ptr <gsl_matrix_float> -> IO CInt
+-- ccall gsl_matrix_float_view_array , Ptr CFloat -> CSize -> CSize -> IO <gsl_matrix_float_view>
+-- ccall gsl_matrix_float_view_array_with_tda , Ptr CFloat -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_view>
+-- ccall gsl_matrix_float_view_vector , Ptr <gsl_vector_float> -> CSize -> CSize -> IO <gsl_matrix_float_view>
+-- ccall gsl_matrix_float_view_vector_with_tda , Ptr <gsl_vector_float> -> CSize -> CSize -> CSize -> IO <gsl_matrix_float_view>
+#ccall gsl_matrix_fprintf , Ptr CFile -> Ptr <gsl_matrix> -> CString -> IO CInt
+#ccall gsl_matrix_fread , Ptr CFile -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_free , Ptr <gsl_matrix> -> IO ()
+#ccall gsl_matrix_fscanf , Ptr CFile -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_fwrite , Ptr CFile -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_int_add , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_add_constant , Ptr <gsl_matrix_int> -> CDouble -> IO CInt
+#ccall gsl_matrix_int_add_diagonal , Ptr <gsl_matrix_int> -> CDouble -> IO CInt
+#ccall gsl_matrix_int_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_int>)
+#ccall gsl_matrix_int_alloc_from_block , Ptr <gsl_block_int> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_int>)
+#ccall gsl_matrix_int_alloc_from_matrix , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_int>)
+#ccall gsl_matrix_int_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_int>)
+-- ccall gsl_matrix_int_column , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_matrix_int_const_column , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_diagonal , Ptr <gsl_matrix_int> -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_row , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_subcolumn , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_subdiagonal , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_submatrix , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_const_view>
+-- ccall gsl_matrix_int_const_subrow , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_superdiagonal , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_matrix_int_const_view_array , Ptr CInt -> CSize -> CSize -> IO <gsl_matrix_int_const_view>
+-- ccall gsl_matrix_int_const_view_array_with_tda , Ptr CInt -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_const_view>
+-- ccall gsl_matrix_int_const_view_vector , Ptr <gsl_vector_int> -> CSize -> CSize -> IO <gsl_matrix_int_const_view>
+-- ccall gsl_matrix_int_const_view_vector_with_tda , Ptr <gsl_vector_int> -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_const_view>
+-- ccall gsl_matrix_int_diagonal , Ptr <gsl_matrix_int> -> IO <gsl_vector_int_view>
+#ccall gsl_matrix_int_div_elements , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_fprintf , Ptr CFile -> Ptr <gsl_matrix_int> -> CString -> IO CInt
+#ccall gsl_matrix_int_fread , Ptr CFile -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_free , Ptr <gsl_matrix_int> -> IO ()
+#ccall gsl_matrix_int_fscanf , Ptr CFile -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_fwrite , Ptr CFile -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_isneg , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_isnonneg , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_isnull , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_ispos , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_max , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_max_index , Ptr <gsl_matrix_int> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_int_memcpy , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_min , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_min_index , Ptr <gsl_matrix_int> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_int_minmax , Ptr <gsl_matrix_int> -> Ptr CInt -> Ptr CInt -> IO ()
+#ccall gsl_matrix_int_minmax_index , Ptr <gsl_matrix_int> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_int_mul_elements , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+-- ccall gsl_matrix_int_row , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_view>
+#ccall gsl_matrix_int_scale , Ptr <gsl_matrix_int> -> CDouble -> IO CInt
+#ccall gsl_matrix_int_set_all , Ptr <gsl_matrix_int> -> CInt -> IO ()
+#ccall gsl_matrix_int_set_identity , Ptr <gsl_matrix_int> -> IO ()
+#ccall gsl_matrix_int_set_zero , Ptr <gsl_matrix_int> -> IO ()
+#ccall gsl_matrix_int_sub , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+-- ccall gsl_matrix_int_subcolumn , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_matrix_int_subdiagonal , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_matrix_int_submatrix , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_view>
+-- ccall gsl_matrix_int_subrow , Ptr <gsl_matrix_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_matrix_int_superdiagonal , Ptr <gsl_matrix_int> -> CSize -> IO <gsl_vector_int_view>
+#ccall gsl_matrix_int_swap , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_swap_columns , Ptr <gsl_matrix_int> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_int_swap_rowcol , Ptr <gsl_matrix_int> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_int_swap_rows , Ptr <gsl_matrix_int> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_int_transpose , Ptr <gsl_matrix_int> -> IO CInt
+#ccall gsl_matrix_int_transpose_memcpy , Ptr <gsl_matrix_int> -> Ptr <gsl_matrix_int> -> IO CInt
+-- ccall gsl_matrix_int_view_array , Ptr CInt -> CSize -> CSize -> IO <gsl_matrix_int_view>
+-- ccall gsl_matrix_int_view_array_with_tda , Ptr CInt -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_view>
+-- ccall gsl_matrix_int_view_vector , Ptr <gsl_vector_int> -> CSize -> CSize -> IO <gsl_matrix_int_view>
+-- ccall gsl_matrix_int_view_vector_with_tda , Ptr <gsl_vector_int> -> CSize -> CSize -> CSize -> IO <gsl_matrix_int_view>
+#ccall gsl_matrix_isneg , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_isnonneg , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_isnull , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_ispos , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_long_add , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_add_constant , Ptr <gsl_matrix_long> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_add_diagonal , Ptr <gsl_matrix_long> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_long>)
+#ccall gsl_matrix_long_alloc_from_block , Ptr <gsl_block_long> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_long>)
+#ccall gsl_matrix_long_alloc_from_matrix , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_long>)
+#ccall gsl_matrix_long_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_long>)
+-- ccall gsl_matrix_long_column , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_matrix_long_const_column , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_diagonal , Ptr <gsl_matrix_long> -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_row , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_subcolumn , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_subdiagonal , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_submatrix , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_const_view>
+-- ccall gsl_matrix_long_const_subrow , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_superdiagonal , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_matrix_long_const_view_array , Ptr CLong -> CSize -> CSize -> IO <gsl_matrix_long_const_view>
+-- ccall gsl_matrix_long_const_view_array_with_tda , Ptr CLong -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_const_view>
+-- ccall gsl_matrix_long_const_view_vector , Ptr <gsl_vector_long> -> CSize -> CSize -> IO <gsl_matrix_long_const_view>
+-- ccall gsl_matrix_long_const_view_vector_with_tda , Ptr <gsl_vector_long> -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_const_view>
+-- ccall gsl_matrix_long_diagonal , Ptr <gsl_matrix_long> -> IO <gsl_vector_long_view>
+#ccall gsl_matrix_long_div_elements , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_double_add , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_add_constant , Ptr <gsl_matrix_long_double> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_double_add_diagonal , Ptr <gsl_matrix_long_double> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_double_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_long_double>)
+#ccall gsl_matrix_long_double_alloc_from_block , Ptr <gsl_block_long_double> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_long_double>)
+#ccall gsl_matrix_long_double_alloc_from_matrix , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_long_double>)
+#ccall gsl_matrix_long_double_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_long_double>)
+-- ccall gsl_matrix_long_double_column , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_matrix_long_double_const_column , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_diagonal , Ptr <gsl_matrix_long_double> -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_row , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_subcolumn , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_subdiagonal , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_submatrix , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_subrow , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_superdiagonal , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_view_array , Ptr CLDouble -> CSize -> CSize -> IO <gsl_matrix_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_view_array_with_tda , Ptr CLDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_view_vector , Ptr <gsl_vector_long_double> -> CSize -> CSize -> IO <gsl_matrix_long_double_const_view>
+-- ccall gsl_matrix_long_double_const_view_vector_with_tda , Ptr <gsl_vector_long_double> -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_const_view>
+-- ccall gsl_matrix_long_double_diagonal , Ptr <gsl_matrix_long_double> -> IO <gsl_vector_long_double_view>
+#ccall gsl_matrix_long_double_div_elements , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_fprintf , Ptr CFile -> Ptr <gsl_matrix_long_double> -> CString -> IO CInt
+#ccall gsl_matrix_long_double_fread , Ptr CFile -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_free , Ptr <gsl_matrix_long_double> -> IO ()
+#ccall gsl_matrix_long_double_fscanf , Ptr CFile -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_fwrite , Ptr CFile -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_isneg , Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_isnonneg , Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_isnull , Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_ispos , Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_max , Ptr <gsl_matrix_long_double> -> IO CLDouble
+#ccall gsl_matrix_long_double_max_index , Ptr <gsl_matrix_long_double> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_double_memcpy , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_min , Ptr <gsl_matrix_long_double> -> IO CLDouble
+#ccall gsl_matrix_long_double_min_index , Ptr <gsl_matrix_long_double> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_double_minmax , Ptr <gsl_matrix_long_double> -> Ptr CLDouble -> Ptr CLDouble -> IO ()
+#ccall gsl_matrix_long_double_minmax_index , Ptr <gsl_matrix_long_double> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_double_mul_elements , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+-- ccall gsl_matrix_long_double_row , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_view>
+#ccall gsl_matrix_long_double_scale , Ptr <gsl_matrix_long_double> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_double_set_all , Ptr <gsl_matrix_long_double> -> CLDouble -> IO ()
+#ccall gsl_matrix_long_double_set_identity , Ptr <gsl_matrix_long_double> -> IO ()
+#ccall gsl_matrix_long_double_set_zero , Ptr <gsl_matrix_long_double> -> IO ()
+#ccall gsl_matrix_long_double_sub , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+-- ccall gsl_matrix_long_double_subcolumn , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_matrix_long_double_subdiagonal , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_matrix_long_double_submatrix , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_view>
+-- ccall gsl_matrix_long_double_subrow , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_matrix_long_double_superdiagonal , Ptr <gsl_matrix_long_double> -> CSize -> IO <gsl_vector_long_double_view>
+#ccall gsl_matrix_long_double_swap , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_swap_columns , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_double_swap_rowcol , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_double_swap_rows , Ptr <gsl_matrix_long_double> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_double_transpose , Ptr <gsl_matrix_long_double> -> IO CInt
+#ccall gsl_matrix_long_double_transpose_memcpy , Ptr <gsl_matrix_long_double> -> Ptr <gsl_matrix_long_double> -> IO CInt
+-- ccall gsl_matrix_long_double_view_array , Ptr CLDouble -> CSize -> CSize -> IO <gsl_matrix_long_double_view>
+-- ccall gsl_matrix_long_double_view_array_with_tda , Ptr CLDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_view>
+-- ccall gsl_matrix_long_double_view_vector , Ptr <gsl_vector_long_double> -> CSize -> CSize -> IO <gsl_matrix_long_double_view>
+-- ccall gsl_matrix_long_double_view_vector_with_tda , Ptr <gsl_vector_long_double> -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_double_view>
+#ccall gsl_matrix_long_fprintf , Ptr CFile -> Ptr <gsl_matrix_long> -> CString -> IO CInt
+#ccall gsl_matrix_long_fread , Ptr CFile -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_free , Ptr <gsl_matrix_long> -> IO ()
+#ccall gsl_matrix_long_fscanf , Ptr CFile -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_fwrite , Ptr CFile -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_isneg , Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_isnonneg , Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_isnull , Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_ispos , Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_max , Ptr <gsl_matrix_long> -> IO CLong
+#ccall gsl_matrix_long_max_index , Ptr <gsl_matrix_long> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_memcpy , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_min , Ptr <gsl_matrix_long> -> IO CLong
+#ccall gsl_matrix_long_min_index , Ptr <gsl_matrix_long> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_minmax , Ptr <gsl_matrix_long> -> Ptr CLong -> Ptr CLong -> IO ()
+#ccall gsl_matrix_long_minmax_index , Ptr <gsl_matrix_long> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_long_mul_elements , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+-- ccall gsl_matrix_long_row , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_view>
+#ccall gsl_matrix_long_scale , Ptr <gsl_matrix_long> -> CDouble -> IO CInt
+#ccall gsl_matrix_long_set_all , Ptr <gsl_matrix_long> -> CLong -> IO ()
+#ccall gsl_matrix_long_set_identity , Ptr <gsl_matrix_long> -> IO ()
+#ccall gsl_matrix_long_set_zero , Ptr <gsl_matrix_long> -> IO ()
+#ccall gsl_matrix_long_sub , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+-- ccall gsl_matrix_long_subcolumn , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_matrix_long_subdiagonal , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_matrix_long_submatrix , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_view>
+-- ccall gsl_matrix_long_subrow , Ptr <gsl_matrix_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_matrix_long_superdiagonal , Ptr <gsl_matrix_long> -> CSize -> IO <gsl_vector_long_view>
+#ccall gsl_matrix_long_swap , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_swap_columns , Ptr <gsl_matrix_long> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_swap_rowcol , Ptr <gsl_matrix_long> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_swap_rows , Ptr <gsl_matrix_long> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_long_transpose , Ptr <gsl_matrix_long> -> IO CInt
+#ccall gsl_matrix_long_transpose_memcpy , Ptr <gsl_matrix_long> -> Ptr <gsl_matrix_long> -> IO CInt
+-- ccall gsl_matrix_long_view_array , Ptr CLong -> CSize -> CSize -> IO <gsl_matrix_long_view>
+-- ccall gsl_matrix_long_view_array_with_tda , Ptr CLong -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_view>
+-- ccall gsl_matrix_long_view_vector , Ptr <gsl_vector_long> -> CSize -> CSize -> IO <gsl_matrix_long_view>
+-- ccall gsl_matrix_long_view_vector_with_tda , Ptr <gsl_vector_long> -> CSize -> CSize -> CSize -> IO <gsl_matrix_long_view>
+#ccall gsl_matrix_max , Ptr <gsl_matrix> -> IO CDouble
+#ccall gsl_matrix_max_index , Ptr <gsl_matrix> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_memcpy , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_min , Ptr <gsl_matrix> -> IO CDouble
+#ccall gsl_matrix_min_index , Ptr <gsl_matrix> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_minmax , Ptr <gsl_matrix> -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_matrix_minmax_index , Ptr <gsl_matrix> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_mul_elements , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+-- ccall gsl_matrix_row , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_view>
+#ccall gsl_matrix_scale , Ptr <gsl_matrix> -> CDouble -> IO CInt
+#ccall gsl_matrix_set_all , Ptr <gsl_matrix> -> CDouble -> IO ()
+#ccall gsl_matrix_set_identity , Ptr <gsl_matrix> -> IO ()
+#ccall gsl_matrix_set_zero , Ptr <gsl_matrix> -> IO ()
+#ccall gsl_matrix_short_add , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_add_constant , Ptr <gsl_matrix_short> -> CDouble -> IO CInt
+#ccall gsl_matrix_short_add_diagonal , Ptr <gsl_matrix_short> -> CDouble -> IO CInt
+#ccall gsl_matrix_short_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_short>)
+#ccall gsl_matrix_short_alloc_from_block , Ptr <gsl_block_short> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_short>)
+#ccall gsl_matrix_short_alloc_from_matrix , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_short>)
+#ccall gsl_matrix_short_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_short>)
+-- ccall gsl_matrix_short_column , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_matrix_short_const_column , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_diagonal , Ptr <gsl_matrix_short> -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_row , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_subcolumn , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_subdiagonal , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_submatrix , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_const_view>
+-- ccall gsl_matrix_short_const_subrow , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_superdiagonal , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_matrix_short_const_view_array , Ptr CShort -> CSize -> CSize -> IO <gsl_matrix_short_const_view>
+-- ccall gsl_matrix_short_const_view_array_with_tda , Ptr CShort -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_const_view>
+-- ccall gsl_matrix_short_const_view_vector , Ptr <gsl_vector_short> -> CSize -> CSize -> IO <gsl_matrix_short_const_view>
+-- ccall gsl_matrix_short_const_view_vector_with_tda , Ptr <gsl_vector_short> -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_const_view>
+-- ccall gsl_matrix_short_diagonal , Ptr <gsl_matrix_short> -> IO <gsl_vector_short_view>
+#ccall gsl_matrix_short_div_elements , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_fprintf , Ptr CFile -> Ptr <gsl_matrix_short> -> CString -> IO CInt
+#ccall gsl_matrix_short_fread , Ptr CFile -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_free , Ptr <gsl_matrix_short> -> IO ()
+#ccall gsl_matrix_short_fscanf , Ptr CFile -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_fwrite , Ptr CFile -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_isneg , Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_isnonneg , Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_isnull , Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_ispos , Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_max , Ptr <gsl_matrix_short> -> IO CShort
+#ccall gsl_matrix_short_max_index , Ptr <gsl_matrix_short> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_short_memcpy , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_min , Ptr <gsl_matrix_short> -> IO CShort
+#ccall gsl_matrix_short_min_index , Ptr <gsl_matrix_short> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_short_minmax , Ptr <gsl_matrix_short> -> Ptr CShort -> Ptr CShort -> IO ()
+#ccall gsl_matrix_short_minmax_index , Ptr <gsl_matrix_short> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_short_mul_elements , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+-- ccall gsl_matrix_short_row , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_view>
+#ccall gsl_matrix_short_scale , Ptr <gsl_matrix_short> -> CDouble -> IO CInt
+#ccall gsl_matrix_short_set_all , Ptr <gsl_matrix_short> -> CShort -> IO ()
+#ccall gsl_matrix_short_set_identity , Ptr <gsl_matrix_short> -> IO ()
+#ccall gsl_matrix_short_set_zero , Ptr <gsl_matrix_short> -> IO ()
+#ccall gsl_matrix_short_sub , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+-- ccall gsl_matrix_short_subcolumn , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_matrix_short_subdiagonal , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_matrix_short_submatrix , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_view>
+-- ccall gsl_matrix_short_subrow , Ptr <gsl_matrix_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_matrix_short_superdiagonal , Ptr <gsl_matrix_short> -> CSize -> IO <gsl_vector_short_view>
+#ccall gsl_matrix_short_swap , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_swap_columns , Ptr <gsl_matrix_short> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_short_swap_rowcol , Ptr <gsl_matrix_short> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_short_swap_rows , Ptr <gsl_matrix_short> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_short_transpose , Ptr <gsl_matrix_short> -> IO CInt
+#ccall gsl_matrix_short_transpose_memcpy , Ptr <gsl_matrix_short> -> Ptr <gsl_matrix_short> -> IO CInt
+-- ccall gsl_matrix_short_view_array , Ptr CShort -> CSize -> CSize -> IO <gsl_matrix_short_view>
+-- ccall gsl_matrix_short_view_array_with_tda , Ptr CShort -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_view>
+-- ccall gsl_matrix_short_view_vector , Ptr <gsl_vector_short> -> CSize -> CSize -> IO <gsl_matrix_short_view>
+-- ccall gsl_matrix_short_view_vector_with_tda , Ptr <gsl_vector_short> -> CSize -> CSize -> CSize -> IO <gsl_matrix_short_view>
+#ccall gsl_matrix_sub , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+-- ccall gsl_matrix_subcolumn , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> IO <gsl_vector_view>
+-- ccall gsl_matrix_subdiagonal , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_view>
+-- ccall gsl_matrix_submatrix , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_view>
+-- ccall gsl_matrix_subrow , Ptr <gsl_matrix> -> CSize -> CSize -> CSize -> IO <gsl_vector_view>
+-- ccall gsl_matrix_superdiagonal , Ptr <gsl_matrix> -> CSize -> IO <gsl_vector_view>
+#ccall gsl_matrix_swap , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_swap_columns , Ptr <gsl_matrix> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_swap_rowcol , Ptr <gsl_matrix> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_swap_rows , Ptr <gsl_matrix> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_transpose , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_transpose_memcpy , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_matrix_uchar_add , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_add_constant , Ptr <gsl_matrix_uchar> -> CDouble -> IO CInt
+#ccall gsl_matrix_uchar_add_diagonal , Ptr <gsl_matrix_uchar> -> CDouble -> IO CInt
+#ccall gsl_matrix_uchar_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_uchar>)
+#ccall gsl_matrix_uchar_alloc_from_block , Ptr <gsl_block_uchar> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_uchar>)
+#ccall gsl_matrix_uchar_alloc_from_matrix , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_uchar>)
+#ccall gsl_matrix_uchar_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_uchar>)
+-- ccall gsl_matrix_uchar_column , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_matrix_uchar_const_column , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_diagonal , Ptr <gsl_matrix_uchar> -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_row , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_subcolumn , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_subdiagonal , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_submatrix , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_subrow , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_superdiagonal , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_view_array , Ptr CUChar -> CSize -> CSize -> IO <gsl_matrix_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_view_array_with_tda , Ptr CUChar -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_view_vector , Ptr <gsl_vector_uchar> -> CSize -> CSize -> IO <gsl_matrix_uchar_const_view>
+-- ccall gsl_matrix_uchar_const_view_vector_with_tda , Ptr <gsl_vector_uchar> -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_const_view>
+-- ccall gsl_matrix_uchar_diagonal , Ptr <gsl_matrix_uchar> -> IO <gsl_vector_uchar_view>
+#ccall gsl_matrix_uchar_div_elements , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_fprintf , Ptr CFile -> Ptr <gsl_matrix_uchar> -> CString -> IO CInt
+#ccall gsl_matrix_uchar_fread , Ptr CFile -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_free , Ptr <gsl_matrix_uchar> -> IO ()
+#ccall gsl_matrix_uchar_fscanf , Ptr CFile -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_fwrite , Ptr CFile -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_isneg , Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_isnonneg , Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_isnull , Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_ispos , Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_max , Ptr <gsl_matrix_uchar> -> IO CUChar
+#ccall gsl_matrix_uchar_max_index , Ptr <gsl_matrix_uchar> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uchar_memcpy , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_min , Ptr <gsl_matrix_uchar> -> IO CUChar
+#ccall gsl_matrix_uchar_min_index , Ptr <gsl_matrix_uchar> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uchar_minmax , Ptr <gsl_matrix_uchar> -> Ptr CUChar -> Ptr CUChar -> IO ()
+#ccall gsl_matrix_uchar_minmax_index , Ptr <gsl_matrix_uchar> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uchar_mul_elements , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+-- ccall gsl_matrix_uchar_row , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_view>
+#ccall gsl_matrix_uchar_scale , Ptr <gsl_matrix_uchar> -> CDouble -> IO CInt
+#ccall gsl_matrix_uchar_set_all , Ptr <gsl_matrix_uchar> -> CUChar -> IO ()
+#ccall gsl_matrix_uchar_set_identity , Ptr <gsl_matrix_uchar> -> IO ()
+#ccall gsl_matrix_uchar_set_zero , Ptr <gsl_matrix_uchar> -> IO ()
+#ccall gsl_matrix_uchar_sub , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+-- ccall gsl_matrix_uchar_subcolumn , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_matrix_uchar_subdiagonal , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_matrix_uchar_submatrix , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_view>
+-- ccall gsl_matrix_uchar_subrow , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_matrix_uchar_superdiagonal , Ptr <gsl_matrix_uchar> -> CSize -> IO <gsl_vector_uchar_view>
+#ccall gsl_matrix_uchar_swap , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_swap_columns , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uchar_swap_rowcol , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uchar_swap_rows , Ptr <gsl_matrix_uchar> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uchar_transpose , Ptr <gsl_matrix_uchar> -> IO CInt
+#ccall gsl_matrix_uchar_transpose_memcpy , Ptr <gsl_matrix_uchar> -> Ptr <gsl_matrix_uchar> -> IO CInt
+-- ccall gsl_matrix_uchar_view_array , Ptr CUChar -> CSize -> CSize -> IO <gsl_matrix_uchar_view>
+-- ccall gsl_matrix_uchar_view_array_with_tda , Ptr CUChar -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_view>
+-- ccall gsl_matrix_uchar_view_vector , Ptr <gsl_vector_uchar> -> CSize -> CSize -> IO <gsl_matrix_uchar_view>
+-- ccall gsl_matrix_uchar_view_vector_with_tda , Ptr <gsl_vector_uchar> -> CSize -> CSize -> CSize -> IO <gsl_matrix_uchar_view>
+#ccall gsl_matrix_uint_add , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_add_constant , Ptr <gsl_matrix_uint> -> CDouble -> IO CInt
+#ccall gsl_matrix_uint_add_diagonal , Ptr <gsl_matrix_uint> -> CDouble -> IO CInt
+#ccall gsl_matrix_uint_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_uint>)
+#ccall gsl_matrix_uint_alloc_from_block , Ptr <gsl_block_uint> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_uint>)
+#ccall gsl_matrix_uint_alloc_from_matrix , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_uint>)
+#ccall gsl_matrix_uint_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_uint>)
+-- ccall gsl_matrix_uint_column , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_matrix_uint_const_column , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_diagonal , Ptr <gsl_matrix_uint> -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_row , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_subcolumn , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_subdiagonal , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_submatrix , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_const_view>
+-- ccall gsl_matrix_uint_const_subrow , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_superdiagonal , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_matrix_uint_const_view_array , Ptr CUInt -> CSize -> CSize -> IO <gsl_matrix_uint_const_view>
+-- ccall gsl_matrix_uint_const_view_array_with_tda , Ptr CUInt -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_const_view>
+-- ccall gsl_matrix_uint_const_view_vector , Ptr <gsl_vector_uint> -> CSize -> CSize -> IO <gsl_matrix_uint_const_view>
+-- ccall gsl_matrix_uint_const_view_vector_with_tda , Ptr <gsl_vector_uint> -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_const_view>
+-- ccall gsl_matrix_uint_diagonal , Ptr <gsl_matrix_uint> -> IO <gsl_vector_uint_view>
+#ccall gsl_matrix_uint_div_elements , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_fprintf , Ptr CFile -> Ptr <gsl_matrix_uint> -> CString -> IO CInt
+#ccall gsl_matrix_uint_fread , Ptr CFile -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_free , Ptr <gsl_matrix_uint> -> IO ()
+#ccall gsl_matrix_uint_fscanf , Ptr CFile -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_fwrite , Ptr CFile -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_isneg , Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_isnonneg , Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_isnull , Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_ispos , Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_max , Ptr <gsl_matrix_uint> -> IO CUInt
+#ccall gsl_matrix_uint_max_index , Ptr <gsl_matrix_uint> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uint_memcpy , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_min , Ptr <gsl_matrix_uint> -> IO CUInt
+#ccall gsl_matrix_uint_min_index , Ptr <gsl_matrix_uint> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uint_minmax , Ptr <gsl_matrix_uint> -> Ptr CUInt -> Ptr CUInt -> IO ()
+#ccall gsl_matrix_uint_minmax_index , Ptr <gsl_matrix_uint> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_uint_mul_elements , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+-- ccall gsl_matrix_uint_row , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_view>
+#ccall gsl_matrix_uint_scale , Ptr <gsl_matrix_uint> -> CDouble -> IO CInt
+#ccall gsl_matrix_uint_set_all , Ptr <gsl_matrix_uint> -> CUInt -> IO ()
+#ccall gsl_matrix_uint_set_identity , Ptr <gsl_matrix_uint> -> IO ()
+#ccall gsl_matrix_uint_set_zero , Ptr <gsl_matrix_uint> -> IO ()
+#ccall gsl_matrix_uint_sub , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+-- ccall gsl_matrix_uint_subcolumn , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_matrix_uint_subdiagonal , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_matrix_uint_submatrix , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_view>
+-- ccall gsl_matrix_uint_subrow , Ptr <gsl_matrix_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_matrix_uint_superdiagonal , Ptr <gsl_matrix_uint> -> CSize -> IO <gsl_vector_uint_view>
+#ccall gsl_matrix_uint_swap , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_swap_columns , Ptr <gsl_matrix_uint> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uint_swap_rowcol , Ptr <gsl_matrix_uint> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uint_swap_rows , Ptr <gsl_matrix_uint> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_uint_transpose , Ptr <gsl_matrix_uint> -> IO CInt
+#ccall gsl_matrix_uint_transpose_memcpy , Ptr <gsl_matrix_uint> -> Ptr <gsl_matrix_uint> -> IO CInt
+-- ccall gsl_matrix_uint_view_array , Ptr CUInt -> CSize -> CSize -> IO <gsl_matrix_uint_view>
+-- ccall gsl_matrix_uint_view_array_with_tda , Ptr CUInt -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_view>
+-- ccall gsl_matrix_uint_view_vector , Ptr <gsl_vector_uint> -> CSize -> CSize -> IO <gsl_matrix_uint_view>
+-- ccall gsl_matrix_uint_view_vector_with_tda , Ptr <gsl_vector_uint> -> CSize -> CSize -> CSize -> IO <gsl_matrix_uint_view>
+#ccall gsl_matrix_ulong_add , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_add_constant , Ptr <gsl_matrix_ulong> -> CDouble -> IO CInt
+#ccall gsl_matrix_ulong_add_diagonal , Ptr <gsl_matrix_ulong> -> CDouble -> IO CInt
+#ccall gsl_matrix_ulong_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_ulong>)
+#ccall gsl_matrix_ulong_alloc_from_block , Ptr <gsl_block_ulong> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_ulong>)
+#ccall gsl_matrix_ulong_alloc_from_matrix , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_ulong>)
+#ccall gsl_matrix_ulong_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_ulong>)
+-- ccall gsl_matrix_ulong_column , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_matrix_ulong_const_column , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_diagonal , Ptr <gsl_matrix_ulong> -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_row , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_subcolumn , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_subdiagonal , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_submatrix , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_subrow , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_superdiagonal , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_view_array , Ptr CULong -> CSize -> CSize -> IO <gsl_matrix_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_view_array_with_tda , Ptr CULong -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_view_vector , Ptr <gsl_vector_ulong> -> CSize -> CSize -> IO <gsl_matrix_ulong_const_view>
+-- ccall gsl_matrix_ulong_const_view_vector_with_tda , Ptr <gsl_vector_ulong> -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_const_view>
+-- ccall gsl_matrix_ulong_diagonal , Ptr <gsl_matrix_ulong> -> IO <gsl_vector_ulong_view>
+#ccall gsl_matrix_ulong_div_elements , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_fprintf , Ptr CFile -> Ptr <gsl_matrix_ulong> -> CString -> IO CInt
+#ccall gsl_matrix_ulong_fread , Ptr CFile -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_free , Ptr <gsl_matrix_ulong> -> IO ()
+#ccall gsl_matrix_ulong_fscanf , Ptr CFile -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_fwrite , Ptr CFile -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_isneg , Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_isnonneg , Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_isnull , Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_ispos , Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_max , Ptr <gsl_matrix_ulong> -> IO CULong
+#ccall gsl_matrix_ulong_max_index , Ptr <gsl_matrix_ulong> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ulong_memcpy , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_min , Ptr <gsl_matrix_ulong> -> IO CULong
+#ccall gsl_matrix_ulong_min_index , Ptr <gsl_matrix_ulong> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ulong_minmax , Ptr <gsl_matrix_ulong> -> Ptr CULong -> Ptr CULong -> IO ()
+#ccall gsl_matrix_ulong_minmax_index , Ptr <gsl_matrix_ulong> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ulong_mul_elements , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+-- ccall gsl_matrix_ulong_row , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_view>
+#ccall gsl_matrix_ulong_scale , Ptr <gsl_matrix_ulong> -> CDouble -> IO CInt
+#ccall gsl_matrix_ulong_set_all , Ptr <gsl_matrix_ulong> -> CULong -> IO ()
+#ccall gsl_matrix_ulong_set_identity , Ptr <gsl_matrix_ulong> -> IO ()
+#ccall gsl_matrix_ulong_set_zero , Ptr <gsl_matrix_ulong> -> IO ()
+#ccall gsl_matrix_ulong_sub , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+-- ccall gsl_matrix_ulong_subcolumn , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_matrix_ulong_subdiagonal , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_matrix_ulong_submatrix , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_view>
+-- ccall gsl_matrix_ulong_subrow , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_matrix_ulong_superdiagonal , Ptr <gsl_matrix_ulong> -> CSize -> IO <gsl_vector_ulong_view>
+#ccall gsl_matrix_ulong_swap , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_swap_columns , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ulong_swap_rowcol , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ulong_swap_rows , Ptr <gsl_matrix_ulong> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ulong_transpose , Ptr <gsl_matrix_ulong> -> IO CInt
+#ccall gsl_matrix_ulong_transpose_memcpy , Ptr <gsl_matrix_ulong> -> Ptr <gsl_matrix_ulong> -> IO CInt
+-- ccall gsl_matrix_ulong_view_array , Ptr CULong -> CSize -> CSize -> IO <gsl_matrix_ulong_view>
+-- ccall gsl_matrix_ulong_view_array_with_tda , Ptr CULong -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_view>
+-- ccall gsl_matrix_ulong_view_vector , Ptr <gsl_vector_ulong> -> CSize -> CSize -> IO <gsl_matrix_ulong_view>
+-- ccall gsl_matrix_ulong_view_vector_with_tda , Ptr <gsl_vector_ulong> -> CSize -> CSize -> CSize -> IO <gsl_matrix_ulong_view>
+#ccall gsl_matrix_ushort_add , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_add_constant , Ptr <gsl_matrix_ushort> -> CDouble -> IO CInt
+#ccall gsl_matrix_ushort_add_diagonal , Ptr <gsl_matrix_ushort> -> CDouble -> IO CInt
+#ccall gsl_matrix_ushort_alloc , CSize -> CSize -> IO (Ptr <gsl_matrix_ushort>)
+#ccall gsl_matrix_ushort_alloc_from_block , Ptr <gsl_block_ushort> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_ushort>)
+#ccall gsl_matrix_ushort_alloc_from_matrix , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> CSize -> IO (Ptr <gsl_matrix_ushort>)
+#ccall gsl_matrix_ushort_calloc , CSize -> CSize -> IO (Ptr <gsl_matrix_ushort>)
+-- ccall gsl_matrix_ushort_column , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_matrix_ushort_const_column , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_diagonal , Ptr <gsl_matrix_ushort> -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_row , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_subcolumn , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_subdiagonal , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_submatrix , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_subrow , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_superdiagonal , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_view_array , Ptr CUShort -> CSize -> CSize -> IO <gsl_matrix_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_view_array_with_tda , Ptr CUShort -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_view_vector , Ptr <gsl_vector_ushort> -> CSize -> CSize -> IO <gsl_matrix_ushort_const_view>
+-- ccall gsl_matrix_ushort_const_view_vector_with_tda , Ptr <gsl_vector_ushort> -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_const_view>
+-- ccall gsl_matrix_ushort_diagonal , Ptr <gsl_matrix_ushort> -> IO <gsl_vector_ushort_view>
+#ccall gsl_matrix_ushort_div_elements , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_fprintf , Ptr CFile -> Ptr <gsl_matrix_ushort> -> CString -> IO CInt
+#ccall gsl_matrix_ushort_fread , Ptr CFile -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_free , Ptr <gsl_matrix_ushort> -> IO ()
+#ccall gsl_matrix_ushort_fscanf , Ptr CFile -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_fwrite , Ptr CFile -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_isneg , Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_isnonneg , Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_isnull , Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_ispos , Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_max , Ptr <gsl_matrix_ushort> -> IO CUShort
+#ccall gsl_matrix_ushort_max_index , Ptr <gsl_matrix_ushort> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ushort_memcpy , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_min , Ptr <gsl_matrix_ushort> -> IO CUShort
+#ccall gsl_matrix_ushort_min_index , Ptr <gsl_matrix_ushort> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ushort_minmax , Ptr <gsl_matrix_ushort> -> Ptr CUShort -> Ptr CUShort -> IO ()
+#ccall gsl_matrix_ushort_minmax_index , Ptr <gsl_matrix_ushort> -> Ptr CSize -> Ptr CSize -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_matrix_ushort_mul_elements , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+-- ccall gsl_matrix_ushort_row , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_view>
+#ccall gsl_matrix_ushort_scale , Ptr <gsl_matrix_ushort> -> CDouble -> IO CInt
+#ccall gsl_matrix_ushort_set_all , Ptr <gsl_matrix_ushort> -> CUShort -> IO ()
+#ccall gsl_matrix_ushort_set_identity , Ptr <gsl_matrix_ushort> -> IO ()
+#ccall gsl_matrix_ushort_set_zero , Ptr <gsl_matrix_ushort> -> IO ()
+#ccall gsl_matrix_ushort_sub , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+-- ccall gsl_matrix_ushort_subcolumn , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_matrix_ushort_subdiagonal , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_matrix_ushort_submatrix , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_view>
+-- ccall gsl_matrix_ushort_subrow , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_matrix_ushort_superdiagonal , Ptr <gsl_matrix_ushort> -> CSize -> IO <gsl_vector_ushort_view>
+#ccall gsl_matrix_ushort_swap , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_swap_columns , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ushort_swap_rowcol , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ushort_swap_rows , Ptr <gsl_matrix_ushort> -> CSize -> CSize -> IO CInt
+#ccall gsl_matrix_ushort_transpose , Ptr <gsl_matrix_ushort> -> IO CInt
+#ccall gsl_matrix_ushort_transpose_memcpy , Ptr <gsl_matrix_ushort> -> Ptr <gsl_matrix_ushort> -> IO CInt
+-- ccall gsl_matrix_ushort_view_array , Ptr CUShort -> CSize -> CSize -> IO <gsl_matrix_ushort_view>
+-- ccall gsl_matrix_ushort_view_array_with_tda , Ptr CUShort -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_view>
+-- ccall gsl_matrix_ushort_view_vector , Ptr <gsl_vector_ushort> -> CSize -> CSize -> IO <gsl_matrix_ushort_view>
+-- ccall gsl_matrix_ushort_view_vector_with_tda , Ptr <gsl_vector_ushort> -> CSize -> CSize -> CSize -> IO <gsl_matrix_ushort_view>
+-- ccall gsl_matrix_view_array , Ptr CDouble -> CSize -> CSize -> IO <gsl_matrix_view>
+-- ccall gsl_matrix_view_array_with_tda , Ptr CDouble -> CSize -> CSize -> CSize -> IO <gsl_matrix_view>
+-- ccall gsl_matrix_view_vector , Ptr <gsl_vector> -> CSize -> CSize -> IO <gsl_matrix_view>
+-- ccall gsl_matrix_view_vector_with_tda , Ptr <gsl_vector> -> CSize -> CSize -> CSize -> IO <gsl_matrix_view>
diff --git a/src/Bindings/Gsl/VectorsAndMatrices/Vectors.hsc b/src/Bindings/Gsl/VectorsAndMatrices/Vectors.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/VectorsAndMatrices/Vectors.hsc
@@ -0,0 +1,655 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_vector.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Vectors.html>
+
+module Bindings.Gsl.VectorsAndMatrices.Vectors where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+import Bindings.Gsl.ComplexNumbers
+
+#globalvar gsl_check_range , CInt
+
+#ccall gsl_vector_add , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_add_constant , Ptr <gsl_vector> -> CDouble -> IO CInt
+#ccall gsl_vector_alloc , CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_alloc_col_from_matrix , Ptr <gsl_matrix> -> CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_alloc_from_block , Ptr <gsl_block> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_alloc_from_vector , Ptr <gsl_vector> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_alloc_row_from_matrix , Ptr <gsl_matrix> -> CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_calloc , CSize -> IO (Ptr <gsl_vector>)
+#ccall gsl_vector_char_add , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_add_constant , Ptr <gsl_vector_char> -> CDouble -> IO CInt
+#ccall gsl_vector_char_alloc , CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_alloc_col_from_matrix , Ptr <gsl_matrix_char> -> CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_alloc_from_block , Ptr <gsl_block_char> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_alloc_from_vector , Ptr <gsl_vector_char> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_alloc_row_from_matrix , Ptr <gsl_matrix_char> -> CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_calloc , CSize -> IO (Ptr <gsl_vector_char>)
+#ccall gsl_vector_char_const_ptr , Ptr <gsl_vector_char> -> CSize -> IO CString
+-- ccall gsl_vector_char_const_subvector , Ptr <gsl_vector_char> -> CSize -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_vector_char_const_subvector_with_stride , Ptr <gsl_vector_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_vector_char_const_view_array , CString -> CSize -> IO <gsl_vector_char_const_view>
+-- ccall gsl_vector_char_const_view_array_with_stride , CString -> CSize -> CSize -> IO <gsl_vector_char_const_view>
+#ccall gsl_vector_char_div , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_fprintf , Ptr CFile -> Ptr <gsl_vector_char> -> CString -> IO CInt
+#ccall gsl_vector_char_fread , Ptr CFile -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_free , Ptr <gsl_vector_char> -> IO ()
+#ccall gsl_vector_char_fscanf , Ptr CFile -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_fwrite , Ptr CFile -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_get , Ptr <gsl_vector_char> -> CSize -> IO CChar
+#ccall gsl_vector_char_isneg , Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_isnonneg , Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_isnull , Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_ispos , Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_max , Ptr <gsl_vector_char> -> IO CChar
+#ccall gsl_vector_char_max_index , Ptr <gsl_vector_char> -> IO CSize
+#ccall gsl_vector_char_memcpy , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_min , Ptr <gsl_vector_char> -> IO CChar
+#ccall gsl_vector_char_min_index , Ptr <gsl_vector_char> -> IO CSize
+#ccall gsl_vector_char_minmax , Ptr <gsl_vector_char> -> CString -> CString -> IO ()
+#ccall gsl_vector_char_minmax_index , Ptr <gsl_vector_char> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_char_mul , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_ptr , Ptr <gsl_vector_char> -> CSize -> IO CString
+#ccall gsl_vector_char_reverse , Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_scale , Ptr <gsl_vector_char> -> CDouble -> IO CInt
+#ccall gsl_vector_char_set , Ptr <gsl_vector_char> -> CSize -> CChar -> IO ()
+#ccall gsl_vector_char_set_all , Ptr <gsl_vector_char> -> CChar -> IO ()
+#ccall gsl_vector_char_set_basis , Ptr <gsl_vector_char> -> CSize -> IO CInt
+#ccall gsl_vector_char_set_zero , Ptr <gsl_vector_char> -> IO ()
+#ccall gsl_vector_char_sub , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+-- ccall gsl_vector_char_subvector , Ptr <gsl_vector_char> -> CSize -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_vector_char_subvector_with_stride , Ptr <gsl_vector_char> -> CSize -> CSize -> CSize -> IO <gsl_vector_char_view>
+#ccall gsl_vector_char_swap , Ptr <gsl_vector_char> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_vector_char_swap_elements , Ptr <gsl_vector_char> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_char_view_array , CString -> CSize -> IO <gsl_vector_char_view>
+-- ccall gsl_vector_char_view_array_with_stride , CString -> CSize -> CSize -> IO <gsl_vector_char_view>
+#ccall gsl_vector_complex_add , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_vector_complex_add_constant , Ptr <gsl_vector_complex> -> <gsl_complex> -> IO CInt
+#ccall gsl_vector_complex_alloc , CSize -> IO (Ptr <gsl_vector_complex>)
+#ccall gsl_vector_complex_alloc_col_from_matrix , Ptr <gsl_matrix_complex> -> CSize -> IO (Ptr <gsl_vector_complex>)
+#ccall gsl_vector_complex_alloc_from_block , Ptr <gsl_block_complex> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex>)
+#ccall gsl_vector_complex_alloc_from_vector , Ptr <gsl_vector_complex> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex>)
+#ccall gsl_vector_complex_alloc_row_from_matrix , Ptr <gsl_matrix_complex> -> CSize -> IO (Ptr <gsl_vector_complex>)
+#ccall gsl_vector_complex_calloc , CSize -> IO (Ptr <gsl_vector_complex>)
+-- ccall gsl_vector_complex_const_imag , Ptr <gsl_vector_complex> -> IO <gsl_vector_const_view>
+#ccall gsl_vector_complex_const_ptr , Ptr <gsl_vector_complex> -> CSize -> IO (Ptr <gsl_complex>)
+-- ccall gsl_vector_complex_const_real , Ptr <gsl_vector_complex> -> IO <gsl_vector_const_view>
+-- ccall gsl_vector_complex_const_subvector , Ptr <gsl_vector_complex> -> CSize -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_vector_complex_const_subvector_with_stride , Ptr <gsl_vector_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_vector_complex_const_view_array , Ptr CDouble -> CSize -> IO <gsl_vector_complex_const_view>
+-- ccall gsl_vector_complex_const_view_array_with_stride , Ptr CDouble -> CSize -> CSize -> IO <gsl_vector_complex_const_view>
+#ccall gsl_vector_complex_div , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_float_add , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_vector_complex_float_add_constant , Ptr <gsl_vector_complex_float> -> <gsl_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_alloc , CSize -> IO (Ptr <gsl_vector_complex_float>)
+#ccall gsl_vector_complex_float_alloc_col_from_matrix , Ptr <gsl_matrix_complex_float> -> CSize -> IO (Ptr <gsl_vector_complex_float>)
+#ccall gsl_vector_complex_float_alloc_from_block , Ptr <gsl_block_complex_float> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex_float>)
+#ccall gsl_vector_complex_float_alloc_from_vector , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex_float>)
+#ccall gsl_vector_complex_float_alloc_row_from_matrix , Ptr <gsl_matrix_complex_float> -> CSize -> IO (Ptr <gsl_vector_complex_float>)
+#ccall gsl_vector_complex_float_calloc , CSize -> IO (Ptr <gsl_vector_complex_float>)
+-- ccall gsl_vector_complex_float_const_imag , Ptr <gsl_vector_complex_float> -> IO <gsl_vector_float_const_view>
+#ccall gsl_vector_complex_float_const_ptr , Ptr <gsl_vector_complex_float> -> CSize -> IO (Ptr <gsl_complex_float>)
+-- ccall gsl_vector_complex_float_const_real , Ptr <gsl_vector_complex_float> -> IO <gsl_vector_float_const_view>
+-- ccall gsl_vector_complex_float_const_subvector , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_vector_complex_float_const_subvector_with_stride , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_vector_complex_float_const_view_array , Ptr CFloat -> CSize -> IO <gsl_vector_complex_float_const_view>
+-- ccall gsl_vector_complex_float_const_view_array_with_stride , Ptr CFloat -> CSize -> CSize -> IO <gsl_vector_complex_float_const_view>
+#ccall gsl_vector_complex_float_div , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_fprintf , Ptr CFile -> Ptr <gsl_vector_complex_float> -> CString -> IO CInt
+#ccall gsl_vector_complex_float_fread , Ptr CFile -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_free , Ptr <gsl_vector_complex_float> -> IO ()
+#ccall gsl_vector_complex_float_fscanf , Ptr CFile -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_fwrite , Ptr CFile -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_vector_complex_float_get , Ptr <gsl_vector_complex_float> -> CSize -> IO <gsl_complex_float>
+-- ccall gsl_vector_complex_float_imag , Ptr <gsl_vector_complex_float> -> IO <gsl_vector_float_view>
+#ccall gsl_vector_complex_float_isneg , Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_isnonneg , Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_isnull , Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_ispos , Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_memcpy , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_mul , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_ptr , Ptr <gsl_vector_complex_float> -> CSize -> IO (Ptr <gsl_complex_float>)
+-- ccall gsl_vector_complex_float_real , Ptr <gsl_vector_complex_float> -> IO <gsl_vector_float_view>
+#ccall gsl_vector_complex_float_reverse , Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_vector_complex_float_scale , Ptr <gsl_vector_complex_float> -> <gsl_complex_float> -> IO CInt
+-- ccall gsl_vector_complex_float_set , Ptr <gsl_vector_complex_float> -> CSize -> <gsl_complex_float> -> IO ()
+-- ccall gsl_vector_complex_float_set_all , Ptr <gsl_vector_complex_float> -> <gsl_complex_float> -> IO ()
+#ccall gsl_vector_complex_float_set_basis , Ptr <gsl_vector_complex_float> -> CSize -> IO CInt
+#ccall gsl_vector_complex_float_set_zero , Ptr <gsl_vector_complex_float> -> IO ()
+#ccall gsl_vector_complex_float_sub , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+-- ccall gsl_vector_complex_float_subvector , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_vector_complex_float_subvector_with_stride , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_float_view>
+#ccall gsl_vector_complex_float_swap , Ptr <gsl_vector_complex_float> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_vector_complex_float_swap_elements , Ptr <gsl_vector_complex_float> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_complex_float_view_array , Ptr CFloat -> CSize -> IO <gsl_vector_complex_float_view>
+-- ccall gsl_vector_complex_float_view_array_with_stride , Ptr CFloat -> CSize -> CSize -> IO <gsl_vector_complex_float_view>
+#ccall gsl_vector_complex_fprintf , Ptr CFile -> Ptr <gsl_vector_complex> -> CString -> IO CInt
+#ccall gsl_vector_complex_fread , Ptr CFile -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_free , Ptr <gsl_vector_complex> -> IO ()
+#ccall gsl_vector_complex_fscanf , Ptr CFile -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_fwrite , Ptr CFile -> Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_vector_complex_get , Ptr <gsl_vector_complex> -> CSize -> IO <gsl_complex>
+-- ccall gsl_vector_complex_imag , Ptr <gsl_vector_complex> -> IO <gsl_vector_view>
+#ccall gsl_vector_complex_isneg , Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_isnonneg , Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_isnull , Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_ispos , Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_long_double_add , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+-- ccall gsl_vector_complex_long_double_add_constant , Ptr <gsl_vector_complex_long_double> -> <gsl_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_alloc , CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+
+#cinline GSL_COMPLEX_AT , Ptr <gsl_vector_complex> -> CSize -> IO (Ptr <gsl_complex>)
+#cinline GSL_COMPLEX_FLOAT_AT , Ptr <gsl_vector_complex_float> -> CSize -> IO (Ptr <gsl_complex_float>)
+#cinline GSL_COMPLEX_LONG_DOUBLE_AT , Ptr <gsl_vector_complex_long_double> -> CSize -> IO (Ptr <gsl_complex_long_double>)
+
+#ccall gsl_vector_complex_long_double_alloc_col_from_matrix , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+#ccall gsl_vector_complex_long_double_alloc_from_block , Ptr <gsl_block_complex_long_double> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+#ccall gsl_vector_complex_long_double_alloc_from_vector , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+#ccall gsl_vector_complex_long_double_alloc_row_from_matrix , Ptr <gsl_matrix_complex_long_double> -> CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+#ccall gsl_vector_complex_long_double_calloc , CSize -> IO (Ptr <gsl_vector_complex_long_double>)
+-- ccall gsl_vector_complex_long_double_const_imag , Ptr <gsl_vector_complex_long_double> -> IO <gsl_vector_long_double_const_view>
+#ccall gsl_vector_complex_long_double_const_ptr , Ptr <gsl_vector_complex_long_double> -> CSize -> IO (Ptr <gsl_complex_long_double>)
+-- ccall gsl_vector_complex_long_double_const_real , Ptr <gsl_vector_complex_long_double> -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_vector_complex_long_double_const_subvector , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_vector_complex_long_double_const_subvector_with_stride , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_vector_complex_long_double_const_view_array , Ptr CLDouble -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+-- ccall gsl_vector_complex_long_double_const_view_array_with_stride , Ptr CLDouble -> CSize -> CSize -> IO <gsl_vector_complex_long_double_const_view>
+#ccall gsl_vector_complex_long_double_div , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_fprintf , Ptr CFile -> Ptr <gsl_vector_complex_long_double> -> CString -> IO CInt
+#ccall gsl_vector_complex_long_double_fread , Ptr CFile -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_free , Ptr <gsl_vector_complex_long_double> -> IO ()
+#ccall gsl_vector_complex_long_double_fscanf , Ptr CFile -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_fwrite , Ptr CFile -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+-- ccall gsl_vector_complex_long_double_get , Ptr <gsl_vector_complex_long_double> -> CSize -> IO <gsl_complex_long_double>
+-- ccall gsl_vector_complex_long_double_imag , Ptr <gsl_vector_complex_long_double> -> IO <gsl_vector_long_double_view>
+#ccall gsl_vector_complex_long_double_isneg , Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_isnonneg , Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_isnull , Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_ispos , Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_memcpy , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_mul , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_ptr , Ptr <gsl_vector_complex_long_double> -> CSize -> IO (Ptr <gsl_complex_long_double>)
+-- ccall gsl_vector_complex_long_double_real , Ptr <gsl_vector_complex_long_double> -> IO <gsl_vector_long_double_view>
+#ccall gsl_vector_complex_long_double_reverse , Ptr <gsl_vector_complex_long_double> -> IO CInt
+-- ccall gsl_vector_complex_long_double_scale , Ptr <gsl_vector_complex_long_double> -> <gsl_complex_long_double> -> IO CInt
+-- ccall gsl_vector_complex_long_double_set , Ptr <gsl_vector_complex_long_double> -> CSize -> <gsl_complex_long_double> -> IO ()
+-- ccall gsl_vector_complex_long_double_set_all , Ptr <gsl_vector_complex_long_double> -> <gsl_complex_long_double> -> IO ()
+#ccall gsl_vector_complex_long_double_set_basis , Ptr <gsl_vector_complex_long_double> -> CSize -> IO CInt
+#ccall gsl_vector_complex_long_double_set_zero , Ptr <gsl_vector_complex_long_double> -> IO ()
+#ccall gsl_vector_complex_long_double_sub , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+-- ccall gsl_vector_complex_long_double_subvector , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_vector_complex_long_double_subvector_with_stride , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_long_double_view>
+#ccall gsl_vector_complex_long_double_swap , Ptr <gsl_vector_complex_long_double> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_vector_complex_long_double_swap_elements , Ptr <gsl_vector_complex_long_double> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_complex_long_double_view_array , Ptr CLDouble -> CSize -> IO <gsl_vector_complex_long_double_view>
+-- ccall gsl_vector_complex_long_double_view_array_with_stride , Ptr CLDouble -> CSize -> CSize -> IO <gsl_vector_complex_long_double_view>
+#ccall gsl_vector_complex_memcpy , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_mul , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_ptr , Ptr <gsl_vector_complex> -> CSize -> IO (Ptr <gsl_complex>)
+-- ccall gsl_vector_complex_real , Ptr <gsl_vector_complex> -> IO <gsl_vector_view>
+#ccall gsl_vector_complex_reverse , Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_vector_complex_scale , Ptr <gsl_vector_complex> -> <gsl_complex> -> IO CInt
+-- ccall gsl_vector_complex_set , Ptr <gsl_vector_complex> -> CSize -> <gsl_complex> -> IO ()
+-- ccall gsl_vector_complex_set_all , Ptr <gsl_vector_complex> -> <gsl_complex> -> IO ()
+#ccall gsl_vector_complex_set_basis , Ptr <gsl_vector_complex> -> CSize -> IO CInt
+#ccall gsl_vector_complex_set_zero , Ptr <gsl_vector_complex> -> IO ()
+#ccall gsl_vector_complex_sub , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+-- ccall gsl_vector_complex_subvector , Ptr <gsl_vector_complex> -> CSize -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_vector_complex_subvector_with_stride , Ptr <gsl_vector_complex> -> CSize -> CSize -> CSize -> IO <gsl_vector_complex_view>
+#ccall gsl_vector_complex_swap , Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_vector_complex_swap_elements , Ptr <gsl_vector_complex> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_complex_view_array , Ptr CDouble -> CSize -> IO <gsl_vector_complex_view>
+-- ccall gsl_vector_complex_view_array_with_stride , Ptr CDouble -> CSize -> CSize -> IO <gsl_vector_complex_view>
+#ccall gsl_vector_const_ptr , Ptr <gsl_vector> -> CSize -> IO (Ptr CDouble)
+-- ccall gsl_vector_const_subvector , Ptr <gsl_vector> -> CSize -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_vector_const_subvector_with_stride , Ptr <gsl_vector> -> CSize -> CSize -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_vector_const_view_array , Ptr CDouble -> CSize -> IO <gsl_vector_const_view>
+-- ccall gsl_vector_const_view_array_with_stride , Ptr CDouble -> CSize -> CSize -> IO <gsl_vector_const_view>
+#ccall gsl_vector_div , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_float_add , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_add_constant , Ptr <gsl_vector_float> -> CDouble -> IO CInt
+#ccall gsl_vector_float_alloc , CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_alloc_col_from_matrix , Ptr <gsl_matrix_float> -> CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_alloc_from_block , Ptr <gsl_block_float> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_alloc_from_vector , Ptr <gsl_vector_float> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_alloc_row_from_matrix , Ptr <gsl_matrix_float> -> CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_calloc , CSize -> IO (Ptr <gsl_vector_float>)
+#ccall gsl_vector_float_const_ptr , Ptr <gsl_vector_float> -> CSize -> IO (Ptr CFloat)
+-- ccall gsl_vector_float_const_subvector , Ptr <gsl_vector_float> -> CSize -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_vector_float_const_subvector_with_stride , Ptr <gsl_vector_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_vector_float_const_view_array , Ptr CFloat -> CSize -> IO <gsl_vector_float_const_view>
+-- ccall gsl_vector_float_const_view_array_with_stride , Ptr CFloat -> CSize -> CSize -> IO <gsl_vector_float_const_view>
+#ccall gsl_vector_float_div , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_fprintf , Ptr CFile -> Ptr <gsl_vector_float> -> CString -> IO CInt
+#ccall gsl_vector_float_fread , Ptr CFile -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_free , Ptr <gsl_vector_float> -> IO ()
+#ccall gsl_vector_float_fscanf , Ptr CFile -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_fwrite , Ptr CFile -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_get , Ptr <gsl_vector_float> -> CSize -> IO CFloat
+#ccall gsl_vector_float_isneg , Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_isnonneg , Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_isnull , Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_ispos , Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_max , Ptr <gsl_vector_float> -> IO CFloat
+#ccall gsl_vector_float_max_index , Ptr <gsl_vector_float> -> IO CSize
+#ccall gsl_vector_float_memcpy , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_min , Ptr <gsl_vector_float> -> IO CFloat
+#ccall gsl_vector_float_min_index , Ptr <gsl_vector_float> -> IO CSize
+#ccall gsl_vector_float_minmax , Ptr <gsl_vector_float> -> Ptr CFloat -> Ptr CFloat -> IO ()
+#ccall gsl_vector_float_minmax_index , Ptr <gsl_vector_float> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_float_mul , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_ptr , Ptr <gsl_vector_float> -> CSize -> IO (Ptr CFloat)
+#ccall gsl_vector_float_reverse , Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_scale , Ptr <gsl_vector_float> -> CDouble -> IO CInt
+#ccall gsl_vector_float_set , Ptr <gsl_vector_float> -> CSize -> CFloat -> IO ()
+#ccall gsl_vector_float_set_all , Ptr <gsl_vector_float> -> CFloat -> IO ()
+#ccall gsl_vector_float_set_basis , Ptr <gsl_vector_float> -> CSize -> IO CInt
+#ccall gsl_vector_float_set_zero , Ptr <gsl_vector_float> -> IO ()
+#ccall gsl_vector_float_sub , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+-- ccall gsl_vector_float_subvector , Ptr <gsl_vector_float> -> CSize -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_vector_float_subvector_with_stride , Ptr <gsl_vector_float> -> CSize -> CSize -> CSize -> IO <gsl_vector_float_view>
+#ccall gsl_vector_float_swap , Ptr <gsl_vector_float> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_vector_float_swap_elements , Ptr <gsl_vector_float> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_float_view_array , Ptr CFloat -> CSize -> IO <gsl_vector_float_view>
+-- ccall gsl_vector_float_view_array_with_stride , Ptr CFloat -> CSize -> CSize -> IO <gsl_vector_float_view>
+#ccall gsl_vector_fprintf , Ptr CFile -> Ptr <gsl_vector> -> CString -> IO CInt
+#ccall gsl_vector_fread , Ptr CFile -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_free , Ptr <gsl_vector> -> IO ()
+#ccall gsl_vector_fscanf , Ptr CFile -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_fwrite , Ptr CFile -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_get , Ptr <gsl_vector> -> CSize -> IO CDouble
+#ccall gsl_vector_int_add , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_add_constant , Ptr <gsl_vector_int> -> CDouble -> IO CInt
+#ccall gsl_vector_int_alloc , CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_alloc_col_from_matrix , Ptr <gsl_matrix_int> -> CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_alloc_from_block , Ptr <gsl_block_int> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_alloc_from_vector , Ptr <gsl_vector_int> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_alloc_row_from_matrix , Ptr <gsl_matrix_int> -> CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_calloc , CSize -> IO (Ptr <gsl_vector_int>)
+#ccall gsl_vector_int_const_ptr , Ptr <gsl_vector_int> -> CSize -> IO (Ptr CInt)
+-- ccall gsl_vector_int_const_subvector , Ptr <gsl_vector_int> -> CSize -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_vector_int_const_subvector_with_stride , Ptr <gsl_vector_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_vector_int_const_view_array , Ptr CInt -> CSize -> IO <gsl_vector_int_const_view>
+-- ccall gsl_vector_int_const_view_array_with_stride , Ptr CInt -> CSize -> CSize -> IO <gsl_vector_int_const_view>
+#ccall gsl_vector_int_div , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_fprintf , Ptr CFile -> Ptr <gsl_vector_int> -> CString -> IO CInt
+#ccall gsl_vector_int_fread , Ptr CFile -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_free , Ptr <gsl_vector_int> -> IO ()
+#ccall gsl_vector_int_fscanf , Ptr CFile -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_fwrite , Ptr CFile -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_get , Ptr <gsl_vector_int> -> CSize -> IO CInt
+#ccall gsl_vector_int_isneg , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_isnonneg , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_isnull , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_ispos , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_max , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_max_index , Ptr <gsl_vector_int> -> IO CSize
+#ccall gsl_vector_int_memcpy , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_min , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_min_index , Ptr <gsl_vector_int> -> IO CSize
+#ccall gsl_vector_int_minmax , Ptr <gsl_vector_int> -> Ptr CInt -> Ptr CInt -> IO ()
+#ccall gsl_vector_int_minmax_index , Ptr <gsl_vector_int> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_int_mul , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_ptr , Ptr <gsl_vector_int> -> CSize -> IO (Ptr CInt)
+#ccall gsl_vector_int_reverse , Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_scale , Ptr <gsl_vector_int> -> CDouble -> IO CInt
+#ccall gsl_vector_int_set , Ptr <gsl_vector_int> -> CSize -> CInt -> IO ()
+#ccall gsl_vector_int_set_all , Ptr <gsl_vector_int> -> CInt -> IO ()
+#ccall gsl_vector_int_set_basis , Ptr <gsl_vector_int> -> CSize -> IO CInt
+#ccall gsl_vector_int_set_zero , Ptr <gsl_vector_int> -> IO ()
+#ccall gsl_vector_int_sub , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+-- ccall gsl_vector_int_subvector , Ptr <gsl_vector_int> -> CSize -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_vector_int_subvector_with_stride , Ptr <gsl_vector_int> -> CSize -> CSize -> CSize -> IO <gsl_vector_int_view>
+#ccall gsl_vector_int_swap , Ptr <gsl_vector_int> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_vector_int_swap_elements , Ptr <gsl_vector_int> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_int_view_array , Ptr CInt -> CSize -> IO <gsl_vector_int_view>
+-- ccall gsl_vector_int_view_array_with_stride , Ptr CInt -> CSize -> CSize -> IO <gsl_vector_int_view>
+#ccall gsl_vector_isneg , Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_isnonneg , Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_isnull , Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_ispos , Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_long_add , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_add_constant , Ptr <gsl_vector_long> -> CDouble -> IO CInt
+#ccall gsl_vector_long_alloc , CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_alloc_col_from_matrix , Ptr <gsl_matrix_long> -> CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_alloc_from_block , Ptr <gsl_block_long> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_alloc_from_vector , Ptr <gsl_vector_long> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_alloc_row_from_matrix , Ptr <gsl_matrix_long> -> CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_calloc , CSize -> IO (Ptr <gsl_vector_long>)
+#ccall gsl_vector_long_const_ptr , Ptr <gsl_vector_long> -> CSize -> IO (Ptr CLong)
+-- ccall gsl_vector_long_const_subvector , Ptr <gsl_vector_long> -> CSize -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_vector_long_const_subvector_with_stride , Ptr <gsl_vector_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_vector_long_const_view_array , Ptr CLong -> CSize -> IO <gsl_vector_long_const_view>
+-- ccall gsl_vector_long_const_view_array_with_stride , Ptr CLong -> CSize -> CSize -> IO <gsl_vector_long_const_view>
+#ccall gsl_vector_long_div , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_double_add , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_add_constant , Ptr <gsl_vector_long_double> -> CDouble -> IO CInt
+#ccall gsl_vector_long_double_alloc , CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_alloc_col_from_matrix , Ptr <gsl_matrix_long_double> -> CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_alloc_from_block , Ptr <gsl_block_long_double> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_alloc_from_vector , Ptr <gsl_vector_long_double> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_alloc_row_from_matrix , Ptr <gsl_matrix_long_double> -> CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_calloc , CSize -> IO (Ptr <gsl_vector_long_double>)
+#ccall gsl_vector_long_double_const_ptr , Ptr <gsl_vector_long_double> -> CSize -> IO (Ptr CLDouble)
+-- ccall gsl_vector_long_double_const_subvector , Ptr <gsl_vector_long_double> -> CSize -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_vector_long_double_const_subvector_with_stride , Ptr <gsl_vector_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_vector_long_double_const_view_array , Ptr CLDouble -> CSize -> IO <gsl_vector_long_double_const_view>
+-- ccall gsl_vector_long_double_const_view_array_with_stride , Ptr CLDouble -> CSize -> CSize -> IO <gsl_vector_long_double_const_view>
+#ccall gsl_vector_long_double_div , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_fprintf , Ptr CFile -> Ptr <gsl_vector_long_double> -> CString -> IO CInt
+#ccall gsl_vector_long_double_fread , Ptr CFile -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_free , Ptr <gsl_vector_long_double> -> IO ()
+#ccall gsl_vector_long_double_fscanf , Ptr CFile -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_fwrite , Ptr CFile -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_get , Ptr <gsl_vector_long_double> -> CSize -> IO CLDouble
+#ccall gsl_vector_long_double_isneg , Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_isnonneg , Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_isnull , Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_ispos , Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_max , Ptr <gsl_vector_long_double> -> IO CLDouble
+#ccall gsl_vector_long_double_max_index , Ptr <gsl_vector_long_double> -> IO CSize
+#ccall gsl_vector_long_double_memcpy , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_min , Ptr <gsl_vector_long_double> -> IO CLDouble
+#ccall gsl_vector_long_double_min_index , Ptr <gsl_vector_long_double> -> IO CSize
+#ccall gsl_vector_long_double_minmax , Ptr <gsl_vector_long_double> -> Ptr CLDouble -> Ptr CLDouble -> IO ()
+#ccall gsl_vector_long_double_minmax_index , Ptr <gsl_vector_long_double> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_long_double_mul , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_ptr , Ptr <gsl_vector_long_double> -> CSize -> IO (Ptr CLDouble)
+#ccall gsl_vector_long_double_reverse , Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_scale , Ptr <gsl_vector_long_double> -> CDouble -> IO CInt
+#ccall gsl_vector_long_double_set , Ptr <gsl_vector_long_double> -> CSize -> CLDouble -> IO ()
+#ccall gsl_vector_long_double_set_all , Ptr <gsl_vector_long_double> -> CLDouble -> IO ()
+#ccall gsl_vector_long_double_set_basis , Ptr <gsl_vector_long_double> -> CSize -> IO CInt
+#ccall gsl_vector_long_double_set_zero , Ptr <gsl_vector_long_double> -> IO ()
+#ccall gsl_vector_long_double_sub , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+-- ccall gsl_vector_long_double_subvector , Ptr <gsl_vector_long_double> -> CSize -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_vector_long_double_subvector_with_stride , Ptr <gsl_vector_long_double> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_double_view>
+#ccall gsl_vector_long_double_swap , Ptr <gsl_vector_long_double> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_vector_long_double_swap_elements , Ptr <gsl_vector_long_double> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_long_double_view_array , Ptr CLDouble -> CSize -> IO <gsl_vector_long_double_view>
+-- ccall gsl_vector_long_double_view_array_with_stride , Ptr CLDouble -> CSize -> CSize -> IO <gsl_vector_long_double_view>
+#ccall gsl_vector_long_fprintf , Ptr CFile -> Ptr <gsl_vector_long> -> CString -> IO CInt
+#ccall gsl_vector_long_fread , Ptr CFile -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_free , Ptr <gsl_vector_long> -> IO ()
+#ccall gsl_vector_long_fscanf , Ptr CFile -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_fwrite , Ptr CFile -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_get , Ptr <gsl_vector_long> -> CSize -> IO CLong
+#ccall gsl_vector_long_isneg , Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_isnonneg , Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_isnull , Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_ispos , Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_max , Ptr <gsl_vector_long> -> IO CLong
+#ccall gsl_vector_long_max_index , Ptr <gsl_vector_long> -> IO CSize
+#ccall gsl_vector_long_memcpy , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_min , Ptr <gsl_vector_long> -> IO CLong
+#ccall gsl_vector_long_min_index , Ptr <gsl_vector_long> -> IO CSize
+#ccall gsl_vector_long_minmax , Ptr <gsl_vector_long> -> Ptr CLong -> Ptr CLong -> IO ()
+#ccall gsl_vector_long_minmax_index , Ptr <gsl_vector_long> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_long_mul , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_ptr , Ptr <gsl_vector_long> -> CSize -> IO (Ptr CLong)
+#ccall gsl_vector_long_reverse , Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_scale , Ptr <gsl_vector_long> -> CDouble -> IO CInt
+#ccall gsl_vector_long_set , Ptr <gsl_vector_long> -> CSize -> CLong -> IO ()
+#ccall gsl_vector_long_set_all , Ptr <gsl_vector_long> -> CLong -> IO ()
+#ccall gsl_vector_long_set_basis , Ptr <gsl_vector_long> -> CSize -> IO CInt
+#ccall gsl_vector_long_set_zero , Ptr <gsl_vector_long> -> IO ()
+#ccall gsl_vector_long_sub , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+-- ccall gsl_vector_long_subvector , Ptr <gsl_vector_long> -> CSize -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_vector_long_subvector_with_stride , Ptr <gsl_vector_long> -> CSize -> CSize -> CSize -> IO <gsl_vector_long_view>
+#ccall gsl_vector_long_swap , Ptr <gsl_vector_long> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_vector_long_swap_elements , Ptr <gsl_vector_long> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_long_view_array , Ptr CLong -> CSize -> IO <gsl_vector_long_view>
+-- ccall gsl_vector_long_view_array_with_stride , Ptr CLong -> CSize -> CSize -> IO <gsl_vector_long_view>
+#ccall gsl_vector_max , Ptr <gsl_vector> -> IO CDouble
+#ccall gsl_vector_max_index , Ptr <gsl_vector> -> IO CSize
+#ccall gsl_vector_memcpy , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_min , Ptr <gsl_vector> -> IO CDouble
+#ccall gsl_vector_min_index , Ptr <gsl_vector> -> IO CSize
+#ccall gsl_vector_minmax , Ptr <gsl_vector> -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_vector_minmax_index , Ptr <gsl_vector> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_mul , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_ptr , Ptr <gsl_vector> -> CSize -> IO (Ptr CDouble)
+#ccall gsl_vector_reverse , Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_scale , Ptr <gsl_vector> -> CDouble -> IO CInt
+#ccall gsl_vector_set , Ptr <gsl_vector> -> CSize -> CDouble -> IO ()
+#ccall gsl_vector_set_all , Ptr <gsl_vector> -> CDouble -> IO ()
+#ccall gsl_vector_set_basis , Ptr <gsl_vector> -> CSize -> IO CInt
+#ccall gsl_vector_set_zero , Ptr <gsl_vector> -> IO ()
+#ccall gsl_vector_short_add , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_add_constant , Ptr <gsl_vector_short> -> CDouble -> IO CInt
+#ccall gsl_vector_short_alloc , CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_alloc_col_from_matrix , Ptr <gsl_matrix_short> -> CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_alloc_from_block , Ptr <gsl_block_short> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_alloc_from_vector , Ptr <gsl_vector_short> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_alloc_row_from_matrix , Ptr <gsl_matrix_short> -> CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_calloc , CSize -> IO (Ptr <gsl_vector_short>)
+#ccall gsl_vector_short_const_ptr , Ptr <gsl_vector_short> -> CSize -> IO (Ptr CShort)
+-- ccall gsl_vector_short_const_subvector , Ptr <gsl_vector_short> -> CSize -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_vector_short_const_subvector_with_stride , Ptr <gsl_vector_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_vector_short_const_view_array , Ptr CShort -> CSize -> IO <gsl_vector_short_const_view>
+-- ccall gsl_vector_short_const_view_array_with_stride , Ptr CShort -> CSize -> CSize -> IO <gsl_vector_short_const_view>
+#ccall gsl_vector_short_div , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_fprintf , Ptr CFile -> Ptr <gsl_vector_short> -> CString -> IO CInt
+#ccall gsl_vector_short_fread , Ptr CFile -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_free , Ptr <gsl_vector_short> -> IO ()
+#ccall gsl_vector_short_fscanf , Ptr CFile -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_fwrite , Ptr CFile -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_get , Ptr <gsl_vector_short> -> CSize -> IO CShort
+#ccall gsl_vector_short_isneg , Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_isnonneg , Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_isnull , Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_ispos , Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_max , Ptr <gsl_vector_short> -> IO CShort
+#ccall gsl_vector_short_max_index , Ptr <gsl_vector_short> -> IO CSize
+#ccall gsl_vector_short_memcpy , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_min , Ptr <gsl_vector_short> -> IO CShort
+#ccall gsl_vector_short_min_index , Ptr <gsl_vector_short> -> IO CSize
+#ccall gsl_vector_short_minmax , Ptr <gsl_vector_short> -> Ptr CShort -> Ptr CShort -> IO ()
+#ccall gsl_vector_short_minmax_index , Ptr <gsl_vector_short> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_short_mul , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_ptr , Ptr <gsl_vector_short> -> CSize -> IO (Ptr CShort)
+#ccall gsl_vector_short_reverse , Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_scale , Ptr <gsl_vector_short> -> CDouble -> IO CInt
+#ccall gsl_vector_short_set , Ptr <gsl_vector_short> -> CSize -> CShort -> IO ()
+#ccall gsl_vector_short_set_all , Ptr <gsl_vector_short> -> CShort -> IO ()
+#ccall gsl_vector_short_set_basis , Ptr <gsl_vector_short> -> CSize -> IO CInt
+#ccall gsl_vector_short_set_zero , Ptr <gsl_vector_short> -> IO ()
+#ccall gsl_vector_short_sub , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+-- ccall gsl_vector_short_subvector , Ptr <gsl_vector_short> -> CSize -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_vector_short_subvector_with_stride , Ptr <gsl_vector_short> -> CSize -> CSize -> CSize -> IO <gsl_vector_short_view>
+#ccall gsl_vector_short_swap , Ptr <gsl_vector_short> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_vector_short_swap_elements , Ptr <gsl_vector_short> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_short_view_array , Ptr CShort -> CSize -> IO <gsl_vector_short_view>
+-- ccall gsl_vector_short_view_array_with_stride , Ptr CShort -> CSize -> CSize -> IO <gsl_vector_short_view>
+#ccall gsl_vector_sub , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+-- ccall gsl_vector_subvector , Ptr <gsl_vector> -> CSize -> CSize -> IO <gsl_vector_view>
+-- ccall gsl_vector_subvector_with_stride , Ptr <gsl_vector> -> CSize -> CSize -> CSize -> IO <gsl_vector_view>
+#ccall gsl_vector_swap , Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_vector_swap_elements , Ptr <gsl_vector> -> CSize -> CSize -> IO CInt
+#ccall gsl_vector_uchar_add , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_add_constant , Ptr <gsl_vector_uchar> -> CDouble -> IO CInt
+#ccall gsl_vector_uchar_alloc , CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_alloc_col_from_matrix , Ptr <gsl_matrix_uchar> -> CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_alloc_from_block , Ptr <gsl_block_uchar> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_alloc_from_vector , Ptr <gsl_vector_uchar> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_alloc_row_from_matrix , Ptr <gsl_matrix_uchar> -> CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_calloc , CSize -> IO (Ptr <gsl_vector_uchar>)
+#ccall gsl_vector_uchar_const_ptr , Ptr <gsl_vector_uchar> -> CSize -> IO (Ptr CUChar)
+-- ccall gsl_vector_uchar_const_subvector , Ptr <gsl_vector_uchar> -> CSize -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_vector_uchar_const_subvector_with_stride , Ptr <gsl_vector_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_vector_uchar_const_view_array , Ptr CUChar -> CSize -> IO <gsl_vector_uchar_const_view>
+-- ccall gsl_vector_uchar_const_view_array_with_stride , Ptr CUChar -> CSize -> CSize -> IO <gsl_vector_uchar_const_view>
+#ccall gsl_vector_uchar_div , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_fprintf , Ptr CFile -> Ptr <gsl_vector_uchar> -> CString -> IO CInt
+#ccall gsl_vector_uchar_fread , Ptr CFile -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_free , Ptr <gsl_vector_uchar> -> IO ()
+#ccall gsl_vector_uchar_fscanf , Ptr CFile -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_fwrite , Ptr CFile -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_get , Ptr <gsl_vector_uchar> -> CSize -> IO CUChar
+#ccall gsl_vector_uchar_isneg , Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_isnonneg , Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_isnull , Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_ispos , Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_max , Ptr <gsl_vector_uchar> -> IO CUChar
+#ccall gsl_vector_uchar_max_index , Ptr <gsl_vector_uchar> -> IO CSize
+#ccall gsl_vector_uchar_memcpy , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_min , Ptr <gsl_vector_uchar> -> IO CUChar
+#ccall gsl_vector_uchar_min_index , Ptr <gsl_vector_uchar> -> IO CSize
+#ccall gsl_vector_uchar_minmax , Ptr <gsl_vector_uchar> -> Ptr CUChar -> Ptr CUChar -> IO ()
+#ccall gsl_vector_uchar_minmax_index , Ptr <gsl_vector_uchar> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_uchar_mul , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_ptr , Ptr <gsl_vector_uchar> -> CSize -> IO (Ptr CUChar)
+#ccall gsl_vector_uchar_reverse , Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_scale , Ptr <gsl_vector_uchar> -> CDouble -> IO CInt
+#ccall gsl_vector_uchar_set , Ptr <gsl_vector_uchar> -> CSize -> CUChar -> IO ()
+#ccall gsl_vector_uchar_set_all , Ptr <gsl_vector_uchar> -> CUChar -> IO ()
+#ccall gsl_vector_uchar_set_basis , Ptr <gsl_vector_uchar> -> CSize -> IO CInt
+#ccall gsl_vector_uchar_set_zero , Ptr <gsl_vector_uchar> -> IO ()
+#ccall gsl_vector_uchar_sub , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+-- ccall gsl_vector_uchar_subvector , Ptr <gsl_vector_uchar> -> CSize -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_vector_uchar_subvector_with_stride , Ptr <gsl_vector_uchar> -> CSize -> CSize -> CSize -> IO <gsl_vector_uchar_view>
+#ccall gsl_vector_uchar_swap , Ptr <gsl_vector_uchar> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_vector_uchar_swap_elements , Ptr <gsl_vector_uchar> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_uchar_view_array , Ptr CUChar -> CSize -> IO <gsl_vector_uchar_view>
+-- ccall gsl_vector_uchar_view_array_with_stride , Ptr CUChar -> CSize -> CSize -> IO <gsl_vector_uchar_view>
+#ccall gsl_vector_uint_add , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_add_constant , Ptr <gsl_vector_uint> -> CDouble -> IO CInt
+#ccall gsl_vector_uint_alloc , CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_alloc_col_from_matrix , Ptr <gsl_matrix_uint> -> CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_alloc_from_block , Ptr <gsl_block_uint> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_alloc_from_vector , Ptr <gsl_vector_uint> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_alloc_row_from_matrix , Ptr <gsl_matrix_uint> -> CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_calloc , CSize -> IO (Ptr <gsl_vector_uint>)
+#ccall gsl_vector_uint_const_ptr , Ptr <gsl_vector_uint> -> CSize -> IO (Ptr CUInt)
+-- ccall gsl_vector_uint_const_subvector , Ptr <gsl_vector_uint> -> CSize -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_vector_uint_const_subvector_with_stride , Ptr <gsl_vector_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_vector_uint_const_view_array , Ptr CUInt -> CSize -> IO <gsl_vector_uint_const_view>
+-- ccall gsl_vector_uint_const_view_array_with_stride , Ptr CUInt -> CSize -> CSize -> IO <gsl_vector_uint_const_view>
+#ccall gsl_vector_uint_div , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_fprintf , Ptr CFile -> Ptr <gsl_vector_uint> -> CString -> IO CInt
+#ccall gsl_vector_uint_fread , Ptr CFile -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_free , Ptr <gsl_vector_uint> -> IO ()
+#ccall gsl_vector_uint_fscanf , Ptr CFile -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_fwrite , Ptr CFile -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_get , Ptr <gsl_vector_uint> -> CSize -> IO CUInt
+#ccall gsl_vector_uint_isneg , Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_isnonneg , Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_isnull , Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_ispos , Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_max , Ptr <gsl_vector_uint> -> IO CUInt
+#ccall gsl_vector_uint_max_index , Ptr <gsl_vector_uint> -> IO CSize
+#ccall gsl_vector_uint_memcpy , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_min , Ptr <gsl_vector_uint> -> IO CUInt
+#ccall gsl_vector_uint_min_index , Ptr <gsl_vector_uint> -> IO CSize
+#ccall gsl_vector_uint_minmax , Ptr <gsl_vector_uint> -> Ptr CUInt -> Ptr CUInt -> IO ()
+#ccall gsl_vector_uint_minmax_index , Ptr <gsl_vector_uint> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_uint_mul , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_ptr , Ptr <gsl_vector_uint> -> CSize -> IO (Ptr CUInt)
+#ccall gsl_vector_uint_reverse , Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_scale , Ptr <gsl_vector_uint> -> CDouble -> IO CInt
+#ccall gsl_vector_uint_set , Ptr <gsl_vector_uint> -> CSize -> CUInt -> IO ()
+#ccall gsl_vector_uint_set_all , Ptr <gsl_vector_uint> -> CUInt -> IO ()
+#ccall gsl_vector_uint_set_basis , Ptr <gsl_vector_uint> -> CSize -> IO CInt
+#ccall gsl_vector_uint_set_zero , Ptr <gsl_vector_uint> -> IO ()
+#ccall gsl_vector_uint_sub , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+-- ccall gsl_vector_uint_subvector , Ptr <gsl_vector_uint> -> CSize -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_vector_uint_subvector_with_stride , Ptr <gsl_vector_uint> -> CSize -> CSize -> CSize -> IO <gsl_vector_uint_view>
+#ccall gsl_vector_uint_swap , Ptr <gsl_vector_uint> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_vector_uint_swap_elements , Ptr <gsl_vector_uint> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_uint_view_array , Ptr CUInt -> CSize -> IO <gsl_vector_uint_view>
+-- ccall gsl_vector_uint_view_array_with_stride , Ptr CUInt -> CSize -> CSize -> IO <gsl_vector_uint_view>
+#ccall gsl_vector_ulong_add , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_add_constant , Ptr <gsl_vector_ulong> -> CDouble -> IO CInt
+#ccall gsl_vector_ulong_alloc , CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_alloc_col_from_matrix , Ptr <gsl_matrix_ulong> -> CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_alloc_from_block , Ptr <gsl_block_ulong> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_alloc_from_vector , Ptr <gsl_vector_ulong> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_alloc_row_from_matrix , Ptr <gsl_matrix_ulong> -> CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_calloc , CSize -> IO (Ptr <gsl_vector_ulong>)
+#ccall gsl_vector_ulong_const_ptr , Ptr <gsl_vector_ulong> -> CSize -> IO (Ptr CULong)
+-- ccall gsl_vector_ulong_const_subvector , Ptr <gsl_vector_ulong> -> CSize -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_vector_ulong_const_subvector_with_stride , Ptr <gsl_vector_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_vector_ulong_const_view_array , Ptr CULong -> CSize -> IO <gsl_vector_ulong_const_view>
+-- ccall gsl_vector_ulong_const_view_array_with_stride , Ptr CULong -> CSize -> CSize -> IO <gsl_vector_ulong_const_view>
+#ccall gsl_vector_ulong_div , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_fprintf , Ptr CFile -> Ptr <gsl_vector_ulong> -> CString -> IO CInt
+#ccall gsl_vector_ulong_fread , Ptr CFile -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_free , Ptr <gsl_vector_ulong> -> IO ()
+#ccall gsl_vector_ulong_fscanf , Ptr CFile -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_fwrite , Ptr CFile -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_get , Ptr <gsl_vector_ulong> -> CSize -> IO CULong
+#ccall gsl_vector_ulong_isneg , Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_isnonneg , Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_isnull , Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_ispos , Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_max , Ptr <gsl_vector_ulong> -> IO CULong
+#ccall gsl_vector_ulong_max_index , Ptr <gsl_vector_ulong> -> IO CSize
+#ccall gsl_vector_ulong_memcpy , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_min , Ptr <gsl_vector_ulong> -> IO CULong
+#ccall gsl_vector_ulong_min_index , Ptr <gsl_vector_ulong> -> IO CSize
+#ccall gsl_vector_ulong_minmax , Ptr <gsl_vector_ulong> -> Ptr CULong -> Ptr CULong -> IO ()
+#ccall gsl_vector_ulong_minmax_index , Ptr <gsl_vector_ulong> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_ulong_mul , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_ptr , Ptr <gsl_vector_ulong> -> CSize -> IO (Ptr CULong)
+#ccall gsl_vector_ulong_reverse , Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_scale , Ptr <gsl_vector_ulong> -> CDouble -> IO CInt
+#ccall gsl_vector_ulong_set , Ptr <gsl_vector_ulong> -> CSize -> CULong -> IO ()
+#ccall gsl_vector_ulong_set_all , Ptr <gsl_vector_ulong> -> CULong -> IO ()
+#ccall gsl_vector_ulong_set_basis , Ptr <gsl_vector_ulong> -> CSize -> IO CInt
+#ccall gsl_vector_ulong_set_zero , Ptr <gsl_vector_ulong> -> IO ()
+#ccall gsl_vector_ulong_sub , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+-- ccall gsl_vector_ulong_subvector , Ptr <gsl_vector_ulong> -> CSize -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_vector_ulong_subvector_with_stride , Ptr <gsl_vector_ulong> -> CSize -> CSize -> CSize -> IO <gsl_vector_ulong_view>
+#ccall gsl_vector_ulong_swap , Ptr <gsl_vector_ulong> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_vector_ulong_swap_elements , Ptr <gsl_vector_ulong> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_ulong_view_array , Ptr CULong -> CSize -> IO <gsl_vector_ulong_view>
+-- ccall gsl_vector_ulong_view_array_with_stride , Ptr CULong -> CSize -> CSize -> IO <gsl_vector_ulong_view>
+#ccall gsl_vector_ushort_add , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_add_constant , Ptr <gsl_vector_ushort> -> CDouble -> IO CInt
+#ccall gsl_vector_ushort_alloc , CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_alloc_col_from_matrix , Ptr <gsl_matrix_ushort> -> CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_alloc_from_block , Ptr <gsl_block_ushort> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_alloc_from_vector , Ptr <gsl_vector_ushort> -> CSize -> CSize -> CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_alloc_row_from_matrix , Ptr <gsl_matrix_ushort> -> CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_calloc , CSize -> IO (Ptr <gsl_vector_ushort>)
+#ccall gsl_vector_ushort_const_ptr , Ptr <gsl_vector_ushort> -> CSize -> IO (Ptr CUShort)
+-- ccall gsl_vector_ushort_const_subvector , Ptr <gsl_vector_ushort> -> CSize -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_vector_ushort_const_subvector_with_stride , Ptr <gsl_vector_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_vector_ushort_const_view_array , Ptr CUShort -> CSize -> IO <gsl_vector_ushort_const_view>
+-- ccall gsl_vector_ushort_const_view_array_with_stride , Ptr CUShort -> CSize -> CSize -> IO <gsl_vector_ushort_const_view>
+#ccall gsl_vector_ushort_div , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_fprintf , Ptr CFile -> Ptr <gsl_vector_ushort> -> CString -> IO CInt
+#ccall gsl_vector_ushort_fread , Ptr CFile -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_free , Ptr <gsl_vector_ushort> -> IO ()
+#ccall gsl_vector_ushort_fscanf , Ptr CFile -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_fwrite , Ptr CFile -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_get , Ptr <gsl_vector_ushort> -> CSize -> IO CUShort
+#ccall gsl_vector_ushort_isneg , Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_isnonneg , Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_isnull , Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_ispos , Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_max , Ptr <gsl_vector_ushort> -> IO CUShort
+#ccall gsl_vector_ushort_max_index , Ptr <gsl_vector_ushort> -> IO CSize
+#ccall gsl_vector_ushort_memcpy , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_min , Ptr <gsl_vector_ushort> -> IO CUShort
+#ccall gsl_vector_ushort_min_index , Ptr <gsl_vector_ushort> -> IO CSize
+#ccall gsl_vector_ushort_minmax , Ptr <gsl_vector_ushort> -> Ptr CUShort -> Ptr CUShort -> IO ()
+#ccall gsl_vector_ushort_minmax_index , Ptr <gsl_vector_ushort> -> Ptr CSize -> Ptr CSize -> IO ()
+#ccall gsl_vector_ushort_mul , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_ptr , Ptr <gsl_vector_ushort> -> CSize -> IO (Ptr CUShort)
+#ccall gsl_vector_ushort_reverse , Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_scale , Ptr <gsl_vector_ushort> -> CDouble -> IO CInt
+#ccall gsl_vector_ushort_set , Ptr <gsl_vector_ushort> -> CSize -> CUShort -> IO ()
+#ccall gsl_vector_ushort_set_all , Ptr <gsl_vector_ushort> -> CUShort -> IO ()
+#ccall gsl_vector_ushort_set_basis , Ptr <gsl_vector_ushort> -> CSize -> IO CInt
+#ccall gsl_vector_ushort_set_zero , Ptr <gsl_vector_ushort> -> IO ()
+#ccall gsl_vector_ushort_sub , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+-- ccall gsl_vector_ushort_subvector , Ptr <gsl_vector_ushort> -> CSize -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_vector_ushort_subvector_with_stride , Ptr <gsl_vector_ushort> -> CSize -> CSize -> CSize -> IO <gsl_vector_ushort_view>
+#ccall gsl_vector_ushort_swap , Ptr <gsl_vector_ushort> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_vector_ushort_swap_elements , Ptr <gsl_vector_ushort> -> CSize -> CSize -> IO CInt
+-- ccall gsl_vector_ushort_view_array , Ptr CUShort -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_vector_ushort_view_array_with_stride , Ptr CUShort -> CSize -> CSize -> IO <gsl_vector_ushort_view>
+-- ccall gsl_vector_view_array , Ptr CDouble -> CSize -> IO <gsl_vector_view>
+-- ccall gsl_vector_view_array_with_stride , Ptr CDouble -> CSize -> CSize -> IO <gsl_vector_view>
diff --git a/src/Bindings/Gsl/Version.hsc b/src/Bindings/Gsl/Version.hsc
--- a/src/Bindings/Gsl/Version.hsc
+++ b/src/Bindings/Gsl/Version.hsc
@@ -1,4 +1,4 @@
-#include <bindings.macros.h>
+#include <bindings.dsl.h>
 #include <gsl/gsl_version.h>
 
 module Bindings.Gsl.Version where
diff --git a/src/Bindings/Gsl/WaveletTransforms.hsc b/src/Bindings/Gsl/WaveletTransforms.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/WaveletTransforms.hsc
@@ -0,0 +1,63 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_wavelet.h>
+#include <gsl/gsl_wavelet2d.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Wavelet-Transforms.html>
+
+module Bindings.Gsl.WaveletTransforms where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#integral_t gsl_wavelet_direction
+
+#num gsl_wavelet_forward
+#num gsl_wavelet_backward
+
+#starttype gsl_wavelet_type
+#field name , CString
+#field init , FunPtr ( Ptr (Ptr CDouble) -> Ptr (Ptr CDouble) -> Ptr (Ptr CDouble) -> Ptr (Ptr CDouble) -> Ptr CSize -> Ptr CSize -> CSize -> IO  CInt)
+#stoptype
+
+#starttype gsl_wavelet
+#field type , Ptr <gsl_wavelet_type>
+#field h1 , Ptr CDouble
+#field g1 , Ptr CDouble
+#field h2 , Ptr CDouble
+#field g2 , Ptr CDouble
+#field nc , CSize
+#field offset , CSize
+#stoptype
+
+#starttype gsl_wavelet_workspace
+#field scratch , Ptr CDouble
+#field n , CSize
+#stoptype
+
+#globalvar gsl_wavelet_daubechies , Ptr gsl_wavelet_type
+#globalvar gsl_wavelet_daubechies_centered , Ptr gsl_wavelet_type
+#globalvar gsl_wavelet_haar , Ptr gsl_wavelet_type
+#globalvar gsl_wavelet_haar_centered , Ptr gsl_wavelet_type
+#globalvar gsl_wavelet_bspline , Ptr gsl_wavelet_type
+#globalvar gsl_wavelet_bspline_centered , Ptr gsl_wavelet_type
+
+#ccall gsl_wavelet_alloc , Ptr <gsl_wavelet_type> -> CSize -> IO (Ptr <gsl_wavelet>)
+#ccall gsl_wavelet_free , Ptr <gsl_wavelet> -> IO ()
+#ccall gsl_wavelet_name , Ptr <gsl_wavelet> -> IO CString
+#ccall gsl_wavelet_workspace_alloc , CSize -> IO (Ptr <gsl_wavelet_workspace>)
+#ccall gsl_wavelet_workspace_free , Ptr <gsl_wavelet_workspace> -> IO ()
+#ccall gsl_wavelet_transform , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> <gsl_wavelet_direction> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet_transform_forward , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet_transform_inverse , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> <gsl_wavelet_direction> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform_forward , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform_inverse , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> <gsl_wavelet_direction> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform_forward , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform_inverse , Ptr <gsl_wavelet> -> Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform_matrix , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> <gsl_wavelet_direction> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform_matrix_forward , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_transform_matrix_inverse , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform_matrix , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> <gsl_wavelet_direction> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform_matrix_forward , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+#ccall gsl_wavelet2d_nstransform_matrix_inverse , Ptr <gsl_wavelet> -> Ptr <gsl_matrix> -> Ptr <gsl_wavelet_workspace> -> IO CInt
+
diff --git a/src/inlines.c b/src/inlines.c
--- a/src/inlines.c
+++ b/src/inlines.c
@@ -1,40 +1,17 @@
+#include <bindings.cmacros.h>
 #include <gsl/gsl_version.h>
-
-const char *array_gsl_version(void)
-{
-  return gsl_version;
-}
-
 #include <gsl/gsl_mode.h>
-
-unsigned int inline_GSL_MODE_PREC(gsl_mode_t mt)
-{
-  return GSL_MODE_PREC(mt);
-}
-
+#include <gsl/gsl_multifit.h>
 #include <gsl/gsl_multifit_nlin.h>
-
-void inline_GSL_MULTIFIT_FN_EVAL (gsl_multifit_function *f,
-  gsl_vector *x, gsl_vector *y)
-{
-  return GSL_MULTIFIT_FN_EVAL (f,x,y);
-}
-
-int inline_GSL_MULTIFIT_FN_EVAL_F (gsl_multifit_function_fdf *f,
-  gsl_vector *x, gsl_vector *y)
-{
-  return GSL_MULTIFIT_FN_EVAL_F (f,x,y);
-}
-
-int inline_GSL_MULTIFIT_FN_EVAL_DF (gsl_multifit_function_fdf *f,
-  gsl_vector *x, gsl_matrix *dy)
-{
-  return GSL_MULTIFIT_FN_EVAL_DF (f,x,dy);
-}
+#include <gsl/gsl_vector_complex.h>
 
-int inline_GSL_MULTIFIT_FN_EVAL_F_DF (gsl_multifit_function_fdf *f,
-  gsl_vector *x, gsl_vector *y, gsl_matrix *dy)
-{
-  return GSL_MULTIFIT_FN_EVAL_F_DF (f,x,y,dy);
-}
+BC_GLOBALARRAY(gsl_version,char)
+BC_INLINE1(GSL_MODE_PREC,gsl_mode_t,unsigned)
+BC_INLINE3VOID(GSL_MULTIFIT_FN_EVAL,gsl_multifit_function*,gsl_vector*,gsl_vector*)
+BC_INLINE3(GSL_MULTIFIT_FN_EVAL_F,gsl_multifit_function_fdf*,gsl_vector*,gsl_vector*,int)
+BC_INLINE3(GSL_MULTIFIT_FN_EVAL_DF,gsl_multifit_function_fdf*,gsl_vector*,gsl_matrix*,int)
+BC_INLINE4(GSL_MULTIFIT_FN_EVAL_F_DF,gsl_multifit_function_fdf*,gsl_vector*,gsl_vector*,gsl_matrix*,int)
+BC_INLINE2(GSL_COMPLEX_AT,gsl_vector_complex*,size_t,gsl_complex*)
+BC_INLINE2(GSL_COMPLEX_FLOAT_AT,gsl_vector_complex_float*,size_t,gsl_complex_float*)
+BC_INLINE2(GSL_COMPLEX_LONG_DOUBLE_AT,gsl_vector_complex_long_double*,size_t,gsl_complex_long_double*)
 
