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.1
+version: 0.1.1
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
@@ -20,24 +20,43 @@
     bindings-DSL >= 1.0 && < 1.1
   exposed-modules:
     Bindings.Gsl
+    Bindings.Gsl.BasisSplines
     Bindings.Gsl.BlasSupport
     Bindings.Gsl.Cblas
+    Bindings.Gsl.ChebyshevApproximations
+    Bindings.Gsl.Combinations
     Bindings.Gsl.ComplexNumbers
     Bindings.Gsl.DiscreteHankelTransforms
     Bindings.Gsl.Eigensystems
+    Bindings.Gsl.ErrorHandling
     Bindings.Gsl.FastFourierTransforms
     Bindings.Gsl.Histograms
     Bindings.Gsl.IeeeFloatingPointArithmetic
+    Bindings.Gsl.Interpolation
     Bindings.Gsl.LeastSquaresFitting
+    Bindings.Gsl.LinearAlgebra
+    Bindings.Gsl.MathematicalFunctions
+    Bindings.Gsl.MonteCarloIntegration
+    Bindings.Gsl.MultidimensionalMinimization
+    Bindings.Gsl.MultidimensionalRootFinding
     Bindings.Gsl.NonlinearLeastSquaresFitting
     Bindings.Gsl.NTuples
+    Bindings.Gsl.NumericalDifferentiation
+    Bindings.Gsl.NumericalIntegration
+    Bindings.Gsl.OneDimensionalMinimization
+    Bindings.Gsl.OneDimensionalRootFinding
+    Bindings.Gsl.OrdinaryDifferentialEquations
+    Bindings.Gsl.Permutations
     Bindings.Gsl.PhysicalConstants
     Bindings.Gsl.Polynomials
     Bindings.Gsl.QuasiRandomSequences
     Bindings.Gsl.RandomNumberDistributions
     Bindings.Gsl.RandomNumberGeneration
+    Bindings.Gsl.SeriesAcceleration
+    Bindings.Gsl.SimulatedAnnealing
     Bindings.Gsl.Sorting
     Bindings.Gsl.SpecialFunctions
+    Bindings.Gsl.Statistics
     Bindings.Gsl.VectorsAndMatrices
     Bindings.Gsl.VectorsAndMatrices.Blocks
     Bindings.Gsl.VectorsAndMatrices.DataTypes
diff --git a/src/Bindings/Gsl.hs b/src/Bindings/Gsl.hs
--- a/src/Bindings/Gsl.hs
+++ b/src/Bindings/Gsl.hs
@@ -1,1 +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}
+module Bindings.Gsl (module Bindings.Gsl.BasisSplines,module Bindings.Gsl.BlasSupport,module Bindings.Gsl.Cblas,module Bindings.Gsl.ChebyshevApproximations,module Bindings.Gsl.Combinations,module Bindings.Gsl.ComplexNumbers,module Bindings.Gsl.DiscreteHankelTransforms,module Bindings.Gsl.Eigensystems,module Bindings.Gsl.ErrorHandling,module Bindings.Gsl.FastFourierTransforms,module Bindings.Gsl.Histograms,module Bindings.Gsl.IeeeFloatingPointArithmetic,module Bindings.Gsl.Interpolation,module Bindings.Gsl.LeastSquaresFitting,module Bindings.Gsl.LinearAlgebra,module Bindings.Gsl.MathematicalFunctions,module Bindings.Gsl.MonteCarloIntegration,module Bindings.Gsl.MultidimensionalMinimization,module Bindings.Gsl.MultidimensionalRootFinding,module Bindings.Gsl.NonlinearLeastSquaresFitting,module Bindings.Gsl.NTuples,module Bindings.Gsl.NumericalDifferentiation,module Bindings.Gsl.NumericalIntegration,module Bindings.Gsl.OneDimensionalMinimization,module Bindings.Gsl.OneDimensionalRootFinding,module Bindings.Gsl.OrdinaryDifferentialEquations,module Bindings.Gsl.Permutations,module Bindings.Gsl.PhysicalConstants,module Bindings.Gsl.Polynomials,module Bindings.Gsl.QuasiRandomSequences,module Bindings.Gsl.RandomNumberDistributions,module Bindings.Gsl.RandomNumberGeneration,module Bindings.Gsl.SeriesAcceleration,module Bindings.Gsl.SimulatedAnnealing,module Bindings.Gsl.Sorting,module Bindings.Gsl.SpecialFunctions,module Bindings.Gsl.Statistics,module Bindings.Gsl.VectorsAndMatrices,module Bindings.Gsl.Version,module Bindings.Gsl.WaveletTransforms) where {import Bindings.Gsl.BasisSplines;import Bindings.Gsl.BlasSupport;import Bindings.Gsl.Cblas;import Bindings.Gsl.ChebyshevApproximations;import Bindings.Gsl.Combinations;import Bindings.Gsl.ComplexNumbers;import Bindings.Gsl.DiscreteHankelTransforms;import Bindings.Gsl.Eigensystems;import Bindings.Gsl.ErrorHandling;import Bindings.Gsl.FastFourierTransforms;import Bindings.Gsl.Histograms;import Bindings.Gsl.IeeeFloatingPointArithmetic;import Bindings.Gsl.Interpolation;import Bindings.Gsl.LeastSquaresFitting;import Bindings.Gsl.LinearAlgebra;import Bindings.Gsl.MathematicalFunctions;import Bindings.Gsl.MonteCarloIntegration;import Bindings.Gsl.MultidimensionalMinimization;import Bindings.Gsl.MultidimensionalRootFinding;import Bindings.Gsl.NonlinearLeastSquaresFitting;import Bindings.Gsl.NTuples;import Bindings.Gsl.NumericalDifferentiation;import Bindings.Gsl.NumericalIntegration;import Bindings.Gsl.OneDimensionalMinimization;import Bindings.Gsl.OneDimensionalRootFinding;import Bindings.Gsl.OrdinaryDifferentialEquations;import Bindings.Gsl.Permutations;import Bindings.Gsl.PhysicalConstants;import Bindings.Gsl.Polynomials;import Bindings.Gsl.QuasiRandomSequences;import Bindings.Gsl.RandomNumberDistributions;import Bindings.Gsl.RandomNumberGeneration;import Bindings.Gsl.SeriesAcceleration;import Bindings.Gsl.SimulatedAnnealing;import Bindings.Gsl.Sorting;import Bindings.Gsl.SpecialFunctions;import Bindings.Gsl.Statistics;import Bindings.Gsl.VectorsAndMatrices;import Bindings.Gsl.Version;import Bindings.Gsl.WaveletTransforms}
diff --git a/src/Bindings/Gsl/BasisSplines.hsc b/src/Bindings/Gsl/BasisSplines.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/BasisSplines.hsc
@@ -0,0 +1,42 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_bspline.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Basis-Splines.html>
+
+module Bindings.Gsl.BasisSplines where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#starttype gsl_bspline_workspace
+#field k , CSize
+#field km1 , CSize
+#field l , CSize
+#field nbreak , CSize
+#field n , CSize
+#field knots , Ptr <gsl_vector>
+#field deltal , Ptr <gsl_vector>
+#field deltar , Ptr <gsl_vector>
+#field B , Ptr <gsl_vector>
+#stoptype
+
+#starttype gsl_bspline_deriv_workspace
+#field k , CSize
+#field A , Ptr <gsl_matrix>
+#field dB , Ptr <gsl_matrix>
+#stoptype
+
+#ccall gsl_bspline_alloc , CSize -> CSize -> IO (Ptr <gsl_bspline_workspace>)
+#ccall gsl_bspline_free , Ptr <gsl_bspline_workspace> -> IO ()
+#ccall gsl_bspline_ncoeffs , Ptr <gsl_bspline_workspace> -> IO CSize
+#ccall gsl_bspline_order , Ptr <gsl_bspline_workspace> -> IO CSize
+#ccall gsl_bspline_nbreak , Ptr <gsl_bspline_workspace> -> IO CSize
+#ccall gsl_bspline_breakpoint , CSize -> Ptr <gsl_bspline_workspace> -> IO CDouble
+#ccall gsl_bspline_knots , Ptr <gsl_vector> -> Ptr <gsl_bspline_workspace> -> IO CInt
+#ccall gsl_bspline_knots_uniform , CDouble -> CDouble -> Ptr <gsl_bspline_workspace> -> IO CInt
+#ccall gsl_bspline_eval , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_bspline_workspace> -> IO CInt
+#ccall gsl_bspline_eval_nonzero , CDouble -> Ptr <gsl_vector> -> Ptr CSize -> Ptr CSize -> Ptr <gsl_bspline_workspace> -> IO CInt
+#ccall gsl_bspline_deriv_alloc , CSize -> IO (Ptr <gsl_bspline_deriv_workspace>)
+#ccall gsl_bspline_deriv_free , Ptr <gsl_bspline_deriv_workspace> -> IO ()
+#ccall gsl_bspline_deriv_eval , CDouble -> CSize -> Ptr <gsl_matrix> -> Ptr <gsl_bspline_workspace> -> Ptr <gsl_bspline_deriv_workspace> -> IO CInt
+#ccall gsl_bspline_deriv_eval_nonzero , CDouble -> CSize -> Ptr <gsl_matrix> -> Ptr CSize -> Ptr CSize -> Ptr <gsl_bspline_workspace> -> Ptr <gsl_bspline_deriv_workspace> -> IO CInt
+
diff --git a/src/Bindings/Gsl/ChebyshevApproximations.hsc b/src/Bindings/Gsl/ChebyshevApproximations.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/ChebyshevApproximations.hsc
@@ -0,0 +1,34 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_chebyshev.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Chebyshev-Approximations.html>
+
+module Bindings.Gsl.ChebyshevApproximations where
+#strict_import
+import Bindings.Gsl.SpecialFunctions
+import Bindings.Gsl.MathematicalFunctions
+
+#starttype gsl_cheb_series
+#field c , Ptr CDouble
+#field order , CSize
+#field a , CDouble
+#field b , CDouble
+#field order_sp , CSize
+#field f , Ptr CDouble
+#stoptype
+
+#ccall gsl_cheb_alloc , CSize -> IO (Ptr <gsl_cheb_series>)
+#ccall gsl_cheb_free , Ptr <gsl_cheb_series> -> IO ()
+#ccall gsl_cheb_init , Ptr <gsl_cheb_series> -> Ptr <gsl_function> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_cheb_order , Ptr <gsl_cheb_series> -> IO CSize
+#ccall gsl_cheb_size , Ptr <gsl_cheb_series> -> IO CSize
+#ccall gsl_cheb_coeffs , Ptr <gsl_cheb_series> -> IO (Ptr CDouble)
+#ccall gsl_cheb_eval , Ptr <gsl_cheb_series> -> CDouble -> IO CDouble
+#ccall gsl_cheb_eval_err , Ptr <gsl_cheb_series> -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_cheb_eval_n , Ptr <gsl_cheb_series> -> CSize -> CDouble -> IO CDouble
+#ccall gsl_cheb_eval_n_err , Ptr <gsl_cheb_series> -> CSize -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_cheb_eval_mode , Ptr <gsl_cheb_series> -> CDouble -> <gsl_mode_t> -> IO CDouble
+#ccall gsl_cheb_eval_mode_e , Ptr <gsl_cheb_series> -> CDouble -> <gsl_mode_t> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_cheb_calc_deriv , Ptr <gsl_cheb_series> -> Ptr <gsl_cheb_series> -> IO CInt
+#ccall gsl_cheb_calc_integ , Ptr <gsl_cheb_series> -> Ptr <gsl_cheb_series> -> IO CInt
+
diff --git a/src/Bindings/Gsl/Combinations.hsc b/src/Bindings/Gsl/Combinations.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Combinations.hsc
@@ -0,0 +1,32 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_combination.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Combinations.html>
+
+module Bindings.Gsl.Combinations where
+#strict_import
+
+#starttype gsl_combination
+#field n , CSize
+#field k , CSize
+#field data , Ptr CSize
+#stoptype
+
+#ccall gsl_combination_alloc , CSize -> CSize -> IO (Ptr <gsl_combination>)
+#ccall gsl_combination_calloc , CSize -> CSize -> IO (Ptr <gsl_combination>)
+#ccall gsl_combination_init_first , Ptr <gsl_combination> -> IO ()
+#ccall gsl_combination_init_last , Ptr <gsl_combination> -> IO ()
+#ccall gsl_combination_free , Ptr <gsl_combination> -> IO ()
+#ccall gsl_combination_memcpy , Ptr <gsl_combination> -> Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_fread , Ptr CFile -> Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_fwrite , Ptr CFile -> Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_fscanf , Ptr CFile -> Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_fprintf , Ptr CFile -> Ptr <gsl_combination> -> CString -> IO CInt
+#ccall gsl_combination_n , Ptr <gsl_combination> -> IO CSize
+#ccall gsl_combination_k , Ptr <gsl_combination> -> IO CSize
+#ccall gsl_combination_data , Ptr <gsl_combination> -> IO (Ptr CSize)
+#ccall gsl_combination_valid , Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_next , Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_prev , Ptr <gsl_combination> -> IO CInt
+#ccall gsl_combination_get , Ptr <gsl_combination> -> CSize -> IO CSize
+
diff --git a/src/Bindings/Gsl/ErrorHandling.hsc b/src/Bindings/Gsl/ErrorHandling.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/ErrorHandling.hsc
@@ -0,0 +1,60 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_errno.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Error-Handling.html>
+
+module Bindings.Gsl.ErrorHandling where
+#strict_import
+
+#num GSL_SUCCESS
+#num GSL_FAILURE
+#num GSL_CONTINUE
+#num GSL_EDOM
+#num GSL_ERANGE
+#num GSL_EFAULT
+#num GSL_EINVAL
+#num GSL_EFAILED
+#num GSL_EFACTOR
+#num GSL_ESANITY
+#num GSL_ENOMEM
+#num GSL_EBADFUNC
+#num GSL_ERUNAWAY
+#num GSL_EMAXITER
+#num GSL_EZERODIV
+#num GSL_EBADTOL
+#num GSL_ETOL
+#num GSL_EUNDRFLW
+#num GSL_EOVRFLW
+#num GSL_ELOSS
+#num GSL_EROUND
+#num GSL_EBADLEN
+#num GSL_ENOTSQR
+#num GSL_ESING
+#num GSL_EDIVERGE
+#num GSL_EUNSUP
+#num GSL_EUNIMPL
+#num GSL_ECACHE
+#num GSL_ETABLE
+#num GSL_ENOPROG
+#num GSL_ENOPROGJ
+#num GSL_ETOLF
+#num GSL_ETOLX
+#num GSL_ETOLG
+#num GSL_EOF
+
+#ccall gsl_error , CString -> CString -> CInt -> CInt -> CInt -> IO ()
+#ccall gsl_stream_printf , CString -> CString -> CInt -> CInt -> CString -> IO ()
+#ccall gsl_strerror , CInt -> IO CString 
+#callback gsl_error_handler_t , CString -> CString -> CInt -> CInt -> CInt -> IO ()
+#callback gsl_stream_handler_t , CString -> CString -> CInt -> CInt -> CString -> IO ()
+#ccall gsl_set_error_handler , Ptr <gsl_error_handler_t> -> IO (Ptr <gsl_error_handler_t>)
+#ccall gsl_set_error_handler_off , IO (Ptr <gsl_error_handler_t>)
+#ccall gsl_set_stream_handler , Ptr <gsl_stream_handler_t> -> IO (Ptr <gsl_stream_handler_t>)
+#ccall gsl_set_stream , Ptr CFile -> IO (Ptr CFile)
+
+#cinline GSL_ERROR_SELECT_2 , CInt -> CInt -> CInt
+#cinline GSL_ERROR_SELECT_3 , CInt -> CInt -> CInt -> CInt
+#cinline GSL_ERROR_SELECT_4 , CInt -> CInt -> CInt -> CInt -> CInt
+#cinline GSL_ERROR_SELECT_5 , CInt -> CInt -> CInt -> CInt -> CInt -> CInt
+#cinline GSL_STATUS_UPDATE , Ptr CInt -> CInt -> IO ()
+
diff --git a/src/Bindings/Gsl/FastFourierTransforms.hsc b/src/Bindings/Gsl/FastFourierTransforms.hsc
--- a/src/Bindings/Gsl/FastFourierTransforms.hsc
+++ b/src/Bindings/Gsl/FastFourierTransforms.hsc
@@ -1,13 +1,168 @@
 #include <bindings.dsl.h>
 #include <gsl/gsl_fft.h>
+#include <gsl/gsl_fft_complex_float.h>
+#include <gsl/gsl_fft_complex.h>
+#include <gsl/gsl_fft_halfcomplex_float.h>
+#include <gsl/gsl_fft_halfcomplex.h>
+#include <gsl/gsl_fft_real_float.h>
+#include <gsl/gsl_fft_real.h>
 
 -- | <http://www.gnu.org/software/gsl/manual/html_node/Fast-Fourier-Transforms.html>
 
 module Bindings.Gsl.FastFourierTransforms where
 #strict_import
+import Bindings.Gsl.ComplexNumbers
 
 #integral_t gsl_fft_direction
 
 #num gsl_fft_forward
 #num gsl_fft_backward
+
+
+#ccall gsl_fft_complex_float_radix2_forward , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_backward , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_inverse , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_transform , <gsl_complex_packed_array_float> -> CSize -> CSize -> <gsl_fft_direction> -> IO CInt
+#ccall gsl_fft_complex_float_radix2_dif_forward , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_dif_backward , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_dif_inverse , <gsl_complex_packed_array_float> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_float_radix2_dif_transform , <gsl_complex_packed_array_float> -> CSize -> CSize -> <gsl_fft_direction> -> IO CInt
+
+#starttype gsl_fft_complex_wavetable_float
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#array_field twiddle , Ptr <gsl_complex_float>
+#field trig , Ptr <gsl_complex_float>
+#stoptype
+
+
+#starttype gsl_fft_complex_workspace_float
+#field n , CSize
+#field scratch , Ptr CFloat
+#stoptype
+
+#ccall gsl_fft_complex_wavetable_float_alloc , CSize -> IO (Ptr <gsl_fft_complex_wavetable_float>)
+#ccall gsl_fft_complex_wavetable_float_free , Ptr <gsl_fft_complex_wavetable_float> -> IO ()
+#ccall gsl_fft_complex_workspace_float_alloc , CSize -> IO (Ptr <gsl_fft_complex_workspace_float>)
+#ccall gsl_fft_complex_workspace_float_free , Ptr <gsl_fft_complex_workspace_float> -> IO ()
+#ccall gsl_fft_complex_float_memcpy , Ptr <gsl_fft_complex_wavetable_float> -> Ptr <gsl_fft_complex_wavetable_float> -> IO CInt
+#ccall gsl_fft_complex_float_forward , <gsl_complex_packed_array_float> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable_float> -> Ptr <gsl_fft_complex_workspace_float> -> IO CInt
+#ccall gsl_fft_complex_float_backward , <gsl_complex_packed_array_float> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable_float> -> Ptr <gsl_fft_complex_workspace_float> -> IO CInt
+#ccall gsl_fft_complex_float_inverse , <gsl_complex_packed_array_float> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable_float> -> Ptr <gsl_fft_complex_workspace_float> -> IO CInt
+#ccall gsl_fft_complex_float_transform , <gsl_complex_packed_array_float> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable_float> -> Ptr <gsl_fft_complex_workspace_float> -> <gsl_fft_direction> -> IO CInt
+#ccall gsl_fft_complex_radix2_forward , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_backward , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_inverse , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_transform , <gsl_complex_packed_array> -> CSize -> CSize -> <gsl_fft_direction> -> IO CInt
+#ccall gsl_fft_complex_radix2_dif_forward , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_dif_backward , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_dif_inverse , <gsl_complex_packed_array> -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_complex_radix2_dif_transform , <gsl_complex_packed_array> -> CSize -> CSize -> <gsl_fft_direction> -> IO CInt
+
+#starttype gsl_fft_complex_wavetable
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#array_field twiddle , Ptr <gsl_complex>
+#field trig , Ptr <gsl_complex>
+#stoptype
+
+
+#starttype gsl_fft_complex_workspace
+#field n , CSize
+#field scratch , Ptr CDouble
+#stoptype
+
+#ccall gsl_fft_complex_wavetable_alloc , CSize -> IO (Ptr <gsl_fft_complex_wavetable>)
+#ccall gsl_fft_complex_wavetable_free , Ptr <gsl_fft_complex_wavetable> -> IO ()
+#ccall gsl_fft_complex_workspace_alloc , CSize -> IO (Ptr <gsl_fft_complex_workspace>)
+#ccall gsl_fft_complex_workspace_free , Ptr <gsl_fft_complex_workspace> -> IO ()
+#ccall gsl_fft_complex_memcpy , Ptr <gsl_fft_complex_wavetable> -> Ptr <gsl_fft_complex_wavetable> -> IO CInt
+#ccall gsl_fft_complex_forward , <gsl_complex_packed_array> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable> -> Ptr <gsl_fft_complex_workspace> -> IO CInt
+#ccall gsl_fft_complex_backward , <gsl_complex_packed_array> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable> -> Ptr <gsl_fft_complex_workspace> -> IO CInt
+#ccall gsl_fft_complex_inverse , <gsl_complex_packed_array> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable> -> Ptr <gsl_fft_complex_workspace> -> IO CInt
+#ccall gsl_fft_complex_transform , <gsl_complex_packed_array> -> CSize -> CSize -> Ptr <gsl_fft_complex_wavetable> -> Ptr <gsl_fft_complex_workspace> -> <gsl_fft_direction> -> IO CInt
+#ccall gsl_fft_halfcomplex_float_radix2_backward , Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_float_radix2_inverse , Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_float_radix2_transform , Ptr CFloat -> CSize -> CSize -> IO CInt
+
+#starttype gsl_fft_halfcomplex_wavetable_float
+#array_field twiddle , Ptr <gsl_complex_float>
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#field trig , Ptr <gsl_complex_float>
+#stoptype
+
+#ccall gsl_fft_halfcomplex_wavetable_float_alloc , CSize -> IO (Ptr <gsl_fft_halfcomplex_wavetable_float>)
+#ccall gsl_fft_halfcomplex_wavetable_float_free , Ptr <gsl_fft_halfcomplex_wavetable_float> -> IO ()
+#ccall gsl_fft_halfcomplex_float_backward , Ptr CFloat -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable_float> -> Ptr <gsl_fft_real_workspace_float> -> IO CInt
+#ccall gsl_fft_halfcomplex_float_inverse , Ptr CFloat -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable_float> -> Ptr <gsl_fft_real_workspace_float> -> IO CInt
+#ccall gsl_fft_halfcomplex_float_transform , Ptr CFloat -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable_float> -> Ptr <gsl_fft_real_workspace_float> -> IO CInt
+#ccall gsl_fft_halfcomplex_float_unpack , Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_float_radix2_unpack , Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_radix2_backward , Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_radix2_inverse , Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_radix2_transform , Ptr CDouble -> CSize -> CSize -> IO CInt
+
+#starttype gsl_fft_halfcomplex_wavetable
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#array_field twiddle , Ptr <gsl_complex>
+#field trig , Ptr <gsl_complex>
+#stoptype
+
+#ccall gsl_fft_halfcomplex_wavetable_alloc , CSize -> IO (Ptr <gsl_fft_halfcomplex_wavetable>)
+#ccall gsl_fft_halfcomplex_wavetable_free , Ptr <gsl_fft_halfcomplex_wavetable> -> IO ()
+#ccall gsl_fft_halfcomplex_backward , Ptr CDouble -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable> -> Ptr <gsl_fft_real_workspace> -> IO CInt
+#ccall gsl_fft_halfcomplex_inverse , Ptr CDouble -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable> -> Ptr <gsl_fft_real_workspace> -> IO CInt
+#ccall gsl_fft_halfcomplex_transform , Ptr CDouble -> CSize -> CSize -> Ptr <gsl_fft_halfcomplex_wavetable> -> Ptr <gsl_fft_real_workspace> -> IO CInt
+#ccall gsl_fft_halfcomplex_unpack , Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_halfcomplex_radix2_unpack , Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_real_float_radix2_transform , Ptr CFloat -> CSize -> CSize -> IO CInt
+
+#starttype gsl_fft_real_wavetable_float
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#array_field twiddle , Ptr <gsl_complex_float>
+#field trig , Ptr <gsl_complex_float>
+#stoptype
+
+
+#starttype gsl_fft_real_workspace_float
+#field n , CSize
+#field scratch , Ptr CFloat
+#stoptype
+
+#ccall gsl_fft_real_wavetable_float_alloc , CSize -> IO (Ptr <gsl_fft_real_wavetable_float>)
+#ccall gsl_fft_real_wavetable_float_free , Ptr <gsl_fft_real_wavetable_float> -> IO ()
+#ccall gsl_fft_real_workspace_float_alloc , CSize -> IO (Ptr <gsl_fft_real_workspace_float>)
+#ccall gsl_fft_real_workspace_float_free , Ptr <gsl_fft_real_workspace_float> -> IO ()
+#ccall gsl_fft_real_float_transform , Ptr CFloat -> CSize -> CSize -> Ptr <gsl_fft_real_wavetable_float> -> Ptr <gsl_fft_real_workspace_float> -> IO CInt
+#ccall gsl_fft_real_float_unpack , Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_fft_real_radix2_transform , Ptr CDouble -> CSize -> CSize -> IO CInt
+
+#starttype gsl_fft_real_wavetable
+#field n , CSize
+#field nf , CSize
+#array_field factor , CSize
+#array_field twiddle , Ptr <gsl_complex>
+#field trig , Ptr <gsl_complex>
+#stoptype
+
+
+#starttype gsl_fft_real_workspace
+#field n , CSize
+#field scratch , Ptr CDouble
+#stoptype
+
+#ccall gsl_fft_real_wavetable_alloc , CSize -> IO (Ptr <gsl_fft_real_wavetable>)
+#ccall gsl_fft_real_wavetable_free , Ptr <gsl_fft_real_wavetable> -> IO ()
+#ccall gsl_fft_real_workspace_alloc , CSize -> IO (Ptr <gsl_fft_real_workspace>)
+#ccall gsl_fft_real_workspace_free , Ptr <gsl_fft_real_workspace> -> IO ()
+#ccall gsl_fft_real_transform , Ptr CDouble -> CSize -> CSize -> Ptr <gsl_fft_real_wavetable> -> Ptr <gsl_fft_real_workspace> -> IO CInt
+#ccall gsl_fft_real_unpack , Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
 
diff --git a/src/Bindings/Gsl/Interpolation.hsc b/src/Bindings/Gsl/Interpolation.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Interpolation.hsc
@@ -0,0 +1,82 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_interp.h>
+#include <gsl/gsl_spline.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Interpolation.html>
+
+module Bindings.Gsl.Interpolation where
+#strict_import
+
+#starttype gsl_interp_accel
+#field cache , CSize
+#field miss_count , CSize
+#field hit_count , CSize
+#stoptype
+
+#starttype gsl_interp_type
+#field name , CString
+#field min_size , CUInt
+#field alloc , FunPtr (CSize -> IO (Ptr ()))
+#field init , FunPtr (Ptr () -> Ptr CDouble -> Ptr CDouble -> CSize -> IO  CInt)
+#field eval , FunPtr ( Ptr () -> Ptr CDouble -> Ptr CDouble -> CSize -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO  CInt)
+#field eval_deriv , FunPtr ( Ptr () -> Ptr CDouble -> Ptr CDouble -> CSize -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO  CInt)
+#field eval_deriv2 , FunPtr ( Ptr () -> Ptr CDouble -> Ptr CDouble -> CSize -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO  CInt)
+#field eval_integ , FunPtr ( Ptr () -> Ptr CDouble -> Ptr CDouble -> CSize -> Ptr <gsl_interp_accel> -> CDouble -> CDouble -> Ptr CDouble -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_interp
+#field type , Ptr <gsl_interp_type>
+#field xmin , CDouble
+#field xmax , CDouble
+#field size , CSize
+#field state , Ptr ()
+#stoptype
+
+#globalvar gsl_interp_linear , Ptr gsl_interp_type
+#globalvar gsl_interp_polynomial , Ptr gsl_interp_type
+#globalvar gsl_interp_cspline , Ptr gsl_interp_type
+#globalvar gsl_interp_cspline_periodic , Ptr gsl_interp_type
+#globalvar gsl_interp_akima , Ptr gsl_interp_type
+#globalvar gsl_interp_akima_periodic , Ptr gsl_interp_type
+
+#ccall gsl_interp_accel_alloc , IO (Ptr <gsl_interp_accel>)
+#ccall gsl_interp_accel_reset , Ptr <gsl_interp_accel> -> IO CInt
+#ccall gsl_interp_accel_free , Ptr <gsl_interp_accel> -> IO ()
+#ccall gsl_interp_alloc , Ptr <gsl_interp_type> -> CSize -> IO (Ptr <gsl_interp>)
+#ccall gsl_interp_init , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CSize -> IO CInt
+#ccall gsl_interp_name , Ptr <gsl_interp> -> IO CString 
+#ccall gsl_interp_min_size , Ptr <gsl_interp> -> IO CUInt
+#ccall gsl_interp_eval_e , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_interp_eval , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_interp_eval_deriv_e , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_interp_eval_deriv , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_interp_eval_deriv2_e , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_interp_eval_deriv2 , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_interp_eval_integ_e , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_interp_eval_integ , Ptr <gsl_interp> -> Ptr CDouble -> Ptr CDouble -> CDouble -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_interp_free , Ptr <gsl_interp> -> IO ()
+#ccall gsl_interp_bsearch , Ptr CDouble -> CDouble -> CSize -> CSize -> IO CSize
+#ccall gsl_interp_accel_find , Ptr <gsl_interp_accel> -> Ptr CDouble -> CSize -> CDouble -> IO CSize
+
+#starttype gsl_spline
+#field interp , Ptr <gsl_interp>
+#field x , Ptr CDouble
+#field y , Ptr CDouble
+#field size , CSize
+#stoptype
+
+#ccall gsl_spline_alloc , Ptr <gsl_interp_type> -> CSize -> IO (Ptr <gsl_spline>)
+#ccall gsl_spline_init , Ptr <gsl_spline> -> Ptr CDouble -> Ptr CDouble -> CSize -> IO CInt
+#ccall gsl_spline_name , Ptr <gsl_spline> -> IO CString 
+#ccall gsl_spline_min_size , Ptr <gsl_spline> -> IO CUInt
+#ccall gsl_spline_eval_e , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_spline_eval , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_spline_eval_deriv_e , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_spline_eval_deriv , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_spline_eval_deriv2_e , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_spline_eval_deriv2 , Ptr <gsl_spline> -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_spline_eval_integ_e , Ptr <gsl_spline> -> CDouble -> CDouble -> Ptr <gsl_interp_accel> -> Ptr CDouble -> IO CInt
+#ccall gsl_spline_eval_integ , Ptr <gsl_spline> -> CDouble -> CDouble -> Ptr <gsl_interp_accel> -> IO CDouble
+#ccall gsl_spline_free , Ptr <gsl_spline> -> IO ()
+
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,10 +1,12 @@
 #include <bindings.dsl.h>
 #include <gsl/gsl_fit.h>
+#include <gsl/gsl_multifit.h>
 
 -- | <http://www.gnu.org/software/gsl/manual/html_node/Least_002dSquares-Fitting.html>
 
 module Bindings.Gsl.LeastSquaresFitting where
 #strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
 
 #ccall gsl_fit_linear , Ptr CDouble -> CSize -> \
     Ptr CDouble -> CSize -> CSize -> Ptr CDouble -> \
@@ -27,3 +29,25 @@
     Ptr CDouble -> IO CInt
 #ccall gsl_fit_mul_est , CDouble -> CDouble -> \
     CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
+#starttype gsl_multifit_linear_workspace
+#field n , CSize
+#field p , CSize
+#field A , Ptr <gsl_matrix>
+#field Q , Ptr <gsl_matrix>
+#field QSI , Ptr <gsl_matrix>
+#field S , Ptr <gsl_vector>
+#field t , Ptr <gsl_vector>
+#field xt , Ptr <gsl_vector>
+#field D , Ptr <gsl_vector>
+#stoptype
+
+#ccall gsl_multifit_linear_alloc , CSize -> CSize -> IO (Ptr <gsl_multifit_linear_workspace>)
+#ccall gsl_multifit_linear_free , Ptr <gsl_multifit_linear_workspace> -> IO ()
+#ccall gsl_multifit_linear , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr <gsl_multifit_linear_workspace> -> IO CInt
+#ccall gsl_multifit_linear_svd , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> CDouble -> Ptr CSize -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr <gsl_multifit_linear_workspace> -> IO CInt
+#ccall gsl_multifit_wlinear , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr <gsl_multifit_linear_workspace> -> IO CInt
+#ccall gsl_multifit_wlinear_svd , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> CDouble -> Ptr CSize -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr <gsl_multifit_linear_workspace> -> IO CInt
+#ccall gsl_multifit_linear_est , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_multifit_linear_residuals , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+
diff --git a/src/Bindings/Gsl/LinearAlgebra.hsc b/src/Bindings/Gsl/LinearAlgebra.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/LinearAlgebra.hsc
@@ -0,0 +1,126 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_linalg.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Linear-Algebra.html>
+
+module Bindings.Gsl.LinearAlgebra where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+import Bindings.Gsl.Permutations
+import Bindings.Gsl.ComplexNumbers
+import Bindings.Gsl.SpecialFunctions
+
+#integral_t gsl_linalg_matrix_mod_t
+
+#num GSL_LINALG_MOD_NONE
+#num GSL_LINALG_MOD_TRANSPOSE
+#num GSL_LINALG_MOD_CONJUGATE
+
+#ccall gsl_linalg_matmult , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_matmult_mod , Ptr <gsl_matrix> -> <gsl_linalg_matrix_mod_t> -> Ptr <gsl_matrix> -> <gsl_linalg_matrix_mod_t> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_exponential_ss , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> <gsl_mode_t> -> IO CInt
+#ccall gsl_linalg_householder_transform , Ptr <gsl_vector> -> IO CDouble
+-- ccall gsl_linalg_complex_householder_transform , Ptr <gsl_vector_complex> -> IO <gsl_complex>
+#ccall gsl_linalg_householder_hm , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_householder_mh , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_householder_hv , CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_householder_hm1 , CDouble -> Ptr <gsl_matrix> -> IO CInt
+-- ccall gsl_linalg_complex_householder_hm , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_linalg_complex_householder_mh , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_linalg_complex_householder_hv , <gsl_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_hessenberg_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_hessenberg_unpack , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_hessenberg_unpack_accum , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_hessenberg_set_zero , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_hessenberg_submatrix , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> CSize -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_hesstri_decomp , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_SV_decomp , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_SV_decomp_mod , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_SV_decomp_jacobi , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_SV_solve , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LU_decomp , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr CInt -> IO CInt
+#ccall gsl_linalg_LU_solve , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LU_svx , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LU_refine , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LU_invert , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_LU_det , Ptr <gsl_matrix> -> CInt -> IO CDouble
+#ccall gsl_linalg_LU_lndet , Ptr <gsl_matrix> -> IO CDouble
+#ccall gsl_linalg_LU_sgndet , Ptr <gsl_matrix> -> CInt -> IO CInt
+#ccall gsl_linalg_complex_LU_decomp , Ptr <gsl_matrix_complex> -> Ptr <gsl_permutation> -> Ptr CInt -> IO CInt
+#ccall gsl_linalg_complex_LU_solve , Ptr <gsl_matrix_complex> -> Ptr <gsl_permutation> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_complex_LU_svx , Ptr <gsl_matrix_complex> -> Ptr <gsl_permutation> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_complex_LU_refine , Ptr <gsl_matrix_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_permutation> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_complex_LU_invert , Ptr <gsl_matrix_complex> -> Ptr <gsl_permutation> -> Ptr <gsl_matrix_complex> -> IO CInt
+-- ccall gsl_linalg_complex_LU_det , Ptr <gsl_matrix_complex> -> CInt -> IO <gsl_complex>
+#ccall gsl_linalg_complex_LU_lndet , Ptr <gsl_matrix_complex> -> IO CDouble
+-- ccall gsl_linalg_complex_LU_sgndet , Ptr <gsl_matrix_complex> -> CInt -> IO <gsl_complex>
+#ccall gsl_linalg_QR_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_solve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_svx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_lssolve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_QRsolve , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_Rsolve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_Rsvx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_update , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_QTvec , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_Qvec , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QR_QTmat , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_QR_unpack , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_R_solve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_R_svx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr CInt -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_decomp2 , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr CInt -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_solve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_svx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_QRsolve , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_Rsolve , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_Rsvx , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_QRPT_update , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_solve_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_svx_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_lssolve_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_Lsolve_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_Lsvx_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_L_solve_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_vecQ , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_vecQT , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_unpack , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_LQ_update , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_LQ_LQsolve , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr CInt -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_decomp2 , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr CInt -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_solve_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_svx_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_LQsolve_T , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_Lsolve_T , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_Lsvx_T , Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_PTLQ_update , Ptr <gsl_matrix> -> Ptr <gsl_matrix> -> Ptr <gsl_permutation> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_cholesky_decomp , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_cholesky_solve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_cholesky_svx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_cholesky_invert , Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_cholesky_decomp_unit , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_complex_cholesky_decomp , Ptr <gsl_matrix_complex> -> IO CInt
+#ccall gsl_linalg_complex_cholesky_solve , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_complex_cholesky_svx , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_symmtd_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_symmtd_unpack , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_symmtd_unpack_T , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_hermtd_decomp , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_linalg_hermtd_unpack , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector_complex> -> Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_hermtd_unpack_T , Ptr <gsl_matrix_complex> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_HH_solve , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_HH_svx , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_solve_symm_tridiag , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_solve_tridiag , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_solve_symm_cyc_tridiag , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_solve_cyc_tridiag , Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_bidiag_decomp , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_bidiag_unpack , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_bidiag_unpack2 , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#ccall gsl_linalg_bidiag_unpack_B , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_balance_matrix , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_balance_accum , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_linalg_balance_columns , Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO CInt
+
diff --git a/src/Bindings/Gsl/MathematicalFunctions.hsc b/src/Bindings/Gsl/MathematicalFunctions.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/MathematicalFunctions.hsc
@@ -0,0 +1,96 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_math.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Mathematical-Functions.html>
+
+module Bindings.Gsl.MathematicalFunctions where
+#strict_import
+
+#fractional M_E
+#fractional M_LOG2E
+#fractional M_LOG10E
+#fractional M_SQRT2
+#fractional M_SQRT1_2
+#fractional M_SQRT3
+#fractional M_PI
+#fractional M_PI_2
+#fractional M_PI_4
+#fractional M_SQRTPI
+#fractional M_2_SQRTPI
+#fractional M_1_PI
+#fractional M_2_PI
+#fractional M_LN10
+#fractional M_LN2
+#fractional M_LNPI
+#fractional M_EULER
+
+#starttype gsl_function
+#field function , FunPtr (CDouble -> Ptr () -> IO CDouble)
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_FN_EVAL , Ptr <gsl_function> -> CDouble -> IO CDouble
+
+#starttype gsl_function_fdf
+#field f , FunPtr (CDouble -> Ptr () -> IO CDouble)
+#field df , FunPtr (CDouble -> Ptr () -> IO CDouble)
+#field fdf , FunPtr (CDouble -> Ptr () -> Ptr CDouble -> Ptr CDouble -> IO ())
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_FN_FDF_EVAL_F , Ptr <gsl_function_fdf> -> CDouble -> IO CDouble
+#cinline GSL_FN_FDF_EVAL_DF , Ptr <gsl_function_fdf> -> CDouble -> IO CDouble
+#cinline GSL_FN_FDF_EVAL_F_DF , Ptr <gsl_function_fdf> -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+
+#starttype gsl_function_vec
+#field function , FunPtr (CDouble -> Ptr CDouble -> Ptr () -> IO CInt)
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_FN_VEC_EVAL , Ptr <gsl_function_vec> -> CDouble -> Ptr CDouble -> IO CDouble
+
+#ccall gsl_max , CDouble -> CDouble -> IO CDouble
+#ccall gsl_min , CDouble -> CDouble -> IO CDouble
+#ccall GSL_MAX_INT , CInt -> CInt -> CInt -> IO CInt
+#ccall GSL_MIN_INT , CInt -> CInt -> CInt -> IO CInt
+#ccall GSL_MAX_DBL , CDouble -> CDouble -> IO CDouble
+#ccall GSL_MIN_DBL , CDouble -> CDouble -> IO CDouble
+#ccall GSL_MAX_LDBL , CLDouble -> CLDouble -> IO CLDouble
+#ccall GSL_MIN_LDBL , CLDouble -> CLDouble -> IO CLDouble
+
+#ccall gsl_log1p , CDouble -> IO CDouble
+#ccall gsl_expm1 , CDouble -> IO CDouble
+#ccall gsl_hypot , CDouble -> CDouble -> IO CDouble
+#ccall gsl_hypot3 , CDouble -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_acosh , CDouble -> IO CDouble
+#ccall gsl_asinh , CDouble -> IO CDouble
+#ccall gsl_atanh , CDouble -> IO CDouble
+
+#ccall gsl_isnan , CDouble -> IO CInt
+#ccall gsl_isinf , CDouble -> IO CInt
+#ccall gsl_finite , CDouble -> IO CInt
+
+#ccall gsl_nan , IO CDouble
+#ccall gsl_posinf , IO CDouble
+#ccall gsl_neginf , IO CDouble
+#ccall gsl_fdiv , CDouble -> CDouble -> IO CDouble
+
+#ccall gsl_coerce_double , CDouble -> IO CDouble
+#ccall gsl_coerce_float , CFloat -> IO CFloat
+#ccall gsl_coerce_long_double , CLDouble -> IO CLDouble
+
+#ccall gsl_ldexp , CDouble -> CInt -> IO CDouble
+#ccall gsl_frexp , CDouble -> Ptr CInt -> IO CDouble
+
+#ccall gsl_fcmp , CDouble -> CDouble -> CDouble -> IO CInt
+
+#ccall gsl_pow_2 , CDouble -> IO CDouble
+#ccall gsl_pow_3 , CDouble -> IO CDouble
+#ccall gsl_pow_4 , CDouble -> IO CDouble
+#ccall gsl_pow_5 , CDouble -> IO CDouble
+#ccall gsl_pow_6 , CDouble -> IO CDouble
+#ccall gsl_pow_7 , CDouble -> IO CDouble
+#ccall gsl_pow_8 , CDouble -> IO CDouble
+#ccall gsl_pow_9 , CDouble -> IO CDouble
+#ccall gsl_pow_int , CDouble -> CInt -> IO CDouble
+
diff --git a/src/Bindings/Gsl/MonteCarloIntegration.hsc b/src/Bindings/Gsl/MonteCarloIntegration.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/MonteCarloIntegration.hsc
@@ -0,0 +1,102 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_monte_plain.h>
+#include <gsl/gsl_monte_miser.h>
+#include <gsl/gsl_monte_vegas.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Monte-Carlo-Integration.html>
+
+module Bindings.Gsl.MonteCarloIntegration where
+#strict_import
+import Bindings.Gsl.RandomNumberGeneration
+
+#starttype gsl_monte_function
+#field f , FunPtr (Ptr CDouble -> CSize -> Ptr () -> IO CDouble)
+#field dim , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_MONTE_FN_EVAL , Ptr <gsl_monte_function> -> Ptr CDouble -> IO CDouble
+
+#starttype gsl_monte_plain_state
+#field dim , CSize
+#field x , Ptr CDouble
+#stoptype
+
+#ccall gsl_monte_plain_integrate , Ptr <gsl_monte_function> -> Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> Ptr <gsl_rng> -> Ptr <gsl_monte_plain_state> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_monte_plain_alloc , CSize -> IO (Ptr <gsl_monte_plain_state>)
+#ccall gsl_monte_plain_init , Ptr <gsl_monte_plain_state> -> IO CInt
+#ccall gsl_monte_plain_free , Ptr <gsl_monte_plain_state> -> IO ()
+
+#starttype gsl_monte_miser_state
+#field min_calls , CSize
+#field min_calls_per_bisection , CSize
+#field dither , CDouble
+#field estimate_frac , CDouble
+#field alpha , CDouble
+#field dim , CSize
+#field estimate_style , CInt
+#field depth , CInt
+#field verbose , CInt
+#field x , Ptr CDouble
+#field xmid , Ptr CDouble
+#field sigma_l , Ptr CDouble
+#field sigma_r , Ptr CDouble
+#field fmax_l , Ptr CDouble
+#field fmax_r , Ptr CDouble
+#field fmin_l , Ptr CDouble
+#field fmin_r , Ptr CDouble
+#field fsum_l , Ptr CDouble
+#field fsum_r , Ptr CDouble
+#field fsum2_l , Ptr CDouble
+#field fsum2_r , Ptr CDouble
+#field hits_l , Ptr CSize
+#field hits_r , Ptr CSize
+#stoptype
+
+#ccall gsl_monte_miser_integrate , Ptr <gsl_monte_function> -> Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> Ptr <gsl_rng> -> Ptr <gsl_monte_miser_state> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_monte_miser_alloc , CSize -> IO (Ptr <gsl_monte_miser_state>)
+#ccall gsl_monte_miser_init , Ptr <gsl_monte_miser_state> -> IO CInt
+#ccall gsl_monte_miser_free , Ptr <gsl_monte_miser_state> -> IO ()
+
+#num GSL_VEGAS_MODE_IMPORTANCE
+#num GSL_VEGAS_MODE_IMPORTANCE_ONLY
+#num GSL_VEGAS_MODE_STRATIFIED
+
+#starttype gsl_monte_vegas_state
+#field dim , CSize
+#field bins_max , CSize
+#field bins , CUInt
+#field boxes , CUInt
+#field xi , Ptr CDouble
+#field xin , Ptr CDouble
+#field delx , Ptr CDouble
+#field weight , Ptr CDouble
+#field vol , CDouble
+#field x , Ptr CDouble
+#field bin , Ptr CInt
+#field box , Ptr CInt
+#field d , Ptr CDouble
+#field alpha , CDouble
+#field mode , CInt
+#field verbose , CInt
+#field iterations , CUInt
+#field stage , CInt
+#field jac , CDouble
+#field wtd_int_sum , CDouble
+#field sum_wgts , CDouble
+#field chi_sum , CDouble
+#field chisq , CDouble
+#field result , CDouble
+#field sigma , CDouble
+#field it_start , CUInt
+#field it_num , CUInt
+#field samples , CUInt
+#field calls_per_box , CUInt
+#field ostream , Ptr CFile
+#stoptype
+
+#ccall gsl_monte_vegas_integrate , Ptr <gsl_monte_function> -> Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> Ptr <gsl_rng> -> Ptr <gsl_monte_vegas_state> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_monte_vegas_alloc , CSize -> IO (Ptr <gsl_monte_vegas_state>)
+#ccall gsl_monte_vegas_init , Ptr <gsl_monte_vegas_state> -> IO CInt
+#ccall gsl_monte_vegas_free , Ptr <gsl_monte_vegas_state> -> IO ()
+
diff --git a/src/Bindings/Gsl/MultidimensionalMinimization.hsc b/src/Bindings/Gsl/MultidimensionalMinimization.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/MultidimensionalMinimization.hsc
@@ -0,0 +1,99 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_multimin.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Multidimensional-Minimization.html>
+
+module Bindings.Gsl.MultidimensionalMinimization where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#starttype gsl_multimin_function
+#field f , FunPtr (Ptr <gsl_vector> -> Ptr () -> IO  CDouble)
+#field n , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_MULTIMIN_FN_EVAL , Ptr <gsl_multimin_function> -> Ptr <gsl_vector> -> IO CDouble
+
+#starttype gsl_multimin_function_fdf
+#field f , FunPtr (Ptr <gsl_vector> -> Ptr () -> IO  CDouble)
+#field df , FunPtr (Ptr <gsl_vector> -> Ptr () -> Ptr <gsl_vector> -> IO ())
+#field fdf , FunPtr (Ptr <gsl_vector> -> Ptr () -> Ptr CDouble -> Ptr <gsl_vector> -> IO ())
+#field n , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_MULTIMIN_FN_EVAL_F , Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> IO CDouble
+#cinline GSL_MULTIMIN_FN_EVAL_DF , Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO ()
+#cinline GSL_MULTIMIN_FN_EVAL_F_DF , Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr <gsl_vector> -> IO ()
+
+#ccall gsl_multimin_diff , Ptr <gsl_multimin_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+
+#starttype gsl_multimin_fminimizer_type
+#field name , CString
+#field size , CSize
+#field alloc , FunPtr (Ptr () -> CSize -> IO  CInt)
+#field set , FunPtr (Ptr () -> Ptr <gsl_multimin_function> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr <gsl_vector> -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_multimin_function> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr CDouble -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_multimin_fminimizer
+#field type , Ptr <gsl_multimin_fminimizer_type>
+#field f , Ptr <gsl_multimin_function>
+#field fval , CDouble
+#field x , Ptr <gsl_vector>
+#field size , CDouble
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_multimin_fminimizer_alloc , Ptr <gsl_multimin_fminimizer_type> -> CSize -> IO (Ptr <gsl_multimin_fminimizer>)
+#ccall gsl_multimin_fminimizer_set , Ptr <gsl_multimin_fminimizer> -> Ptr <gsl_multimin_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_multimin_fminimizer_free , Ptr <gsl_multimin_fminimizer> -> IO ()
+#ccall gsl_multimin_fminimizer_name , Ptr <gsl_multimin_fminimizer> -> IO  CString
+#ccall gsl_multimin_fminimizer_iterate , Ptr <gsl_multimin_fminimizer> -> IO CInt
+#ccall gsl_multimin_fminimizer_x , Ptr <gsl_multimin_fminimizer> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multimin_fminimizer_minimum , Ptr <gsl_multimin_fminimizer> -> IO CDouble
+#ccall gsl_multimin_fminimizer_size , Ptr <gsl_multimin_fminimizer> -> IO CDouble
+#ccall gsl_multimin_test_gradient , Ptr <gsl_vector> -> CDouble -> IO CInt
+#ccall gsl_multimin_test_size , CDouble -> CDouble -> IO CInt
+
+#starttype gsl_multimin_fdfminimizer_type
+#field name , CString
+#field size , CSize
+#field alloc , FunPtr (Ptr () -> CSize -> IO  CInt)
+#field set , FunPtr (Ptr () -> Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr <gsl_vector> -> CDouble -> CDouble -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> Ptr CDouble -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO  CInt)
+#field restart , FunPtr (Ptr () -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_multimin_fdfminimizer
+#field type , Ptr <gsl_multimin_fdfminimizer_type>
+#field fdf , Ptr <gsl_multimin_function_fdf>
+#field f , CDouble
+#field x , Ptr <gsl_vector>
+#field gradient , Ptr <gsl_vector>
+#field dx , Ptr <gsl_vector>
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_multimin_fdfminimizer_alloc , Ptr <gsl_multimin_fdfminimizer_type> -> CSize -> IO (Ptr <gsl_multimin_fdfminimizer>)
+#ccall gsl_multimin_fdfminimizer_set , Ptr <gsl_multimin_fdfminimizer> -> Ptr <gsl_multimin_function_fdf> -> Ptr <gsl_vector> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_multimin_fdfminimizer_free , Ptr <gsl_multimin_fdfminimizer> -> IO ()
+#ccall gsl_multimin_fdfminimizer_name , Ptr <gsl_multimin_fdfminimizer> -> IO  CString
+#ccall gsl_multimin_fdfminimizer_iterate , Ptr <gsl_multimin_fdfminimizer> -> IO CInt
+#ccall gsl_multimin_fdfminimizer_restart , Ptr <gsl_multimin_fdfminimizer> -> IO CInt
+#ccall gsl_multimin_fdfminimizer_x , Ptr <gsl_multimin_fdfminimizer> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multimin_fdfminimizer_dx , Ptr <gsl_multimin_fdfminimizer> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multimin_fdfminimizer_gradient , Ptr <gsl_multimin_fdfminimizer> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multimin_fdfminimizer_minimum , Ptr <gsl_multimin_fdfminimizer> -> IO CDouble
+
+#globalvar gsl_multimin_fdfminimizer_steepest_descent , Ptr gsl_multimin_fdfminimizer_type
+#globalvar gsl_multimin_fdfminimizer_conjugate_pr , Ptr gsl_multimin_fdfminimizer_type
+#globalvar gsl_multimin_fdfminimizer_conjugate_fr , Ptr gsl_multimin_fdfminimizer_type
+#globalvar gsl_multimin_fdfminimizer_vector_bfgs , Ptr gsl_multimin_fdfminimizer_type
+#globalvar gsl_multimin_fdfminimizer_vector_bfgs2 , Ptr gsl_multimin_fdfminimizer_type
+#globalvar gsl_multimin_fminimizer_nmsimplex , Ptr gsl_multimin_fminimizer_type
+#globalvar gsl_multimin_fminimizer_nmsimplex2 , Ptr gsl_multimin_fminimizer_type
+
diff --git a/src/Bindings/Gsl/MultidimensionalRootFinding.hsc b/src/Bindings/Gsl/MultidimensionalRootFinding.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/MultidimensionalRootFinding.hsc
@@ -0,0 +1,97 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_multiroots.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Multidimensional-Root_002dFinding.html>
+
+module Bindings.Gsl.MultidimensionalRootFinding where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#starttype gsl_multiroot_function
+#field f , FunPtr ( Ptr <gsl_vector> -> Ptr () -> Ptr <gsl_vector> -> IO  CInt)
+#field n , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_MULTIROOT_FN_EVAL , Ptr <gsl_multiroot_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+
+#ccall gsl_multiroot_fdjacobian , Ptr <gsl_multiroot_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> CDouble -> Ptr <gsl_matrix> -> IO CInt
+
+#starttype gsl_multiroot_fsolver_type
+#field name , CString
+#field size , CSize
+#field alloc , FunPtr (Ptr () -> CSize -> IO  CInt)
+#field set , FunPtr (Ptr () -> Ptr <gsl_multiroot_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_multiroot_function> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_multiroot_fsolver
+#field type , Ptr <gsl_multiroot_fsolver_type>
+#field function , Ptr <gsl_multiroot_function>
+#field x , Ptr <gsl_vector>
+#field f , Ptr <gsl_vector>
+#field dx , Ptr <gsl_vector>
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_multiroot_fsolver_alloc , Ptr <gsl_multiroot_fsolver_type> -> CSize -> IO (Ptr <gsl_multiroot_fsolver>)
+#ccall gsl_multiroot_fsolver_free , Ptr <gsl_multiroot_fsolver> -> IO ()
+#ccall gsl_multiroot_fsolver_set , Ptr <gsl_multiroot_fsolver> -> Ptr <gsl_multiroot_function> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_multiroot_fsolver_iterate , Ptr <gsl_multiroot_fsolver> -> IO CInt
+#ccall gsl_multiroot_fsolver_name , Ptr <gsl_multiroot_fsolver> -> IO CString 
+#ccall gsl_multiroot_fsolver_root , Ptr <gsl_multiroot_fsolver> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multiroot_fsolver_dx , Ptr <gsl_multiroot_fsolver> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multiroot_fsolver_f , Ptr <gsl_multiroot_fsolver> -> IO (Ptr <gsl_vector>)
+
+#starttype gsl_multiroot_function_fdf
+#field f , FunPtr ( Ptr <gsl_vector> -> Ptr () -> Ptr <gsl_vector> -> IO  CInt)
+#field df , FunPtr ( Ptr <gsl_vector> -> Ptr () -> Ptr <gsl_matrix> -> IO  CInt)
+#field fdf , FunPtr ( Ptr <gsl_vector> -> Ptr () -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO  CInt)
+#field n , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_MULTIROOT_FN_EVAL_F , Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> IO CInt
+#cinline GSL_MULTIROOT_FN_EVAL_DF , Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+#cinline GSL_MULTIROOT_FN_EVAL_F_DF , Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> IO CInt
+
+#starttype gsl_multiroot_fdfsolver_type
+#field name , CString
+#field size , CSize
+#field alloc , FunPtr (Ptr () -> CSize -> IO  CInt)
+#field set , FunPtr (Ptr () -> Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> Ptr <gsl_vector> -> Ptr <gsl_matrix> -> Ptr <gsl_vector> -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_multiroot_fdfsolver
+#field type , Ptr <gsl_multiroot_fdfsolver_type>
+#field fdf , Ptr <gsl_multiroot_function_fdf>
+#field x , Ptr <gsl_vector>
+#field f , Ptr <gsl_vector>
+#field J , Ptr <gsl_matrix>
+#field dx , Ptr <gsl_vector>
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_multiroot_fdfsolver_alloc , Ptr <gsl_multiroot_fdfsolver_type> -> CSize -> IO (Ptr <gsl_multiroot_fdfsolver>)
+#ccall gsl_multiroot_fdfsolver_set , Ptr <gsl_multiroot_fdfsolver> -> Ptr <gsl_multiroot_function_fdf> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_multiroot_fdfsolver_iterate , Ptr <gsl_multiroot_fdfsolver> -> IO CInt
+#ccall gsl_multiroot_fdfsolver_free , Ptr <gsl_multiroot_fdfsolver> -> IO ()
+#ccall gsl_multiroot_fdfsolver_name , Ptr <gsl_multiroot_fdfsolver> -> IO CString 
+#ccall gsl_multiroot_fdfsolver_root , Ptr <gsl_multiroot_fdfsolver> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multiroot_fdfsolver_dx , Ptr <gsl_multiroot_fdfsolver> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multiroot_fdfsolver_f , Ptr <gsl_multiroot_fdfsolver> -> IO (Ptr <gsl_vector>)
+#ccall gsl_multiroot_test_delta , Ptr <gsl_vector> -> Ptr <gsl_vector> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_multiroot_test_residual , Ptr <gsl_vector> -> CDouble -> IO CInt
+
+#globalvar gsl_multiroot_fsolver_dnewton , Ptr gsl_multiroot_fsolver_type
+#globalvar gsl_multiroot_fsolver_broyden , Ptr gsl_multiroot_fsolver_type
+#globalvar gsl_multiroot_fsolver_hybrid , Ptr gsl_multiroot_fsolver_type
+#globalvar gsl_multiroot_fsolver_hybrids , Ptr gsl_multiroot_fsolver_type
+#globalvar gsl_multiroot_fdfsolver_newton , Ptr gsl_multiroot_fdfsolver_type
+#globalvar gsl_multiroot_fdfsolver_gnewton , Ptr gsl_multiroot_fdfsolver_type
+#globalvar gsl_multiroot_fdfsolver_hybridj , Ptr gsl_multiroot_fdfsolver_type
+#globalvar gsl_multiroot_fdfsolver_hybridsj , Ptr gsl_multiroot_fdfsolver_type
+
diff --git a/src/Bindings/Gsl/NumericalDifferentiation.hsc b/src/Bindings/Gsl/NumericalDifferentiation.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/NumericalDifferentiation.hsc
@@ -0,0 +1,13 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_deriv.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Numerical-Differentiation.html>
+
+module Bindings.Gsl.NumericalDifferentiation where
+#strict_import
+import Bindings.Gsl.MathematicalFunctions
+
+#ccall gsl_deriv_central , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_deriv_backward , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_deriv_forward , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
diff --git a/src/Bindings/Gsl/NumericalIntegration.hsc b/src/Bindings/Gsl/NumericalIntegration.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/NumericalIntegration.hsc
@@ -0,0 +1,89 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_integration.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Numerical-Integration.html>
+
+module Bindings.Gsl.NumericalIntegration where
+#strict_import
+import Bindings.Gsl.MathematicalFunctions
+
+#starttype gsl_integration_workspace
+#field limit , CSize
+#field size , CSize
+#field nrmax , CSize
+#field i , CSize
+#field maximum_level , CSize
+#field alist , Ptr CDouble
+#field blist , Ptr CDouble
+#field rlist , Ptr CDouble
+#field elist , Ptr CDouble
+#field order , Ptr CSize
+#field level , Ptr CSize
+#stoptype
+
+#ccall gsl_integration_workspace_alloc , CSize -> IO (Ptr <gsl_integration_workspace>)
+#ccall gsl_integration_workspace_free , Ptr <gsl_integration_workspace> -> IO ()
+
+#starttype gsl_integration_qaws_table
+#field alpha , CDouble
+#field beta , CDouble
+#field mu , CInt
+#field nu , CInt
+#array_field ri , CDouble
+#array_field rj , CDouble
+#array_field rg , CDouble
+#array_field rh , CDouble
+#stoptype
+
+#ccall gsl_integration_qaws_table_alloc , CDouble -> CDouble -> CInt -> CInt -> CInt -> IO (Ptr <gsl_integration_qaws_table>)
+#ccall gsl_integration_qaws_table_set , Ptr <gsl_integration_qaws_table> -> CDouble -> CDouble -> CInt -> CInt -> CInt -> IO CInt
+#ccall gsl_integration_qaws_table_free , Ptr <gsl_integration_qaws_table> -> IO ()
+
+#integral_t enum gsl_integration_qawo_enum
+#num GSL_INTEG_COSINE
+#num GSL_INTEG_SINE
+
+#starttype gsl_integration_qawo_table
+#field n , CSize
+#field omega , CDouble
+#field L , CDouble
+#field par , CDouble
+#field sine , <gsl_integration_qawo_enum>
+#field chebmo , Ptr CDouble
+#stoptype
+
+#ccall gsl_integration_qawo_table_alloc , CDouble -> CDouble -> <gsl_integration_qawo_enum> -> CSize -> IO (Ptr <gsl_integration_qawo_table>)
+#ccall gsl_integration_qawo_table_set , Ptr <gsl_integration_qawo_table> -> CDouble -> CDouble -> <gsl_integration_qawo_enum> -> IO CInt
+#ccall gsl_integration_qawo_table_set_length , Ptr <gsl_integration_qawo_table> -> CDouble -> IO CInt
+#ccall gsl_integration_qawo_table_free , Ptr <gsl_integration_qawo_table> -> IO ()
+
+#callback gsl_integration_rule , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+
+#ccall gsl_integration_qk15 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qk21 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qk31 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qk41 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qk51 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qk61 , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qcheb , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+
+#num GSL_INTEG_GAUSS15
+#num GSL_INTEG_GAUSS21
+#num GSL_INTEG_GAUSS31
+#num GSL_INTEG_GAUSS41
+#num GSL_INTEG_GAUSS51
+#num GSL_INTEG_GAUSS61
+
+#ccall gsl_integration_qk , CInt -> CInt -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr <gsl_function> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall gsl_integration_qng , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CSize -> IO CInt
+#ccall gsl_integration_qag , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> CSize -> CInt -> CInt -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qagi , Ptr <gsl_function> -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qagiu , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qagil , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qags , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qagp , Ptr <gsl_function> -> Ptr CDouble -> CSize -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qawc , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qaws , Ptr <gsl_function> -> CDouble -> CDouble -> Ptr <gsl_integration_qaws_table> -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qawo , Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr <gsl_integration_qawo_table> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_integration_qawf , Ptr <gsl_function> -> CDouble -> CDouble -> CSize -> Ptr <gsl_integration_workspace> -> Ptr <gsl_integration_workspace> -> Ptr <gsl_integration_qawo_table> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
diff --git a/src/Bindings/Gsl/OneDimensionalMinimization.hsc b/src/Bindings/Gsl/OneDimensionalMinimization.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/OneDimensionalMinimization.hsc
@@ -0,0 +1,49 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_min.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/One-dimensional-Minimization.html>
+
+module Bindings.Gsl.OneDimensionalMinimization where
+#strict_import
+import Bindings.Gsl.MathematicalFunctions
+
+#starttype gsl_min_fminimizer_type
+#field name , CString
+#field size , CSize
+#field set , FunPtr (Ptr () -> Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_function> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO  CInt)
+#stoptype
+
+#starttype gsl_min_fminimizer
+#field type , Ptr <gsl_min_fminimizer_type>
+#field function , Ptr <gsl_function>
+#field x_minimum , CDouble
+#field x_lower , CDouble
+#field x_upper , CDouble
+#field f_minimum , CDouble
+#field f_lower , CDouble
+#field f_upper , CDouble
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_min_fminimizer_alloc , Ptr <gsl_min_fminimizer_type> -> IO (Ptr <gsl_min_fminimizer>)
+#ccall gsl_min_fminimizer_free , Ptr <gsl_min_fminimizer> -> IO ()
+#ccall gsl_min_fminimizer_set , Ptr <gsl_min_fminimizer> -> Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_min_fminimizer_set_with_values , Ptr <gsl_min_fminimizer> -> Ptr <gsl_function> -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_min_fminimizer_iterate , Ptr <gsl_min_fminimizer> -> IO CInt
+#ccall gsl_min_fminimizer_name , Ptr <gsl_min_fminimizer> -> IO CString 
+#ccall gsl_min_fminimizer_x_minimum , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_fminimizer_x_lower , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_fminimizer_x_upper , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_fminimizer_f_minimum , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_fminimizer_f_lower , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_fminimizer_f_upper , Ptr <gsl_min_fminimizer> -> IO CDouble
+#ccall gsl_min_test_interval , CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+
+#globalvar gsl_min_fminimizer_goldensection , Ptr gsl_min_fminimizer_type
+#globalvar gsl_min_fminimizer_brent , Ptr gsl_min_fminimizer_type
+
+#callback gsl_min_bracketing_function , Ptr <gsl_function> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> CSize -> IO CInt
+
+#ccall gsl_min_find_bracket , Ptr <gsl_function> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> CSize -> IO CInt
+
diff --git a/src/Bindings/Gsl/OneDimensionalRootFinding.hsc b/src/Bindings/Gsl/OneDimensionalRootFinding.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/OneDimensionalRootFinding.hsc
@@ -0,0 +1,64 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_roots.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/One-dimensional-Root_002dFinding.html>
+
+module Bindings.Gsl.OneDimensionalRootFinding where
+#strict_import
+import Bindings.Gsl.MathematicalFunctions
+
+#starttype gsl_root_fsolver_type
+#field name , CString
+#field size , CSize
+#field set , FunPtr (Ptr () -> Ptr <gsl_function> -> Ptr CDouble -> CDouble -> CDouble -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_function> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO  CInt)
+#stoptype
+
+#starttype gsl_root_fsolver
+#field type , Ptr <gsl_root_fsolver_type>
+#field function , Ptr <gsl_function>
+#field root , CDouble
+#field x_lower , CDouble
+#field x_upper , CDouble
+#field state , Ptr ()
+#stoptype
+
+#starttype gsl_root_fdfsolver_type
+#field name , CString
+#field size , CSize
+#field set , FunPtr (Ptr () -> Ptr <gsl_function_fdf> -> Ptr CDouble -> IO  CInt)
+#field iterate , FunPtr (Ptr () -> Ptr <gsl_function_fdf> -> Ptr CDouble -> IO  CInt)
+#stoptype
+
+#starttype gsl_root_fdfsolver
+#field type , Ptr <gsl_root_fdfsolver_type>
+#field fdf , Ptr <gsl_function_fdf>
+#field root , CDouble
+#field state , Ptr ()
+#stoptype
+
+#ccall gsl_root_fsolver_alloc , Ptr <gsl_root_fsolver_type> -> IO (Ptr <gsl_root_fsolver>)
+#ccall gsl_root_fsolver_free , Ptr <gsl_root_fsolver> -> IO ()
+#ccall gsl_root_fsolver_set , Ptr <gsl_root_fsolver> -> Ptr <gsl_function> -> CDouble -> CDouble -> IO CInt
+#ccall gsl_root_fsolver_iterate , Ptr <gsl_root_fsolver> -> IO CInt
+#ccall gsl_root_fsolver_name , Ptr <gsl_root_fsolver> -> IO CString 
+#ccall gsl_root_fsolver_root , Ptr <gsl_root_fsolver> -> IO CDouble
+#ccall gsl_root_fsolver_x_lower , Ptr <gsl_root_fsolver> -> IO CDouble
+#ccall gsl_root_fsolver_x_upper , Ptr <gsl_root_fsolver> -> IO CDouble
+#ccall gsl_root_fdfsolver_alloc , Ptr <gsl_root_fdfsolver_type> -> IO (Ptr <gsl_root_fdfsolver>)
+#ccall gsl_root_fdfsolver_set , Ptr <gsl_root_fdfsolver> -> Ptr <gsl_function_fdf> -> CDouble -> IO CInt
+#ccall gsl_root_fdfsolver_iterate , Ptr <gsl_root_fdfsolver> -> IO CInt
+#ccall gsl_root_fdfsolver_free , Ptr <gsl_root_fdfsolver> -> IO ()
+#ccall gsl_root_fdfsolver_name , Ptr <gsl_root_fdfsolver> -> IO CString 
+#ccall gsl_root_fdfsolver_root , Ptr <gsl_root_fdfsolver> -> IO CDouble
+#ccall gsl_root_test_interval , CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_root_test_residual , CDouble -> CDouble -> IO CInt
+#ccall gsl_root_test_delta , CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+
+#globalvar gsl_root_fsolver_bisection , Ptr <gsl_root_fsolver_type>
+#globalvar gsl_root_fsolver_brent , Ptr <gsl_root_fsolver_type>
+#globalvar gsl_root_fsolver_falsepos , Ptr <gsl_root_fsolver_type>
+#globalvar gsl_root_fdfsolver_newton , Ptr <gsl_root_fdfsolver_type>
+#globalvar gsl_root_fdfsolver_secant , Ptr <gsl_root_fdfsolver_type>
+#globalvar gsl_root_fdfsolver_steffenson , Ptr <gsl_root_fdfsolver_type>
+
diff --git a/src/Bindings/Gsl/OrdinaryDifferentialEquations.hsc b/src/Bindings/Gsl/OrdinaryDifferentialEquations.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/OrdinaryDifferentialEquations.hsc
@@ -0,0 +1,97 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_odeiv.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Ordinary-Differential-Equations.html>
+
+module Bindings.Gsl.OrdinaryDifferentialEquations where
+#strict_import
+
+#starttype gsl_odeiv_system
+#field function , FunPtr (CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr () -> IO  CInt)
+#field jacobian , FunPtr (CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr () -> IO  CInt)
+#field dimension , CSize
+#field params , Ptr ()
+#stoptype
+
+#cinline GSL_ODEIV_FN_EVAL , Ptr <gsl_odeiv_system> -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#cinline GSL_ODEIV_JA_EVAL , Ptr <gsl_odeiv_system> -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+
+#starttype gsl_odeiv_step_type
+#field name , CString
+#field can_use_dydt_in , CInt
+#field gives_exact_dydt_out , CInt
+#field alloc , FunPtr (CSize -> IO (Ptr ()))
+#field apply , FunPtr (Ptr () -> CSize -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr <gsl_odeiv_system> -> IO  CInt)
+#field reset , FunPtr (Ptr () -> CSize -> IO  CInt)
+#field order , FunPtr (Ptr () -> IO  CUInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_odeiv_step
+#field type , Ptr <gsl_odeiv_step_type>
+#field dimension , CSize
+#field state , Ptr ()
+#stoptype
+
+#globalvar gsl_odeiv_step_rk2 , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rk4 , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rkf45 , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rkck , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rk8pd , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rk2imp , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rk2simp , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_rk4imp , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_bsimp , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_gear1 , Ptr gsl_odeiv_step_type
+#globalvar gsl_odeiv_step_gear2 , Ptr gsl_odeiv_step_type
+
+#ccall gsl_odeiv_step_alloc , Ptr <gsl_odeiv_step_type> -> CSize -> IO (Ptr <gsl_odeiv_step>)
+#ccall gsl_odeiv_step_reset , Ptr <gsl_odeiv_step> -> IO CInt
+#ccall gsl_odeiv_step_free , Ptr <gsl_odeiv_step> -> IO ()
+#ccall gsl_odeiv_step_name , Ptr <gsl_odeiv_step> -> IO CString 
+#ccall gsl_odeiv_step_order , Ptr <gsl_odeiv_step> -> IO CUInt
+#ccall gsl_odeiv_step_apply , Ptr <gsl_odeiv_step> -> CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr <gsl_odeiv_system> -> IO CInt
+
+#starttype gsl_odeiv_control_type
+#field name , CString
+#field alloc , FunPtr (IO (Ptr ()))
+#field init , FunPtr (Ptr () -> CDouble -> CDouble -> CDouble -> CDouble -> IO  CInt)
+#field hadjust , FunPtr (Ptr () -> CSize -> CUInt -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO  CInt)
+#field free , FunPtr (Ptr () -> IO ())
+#stoptype
+
+#starttype gsl_odeiv_control
+#field type , Ptr <gsl_odeiv_control_type>
+#field state , Ptr ()
+#stoptype
+
+#num GSL_ODEIV_HADJ_INC
+#num GSL_ODEIV_HADJ_NIL
+#num GSL_ODEIV_HADJ_DEC
+
+#ccall gsl_odeiv_control_alloc , Ptr <gsl_odeiv_control_type> -> IO (Ptr <gsl_odeiv_control>)
+#ccall gsl_odeiv_control_init , Ptr <gsl_odeiv_control> -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall gsl_odeiv_control_free , Ptr <gsl_odeiv_control> -> IO ()
+#ccall gsl_odeiv_control_hadjust , Ptr <gsl_odeiv_control> -> Ptr <gsl_odeiv_step> -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_odeiv_control_name , Ptr <gsl_odeiv_control> -> IO CString 
+#ccall gsl_odeiv_control_standard_new , CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr <gsl_odeiv_control>)
+#ccall gsl_odeiv_control_y_new , CDouble -> CDouble -> IO (Ptr <gsl_odeiv_control>)
+#ccall gsl_odeiv_control_yp_new , CDouble -> CDouble -> IO (Ptr <gsl_odeiv_control>)
+#ccall gsl_odeiv_control_scaled_new , CDouble -> CDouble -> CDouble -> CDouble -> Ptr CDouble -> CSize -> IO (Ptr <gsl_odeiv_control>)
+
+#starttype gsl_odeiv_evolve
+#field dimension , CSize
+#field y0 , Ptr CDouble
+#field yerr , Ptr CDouble
+#field dydt_in , Ptr CDouble
+#field dydt_out , Ptr CDouble
+#field last_step , CDouble
+#field count , CULong
+#field failed_steps , CULong
+#stoptype
+
+#ccall gsl_odeiv_evolve_alloc , CSize -> IO (Ptr <gsl_odeiv_evolve>)
+#ccall gsl_odeiv_evolve_apply , Ptr <gsl_odeiv_evolve> -> Ptr <gsl_odeiv_control> -> Ptr <gsl_odeiv_step> -> Ptr <gsl_odeiv_system> -> Ptr CDouble -> CDouble -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_odeiv_evolve_reset , Ptr <gsl_odeiv_evolve> -> IO CInt
+#ccall gsl_odeiv_evolve_free , Ptr <gsl_odeiv_evolve> -> IO ()
+
diff --git a/src/Bindings/Gsl/Permutations.hsc b/src/Bindings/Gsl/Permutations.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Permutations.hsc
@@ -0,0 +1,95 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_permutation.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Permutation-Examples.html>
+
+module Bindings.Gsl.Permutations where
+#strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+
+#starttype gsl_permutation
+#field size , CSize
+#field data , Ptr CSize
+#stoptype
+
+#ccall gsl_permutation_alloc , CSize -> IO (Ptr <gsl_permutation>)
+#ccall gsl_permutation_calloc , CSize -> IO (Ptr <gsl_permutation>)
+#ccall gsl_permutation_init , Ptr <gsl_permutation> -> IO ()
+#ccall gsl_permutation_free , Ptr <gsl_permutation> -> IO ()
+#ccall gsl_permutation_memcpy , Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_fread , Ptr CFile -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_fwrite , Ptr CFile -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_fscanf , Ptr CFile -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_fprintf , Ptr CFile -> Ptr <gsl_permutation> -> CString -> IO CInt
+#ccall gsl_permutation_size , Ptr <gsl_permutation> -> IO CSize
+#ccall gsl_permutation_data , Ptr <gsl_permutation> -> IO (Ptr CSize)
+#ccall gsl_permutation_swap , Ptr <gsl_permutation> -> CSize -> CSize -> IO CInt
+#ccall gsl_permutation_valid , Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_reverse , Ptr <gsl_permutation> -> IO ()
+#ccall gsl_permutation_inverse , Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_next , Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_prev , Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_mul , Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_linear_to_canonical , Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_canonical_to_linear , Ptr <gsl_permutation> -> Ptr <gsl_permutation> -> IO CInt
+#ccall gsl_permutation_inversions , Ptr <gsl_permutation> -> IO CSize
+#ccall gsl_permutation_linear_cycles , Ptr <gsl_permutation> -> IO CSize
+#ccall gsl_permutation_canonical_cycles , Ptr <gsl_permutation> -> IO CSize
+#ccall gsl_permutation_get , Ptr <gsl_permutation> -> CSize -> IO CSize
+#ccall gsl_permute_char , Ptr CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_char_inverse , Ptr CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex , Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex_inverse , Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex_float , Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex_float_inverse , Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex_long_double , Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_complex_long_double_inverse , Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute , Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_inverse , Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_float , Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_float_inverse , Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_int , Ptr CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_int_inverse , Ptr CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_long_double , Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_long_double_inverse , Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_long , Ptr CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_long_inverse , Ptr CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_short , Ptr CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_short_inverse , Ptr CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_uchar , Ptr CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_uchar_inverse , Ptr CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_uint , Ptr CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_uint_inverse , Ptr CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_ulong , Ptr CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_ulong_inverse , Ptr CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_ushort , Ptr CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_ushort_inverse , Ptr CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_permute_vector_char , Ptr <gsl_permutation> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_permute_vector_char_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_permute_vector_complex , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_permute_vector_complex_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex> -> IO CInt
+#ccall gsl_permute_vector_complex_float , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_permute_vector_complex_float_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex_float> -> IO CInt
+#ccall gsl_permute_vector_complex_long_double , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_permute_vector_complex_long_double_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_complex_long_double> -> IO CInt
+#ccall gsl_permute_vector , Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_permute_vector_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_permute_vector_float , Ptr <gsl_permutation> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_permute_vector_float_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_permute_vector_int , Ptr <gsl_permutation> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_permute_vector_int_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_permute_vector_long_double , Ptr <gsl_permutation> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_permute_vector_long_double_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_permute_vector_long , Ptr <gsl_permutation> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_permute_vector_long_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_permute_vector_short , Ptr <gsl_permutation> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_permute_vector_short_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_permute_vector_uchar , Ptr <gsl_permutation> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_permute_vector_uchar_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_permute_vector_uint , Ptr <gsl_permutation> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_permute_vector_uint_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_permute_vector_ulong , Ptr <gsl_permutation> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_permute_vector_ulong_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_permute_vector_ushort , Ptr <gsl_permutation> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_permute_vector_ushort_inverse , Ptr <gsl_permutation> -> Ptr <gsl_vector_ushort> -> IO CInt
+
diff --git a/src/Bindings/Gsl/SeriesAcceleration.hsc b/src/Bindings/Gsl/SeriesAcceleration.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/SeriesAcceleration.hsc
@@ -0,0 +1,41 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_sum.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Series-Acceleration.html>
+
+module Bindings.Gsl.SeriesAcceleration where
+#strict_import
+
+#starttype gsl_sum_levin_u_workspace
+#field size , CSize
+#field i , CSize
+#field terms_used , CSize
+#field sum_plain , CDouble
+#field q_num , Ptr CDouble
+#field q_den , Ptr CDouble
+#field dq_num , Ptr CDouble
+#field dq_den , Ptr CDouble
+#field dsum , Ptr CDouble
+#stoptype
+
+#ccall gsl_sum_levin_u_alloc , CSize -> IO (Ptr <gsl_sum_levin_u_workspace>)
+#ccall gsl_sum_levin_u_free , Ptr <gsl_sum_levin_u_workspace> -> IO ()
+#ccall gsl_sum_levin_u_accel , Ptr CDouble -> CSize -> Ptr <gsl_sum_levin_u_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_sum_levin_u_minmax , Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_sum_levin_u_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_sum_levin_u_step , CDouble -> CSize -> CSize -> Ptr <gsl_sum_levin_u_workspace> -> Ptr CDouble -> IO CInt
+
+#starttype gsl_sum_levin_utrunc_workspace
+#field size , CSize
+#field i , CSize
+#field terms_used , CSize
+#field sum_plain , CDouble
+#field q_num , Ptr CDouble
+#field q_den , Ptr CDouble
+#field dsum , Ptr CDouble
+#stoptype
+
+#ccall gsl_sum_levin_utrunc_alloc , CSize -> IO (Ptr <gsl_sum_levin_utrunc_workspace>)
+#ccall gsl_sum_levin_utrunc_free , Ptr <gsl_sum_levin_utrunc_workspace> -> IO ()
+#ccall gsl_sum_levin_utrunc_accel , Ptr CDouble -> CSize -> Ptr <gsl_sum_levin_utrunc_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_sum_levin_utrunc_minmax , Ptr CDouble -> CSize -> CSize -> CSize -> Ptr <gsl_sum_levin_utrunc_workspace> -> Ptr CDouble -> Ptr CDouble -> IO CInt
+#ccall gsl_sum_levin_utrunc_step , CDouble -> CSize -> Ptr <gsl_sum_levin_utrunc_workspace> -> Ptr CDouble -> IO CInt
diff --git a/src/Bindings/Gsl/SimulatedAnnealing.hsc b/src/Bindings/Gsl/SimulatedAnnealing.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/SimulatedAnnealing.hsc
@@ -0,0 +1,31 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_siman.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Simulated-Annealing.html>
+
+module Bindings.Gsl.SimulatedAnnealing where
+#strict_import
+import Bindings.Gsl.RandomNumberGeneration
+
+#callback gsl_siman_Efunc_t , Ptr () -> IO CDouble
+#callback gsl_siman_step_t , Ptr <gsl_rng> -> Ptr () -> CDouble -> IO ()
+#callback gsl_siman_metric_t , Ptr () -> Ptr () -> IO CDouble
+
+#callback gsl_siman_print_t , FunPtr (Ptr () -> IO ())
+#callback gsl_siman_copy_t , FunPtr (Ptr () -> Ptr () -> IO ())
+#callback gsl_siman_copy_construct_t , FunPtr (Ptr () -> IO (Ptr ()))
+#callback gsl_siman_destroy_t , FunPtr (Ptr () -> IO ())
+
+#starttype gsl_siman_params_t
+#field n_tries , CInt
+#field iters_fixed_T , CInt
+#field step_size , CDouble
+#field k , CDouble
+#field t_initial , CDouble
+#field mu_t , CDouble
+#field t_min , CDouble
+#stoptype
+
+-- ccall gsl_siman_solve , Ptr <gsl_rng> -> Ptr () -> <gsl_siman_Efunc_t> -> <gsl_siman_step_t> -> <gsl_siman_metric_t> -> <gsl_siman_print_t> -> <gsl_siman_copy_t> -> <gsl_siman_copy_construct_t> -> <gsl_siman_destroy_t> -> CSize -> <gsl_siman_params_t> -> IO ()
+-- ccall gsl_siman_solve_many , Ptr <gsl_rng> -> Ptr () -> <gsl_siman_Efunc_t> -> <gsl_siman_step_t> -> <gsl_siman_metric_t> -> <gsl_siman_print_t> -> CSize -> <gsl_siman_params_t> -> IO ()
+
diff --git a/src/Bindings/Gsl/Sorting.hsc b/src/Bindings/Gsl/Sorting.hsc
--- a/src/Bindings/Gsl/Sorting.hsc
+++ b/src/Bindings/Gsl/Sorting.hsc
@@ -5,9 +5,144 @@
 
 module Bindings.Gsl.Sorting where
 #strict_import
+import Bindings.Gsl.VectorsAndMatrices.DataTypes
+import Bindings.Gsl.Permutations
 
-#callback gsl_comparison_fn_t , FunPtr ( Ptr (), Ptr () -> IO CInt)
+#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
+
+#ccall gsl_sort_char , CString -> CSize -> CSize -> IO ()
+#ccall gsl_sort_char_index , Ptr CSize -> CString -> CSize -> CSize -> IO ()
+#ccall gsl_sort_char_smallest , CString -> CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_char_smallest_index , Ptr CSize -> CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_char_largest , CString -> CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_char_largest_index , Ptr CSize -> CSize -> CString -> CSize -> CSize -> IO CInt
+#ccall gsl_sort , Ptr CDouble -> CSize -> CSize -> IO ()
+#ccall gsl_sort_index , Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO ()
+#ccall gsl_sort_smallest , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_smallest_index , Ptr CSize -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_largest , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_largest_index , Ptr CSize -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_float , Ptr CFloat -> CSize -> CSize -> IO ()
+#ccall gsl_sort_float_index , Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO ()
+#ccall gsl_sort_float_smallest , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_float_smallest_index , Ptr CSize -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_float_largest , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_float_largest_index , Ptr CSize -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_int , Ptr CInt -> CSize -> CSize -> IO ()
+#ccall gsl_sort_int_index , Ptr CSize -> Ptr CInt -> CSize -> CSize -> IO ()
+#ccall gsl_sort_int_smallest , Ptr CInt -> CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_int_smallest_index , Ptr CSize -> CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_int_largest , Ptr CInt -> CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_int_largest_index , Ptr CSize -> CSize -> Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_double , Ptr CLDouble -> CSize -> CSize -> IO ()
+#ccall gsl_sort_long_double_index , Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO ()
+#ccall gsl_sort_long_double_smallest , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_double_smallest_index , Ptr CSize -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_double_largest , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_double_largest_index , Ptr CSize -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long , Ptr CLong -> CSize -> CSize -> IO ()
+#ccall gsl_sort_long_index , Ptr CSize -> Ptr CLong -> CSize -> CSize -> IO ()
+#ccall gsl_sort_long_smallest , Ptr CLong -> CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_smallest_index , Ptr CSize -> CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_largest , Ptr CLong -> CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_long_largest_index , Ptr CSize -> CSize -> Ptr CLong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_short , Ptr CShort -> CSize -> CSize -> IO ()
+#ccall gsl_sort_short_index , Ptr CSize -> Ptr CShort -> CSize -> CSize -> IO ()
+#ccall gsl_sort_short_smallest , Ptr CShort -> CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_short_smallest_index , Ptr CSize -> CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_short_largest , Ptr CShort -> CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_short_largest_index , Ptr CSize -> CSize -> Ptr CShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uchar , Ptr CUChar -> CSize -> CSize -> IO ()
+#ccall gsl_sort_uchar_index , Ptr CSize -> Ptr CUChar -> CSize -> CSize -> IO ()
+#ccall gsl_sort_uchar_smallest , Ptr CUChar -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uchar_smallest_index , Ptr CSize -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uchar_largest , Ptr CUChar -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uchar_largest_index , Ptr CSize -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uint , Ptr CUInt -> CSize -> CSize -> IO ()
+#ccall gsl_sort_uint_index , Ptr CSize -> Ptr CUInt -> CSize -> CSize -> IO ()
+#ccall gsl_sort_uint_smallest , Ptr CUInt -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uint_smallest_index , Ptr CSize -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uint_largest , Ptr CUInt -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_uint_largest_index , Ptr CSize -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ulong , Ptr CULong -> CSize -> CSize -> IO ()
+#ccall gsl_sort_ulong_index , Ptr CSize -> Ptr CULong -> CSize -> CSize -> IO ()
+#ccall gsl_sort_ulong_smallest , Ptr CULong -> CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ulong_smallest_index , Ptr CSize -> CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ulong_largest , Ptr CULong -> CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ulong_largest_index , Ptr CSize -> CSize -> Ptr CULong -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ushort , Ptr CUShort -> CSize -> CSize -> IO ()
+#ccall gsl_sort_ushort_index , Ptr CSize -> Ptr CUShort -> CSize -> CSize -> IO ()
+#ccall gsl_sort_ushort_smallest , Ptr CUShort -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ushort_smallest_index , Ptr CSize -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ushort_largest , Ptr CUShort -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_ushort_largest_index , Ptr CSize -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CInt
+#ccall gsl_sort_vector_char , Ptr <gsl_vector_char> -> IO ()
+#ccall gsl_sort_vector_char_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_sort_vector_char_smallest , CString -> CSize -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_sort_vector_char_largest , CString -> CSize -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_sort_vector_char_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_sort_vector_char_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_char> -> IO CInt
+#ccall gsl_sort_vector , Ptr <gsl_vector> -> IO ()
+#ccall gsl_sort_vector_index , Ptr <gsl_permutation> -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_sort_vector_smallest , Ptr CDouble -> CSize -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_sort_vector_largest , Ptr CDouble -> CSize -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_sort_vector_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_sort_vector_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector> -> IO CInt
+#ccall gsl_sort_vector_float , Ptr <gsl_vector_float> -> IO ()
+#ccall gsl_sort_vector_float_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_sort_vector_float_smallest , Ptr CFloat -> CSize -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_sort_vector_float_largest , Ptr CFloat -> CSize -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_sort_vector_float_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_sort_vector_float_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_float> -> IO CInt
+#ccall gsl_sort_vector_int , Ptr <gsl_vector_int> -> IO ()
+#ccall gsl_sort_vector_int_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_sort_vector_int_smallest , Ptr CInt -> CSize -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_sort_vector_int_largest , Ptr CInt -> CSize -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_sort_vector_int_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_sort_vector_int_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_int> -> IO CInt
+#ccall gsl_sort_vector_long_double , Ptr <gsl_vector_long_double> -> IO ()
+#ccall gsl_sort_vector_long_double_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_sort_vector_long_double_smallest , Ptr CLDouble -> CSize -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_sort_vector_long_double_largest , Ptr CLDouble -> CSize -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_sort_vector_long_double_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_sort_vector_long_double_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_long_double> -> IO CInt
+#ccall gsl_sort_vector_long , Ptr <gsl_vector_long> -> IO ()
+#ccall gsl_sort_vector_long_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_sort_vector_long_smallest , Ptr CLong -> CSize -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_sort_vector_long_largest , Ptr CLong -> CSize -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_sort_vector_long_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_sort_vector_long_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_long> -> IO CInt
+#ccall gsl_sort_vector_short , Ptr <gsl_vector_short> -> IO ()
+#ccall gsl_sort_vector_short_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_sort_vector_short_smallest , Ptr CShort -> CSize -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_sort_vector_short_largest , Ptr CShort -> CSize -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_sort_vector_short_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_sort_vector_short_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_short> -> IO CInt
+#ccall gsl_sort_vector_uchar , Ptr <gsl_vector_uchar> -> IO ()
+#ccall gsl_sort_vector_uchar_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_sort_vector_uchar_smallest , Ptr CUChar -> CSize -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_sort_vector_uchar_largest , Ptr CUChar -> CSize -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_sort_vector_uchar_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_sort_vector_uchar_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_uchar> -> IO CInt
+#ccall gsl_sort_vector_uint , Ptr <gsl_vector_uint> -> IO ()
+#ccall gsl_sort_vector_uint_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_sort_vector_uint_smallest , Ptr CUInt -> CSize -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_sort_vector_uint_largest , Ptr CUInt -> CSize -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_sort_vector_uint_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_sort_vector_uint_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_uint> -> IO CInt
+#ccall gsl_sort_vector_ulong , Ptr <gsl_vector_ulong> -> IO ()
+#ccall gsl_sort_vector_ulong_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_sort_vector_ulong_smallest , Ptr CULong -> CSize -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_sort_vector_ulong_largest , Ptr CULong -> CSize -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_sort_vector_ulong_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_sort_vector_ulong_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_ulong> -> IO CInt
+#ccall gsl_sort_vector_ushort , Ptr <gsl_vector_ushort> -> IO ()
+#ccall gsl_sort_vector_ushort_index , Ptr <gsl_permutation> -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_sort_vector_ushort_smallest , Ptr CUShort -> CSize -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_sort_vector_ushort_largest , Ptr CUShort -> CSize -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_sort_vector_ushort_smallest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_ushort> -> IO CInt
+#ccall gsl_sort_vector_ushort_largest_index , Ptr CSize -> CSize -> Ptr <gsl_vector_ushort> -> IO CInt
 
diff --git a/src/Bindings/Gsl/Statistics.hsc b/src/Bindings/Gsl/Statistics.hsc
new file mode 100644
--- /dev/null
+++ b/src/Bindings/Gsl/Statistics.hsc
@@ -0,0 +1,384 @@
+#include <bindings.dsl.h>
+#include <gsl/gsl_statistics.h>
+
+-- | <http://www.gnu.org/software/gsl/manual/html_node/Statistics.html>
+
+module Bindings.Gsl.Statistics where
+#strict_import
+
+#ccall gsl_stats_char_mean , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_variance , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_sd , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_variance_with_fixed_mean , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_sd_with_fixed_mean , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_tss , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_tss_m , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_absdev , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_skew , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_kurtosis , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_lag1_autocorrelation , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_covariance , CString -> CSize -> CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_correlation , CString -> CSize -> CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_variance_m , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_sd_m , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_absdev_m , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_skew_m_sd , CString -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_char_kurtosis_m_sd , CString -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_char_lag1_autocorrelation_m , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_char_covariance_m , CString -> CSize -> CString -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_char_pvariance , CString -> CSize -> CSize -> CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_ttest , CString -> CSize -> CSize -> CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_max , CString -> CSize -> CSize -> IO CChar
+#ccall gsl_stats_char_min , CString -> CSize -> CSize -> IO CChar
+#ccall gsl_stats_char_minmax , CString -> CString -> CString -> CSize -> CSize -> IO ()
+#ccall gsl_stats_char_max_index , CString -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_char_min_index , CString -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_char_minmax_index , Ptr CSize -> Ptr CSize -> CString -> CSize -> CSize -> IO ()
+#ccall gsl_stats_char_median_from_sorted_data , CString -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_char_quantile_from_sorted_data , CString -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_mean , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_variance , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_sd , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_variance_with_fixed_mean , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_sd_with_fixed_mean , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_tss , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_tss_m , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_absdev , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_skew , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_kurtosis , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_lag1_autocorrelation , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_covariance , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_correlation , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_variance_m , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_sd_m , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_absdev_m , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_skew_m_sd , Ptr CDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_kurtosis_m_sd , Ptr CDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_lag1_autocorrelation_m , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_covariance_m , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_wmean , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wvariance , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wsd , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wvariance_with_fixed_mean , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wsd_with_fixed_mean , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wtss , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wtss_m , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wabsdev , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wskew , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wkurtosis , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_wvariance_m , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wsd_m , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wabsdev_m , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_wskew_m_sd , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_wkurtosis_m_sd , Ptr CDouble -> CSize -> Ptr CDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_pvariance , Ptr CDouble -> CSize -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ttest , Ptr CDouble -> CSize -> CSize -> Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_max , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_min , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_minmax , Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO ()
+#ccall gsl_stats_max_index , Ptr CDouble -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_min_index , Ptr CDouble -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CDouble -> CSize -> CSize -> IO ()
+#ccall gsl_stats_median_from_sorted_data , Ptr CDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_quantile_from_sorted_data , Ptr CDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_mean , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_variance , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_sd , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_variance_with_fixed_mean , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_sd_with_fixed_mean , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_tss , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_tss_m , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_absdev , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_skew , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_kurtosis , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_lag1_autocorrelation , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_covariance , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_correlation , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_variance_m , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_sd_m , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_absdev_m , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_skew_m_sd , Ptr CFloat -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_float_kurtosis_m_sd , Ptr CFloat -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_float_lag1_autocorrelation_m , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_covariance_m , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wmean , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wvariance , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wsd , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wvariance_with_fixed_mean , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wsd_with_fixed_mean , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wtss , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wtss_m , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wabsdev , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wskew , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wkurtosis , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_wvariance_m , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wsd_m , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wabsdev_m , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wskew_m_sd , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_float_wkurtosis_m_sd , Ptr CFloat -> CSize -> Ptr CFloat -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_float_pvariance , Ptr CFloat -> CSize -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_ttest , Ptr CFloat -> CSize -> CSize -> Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_max , Ptr CFloat -> CSize -> CSize -> IO CFloat
+#ccall gsl_stats_float_min , Ptr CFloat -> CSize -> CSize -> IO CFloat
+#ccall gsl_stats_float_minmax , Ptr CFloat -> Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO ()
+#ccall gsl_stats_float_max_index , Ptr CFloat -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_float_min_index , Ptr CFloat -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_float_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CFloat -> CSize -> CSize -> IO ()
+#ccall gsl_stats_float_median_from_sorted_data , Ptr CFloat -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_float_quantile_from_sorted_data , Ptr CFloat -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_mean , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_variance , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_sd , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_variance_with_fixed_mean , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_sd_with_fixed_mean , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_tss , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_tss_m , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_absdev , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_skew , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_kurtosis , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_lag1_autocorrelation , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_covariance , Ptr CInt -> CSize -> Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_correlation , Ptr CInt -> CSize -> Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_variance_m , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_sd_m , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_absdev_m , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_skew_m_sd , Ptr CInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_int_kurtosis_m_sd , Ptr CInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_int_lag1_autocorrelation_m , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_int_covariance_m , Ptr CInt -> CSize -> Ptr CInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_int_pvariance , Ptr CInt -> CSize -> CSize -> Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_ttest , Ptr CInt -> CSize -> CSize -> Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_max , Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_stats_int_min , Ptr CInt -> CSize -> CSize -> IO CInt
+#ccall gsl_stats_int_minmax , Ptr CInt -> Ptr CInt -> Ptr CInt -> CSize -> CSize -> IO ()
+#ccall gsl_stats_int_max_index , Ptr CInt -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_int_min_index , Ptr CInt -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_int_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CInt -> CSize -> CSize -> IO ()
+#ccall gsl_stats_int_median_from_sorted_data , Ptr CInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_int_quantile_from_sorted_data , Ptr CInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_mean , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_variance , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_sd , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_variance_with_fixed_mean , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_sd_with_fixed_mean , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_tss , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_tss_m , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_absdev , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_skew , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_kurtosis , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_lag1_autocorrelation , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_covariance , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_correlation , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_variance_m , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_sd_m , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_absdev_m , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_skew_m_sd , Ptr CLDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_kurtosis_m_sd , Ptr CLDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_lag1_autocorrelation_m , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_covariance_m , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wmean , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wvariance , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wsd , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wvariance_with_fixed_mean , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wsd_with_fixed_mean , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wtss , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wtss_m , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wabsdev , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wskew , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wkurtosis , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_wvariance_m , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wsd_m , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wabsdev_m , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wskew_m_sd , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_wkurtosis_m_sd , Ptr CLDouble -> CSize -> Ptr CLDouble -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_double_pvariance , Ptr CLDouble -> CSize -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_ttest , Ptr CLDouble -> CSize -> CSize -> Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_max , Ptr CLDouble -> CSize -> CSize -> IO CLDouble
+#ccall gsl_stats_long_double_min , Ptr CLDouble -> CSize -> CSize -> IO CLDouble
+#ccall gsl_stats_long_double_minmax , Ptr CLDouble -> Ptr CLDouble -> Ptr CLDouble -> CSize -> CSize -> IO ()
+#ccall gsl_stats_long_double_max_index , Ptr CLDouble -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_long_double_min_index , Ptr CLDouble -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_long_double_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CLDouble -> CSize -> CSize -> IO ()
+#ccall gsl_stats_long_double_median_from_sorted_data , Ptr CLDouble -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_double_quantile_from_sorted_data , Ptr CLDouble -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_mean , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_variance , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_sd , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_variance_with_fixed_mean , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_sd_with_fixed_mean , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_tss , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_tss_m , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_absdev , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_skew , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_kurtosis , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_lag1_autocorrelation , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_covariance , Ptr CLong -> CSize -> Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_correlation , Ptr CLong -> CSize -> Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_variance_m , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_sd_m , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_absdev_m , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_skew_m_sd , Ptr CLong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_kurtosis_m_sd , Ptr CLong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_lag1_autocorrelation_m , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_long_covariance_m , Ptr CLong -> CSize -> Ptr CLong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_long_pvariance , Ptr CLong -> CSize -> CSize -> Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_ttest , Ptr CLong -> CSize -> CSize -> Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_max , Ptr CLong -> CSize -> CSize -> IO CLong
+#ccall gsl_stats_long_min , Ptr CLong -> CSize -> CSize -> IO CLong
+#ccall gsl_stats_long_minmax , Ptr CLong -> Ptr CLong -> Ptr CLong -> CSize -> CSize -> IO ()
+#ccall gsl_stats_long_max_index , Ptr CLong -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_long_min_index , Ptr CLong -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_long_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CLong -> CSize -> CSize -> IO ()
+#ccall gsl_stats_long_median_from_sorted_data , Ptr CLong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_long_quantile_from_sorted_data , Ptr CLong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_mean , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_variance , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_sd , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_variance_with_fixed_mean , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_sd_with_fixed_mean , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_tss , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_tss_m , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_absdev , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_skew , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_kurtosis , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_lag1_autocorrelation , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_covariance , Ptr CShort -> CSize -> Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_correlation , Ptr CShort -> CSize -> Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_variance_m , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_sd_m , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_absdev_m , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_skew_m_sd , Ptr CShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_short_kurtosis_m_sd , Ptr CShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_short_lag1_autocorrelation_m , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_short_covariance_m , Ptr CShort -> CSize -> Ptr CShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_short_pvariance , Ptr CShort -> CSize -> CSize -> Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_ttest , Ptr CShort -> CSize -> CSize -> Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_max , Ptr CShort -> CSize -> CSize -> IO CShort
+#ccall gsl_stats_short_min , Ptr CShort -> CSize -> CSize -> IO CShort
+#ccall gsl_stats_short_minmax , Ptr CShort -> Ptr CShort -> Ptr CShort -> CSize -> CSize -> IO ()
+#ccall gsl_stats_short_max_index , Ptr CShort -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_short_min_index , Ptr CShort -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_short_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CShort -> CSize -> CSize -> IO ()
+#ccall gsl_stats_short_median_from_sorted_data , Ptr CShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_short_quantile_from_sorted_data , Ptr CShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_mean , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_variance , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_sd , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_variance_with_fixed_mean , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_sd_with_fixed_mean , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_tss , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_tss_m , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_absdev , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_skew , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_kurtosis , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_lag1_autocorrelation , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_covariance , Ptr CUChar -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_correlation , Ptr CUChar -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_variance_m , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_sd_m , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_absdev_m , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_skew_m_sd , Ptr CUChar -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_kurtosis_m_sd , Ptr CUChar -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_lag1_autocorrelation_m , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_covariance_m , Ptr CUChar -> CSize -> Ptr CUChar -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uchar_pvariance , Ptr CUChar -> CSize -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_ttest , Ptr CUChar -> CSize -> CSize -> Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_max , Ptr CUChar -> CSize -> CSize -> IO CUChar
+#ccall gsl_stats_uchar_min , Ptr CUChar -> CSize -> CSize -> IO CUChar
+#ccall gsl_stats_uchar_minmax , Ptr CUChar -> Ptr CUChar -> Ptr CUChar -> CSize -> CSize -> IO ()
+#ccall gsl_stats_uchar_max_index , Ptr CUChar -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_uchar_min_index , Ptr CUChar -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_uchar_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CUChar -> CSize -> CSize -> IO ()
+#ccall gsl_stats_uchar_median_from_sorted_data , Ptr CUChar -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uchar_quantile_from_sorted_data , Ptr CUChar -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_mean , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_variance , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_sd , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_variance_with_fixed_mean , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_sd_with_fixed_mean , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_tss , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_tss_m , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_absdev , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_skew , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_kurtosis , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_lag1_autocorrelation , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_covariance , Ptr CUInt -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_correlation , Ptr CUInt -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_variance_m , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_sd_m , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_absdev_m , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_skew_m_sd , Ptr CUInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_kurtosis_m_sd , Ptr CUInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_lag1_autocorrelation_m , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_covariance_m , Ptr CUInt -> CSize -> Ptr CUInt -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_uint_pvariance , Ptr CUInt -> CSize -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_ttest , Ptr CUInt -> CSize -> CSize -> Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_max , Ptr CUInt -> CSize -> CSize -> IO CUInt
+#ccall gsl_stats_uint_min , Ptr CUInt -> CSize -> CSize -> IO CUInt
+#ccall gsl_stats_uint_minmax , Ptr CUInt -> Ptr CUInt -> Ptr CUInt -> CSize -> CSize -> IO ()
+#ccall gsl_stats_uint_max_index , Ptr CUInt -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_uint_min_index , Ptr CUInt -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_uint_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CUInt -> CSize -> CSize -> IO ()
+#ccall gsl_stats_uint_median_from_sorted_data , Ptr CUInt -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_uint_quantile_from_sorted_data , Ptr CUInt -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_mean , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_variance , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_sd , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_variance_with_fixed_mean , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_sd_with_fixed_mean , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_tss , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_tss_m , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_absdev , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_skew , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_kurtosis , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_lag1_autocorrelation , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_covariance , Ptr CULong -> CSize -> Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_correlation , Ptr CULong -> CSize -> Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_variance_m , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_sd_m , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_absdev_m , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_skew_m_sd , Ptr CULong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_kurtosis_m_sd , Ptr CULong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_lag1_autocorrelation_m , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_covariance_m , Ptr CULong -> CSize -> Ptr CULong -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ulong_pvariance , Ptr CULong -> CSize -> CSize -> Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_ttest , Ptr CULong -> CSize -> CSize -> Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_max , Ptr CULong -> CSize -> CSize -> IO CULong
+#ccall gsl_stats_ulong_min , Ptr CULong -> CSize -> CSize -> IO CULong
+#ccall gsl_stats_ulong_minmax , Ptr CULong -> Ptr CULong -> Ptr CULong -> CSize -> CSize -> IO ()
+#ccall gsl_stats_ulong_max_index , Ptr CULong -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_ulong_min_index , Ptr CULong -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_ulong_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CULong -> CSize -> CSize -> IO ()
+#ccall gsl_stats_ulong_median_from_sorted_data , Ptr CULong -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ulong_quantile_from_sorted_data , Ptr CULong -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_mean , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_variance , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_sd , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_variance_with_fixed_mean , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_sd_with_fixed_mean , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_tss , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_tss_m , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_absdev , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_skew , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_kurtosis , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_lag1_autocorrelation , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_covariance , Ptr CUShort -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_correlation , Ptr CUShort -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_variance_m , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_sd_m , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_absdev_m , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_skew_m_sd , Ptr CUShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_kurtosis_m_sd , Ptr CUShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_lag1_autocorrelation_m , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_covariance_m , Ptr CUShort -> CSize -> Ptr CUShort -> CSize -> CSize -> CDouble -> CDouble -> IO CDouble
+#ccall gsl_stats_ushort_pvariance , Ptr CUShort -> CSize -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_ttest , Ptr CUShort -> CSize -> CSize -> Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_max , Ptr CUShort -> CSize -> CSize -> IO CUShort
+#ccall gsl_stats_ushort_min , Ptr CUShort -> CSize -> CSize -> IO CUShort
+#ccall gsl_stats_ushort_minmax , Ptr CUShort -> Ptr CUShort -> Ptr CUShort -> CSize -> CSize -> IO ()
+#ccall gsl_stats_ushort_max_index , Ptr CUShort -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_ushort_min_index , Ptr CUShort -> CSize -> CSize -> IO CSize
+#ccall gsl_stats_ushort_minmax_index , Ptr CSize -> Ptr CSize -> Ptr CUShort -> CSize -> CSize -> IO ()
+#ccall gsl_stats_ushort_median_from_sorted_data , Ptr CUShort -> CSize -> CSize -> IO CDouble
+#ccall gsl_stats_ushort_quantile_from_sorted_data , Ptr CUShort -> CSize -> CSize -> CDouble -> IO CDouble
+
diff --git a/src/inlines.c b/src/inlines.c
--- a/src/inlines.c
+++ b/src/inlines.c
@@ -3,7 +3,11 @@
 #include <gsl/gsl_mode.h>
 #include <gsl/gsl_multifit.h>
 #include <gsl/gsl_multifit_nlin.h>
+#include <gsl/gsl_monte_plain.h>
 #include <gsl/gsl_vector_complex.h>
+#include <gsl/gsl_odeiv.h>
+#include <gsl/gsl_multimin.h>
+#include <gsl/gsl_multiroots.h>
 
 BC_GLOBALARRAY(gsl_version,char)
 BC_INLINE1(GSL_MODE_PREC,gsl_mode_t,unsigned)
@@ -15,3 +19,25 @@
 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*)
 
+BC_INLINE4(GSL_ODEIV_FN_EVAL,gsl_odeiv_system*,double,double*,double*,int)
+BC_INLINE5(GSL_ODEIV_JA_EVAL,gsl_odeiv_system*,double,double*,double*,double*,int)
+BC_INLINE2(GSL_MULTIMIN_FN_EVAL,gsl_multimin_function*,gsl_vector*,double)
+BC_INLINE2(GSL_MULTIMIN_FN_EVAL_F,gsl_multimin_function_fdf*,gsl_vector*,double)
+BC_INLINE3VOID(GSL_MULTIMIN_FN_EVAL_DF,gsl_multimin_function_fdf*,gsl_vector*,gsl_vector*)
+BC_INLINE4VOID(GSL_MULTIMIN_FN_EVAL_F_DF,gsl_multimin_function_fdf*,gsl_vector*,double*,gsl_vector*)
+BC_INLINE2(GSL_MONTE_FN_EVAL,gsl_monte_function*,double*,double)
+BC_INLINE3(GSL_MULTIROOT_FN_EVAL,gsl_multiroot_function*,gsl_vector*,gsl_vector*,int)
+BC_INLINE3(GSL_MULTIROOT_FN_EVAL_F,gsl_multiroot_function_fdf*,gsl_vector*,gsl_vector*,int)
+BC_INLINE3(GSL_MULTIROOT_FN_EVAL_DF,gsl_multiroot_function_fdf*,gsl_vector*,gsl_matrix*,int)
+BC_INLINE4(GSL_MULTIROOT_FN_EVAL_F_DF,gsl_multiroot_function_fdf*,gsl_vector*,gsl_vector*,gsl_matrix*,int)
+
+BC_INLINE2(GSL_FN_EVAL,gsl_function*,double,double)
+BC_INLINE2(GSL_FN_FDF_EVAL_F,gsl_function_fdf*,double,double)
+BC_INLINE2(GSL_FN_FDF_EVAL_DF,gsl_function_fdf*,double,double)
+BC_INLINE3(GSL_FN_VEC_EVAL,gsl_function_vec*,double,double*,double)
+BC_INLINE4VOID(GSL_FN_FDF_EVAL_F_DF,gsl_function_fdf*,double,double*,double*)
+BC_INLINE2(GSL_ERROR_SELECT_2,int,int,int)
+BC_INLINE3(GSL_ERROR_SELECT_3,int,int,int,int)
+BC_INLINE4(GSL_ERROR_SELECT_4,int,int,int,int,int)
+BC_INLINE5(GSL_ERROR_SELECT_5,int,int,int,int,int,int)
+BC_INLINE2VOID(GSL_STATUS_UPDATE,int*,int)
