diff --git a/Project.toml b/Project.toml
index 3b34982..ab27d51 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,6 +1,6 @@
 name = "GSL"
 uuid = "92c85e6c-cbff-5e0c-80f7-495c94daaecd"
-version = "0.5.1"
+version = "0.6.0"
 
 [deps]
 BinaryProvider = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
diff --git a/deps/build.jl b/deps/build.jl
index feec7f8..ec363a2 100644
--- a/deps/build.jl
+++ b/deps/build.jl
@@ -13,23 +13,23 @@ products = [
 ]
 
 # Download binaries from hosted location
-bin_prefix = "https://github.com/giordano/GSLBuilder.jl/releases/download/v2.5"
+bin_prefix = "https://github.com/JuliaBinaryWrappers/GSL_jll.jl/releases/download/GSL-v2.6.0+0"
 
 # Listing of files generated by BinaryBuilder:
 download_info = Dict(
-    Linux(:aarch64, libc=:glibc) => ("$bin_prefix/GSL.v2.5.0.aarch64-linux-gnu.tar.gz", "2ef8068b9c4d5b9176ae9e26b7ccd609a11e2af90fc8cdbd15e2d03337d8f6da"),
-    Linux(:aarch64, libc=:musl) => ("$bin_prefix/GSL.v2.5.0.aarch64-linux-musl.tar.gz", "6bdfe541090db4f9595f2fc738df51f698adc7815194b56e57dfb5f264da2412"),
-    Linux(:armv7l, libc=:glibc, call_abi=:eabihf) => ("$bin_prefix/GSL.v2.5.0.arm-linux-gnueabihf.tar.gz", "8ab790dc61a12eb02517506be6c4eb76c8c2f6d063579d23bf319b3bbdf3ce33"),
-    Linux(:armv7l, libc=:musl, call_abi=:eabihf) => ("$bin_prefix/GSL.v2.5.0.arm-linux-musleabihf.tar.gz", "087cea8503132c86072ad8bf937b20878c90382dc3cc0e7a019d6d30a898486c"),
-    Linux(:i686, libc=:glibc) => ("$bin_prefix/GSL.v2.5.0.i686-linux-gnu.tar.gz", "bfbdf22fd86e6215ceb32522d5f5bc1a9c222e7ac5561bb098f15b4b0a385990"),
-    Linux(:i686, libc=:musl) => ("$bin_prefix/GSL.v2.5.0.i686-linux-musl.tar.gz", "89b6d9c413bd1eab1970e07bb3e80d65fae54dc1c430a0542dd012bdc007f6db"),
-    Windows(:i686) => ("$bin_prefix/GSL.v2.5.0.i686-w64-mingw32.tar.gz", "65a3c637f1c92a3f6f1d19154e9cf3072ea27d6a2599d21f9ee4a37d42b47578"),
-    Linux(:powerpc64le, libc=:glibc) => ("$bin_prefix/GSL.v2.5.0.powerpc64le-linux-gnu.tar.gz", "848f8177b7ba88c31e504ba6a4032509a05bf6c1951919faa6f3aa1832a41494"),
-    MacOS(:x86_64) => ("$bin_prefix/GSL.v2.5.0.x86_64-apple-darwin14.tar.gz", "ec5f7f98376f449567e1f00658263aea8e0221284c8649dc9e89130f9005d258"),
-    Linux(:x86_64, libc=:glibc) => ("$bin_prefix/GSL.v2.5.0.x86_64-linux-gnu.tar.gz", "74db5d2620894d2ec7ebb5725f41ff4a88aa6e99df6c5a6077ee135eb1c20fac"),
-    Linux(:x86_64, libc=:musl) => ("$bin_prefix/GSL.v2.5.0.x86_64-linux-musl.tar.gz", "69f48ac74989e843ce6b3842e99b3075e01232143a8e60c36cf1aa1a6e659c29"),
-    FreeBSD(:x86_64) => ("$bin_prefix/GSL.v2.5.0.x86_64-unknown-freebsd11.1.tar.gz", "8ca4a69b8894c0c1a10268e88e07ed194ec3776d0b17005b9ef811b0a92cd603"),
-    Windows(:x86_64) => ("$bin_prefix/GSL.v2.5.0.x86_64-w64-mingw32.tar.gz", "62aac95312170c207e609be4f1a80cfe7cf39d723e919630a31cebc97581a977"),
+    Linux(:aarch64, libc=:glibc) => ("$bin_prefix/GSL.v2.6.0.aarch64-linux-gnu.tar.gz", "07bf1a0f50692421e99f6325843b6beb2e02d12659cb4a316bd15cd414b03f46"),
+    Linux(:aarch64, libc=:musl) => ("$bin_prefix/GSL.v2.6.0.aarch64-linux-musl.tar.gz", "97619f82228e966f62881ab51ba83b52502df2cc57d94b78d3dac8c450cbd35c"),
+    Linux(:armv7l, libc=:glibc, call_abi=:eabihf) => ("$bin_prefix/GSL.v2.6.0.arm-linux-gnueabihf.tar.gz", "6af7eb831a58e9422fadffe90d5590d4c3e946dc4ff69a2421ac87fff8467f4d"),
+    Linux(:armv7l, libc=:musl, call_abi=:eabihf) => ("$bin_prefix/GSL.v2.6.0.arm-linux-musleabihf.tar.gz", "d8e149d1d9c784186349cbfcf60eab854c99dbee35506a2b569bd12b0a01b8c6"),
+    Linux(:i686, libc=:glibc) => ("$bin_prefix/GSL.v2.6.0.i686-linux-gnu.tar.gz", "c56cdad16df1bf1e22c21a92ec30b88b06178eb7832f340eec5d1d5e3d1ed17a"),
+    Linux(:i686, libc=:musl) => ("$bin_prefix/GSL.v2.6.0.i686-linux-musl.tar.gz", "a6cbf55b8009a5f42f044adfe926f16f6ab8557ce3ba302467f3a059b1d7374c"),
+    Windows(:i686) => ("$bin_prefix/GSL.v2.6.0.i686-w64-mingw32.tar.gz", "5f6d1c8e04897e06d156a867caae2d630948128dca9122f3f46e96fcc7e70a8a"),
+    Linux(:powerpc64le, libc=:glibc) => ("$bin_prefix/GSL.v2.6.0.powerpc64le-linux-gnu.tar.gz", "457f4363377c73406964e5afb98db9bb6e66a1e2273babfe95df76d43d2e0550"),
+    MacOS(:x86_64) => ("$bin_prefix/GSL.v2.6.0.x86_64-apple-darwin14.tar.gz", "249506bd5780fec01ce8c86a7642b762092733a0524766241acb8743439b93b2"),
+    Linux(:x86_64, libc=:glibc) => ("$bin_prefix/GSL.v2.6.0.x86_64-linux-gnu.tar.gz", "a63a7ba98fa623bf304a13d03a217358ddc339326ebccb9656af3f505a3e5a87"),
+    Linux(:x86_64, libc=:musl) => ("$bin_prefix/GSL.v2.6.0.x86_64-linux-musl.tar.gz", "3a2e4fea75f1c9891c0fff37b5b960dcbb79be9f1eebcbcb6e28c5242496d1e1"),
+    FreeBSD(:x86_64) => ("$bin_prefix/GSL.v2.6.0.x86_64-unknown-freebsd11.1.tar.gz", "141f3cd1be872837bcd2f1cf787015af756f3b2b160bea96a5bf11437c3d7252"),
+    Windows(:x86_64) => ("$bin_prefix/GSL.v2.6.0.x86_64-w64-mingw32.tar.gz", "362e54af69f27311592b7b8d5f3e9c1231f8432fea8b802a658467d908dc5d39"),
 )
 
 # Install unsatisfied or updated dependencies:
diff --git a/gen/makewrappers.jl b/gen/makewrappers.jl
index ec3cc0f..d0d7577 100644
--- a/gen/makewrappers.jl
+++ b/gen/makewrappers.jl
@@ -11,6 +11,8 @@
 # - deal with variable length arguments, i.e. "splat"
 # - maybe translate enum's to @enum ?
 
+GSL_VERSION = "2.6" # Version of documentation to read
+
 using Markdown
 using Glob
 include("readdocs.jl")
@@ -26,7 +28,29 @@ HEAD = "#
 
 # List of header files to ignore
 # no sparse types supported right now
-ignore_headers = ["gsl_spmatrix.h", "gsl_splinalg.h", "gsl_spblas.h"]
+ignore_headers = ["gsl_spmatrix.h", "gsl_splinalg.h", "gsl_spblas.h",
+                  # GSL 2.6 new ignores:
+                  # The gsl_bst* files currently don't parse (and also
+                  # complicate things by using C unions), and the
+                  # gsl_spmatrix_* files depend on them.
+                  # So ignore for now.
+                  "gsl_bst.h", "gsl_bst_types.h",
+                  "gsl_bst_avl.h", "gsl_bst_rb.h",
+                  "gsl_spmatrix_char.h",
+                  "gsl_spmatrix_complex_double.h",
+                  "gsl_spmatrix_complex_float.h",
+                  "gsl_spmatrix_complex_long_double.h",
+                  "gsl_spmatrix_double.h",
+                  "gsl_spmatrix_float.h",
+                  "gsl_spmatrix_int.h",
+                  "gsl_spmatrix_long_double.h",
+                  "gsl_spmatrix_long.h",
+                  "gsl_spmatrix_short.h",
+                  "gsl_spmatrix_uchar.h",
+                  "gsl_spmatrix_uint.h",
+                  "gsl_spmatrix_ulong.h",
+                  "gsl_spmatrix_ushort.h",
+                  ]
 ignore_header(filename) = any(endswith.(filename, ignore_headers))
 
 # List of names to ignore in export
diff --git a/gen/readdocs.jl b/gen/readdocs.jl
index e43afad..adaef81 100644
--- a/gen/readdocs.jl
+++ b/gen/readdocs.jl
@@ -13,7 +13,7 @@ function convert_text(str; from, to)
     read(f, String)
 end
 
-DOC_DIR = joinpath(@__DIR__, "gsl-2.5", "doc")
+DOC_DIR = joinpath(@__DIR__, "gsl-$(GSL_VERSION)", "doc")
 
 function parse_file(docs, filename)
     fh = open(filename)
@@ -73,9 +73,9 @@ end
 function readdocs()
     if !isdir(DOC_DIR)
         @info "Downloading GSL docs"
-        run(`wget http://ftp.gnu.org/gnu/gsl/gsl-2.5.tar.gz`)
+        run(`wget http://ftp.gnu.org/gnu/gsl/gsl-$(GSL_VERSION).tar.gz`)
         @info "Unpacking"
-        run(`tar -zxf gsl-2.5.tar.gz`)
+        run(`tar -zxf gsl-$(GSL_VERSION).tar.gz`)
     end
     @info "Reading the docs and converting to Markdown"
     docs = Dict()
diff --git a/src/gen/direct_wrappers/gsl_filter_h.jl b/src/gen/direct_wrappers/gsl_filter_h.jl
index 7746ecf..a08616f 100644
--- a/src/gen/direct_wrappers/gsl_filter_h.jl
+++ b/src/gen/direct_wrappers/gsl_filter_h.jl
@@ -202,16 +202,6 @@ function filter_rmedian(arg0, x, y, w)
     ccall((:gsl_filter_rmedian, libgsl), Cint, (gsl_filter_end_t, Ref{gsl_vector}, Ref{gsl_vector}, Ref{gsl_filter_rmedian_workspace}), arg0, x, y, w)
 end
 
-@doc md"""
-    filter_rmedian2(x, y, w) -> Cint
-
-C signature:
-`int gsl_filter_rmedian2(const gsl_vector * x, gsl_vector * y, gsl_filter_rmedian_workspace * w)`
-"""
-function filter_rmedian2(x, y, w)
-    ccall((:gsl_filter_rmedian2, libgsl), Cint, (Ref{gsl_vector}, Ref{gsl_vector}, Ref{gsl_filter_rmedian_workspace}), x, y, w)
-end
-
 @doc md"""
     filter_impulse_alloc(K) -> Ptr{gsl_filter_impulse_workspace}
 
diff --git a/src/gen/direct_wrappers/gsl_integration_h.jl b/src/gen/direct_wrappers/gsl_integration_h.jl
index 5944b30..5e8f847 100644
--- a/src/gen/direct_wrappers/gsl_integration_h.jl
+++ b/src/gen/direct_wrappers/gsl_integration_h.jl
@@ -875,7 +875,7 @@ GSL documentation:
 >
 > The algorithm divides the integration region into subintervals, and in
 > each iteration, the subinterval with the largest estimated error is
-> processed. The algorithm uses Clenshaw-Curits quadrature rules of
+> processed. The algorithm uses Clenshaw-Curtis quadrature rules of
 > degree 4, 8, 16 and 32 over 5, 9, 17 and 33 nodes respectively. Each
 > interval is initialized with the lowest-degree rule. When an interval
 > is processed, the next-higher degree rule is evaluated and an error
diff --git a/src/gen/direct_wrappers/gsl_interp2d_h.jl b/src/gen/direct_wrappers/gsl_interp2d_h.jl
index 4ab369d..c35664b 100644
--- a/src/gen/direct_wrappers/gsl_interp2d_h.jl
+++ b/src/gen/direct_wrappers/gsl_interp2d_h.jl
@@ -249,6 +249,16 @@ function interp2d_eval_e_extrap(interp, xarr, yarr, zarr, x, y, xa, ya, z)
     ccall((:gsl_interp2d_eval_e_extrap, libgsl), Cint, (Ref{gsl_interp2d}, Ref{Cdouble}, Ref{Cdouble}, Ref{Cdouble}, Cdouble, Cdouble, Ref{gsl_interp_accel}, Ref{gsl_interp_accel}, Ref{Cdouble}), interp, xarr, yarr, zarr, x, y, xa, ya, z)
 end
 
+@doc md"""
+    interp2d_eval_extrap_e(interp, xarr, yarr, zarr, x, y, xa, ya, z) -> Cint
+
+C signature:
+`int gsl_interp2d_eval_extrap_e(const gsl_interp2d * interp, const double xarr[], const double yarr[], const double zarr[], const double x, const double y, gsl_interp_accel * xa, gsl_interp_accel * ya, double * z)`
+"""
+function interp2d_eval_extrap_e(interp, xarr, yarr, zarr, x, y, xa, ya, z)
+    ccall((:gsl_interp2d_eval_extrap_e, libgsl), Cint, (Ref{gsl_interp2d}, Ref{Cdouble}, Ref{Cdouble}, Ref{Cdouble}, Cdouble, Cdouble, Ref{gsl_interp_accel}, Ref{gsl_interp_accel}, Ref{Cdouble}), interp, xarr, yarr, zarr, x, y, xa, ya, z)
+end
+
 @doc md"""
     interp2d_eval_deriv_x(interp, xarr, yarr, zarr, x, y, xa, ya) -> Cdouble
 
diff --git a/src/gen/direct_wrappers/gsl_matrix_char_h.jl b/src/gen/direct_wrappers/gsl_matrix_char_h.jl
index 4d6c6fe..32b40be 100644
--- a/src/gen/direct_wrappers/gsl_matrix_char_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_char_h.jl
@@ -407,13 +407,13 @@ function matrix_char_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_char_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_char_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_char_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_char * dest, const gsl_matrix_char * src)`
+`int gsl_matrix_char_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_char * dest, const gsl_matrix_char * src)`
 """
-function matrix_char_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_char_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_char}, Ref{gsl_matrix_char}), uplo_src, copy_diag, dest, src)
+function matrix_char_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_char_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_char}, Ref{gsl_matrix_char}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_char_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_char_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_char_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_char_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_char * dest, const gsl_matrix_char * src)`
+`int gsl_matrix_char_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_char * dest, const gsl_matrix_char * src)`
 """
-function matrix_char_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_char_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_char}, Ref{gsl_matrix_char}), uplo_src, copy_diag, dest, src)
+function matrix_char_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_char_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_char}, Ref{gsl_matrix_char}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_complex_double_h.jl b/src/gen/direct_wrappers/gsl_matrix_complex_double_h.jl
index 46c0a13..1ffbe97 100644
--- a/src/gen/direct_wrappers/gsl_matrix_complex_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_complex_double_h.jl
@@ -407,13 +407,13 @@ function matrix_complex_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_complex_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src)`
+`int gsl_matrix_complex_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src)`
 """
-function matrix_complex_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex}, Ref{gsl_matrix_complex}), uplo_src, copy_diag, dest, src)
+function matrix_complex_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_complex_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex}, Ref{gsl_matrix_complex}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_complex_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_complex_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src)`
+`int gsl_matrix_complex_transpose_tricpy(CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_complex * dest, const gsl_matrix_complex * src)`
 """
-function matrix_complex_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex}, Ref{gsl_matrix_complex}), uplo_src, copy_diag, dest, src)
+function matrix_complex_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_complex_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex}, Ref{gsl_matrix_complex}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_complex_float_h.jl b/src/gen/direct_wrappers/gsl_matrix_complex_float_h.jl
index 0134233..513386c 100644
--- a/src/gen/direct_wrappers/gsl_matrix_complex_float_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_complex_float_h.jl
@@ -407,13 +407,13 @@ function matrix_complex_float_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_complex_float_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_float_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_float_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src)`
+`int gsl_matrix_complex_float_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src)`
 """
-function matrix_complex_float_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_float_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex_float}, Ref{gsl_matrix_complex_float}), uplo_src, copy_diag, dest, src)
+function matrix_complex_float_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_complex_float_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex_float}, Ref{gsl_matrix_complex_float}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_complex_float_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_complex_float_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_float_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_float_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src)`
+`int gsl_matrix_complex_float_transpose_tricpy(CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src)`
 """
-function matrix_complex_float_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_float_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex_float}, Ref{gsl_matrix_complex_float}), uplo_src, copy_diag, dest, src)
+function matrix_complex_float_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_complex_float_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex_float}, Ref{gsl_matrix_complex_float}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_complex_long_double_h.jl b/src/gen/direct_wrappers/gsl_matrix_complex_long_double_h.jl
index b1af813..b8377ec 100644
--- a/src/gen/direct_wrappers/gsl_matrix_complex_long_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_complex_long_double_h.jl
@@ -407,13 +407,13 @@ function matrix_complex_long_double_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_complex_long_double_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_long_double_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_long_double_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src)`
+`int gsl_matrix_complex_long_double_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src)`
 """
-function matrix_complex_long_double_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_long_double_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex_long_double}, Ref{gsl_matrix_complex_long_double}), uplo_src, copy_diag, dest, src)
+function matrix_complex_long_double_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_complex_long_double_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex_long_double}, Ref{gsl_matrix_complex_long_double}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_complex_long_double_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_complex_long_double_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_complex_long_double_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_complex_long_double_transpose_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src)`
+`int gsl_matrix_complex_long_double_transpose_tricpy(CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src)`
 """
-function matrix_complex_long_double_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_complex_long_double_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_complex_long_double}, Ref{gsl_matrix_complex_long_double}), uplo_src, copy_diag, dest, src)
+function matrix_complex_long_double_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_complex_long_double_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_complex_long_double}, Ref{gsl_matrix_complex_long_double}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_double_h.jl b/src/gen/direct_wrappers/gsl_matrix_double_h.jl
index 7918c69..4970ef6 100644
--- a/src/gen/direct_wrappers/gsl_matrix_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_double_h.jl
@@ -790,13 +790,13 @@ function matrix_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_tricpy(const char uplo_src, const int copy_diag, gsl_matrix * dest, const gsl_matrix * src)`
+`int gsl_matrix_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix * dest, const gsl_matrix * src)`
 """
-function matrix_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix}, Ref{gsl_matrix}), uplo_src, copy_diag, dest, src)
+function matrix_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix}, Ref{gsl_matrix}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -894,13 +894,13 @@ function matrix_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix * dest, const gsl_matrix * src)`
+`int gsl_matrix_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix * dest, const gsl_matrix * src)`
 """
-function matrix_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix}, Ref{gsl_matrix}), uplo_src, copy_diag, dest, src)
+function matrix_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix}, Ref{gsl_matrix}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_float_h.jl b/src/gen/direct_wrappers/gsl_matrix_float_h.jl
index 62f51fc..517adfd 100644
--- a/src/gen/direct_wrappers/gsl_matrix_float_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_float_h.jl
@@ -407,13 +407,13 @@ function matrix_float_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_float_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_float_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_float_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_float * dest, const gsl_matrix_float * src)`
+`int gsl_matrix_float_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_float * dest, const gsl_matrix_float * src)`
 """
-function matrix_float_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_float_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_float}, Ref{gsl_matrix_float}), uplo_src, copy_diag, dest, src)
+function matrix_float_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_float_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_float}, Ref{gsl_matrix_float}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_float_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_float_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_float_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_float_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_float * dest, const gsl_matrix_float * src)`
+`int gsl_matrix_float_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_float * dest, const gsl_matrix_float * src)`
 """
-function matrix_float_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_float_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_float}, Ref{gsl_matrix_float}), uplo_src, copy_diag, dest, src)
+function matrix_float_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_float_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_float}, Ref{gsl_matrix_float}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_int_h.jl b/src/gen/direct_wrappers/gsl_matrix_int_h.jl
index c1b61e5..73cd91a 100644
--- a/src/gen/direct_wrappers/gsl_matrix_int_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_int_h.jl
@@ -407,13 +407,13 @@ function matrix_int_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_int_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_int_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_int_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_int * dest, const gsl_matrix_int * src)`
+`int gsl_matrix_int_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_int * dest, const gsl_matrix_int * src)`
 """
-function matrix_int_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_int_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_int}, Ref{gsl_matrix_int}), uplo_src, copy_diag, dest, src)
+function matrix_int_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_int_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_int}, Ref{gsl_matrix_int}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_int_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_int_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_int_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_int_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_int * dest, const gsl_matrix_int * src)`
+`int gsl_matrix_int_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_int * dest, const gsl_matrix_int * src)`
 """
-function matrix_int_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_int_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_int}, Ref{gsl_matrix_int}), uplo_src, copy_diag, dest, src)
+function matrix_int_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_int_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_int}, Ref{gsl_matrix_int}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_long_double_h.jl b/src/gen/direct_wrappers/gsl_matrix_long_double_h.jl
index 56852b3..669dc57 100644
--- a/src/gen/direct_wrappers/gsl_matrix_long_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_long_double_h.jl
@@ -407,13 +407,13 @@ function matrix_long_double_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_long_double_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_long_double_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_long_double_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src)`
+`int gsl_matrix_long_double_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src)`
 """
-function matrix_long_double_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_long_double_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_long_double}, Ref{gsl_matrix_long_double}), uplo_src, copy_diag, dest, src)
+function matrix_long_double_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_long_double_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_long_double}, Ref{gsl_matrix_long_double}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_long_double_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_long_double_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_long_double_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_long_double_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src)`
+`int gsl_matrix_long_double_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_long_double * dest, const gsl_matrix_long_double * src)`
 """
-function matrix_long_double_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_long_double_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_long_double}, Ref{gsl_matrix_long_double}), uplo_src, copy_diag, dest, src)
+function matrix_long_double_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_long_double_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_long_double}, Ref{gsl_matrix_long_double}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_long_h.jl b/src/gen/direct_wrappers/gsl_matrix_long_h.jl
index a9dc9f7..23482ba 100644
--- a/src/gen/direct_wrappers/gsl_matrix_long_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_long_h.jl
@@ -407,13 +407,13 @@ function matrix_long_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_long_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_long_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_long_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_long * dest, const gsl_matrix_long * src)`
+`int gsl_matrix_long_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_long * dest, const gsl_matrix_long * src)`
 """
-function matrix_long_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_long_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_long}, Ref{gsl_matrix_long}), uplo_src, copy_diag, dest, src)
+function matrix_long_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_long_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_long}, Ref{gsl_matrix_long}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_long_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_long_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_long_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_long_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_long * dest, const gsl_matrix_long * src)`
+`int gsl_matrix_long_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_long * dest, const gsl_matrix_long * src)`
 """
-function matrix_long_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_long_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_long}, Ref{gsl_matrix_long}), uplo_src, copy_diag, dest, src)
+function matrix_long_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_long_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_long}, Ref{gsl_matrix_long}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_short_h.jl b/src/gen/direct_wrappers/gsl_matrix_short_h.jl
index 4b06fa8..0cc009e 100644
--- a/src/gen/direct_wrappers/gsl_matrix_short_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_short_h.jl
@@ -407,13 +407,13 @@ function matrix_short_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_short_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_short_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_short_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_short * dest, const gsl_matrix_short * src)`
+`int gsl_matrix_short_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_short * dest, const gsl_matrix_short * src)`
 """
-function matrix_short_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_short_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_short}, Ref{gsl_matrix_short}), uplo_src, copy_diag, dest, src)
+function matrix_short_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_short_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_short}, Ref{gsl_matrix_short}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_short_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_short_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_short_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_short_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_short * dest, const gsl_matrix_short * src)`
+`int gsl_matrix_short_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_short * dest, const gsl_matrix_short * src)`
 """
-function matrix_short_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_short_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_short}, Ref{gsl_matrix_short}), uplo_src, copy_diag, dest, src)
+function matrix_short_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_short_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_short}, Ref{gsl_matrix_short}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_uchar_h.jl b/src/gen/direct_wrappers/gsl_matrix_uchar_h.jl
index 53b1987..7230f7b 100644
--- a/src/gen/direct_wrappers/gsl_matrix_uchar_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_uchar_h.jl
@@ -407,13 +407,13 @@ function matrix_uchar_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_uchar_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_uchar_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_uchar_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src)`
+`int gsl_matrix_uchar_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src)`
 """
-function matrix_uchar_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_uchar_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_uchar}, Ref{gsl_matrix_uchar}), uplo_src, copy_diag, dest, src)
+function matrix_uchar_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_uchar_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_uchar}, Ref{gsl_matrix_uchar}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_uchar_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_uchar_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_uchar_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_uchar_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src)`
+`int gsl_matrix_uchar_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_uchar * dest, const gsl_matrix_uchar * src)`
 """
-function matrix_uchar_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_uchar_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_uchar}, Ref{gsl_matrix_uchar}), uplo_src, copy_diag, dest, src)
+function matrix_uchar_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_uchar_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_uchar}, Ref{gsl_matrix_uchar}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_uint_h.jl b/src/gen/direct_wrappers/gsl_matrix_uint_h.jl
index cf27851..5a7998e 100644
--- a/src/gen/direct_wrappers/gsl_matrix_uint_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_uint_h.jl
@@ -407,13 +407,13 @@ function matrix_uint_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_uint_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_uint_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_uint_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src)`
+`int gsl_matrix_uint_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src)`
 """
-function matrix_uint_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_uint_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_uint}, Ref{gsl_matrix_uint}), uplo_src, copy_diag, dest, src)
+function matrix_uint_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_uint_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_uint}, Ref{gsl_matrix_uint}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_uint_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_uint_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_uint_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_uint_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src)`
+`int gsl_matrix_uint_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_uint * dest, const gsl_matrix_uint * src)`
 """
-function matrix_uint_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_uint_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_uint}, Ref{gsl_matrix_uint}), uplo_src, copy_diag, dest, src)
+function matrix_uint_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_uint_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_uint}, Ref{gsl_matrix_uint}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_ulong_h.jl b/src/gen/direct_wrappers/gsl_matrix_ulong_h.jl
index 860a824..3d771cc 100644
--- a/src/gen/direct_wrappers/gsl_matrix_ulong_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_ulong_h.jl
@@ -407,13 +407,13 @@ function matrix_ulong_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_ulong_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_ulong_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_ulong_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src)`
+`int gsl_matrix_ulong_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src)`
 """
-function matrix_ulong_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_ulong_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_ulong}, Ref{gsl_matrix_ulong}), uplo_src, copy_diag, dest, src)
+function matrix_ulong_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_ulong_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_ulong}, Ref{gsl_matrix_ulong}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_ulong_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_ulong_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_ulong_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_ulong_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src)`
+`int gsl_matrix_ulong_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_ulong * dest, const gsl_matrix_ulong * src)`
 """
-function matrix_ulong_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_ulong_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_ulong}, Ref{gsl_matrix_ulong}), uplo_src, copy_diag, dest, src)
+function matrix_ulong_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_ulong_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_ulong}, Ref{gsl_matrix_ulong}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_matrix_ushort_h.jl b/src/gen/direct_wrappers/gsl_matrix_ushort_h.jl
index 69666c1..7c6635b 100644
--- a/src/gen/direct_wrappers/gsl_matrix_ushort_h.jl
+++ b/src/gen/direct_wrappers/gsl_matrix_ushort_h.jl
@@ -407,13 +407,13 @@ function matrix_ushort_swap(m1, m2)
 end
 
 @doc md"""
-    matrix_ushort_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_ushort_tricpy(Uplo, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_ushort_tricpy(const char uplo_src, const int copy_diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src)`
+`int gsl_matrix_ushort_tricpy(CBLAS_UPLO_t Uplo, CBLAS_DIAG_t Diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src)`
 """
-function matrix_ushort_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_ushort_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_ushort}, Ref{gsl_matrix_ushort}), uplo_src, copy_diag, dest, src)
+function matrix_ushort_tricpy(Uplo, Diag, dest, src)
+    ccall((:gsl_matrix_ushort_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_ushort}, Ref{gsl_matrix_ushort}), Uplo, Diag, dest, src)
 end
 
 @doc md"""
@@ -467,13 +467,13 @@ function matrix_ushort_transpose_memcpy(dest, src)
 end
 
 @doc md"""
-    matrix_ushort_transpose_tricpy(uplo_src, copy_diag, dest, src) -> Cint
+    matrix_ushort_transpose_tricpy(Uplo_src, Diag, dest, src) -> Cint
 
 C signature:
-`int gsl_matrix_ushort_transpose_tricpy (const char uplo_src, const int copy_diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src)`
+`int gsl_matrix_ushort_transpose_tricpy (CBLAS_UPLO_t Uplo_src, CBLAS_DIAG_t Diag, gsl_matrix_ushort * dest, const gsl_matrix_ushort * src)`
 """
-function matrix_ushort_transpose_tricpy(uplo_src, copy_diag, dest, src)
-    ccall((:gsl_matrix_ushort_transpose_tricpy, libgsl), Cint, (Cchar, Cint, Ref{gsl_matrix_ushort}, Ref{gsl_matrix_ushort}), uplo_src, copy_diag, dest, src)
+function matrix_ushort_transpose_tricpy(Uplo_src, Diag, dest, src)
+    ccall((:gsl_matrix_ushort_transpose_tricpy, libgsl), Cint, (CBLAS_UPLO_t, CBLAS_DIAG_t, Ref{gsl_matrix_ushort}, Ref{gsl_matrix_ushort}), Uplo_src, Diag, dest, src)
 end
 
 @doc md"""
diff --git a/src/gen/direct_wrappers/gsl_permute_vector_double_h.jl b/src/gen/direct_wrappers/gsl_permute_vector_double_h.jl
index 01cdea2..f84a199 100644
--- a/src/gen/direct_wrappers/gsl_permute_vector_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_permute_vector_double_h.jl
@@ -42,9 +42,9 @@ GSL documentation:
 > elements of the vector `v`, considered as a row-vector acted on by an
 > inverse permutation matrix from the right, $v' = v P^T$. Note that for
 > permutation matrices the inverse is the same as the transpose. The
-> $j$-th column of the permutation matrix $P$ is given by the
-> $:data:`p$\_j\`-th column of the identity matrix. The permutation `p`
-> and the vector `v` must have the same length.
+> $j$-th column of the permutation matrix $P$ is given by the $p_j$-th
+> column of the identity matrix. The permutation `p` and the vector `v`
+> must have the same length.
 
 """
 function permute_vector_inverse(p, v)
diff --git a/src/gen/direct_wrappers/gsl_randist_h.jl b/src/gen/direct_wrappers/gsl_randist_h.jl
index bd824c1..9e04413 100644
--- a/src/gen/direct_wrappers/gsl_randist_h.jl
+++ b/src/gen/direct_wrappers/gsl_randist_h.jl
@@ -816,7 +816,7 @@ GSL documentation:
 
 ### `double gsl_ran_ugaussian_tail (const gsl_rng * r, double a)`
 
-> double gsl\_ran\_ugaussian\_tail\_pdf (double `x`, double `a`)
+> double gsl\_ran\_ugaussian\_tail\_pdf (double x, double a)
 
 > These functions compute results for the tail of a unit Gaussian
 > distribution. They are equivalent to the functions above with a
diff --git a/src/gen/direct_wrappers/gsl_sf_hermite_h.jl b/src/gen/direct_wrappers/gsl_sf_hermite_h.jl
index dcf80ed..c5ecee9 100644
--- a/src/gen/direct_wrappers/gsl_sf_hermite_h.jl
+++ b/src/gen/direct_wrappers/gsl_sf_hermite_h.jl
@@ -29,8 +29,9 @@ GSL documentation:
 > int gsl\_sf\_hermite\_prob\_e (const int n, const double x,
 > gsl\_sf\_result \* result)
 
-> These routines evaluate the probabilists' Hermite polynomial $He_n(x)$
-> of order `n` at position `x`.
+> These routines evaluate the probabilist Hermite polynomial $He_n(x)$
+> of order `n` at position `x`. If an overflow is detected,
+> `GSL_EOVRFLW` is returned without calling the error handler.
 
 """
 function sf_hermite_prob(n, x)
@@ -38,96 +39,97 @@ function sf_hermite_prob(n, x)
 end
 
 @doc md"""
-    sf_hermite_prob_der_e(m, n, x, result) -> Cint
+    sf_hermite_prob_deriv_e(m, n, x, result) -> Cint
 
 C signature:
-`int gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_prob_deriv_e(const int m, const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_prob_der_e(m, n, x, result)
-    ccall((:gsl_sf_hermite_prob_der_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
+function sf_hermite_prob_deriv_e(m, n, x, result)
+    ccall((:gsl_sf_hermite_prob_deriv_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
 end
 
 @doc md"""
-    sf_hermite_prob_der(m, n, x) -> Cdouble
+    sf_hermite_prob_deriv(m, n, x) -> Cdouble
 
 C signature:
-`double gsl_sf_hermite_prob_der(const int m, const int n, const double x)`
+`double gsl_sf_hermite_prob_deriv(const int m, const int n, const double x)`
 
 GSL documentation:
 
-### `double gsl_sf_hermite_prob_der (const int m, const  int n, const double x)`
+### `double gsl_sf_hermite_prob_deriv (const int m, const  int n, const double x)`
 
-> int gsl\_sf\_hermite\_prob\_der\_e (const int m, const int n, const
+> int gsl\_sf\_hermite\_prob\_deriv\_e (const int m, const int n, const
 > double x, gsl\_sf\_result \* result)
 
-> These routines evaluate the `m`-th derivative of the probabilists'
+> These routines evaluate the `m`-th derivative of the probabilist
 > Hermite polynomial $He_n(x)$ of order `n` at position `x`.
 
 """
-function sf_hermite_prob_der(m, n, x)
-    ccall((:gsl_sf_hermite_prob_der, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
+function sf_hermite_prob_deriv(m, n, x)
+    ccall((:gsl_sf_hermite_prob_deriv, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
 end
 
 @doc md"""
-    sf_hermite_phys_e(n, x, result) -> Cint
+    sf_hermite_e(n, x, result) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_e(const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_phys_e(n, x, result)
-    ccall((:gsl_sf_hermite_phys_e, libgsl), Cint, (Cint, Cdouble, Ref{gsl_sf_result}), n, x, result)
+function sf_hermite_e(n, x, result)
+    ccall((:gsl_sf_hermite_e, libgsl), Cint, (Cint, Cdouble, Ref{gsl_sf_result}), n, x, result)
 end
 
 @doc md"""
-    sf_hermite_phys(n, x) -> Cdouble
+    sf_hermite(n, x) -> Cdouble
 
 C signature:
-`double gsl_sf_hermite_phys(const int n, const double x)`
+`double gsl_sf_hermite(const int n, const double x)`
 
 GSL documentation:
 
-### `double gsl_sf_hermite_phys (const int n, const double x)`
+### `double gsl_sf_hermite (const int n, const double x)`
 
-> int gsl\_sf\_hermite\_phys\_e (const int n, const double x,
-> gsl\_sf\_result \* result)
+> int gsl\_sf\_hermite\_e (const int n, const double x, gsl\_sf\_result
+> \* result)
 
-> These routines evaluate the physicists' Hermite polynomial $H_n(x)$ of
-> order `n` at position `x`.
+> These routines evaluate the physicist Hermite polynomial $H_n(x)$ of
+> order `n` at position `x`. If an overflow is detected, `GSL_EOVRFLW`
+> is returned without calling the error handler.
 
 """
-function sf_hermite_phys(n, x)
-    ccall((:gsl_sf_hermite_phys, libgsl), Cdouble, (Cint, Cdouble), n, x)
+function sf_hermite(n, x)
+    ccall((:gsl_sf_hermite, libgsl), Cdouble, (Cint, Cdouble), n, x)
 end
 
 @doc md"""
-    sf_hermite_phys_der_e(m, n, x, result) -> Cint
+    sf_hermite_deriv_e(m, n, x, result) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_deriv_e(const int m, const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_phys_der_e(m, n, x, result)
-    ccall((:gsl_sf_hermite_phys_der_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
+function sf_hermite_deriv_e(m, n, x, result)
+    ccall((:gsl_sf_hermite_deriv_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
 end
 
 @doc md"""
-    sf_hermite_phys_der(m, n, x) -> Cdouble
+    sf_hermite_deriv(m, n, x) -> Cdouble
 
 C signature:
-`double gsl_sf_hermite_phys_der(const int m, const int n, const double x)`
+`double gsl_sf_hermite_deriv(const int m, const int n, const double x)`
 
 GSL documentation:
 
-### `double gsl_sf_hermite_phys_der (const int m, const int n, const double x)`
+### `double gsl_sf_hermite_deriv (const int m, const int n, const double x)`
 
-> int gsl\_sf\_hermite\_phys\_der\_e (const int m, const int n, const
-> double x, gsl\_sf\_result \* result)
+> int gsl\_sf\_hermite\_deriv\_e (const int m, const int n, const double
+> x, gsl\_sf\_result \* result)
 
-> These routines evaluate the `m`-th derivative of the physicists'
-> Hermite polynomial $H_n(x)$ of order `n` at position `x`.
+> These routines evaluate the `m`-th derivative of the physicist Hermite
+> polynomial $H_n(x)$ of order `n` at position `x`.
 
 """
-function sf_hermite_phys_der(m, n, x)
-    ccall((:gsl_sf_hermite_phys_der, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
+function sf_hermite_deriv(m, n, x)
+    ccall((:gsl_sf_hermite_deriv, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
 end
 
 @doc md"""
@@ -154,13 +156,46 @@ GSL documentation:
 > gsl\_sf\_result \* result)
 
 > These routines evaluate the Hermite function $\psi_n(x)$ of order `n`
-> at position `x`.
+> at position `x` using a three term recurrence relation. The algorithm
+> complexity is $O(n)$.
 
 """
 function sf_hermite_func(n, x)
     ccall((:gsl_sf_hermite_func, libgsl), Cdouble, (Cint, Cdouble), n, x)
 end
 
+@doc md"""
+    sf_hermite_func_fast_e(n, x, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_func_fast_e(const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_func_fast_e(n, x, result)
+    ccall((:gsl_sf_hermite_func_fast_e, libgsl), Cint, (Cint, Cdouble, Ref{gsl_sf_result}), n, x, result)
+end
+
+@doc md"""
+    sf_hermite_func_fast(n, x) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_func_fast(const int n, const double x)`
+
+GSL documentation:
+
+### `double gsl_sf_hermite_func_fast (const int n, const double x)`
+
+> int gsl\_sf\_hermite\_func\_fast\_e (const int n, const double x,
+> gsl\_sf\_result \* result)
+
+> These routines evaluate the Hermite function $\psi_n(x)$ of order `n`
+> at position `x` using a the Cauchy integral algorithm due to Bunck,
+> 2009. The algorithm complexity is $O(\sqrt{n})$.
+
+"""
+function sf_hermite_func_fast(n, x)
+    ccall((:gsl_sf_hermite_func_fast, libgsl), Cdouble, (Cint, Cdouble), n, x)
+end
+
 @doc md"""
     sf_hermite_prob_array(nmax, x, result_array) -> Cint
 
@@ -171,7 +206,7 @@ GSL documentation:
 
 ### `int gsl_sf_hermite_prob_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all probabilists' Hermite polynomials $He_n(x)$
+> This routine evaluates all probabilist Hermite polynomials $He_n(x)$
 > up to order `nmax` at position `x`. The results are stored in
 > `result_array`.
 
@@ -181,42 +216,45 @@ function sf_hermite_prob_array(nmax, x, result_array)
 end
 
 @doc md"""
-    sf_hermite_prob_array_der(m, nmax, x, result_array) -> Cint
+    sf_hermite_prob_array_deriv(m, nmax, x, result_array) -> Cint
 
 C signature:
-`int gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_prob_array_deriv(const int m, const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_prob_array_der (const int m, const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_prob_array_deriv (const int m, const int nmax, const double x, double * result_array)`
 
-> This routine evaluates the `m`-th derivative of all probabilists'
-> Hermite polynomials $He_n(x)$ up to order `nmax` at position `x`. The
-> results are stored in `result_array`.
+> This routine evaluates the `m`-th derivative of all probabilist
+> Hermite polynomials $He_n(x)$ from orders $0, \dots, \text{nmax}$ at
+> position `x`. The result $d^m/dx^m He_n(x)$ is stored in
+> `result_array[n]`. The output `result_array` must have length at least
+> `nmax + 1`.
 
 """
-function sf_hermite_prob_array_der(m, nmax, x, result_array)
-    ccall((:gsl_sf_hermite_prob_array_der, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
+function sf_hermite_prob_array_deriv(m, nmax, x, result_array)
+    ccall((:gsl_sf_hermite_prob_array_deriv, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
 end
 
 @doc md"""
-    sf_hermite_prob_der_array(mmax, n, x, result_array) -> Cint
+    sf_hermite_prob_deriv_array(mmax, n, x, result_array) -> Cint
 
 C signature:
-`int gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array)`
+`int gsl_sf_hermite_prob_deriv_array(const int mmax, const int n, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_prob_der_array (const int mmax, const int n, const double x, double * result_array)`
+### `int gsl_sf_hermite_prob_deriv_array (const int mmax, const int n, const double x, double * result_array)`
 
-> This routine evaluates all derivatives (starting from 0) up to the
-> `mmax`-th derivative of the probabilists' Hermite polynomial of order
-> `n` $He_n(x)$ at position `x`. The results are stored in
-> `result_array`.
+> This routine evaluates all derivative orders from
+> $0, \dots, \text{mmax}$ of the probabilist Hermite polynomial of order
+> `n`, $He_n$, at position `x`. The result $d^m/dx^m He_n(x)$ is stored
+> in `result_array[m]`. The output `result_array` must have length at
+> least `mmax + 1`.
 
 """
-function sf_hermite_prob_der_array(mmax, n, x, result_array)
-    ccall((:gsl_sf_hermite_prob_der_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
+function sf_hermite_prob_deriv_array(mmax, n, x, result_array)
+    ccall((:gsl_sf_hermite_prob_deriv_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
 end
 
 @doc md"""
@@ -243,7 +281,7 @@ GSL documentation:
 > const double \* a, gsl\_sf\_result \* result)
 
 > These routines evaluate the series $\sum_{j=0}^n a_j He_j(x)$ with
-> $He_j$ being the $j$-th probabilists' Hermite polynomial using the
+> $He_j$ being the $j$-th probabilist Hermite polynomial using the
 > Clenshaw algorithm.
 
 """
@@ -252,92 +290,95 @@ function sf_hermite_prob_series(n, x, a)
 end
 
 @doc md"""
-    sf_hermite_phys_array(nmax, x, result_array) -> Cint
+    sf_hermite_array(nmax, x, result_array) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_array(const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_array (const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all physicists' Hermite polynomials $H_n$ up to
+> This routine evaluates all physicist Hermite polynomials $H_n$ up to
 > order `nmax` at position `x`. The results are stored in
 > `result_array`.
 
 """
-function sf_hermite_phys_array(nmax, x, result_array)
-    ccall((:gsl_sf_hermite_phys_array, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}), nmax, x, result_array)
+function sf_hermite_array(nmax, x, result_array)
+    ccall((:gsl_sf_hermite_array, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}), nmax, x, result_array)
 end
 
 @doc md"""
-    sf_hermite_phys_array_der(m, nmax, x, result_array) -> Cint
+    sf_hermite_array_deriv(m, nmax, x, result_array) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_array_deriv(const int m, const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_array_der (const int m, const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_array_deriv (const int m, const int nmax, const double x, double * result_array)`
 
-> This routine evaluates the `m`-th derivative of all physicists'
-> Hermite polynomials $H_n$ up to order `nmax` at position `x`. The
-> results are stored in `result_array`.
+> This routine evaluates the `m`-th derivative of all physicist Hermite
+> polynomials $H_n(x)$ from orders $0, \dots, \text{nmax}$ at position
+> `x`. The result $d^m/dx^m H_n(x)$ is stored in `result_array[n]`. The
+> output `result_array` must have length at least `nmax + 1`.
 
 """
-function sf_hermite_phys_array_der(m, nmax, x, result_array)
-    ccall((:gsl_sf_hermite_phys_array_der, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
+function sf_hermite_array_deriv(m, nmax, x, result_array)
+    ccall((:gsl_sf_hermite_array_deriv, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
 end
 
 @doc md"""
-    sf_hermite_phys_der_array(mmax, n, x, result_array) -> Cint
+    sf_hermite_deriv_array(mmax, n, x, result_array) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array)`
+`int gsl_sf_hermite_deriv_array(const int mmax, const int n, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_der_array (const int mmax, const int n, const double x, double * result_array)`
+### `int gsl_sf_hermite_deriv_array (const int mmax, const int n, const double x, double * result_array)`
 
-> This routine evaluates all derivatives (starting from 0) up to the
-> `mmax`-th derivative of the physicists' Hermite polynomial of order
-> `n` $H_n$ at position `x`. The results are stored in `result_array`.
+> This routine evaluates all derivative orders from
+> $0, \dots, \text{mmax}$ of the physicist Hermite polynomial of order
+> `n`, $H_n$, at position `x`. The result $d^m/dx^m H_n(x)$ is stored in
+> `result_array[m]`. The output `result_array` must have length at least
+> `mmax + 1`.
 
 """
-function sf_hermite_phys_der_array(mmax, n, x, result_array)
-    ccall((:gsl_sf_hermite_phys_der_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
+function sf_hermite_deriv_array(mmax, n, x, result_array)
+    ccall((:gsl_sf_hermite_deriv_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
 end
 
 @doc md"""
-    sf_hermite_phys_series_e(n, x, a, result) -> Cint
+    sf_hermite_series_e(n, x, a, result) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
+`int gsl_sf_hermite_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
 """
-function sf_hermite_phys_series_e(n, x, a, result)
-    ccall((:gsl_sf_hermite_phys_series_e, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}, Ref{gsl_sf_result}), n, x, a, result)
+function sf_hermite_series_e(n, x, a, result)
+    ccall((:gsl_sf_hermite_series_e, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}, Ref{gsl_sf_result}), n, x, a, result)
 end
 
 @doc md"""
-    sf_hermite_phys_series(n, x, a) -> Cdouble
+    sf_hermite_series(n, x, a) -> Cdouble
 
 C signature:
-`double gsl_sf_hermite_phys_series(const int n, const double x, const double * a)`
+`double gsl_sf_hermite_series(const int n, const double x, const double * a)`
 
 GSL documentation:
 
-### `double gsl_sf_hermite_phys_series (const int n, const double x, const double * a)`
+### `double gsl_sf_hermite_series (const int n, const double x, const double * a)`
 
-> int gsl\_sf\_hermite\_phys\_series\_e (const int n, const double x,
-> const double \* a, gsl\_sf\_result \* result)
+> int gsl\_sf\_hermite\_series\_e (const int n, const double x, const
+> double \* a, gsl\_sf\_result \* result)
 
 > These routines evaluate the series $\sum_{j=0}^n a_j H_j(x)$ with
-> $H_j$ being the $j$-th physicists' Hermite polynomial using the
-> Clenshaw algorithm.
+> $H_j$ being the $j$-th physicist Hermite polynomial using the Clenshaw
+> algorithm.
 
 """
-function sf_hermite_phys_series(n, x, a)
-    ccall((:gsl_sf_hermite_phys_series, libgsl), Cdouble, (Cint, Cdouble, Ref{Cdouble}), n, x, a)
+function sf_hermite_series(n, x, a)
+    ccall((:gsl_sf_hermite_series, libgsl), Cdouble, (Cint, Cdouble, Ref{Cdouble}), n, x, a)
 end
 
 @doc md"""
@@ -350,8 +391,10 @@ GSL documentation:
 
 ### `int gsl_sf_hermite_func_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all Hermite functions $\psi_n(x)$ up to order
-> `nmax` at position `x`. The results are stored in `result_array`.
+> This routine evaluates all Hermite functions $\psi_n(x)$ for orders
+> $n = 0, \dots, \textrm{nmax}$ at position `x`, using the recurrence
+> relation algorithm. The results are stored in `result_array` which has
+> length at least `nmax + 1`.
 
 """
 function sf_hermite_func_array(nmax, x, result_array)
@@ -444,7 +487,7 @@ GSL documentation:
 > int gsl\_sf\_hermite\_prob\_zero\_e (const int n, const int s,
 > gsl\_sf\_result \* result)
 
-> These routines evaluate the `s`-th zero of the probabilists' Hermite
+> These routines evaluate the `s`-th zero of the probabilist Hermite
 > polynomial $He_n(x)$ of order `n`.
 
 """
@@ -453,34 +496,34 @@ function sf_hermite_prob_zero(n, s)
 end
 
 @doc md"""
-    sf_hermite_phys_zero_e(n, s, result) -> Cint
+    sf_hermite_zero_e(n, s, result) -> Cint
 
 C signature:
-`int gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result)`
+`int gsl_sf_hermite_zero_e(const int n, const int s, gsl_sf_result * result)`
 """
-function sf_hermite_phys_zero_e(n, s, result)
-    ccall((:gsl_sf_hermite_phys_zero_e, libgsl), Cint, (Cint, Cint, Ref{gsl_sf_result}), n, s, result)
+function sf_hermite_zero_e(n, s, result)
+    ccall((:gsl_sf_hermite_zero_e, libgsl), Cint, (Cint, Cint, Ref{gsl_sf_result}), n, s, result)
 end
 
 @doc md"""
-    sf_hermite_phys_zero(n, s) -> Cdouble
+    sf_hermite_zero(n, s) -> Cdouble
 
 C signature:
-`double gsl_sf_hermite_phys_zero(const int n, const int s)`
+`double gsl_sf_hermite_zero(const int n, const int s)`
 
 GSL documentation:
 
-### `double gsl_sf_hermite_phys_zero (const int n, const int s)`
+### `double gsl_sf_hermite_zero (const int n, const int s)`
 
-> int gsl\_sf\_hermite\_phys\_zero\_e (const int n, const int s,
+> int gsl\_sf\_hermite\_zero\_e (const int n, const int s,
 > gsl\_sf\_result \* result)
 
-> These routines evaluate the `s`-th zero of the physicists' Hermite
+> These routines evaluate the `s`-th zero of the physicist Hermite
 > polynomial $H_n(x)$ of order `n`.
 
 """
-function sf_hermite_phys_zero(n, s)
-    ccall((:gsl_sf_hermite_phys_zero, libgsl), Cdouble, (Cint, Cint), n, s)
+function sf_hermite_zero(n, s)
+    ccall((:gsl_sf_hermite_zero, libgsl), Cdouble, (Cint, Cint), n, s)
 end
 
 @doc md"""
@@ -511,3 +554,153 @@ function sf_hermite_func_zero(n, s)
     ccall((:gsl_sf_hermite_func_zero, libgsl), Cdouble, (Cint, Cint), n, s)
 end
 
+@doc md"""
+    sf_hermite_phys_e(n, x, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_e(n, x, result)
+    ccall((:gsl_sf_hermite_phys_e, libgsl), Cint, (Cint, Cdouble, Ref{gsl_sf_result}), n, x, result)
+end
+
+@doc md"""
+    sf_hermite_phys(n, x) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_phys(const int n, const double x)`
+"""
+function sf_hermite_phys(n, x)
+    ccall((:gsl_sf_hermite_phys, libgsl), Cdouble, (Cint, Cdouble), n, x)
+end
+
+@doc md"""
+    sf_hermite_phys_der_e(m, n, x, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_der_e(m, n, x, result)
+    ccall((:gsl_sf_hermite_phys_der_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
+end
+
+@doc md"""
+    sf_hermite_phys_der(m, n, x) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_phys_der(const int m, const int n, const double x)`
+"""
+function sf_hermite_phys_der(m, n, x)
+    ccall((:gsl_sf_hermite_phys_der, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
+end
+
+@doc md"""
+    sf_hermite_phys_array(nmax, x, result_array) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_phys_array(nmax, x, result_array)
+    ccall((:gsl_sf_hermite_phys_array, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}), nmax, x, result_array)
+end
+
+@doc md"""
+    sf_hermite_phys_series_e(n, x, a, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_series_e(n, x, a, result)
+    ccall((:gsl_sf_hermite_phys_series_e, libgsl), Cint, (Cint, Cdouble, Ref{Cdouble}, Ref{gsl_sf_result}), n, x, a, result)
+end
+
+@doc md"""
+    sf_hermite_phys_series(n, x, a) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_phys_series(const int n, const double x, const double * a)`
+"""
+function sf_hermite_phys_series(n, x, a)
+    ccall((:gsl_sf_hermite_phys_series, libgsl), Cdouble, (Cint, Cdouble, Ref{Cdouble}), n, x, a)
+end
+
+@doc md"""
+    sf_hermite_phys_array_der(m, nmax, x, result_array) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_phys_array_der(m, nmax, x, result_array)
+    ccall((:gsl_sf_hermite_phys_array_der, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
+end
+
+@doc md"""
+    sf_hermite_phys_der_array(mmax, n, x, result_array) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array)`
+"""
+function sf_hermite_phys_der_array(mmax, n, x, result_array)
+    ccall((:gsl_sf_hermite_phys_der_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
+end
+
+@doc md"""
+    sf_hermite_phys_zero_e(n, s, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_zero_e(n, s, result)
+    ccall((:gsl_sf_hermite_phys_zero_e, libgsl), Cint, (Cint, Cint, Ref{gsl_sf_result}), n, s, result)
+end
+
+@doc md"""
+    sf_hermite_phys_zero(n, s) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_phys_zero(const int n, const int s)`
+"""
+function sf_hermite_phys_zero(n, s)
+    ccall((:gsl_sf_hermite_phys_zero, libgsl), Cdouble, (Cint, Cint), n, s)
+end
+
+@doc md"""
+    sf_hermite_prob_array_der(m, nmax, x, result_array) -> Cint
+
+C signature:
+`int gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_prob_array_der(m, nmax, x, result_array)
+    ccall((:gsl_sf_hermite_prob_array_der, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), m, nmax, x, result_array)
+end
+
+@doc md"""
+    sf_hermite_prob_der_array(mmax, n, x, result_array) -> Cint
+
+C signature:
+`int gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array)`
+"""
+function sf_hermite_prob_der_array(mmax, n, x, result_array)
+    ccall((:gsl_sf_hermite_prob_der_array, libgsl), Cint, (Cint, Cint, Cdouble, Ref{Cdouble}), mmax, n, x, result_array)
+end
+
+@doc md"""
+    sf_hermite_prob_der_e(m, n, x, result) -> Cint
+
+C signature:
+`int gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_prob_der_e(m, n, x, result)
+    ccall((:gsl_sf_hermite_prob_der_e, libgsl), Cint, (Cint, Cint, Cdouble, Ref{gsl_sf_result}), m, n, x, result)
+end
+
+@doc md"""
+    sf_hermite_prob_der(m, n, x) -> Cdouble
+
+C signature:
+`double gsl_sf_hermite_prob_der(const int m, const int n, const double x)`
+"""
+function sf_hermite_prob_der(m, n, x)
+    ccall((:gsl_sf_hermite_prob_der, libgsl), Cdouble, (Cint, Cint, Cdouble), m, n, x)
+end
+
diff --git a/src/gen/direct_wrappers/gsl_vector_char_h.jl b/src/gen/direct_wrappers/gsl_vector_char_h.jl
index ebe18c2..bcb8411 100644
--- a/src/gen/direct_wrappers/gsl_vector_char_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_char_h.jl
@@ -350,10 +350,10 @@ end
     vector_char_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_char_scale (gsl_vector_char * a, const double x)`
+`int gsl_vector_char_scale (gsl_vector_char * a, const char x)`
 """
 function vector_char_scale(a, x)
-    ccall((:gsl_vector_char_scale, libgsl), Cint, (Ref{gsl_vector_char}, Cdouble), a, x)
+    ccall((:gsl_vector_char_scale, libgsl), Cint, (Ref{gsl_vector_char}, Cchar), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_char_add_constant(a, x)
     ccall((:gsl_vector_char_add_constant, libgsl), Cint, (Ref{gsl_vector_char}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_char_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_char_axpby (const char alpha, const gsl_vector_char * x, const char beta, gsl_vector_char * y)`
+"""
+function vector_char_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_char_axpby, libgsl), Cint, (Cchar, Ref{gsl_vector_char}, Cchar, Ref{gsl_vector_char}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_char_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_complex_double_h.jl b/src/gen/direct_wrappers/gsl_vector_complex_double_h.jl
index 44272a6..083b803 100644
--- a/src/gen/direct_wrappers/gsl_vector_complex_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_complex_double_h.jl
@@ -426,6 +426,16 @@ function vector_complex_add_constant(a, x)
     ccall((:gsl_vector_complex_add_constant, libgsl), Cint, (Ref{gsl_vector_complex}, gsl_complex), a, x)
 end
 
+@doc md"""
+    vector_complex_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_complex_axpby (const gsl_complex alpha, const gsl_vector_complex * x, const gsl_complex beta, gsl_vector_complex * y)`
+"""
+function vector_complex_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_complex_axpby, libgsl), Cint, (gsl_complex, Ref{gsl_vector_complex}, gsl_complex, Ref{gsl_vector_complex}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_complex_get(v, i) -> gsl_complex
 
diff --git a/src/gen/direct_wrappers/gsl_vector_complex_float_h.jl b/src/gen/direct_wrappers/gsl_vector_complex_float_h.jl
index cce4523..d2d0416 100644
--- a/src/gen/direct_wrappers/gsl_vector_complex_float_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_complex_float_h.jl
@@ -396,6 +396,16 @@ function vector_complex_float_add_constant(a, x)
     ccall((:gsl_vector_complex_float_add_constant, libgsl), Cint, (Ref{gsl_vector_complex_float}, gsl_complex_float), a, x)
 end
 
+@doc md"""
+    vector_complex_float_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_complex_float_axpby (const gsl_complex_float alpha, const gsl_vector_complex_float * x, const gsl_complex_float beta, gsl_vector_complex_float * y)`
+"""
+function vector_complex_float_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_complex_float_axpby, libgsl), Cint, (gsl_complex_float, Ref{gsl_vector_complex_float}, gsl_complex_float, Ref{gsl_vector_complex_float}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_complex_float_get(v, i) -> gsl_complex_float
 
diff --git a/src/gen/direct_wrappers/gsl_vector_complex_long_double_h.jl b/src/gen/direct_wrappers/gsl_vector_complex_long_double_h.jl
index feba99c..79f298e 100644
--- a/src/gen/direct_wrappers/gsl_vector_complex_long_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_complex_long_double_h.jl
@@ -396,6 +396,16 @@ function vector_complex_long_double_add_constant(a, x)
     ccall((:gsl_vector_complex_long_double_add_constant, libgsl), Cint, (Ref{gsl_vector_complex_long_double}, gsl_complex_long_double), a, x)
 end
 
+@doc md"""
+    vector_complex_long_double_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_complex_long_double_axpby (const gsl_complex_long_double alpha, const gsl_vector_complex_long_double * x, const gsl_complex_long_double beta, gsl_vector_complex_long_double * y)`
+"""
+function vector_complex_long_double_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_complex_long_double_axpby, libgsl), Cint, (gsl_complex_long_double, Ref{gsl_vector_complex_long_double}, gsl_complex_long_double, Ref{gsl_vector_complex_long_double}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_complex_long_double_get(v, i) -> gsl_complex_long_double
 
diff --git a/src/gen/direct_wrappers/gsl_vector_double_h.jl b/src/gen/direct_wrappers/gsl_vector_double_h.jl
index 5486c7a..60e66af 100644
--- a/src/gen/direct_wrappers/gsl_vector_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_double_h.jl
@@ -723,6 +723,25 @@ function vector_add_constant(a, x)
     ccall((:gsl_vector_add_constant, libgsl), Cint, (Ref{gsl_vector}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_axpby (const double alpha, const gsl_vector * x, const double beta, gsl_vector * y)`
+
+GSL documentation:
+
+### `int gsl_vector_axpby (const double alpha, const gsl_vector * x, const double beta, gsl_vector * y)`
+
+> This function performs the operation
+> $y \leftarrow \alpha x + \beta y$. The vectors `x` and `y` must have
+> the same length.
+
+"""
+function vector_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_axpby, libgsl), Cint, (Cdouble, Ref{gsl_vector}, Cdouble, Ref{gsl_vector}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_float_h.jl b/src/gen/direct_wrappers/gsl_vector_float_h.jl
index b825d55..622f9c9 100644
--- a/src/gen/direct_wrappers/gsl_vector_float_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_float_h.jl
@@ -350,10 +350,10 @@ end
     vector_float_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_float_scale (gsl_vector_float * a, const double x)`
+`int gsl_vector_float_scale (gsl_vector_float * a, const float x)`
 """
 function vector_float_scale(a, x)
-    ccall((:gsl_vector_float_scale, libgsl), Cint, (Ref{gsl_vector_float}, Cdouble), a, x)
+    ccall((:gsl_vector_float_scale, libgsl), Cint, (Ref{gsl_vector_float}, Cfloat), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_float_add_constant(a, x)
     ccall((:gsl_vector_float_add_constant, libgsl), Cint, (Ref{gsl_vector_float}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_float_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_float_axpby (const float alpha, const gsl_vector_float * x, const float beta, gsl_vector_float * y)`
+"""
+function vector_float_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_float_axpby, libgsl), Cint, (Cfloat, Ref{gsl_vector_float}, Cfloat, Ref{gsl_vector_float}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_float_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_int_h.jl b/src/gen/direct_wrappers/gsl_vector_int_h.jl
index 1eac350..d3cd92c 100644
--- a/src/gen/direct_wrappers/gsl_vector_int_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_int_h.jl
@@ -350,10 +350,10 @@ end
     vector_int_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_int_scale (gsl_vector_int * a, const double x)`
+`int gsl_vector_int_scale (gsl_vector_int * a, const int x)`
 """
 function vector_int_scale(a, x)
-    ccall((:gsl_vector_int_scale, libgsl), Cint, (Ref{gsl_vector_int}, Cdouble), a, x)
+    ccall((:gsl_vector_int_scale, libgsl), Cint, (Ref{gsl_vector_int}, Cint), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_int_add_constant(a, x)
     ccall((:gsl_vector_int_add_constant, libgsl), Cint, (Ref{gsl_vector_int}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_int_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_int_axpby (const int alpha, const gsl_vector_int * x, const int beta, gsl_vector_int * y)`
+"""
+function vector_int_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_int_axpby, libgsl), Cint, (Cint, Ref{gsl_vector_int}, Cint, Ref{gsl_vector_int}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_int_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_long_double_h.jl b/src/gen/direct_wrappers/gsl_vector_long_double_h.jl
index 7e3ba63..574964b 100644
--- a/src/gen/direct_wrappers/gsl_vector_long_double_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_long_double_h.jl
@@ -350,7 +350,7 @@ end
     vector_long_double_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_long_double_scale (gsl_vector_long_double * a, const double x)`
+`int gsl_vector_long_double_scale (gsl_vector_long_double * a, const long double x)`
 """
 function vector_long_double_scale(a, x)
     ccall((:gsl_vector_long_double_scale, libgsl), Cint, (Ref{gsl_vector_long_double}, Cdouble), a, x)
@@ -366,6 +366,16 @@ function vector_long_double_add_constant(a, x)
     ccall((:gsl_vector_long_double_add_constant, libgsl), Cint, (Ref{gsl_vector_long_double}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_long_double_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_long_double_axpby (const long double alpha, const gsl_vector_long_double * x, const long double beta, gsl_vector_long_double * y)`
+"""
+function vector_long_double_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_long_double_axpby, libgsl), Cint, (Cdouble, Ref{gsl_vector_long_double}, Cdouble, Ref{gsl_vector_long_double}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_long_double_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_long_h.jl b/src/gen/direct_wrappers/gsl_vector_long_h.jl
index 6fd8062..58fbcd7 100644
--- a/src/gen/direct_wrappers/gsl_vector_long_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_long_h.jl
@@ -350,10 +350,10 @@ end
     vector_long_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_long_scale (gsl_vector_long * a, const double x)`
+`int gsl_vector_long_scale (gsl_vector_long * a, const long x)`
 """
 function vector_long_scale(a, x)
-    ccall((:gsl_vector_long_scale, libgsl), Cint, (Ref{gsl_vector_long}, Cdouble), a, x)
+    ccall((:gsl_vector_long_scale, libgsl), Cint, (Ref{gsl_vector_long}, Clong), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_long_add_constant(a, x)
     ccall((:gsl_vector_long_add_constant, libgsl), Cint, (Ref{gsl_vector_long}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_long_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_long_axpby (const long alpha, const gsl_vector_long * x, const long beta, gsl_vector_long * y)`
+"""
+function vector_long_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_long_axpby, libgsl), Cint, (Clong, Ref{gsl_vector_long}, Clong, Ref{gsl_vector_long}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_long_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_short_h.jl b/src/gen/direct_wrappers/gsl_vector_short_h.jl
index 9d35a5d..a7685b5 100644
--- a/src/gen/direct_wrappers/gsl_vector_short_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_short_h.jl
@@ -350,10 +350,10 @@ end
     vector_short_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_short_scale (gsl_vector_short * a, const double x)`
+`int gsl_vector_short_scale (gsl_vector_short * a, const short x)`
 """
 function vector_short_scale(a, x)
-    ccall((:gsl_vector_short_scale, libgsl), Cint, (Ref{gsl_vector_short}, Cdouble), a, x)
+    ccall((:gsl_vector_short_scale, libgsl), Cint, (Ref{gsl_vector_short}, Cshort), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_short_add_constant(a, x)
     ccall((:gsl_vector_short_add_constant, libgsl), Cint, (Ref{gsl_vector_short}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_short_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_short_axpby (const short alpha, const gsl_vector_short * x, const short beta, gsl_vector_short * y)`
+"""
+function vector_short_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_short_axpby, libgsl), Cint, (Cshort, Ref{gsl_vector_short}, Cshort, Ref{gsl_vector_short}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_short_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_uchar_h.jl b/src/gen/direct_wrappers/gsl_vector_uchar_h.jl
index 6eb1a31..ec365e7 100644
--- a/src/gen/direct_wrappers/gsl_vector_uchar_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_uchar_h.jl
@@ -350,10 +350,10 @@ end
     vector_uchar_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_uchar_scale (gsl_vector_uchar * a, const double x)`
+`int gsl_vector_uchar_scale (gsl_vector_uchar * a, const unsigned char x)`
 """
 function vector_uchar_scale(a, x)
-    ccall((:gsl_vector_uchar_scale, libgsl), Cint, (Ref{gsl_vector_uchar}, Cdouble), a, x)
+    ccall((:gsl_vector_uchar_scale, libgsl), Cint, (Ref{gsl_vector_uchar}, Cuchar), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_uchar_add_constant(a, x)
     ccall((:gsl_vector_uchar_add_constant, libgsl), Cint, (Ref{gsl_vector_uchar}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_uchar_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_uchar_axpby (const unsigned char alpha, const gsl_vector_uchar * x, const unsigned char beta, gsl_vector_uchar * y)`
+"""
+function vector_uchar_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_uchar_axpby, libgsl), Cint, (Cuchar, Ref{gsl_vector_uchar}, Cuchar, Ref{gsl_vector_uchar}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_uchar_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_uint_h.jl b/src/gen/direct_wrappers/gsl_vector_uint_h.jl
index 239a997..047101a 100644
--- a/src/gen/direct_wrappers/gsl_vector_uint_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_uint_h.jl
@@ -350,10 +350,10 @@ end
     vector_uint_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_uint_scale (gsl_vector_uint * a, const double x)`
+`int gsl_vector_uint_scale (gsl_vector_uint * a, const unsigned int x)`
 """
 function vector_uint_scale(a, x)
-    ccall((:gsl_vector_uint_scale, libgsl), Cint, (Ref{gsl_vector_uint}, Cdouble), a, x)
+    ccall((:gsl_vector_uint_scale, libgsl), Cint, (Ref{gsl_vector_uint}, Cuint), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_uint_add_constant(a, x)
     ccall((:gsl_vector_uint_add_constant, libgsl), Cint, (Ref{gsl_vector_uint}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_uint_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_uint_axpby (const unsigned int alpha, const gsl_vector_uint * x, const unsigned int beta, gsl_vector_uint * y)`
+"""
+function vector_uint_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_uint_axpby, libgsl), Cint, (Cuint, Ref{gsl_vector_uint}, Cuint, Ref{gsl_vector_uint}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_uint_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_ulong_h.jl b/src/gen/direct_wrappers/gsl_vector_ulong_h.jl
index 52e03fc..98fda73 100644
--- a/src/gen/direct_wrappers/gsl_vector_ulong_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_ulong_h.jl
@@ -350,10 +350,10 @@ end
     vector_ulong_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_ulong_scale (gsl_vector_ulong * a, const double x)`
+`int gsl_vector_ulong_scale (gsl_vector_ulong * a, const unsigned long x)`
 """
 function vector_ulong_scale(a, x)
-    ccall((:gsl_vector_ulong_scale, libgsl), Cint, (Ref{gsl_vector_ulong}, Cdouble), a, x)
+    ccall((:gsl_vector_ulong_scale, libgsl), Cint, (Ref{gsl_vector_ulong}, Culong), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_ulong_add_constant(a, x)
     ccall((:gsl_vector_ulong_add_constant, libgsl), Cint, (Ref{gsl_vector_ulong}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_ulong_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_ulong_axpby (const unsigned long alpha, const gsl_vector_ulong * x, const unsigned long beta, gsl_vector_ulong * y)`
+"""
+function vector_ulong_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_ulong_axpby, libgsl), Cint, (Culong, Ref{gsl_vector_ulong}, Culong, Ref{gsl_vector_ulong}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_ulong_equal(u, v) -> Cint
 
diff --git a/src/gen/direct_wrappers/gsl_vector_ushort_h.jl b/src/gen/direct_wrappers/gsl_vector_ushort_h.jl
index 955ff33..3148ab2 100644
--- a/src/gen/direct_wrappers/gsl_vector_ushort_h.jl
+++ b/src/gen/direct_wrappers/gsl_vector_ushort_h.jl
@@ -350,10 +350,10 @@ end
     vector_ushort_scale(a, x) -> Cint
 
 C signature:
-`int gsl_vector_ushort_scale (gsl_vector_ushort * a, const double x)`
+`int gsl_vector_ushort_scale (gsl_vector_ushort * a, const unsigned short x)`
 """
 function vector_ushort_scale(a, x)
-    ccall((:gsl_vector_ushort_scale, libgsl), Cint, (Ref{gsl_vector_ushort}, Cdouble), a, x)
+    ccall((:gsl_vector_ushort_scale, libgsl), Cint, (Ref{gsl_vector_ushort}, Cushort), a, x)
 end
 
 @doc md"""
@@ -366,6 +366,16 @@ function vector_ushort_add_constant(a, x)
     ccall((:gsl_vector_ushort_add_constant, libgsl), Cint, (Ref{gsl_vector_ushort}, Cdouble), a, x)
 end
 
+@doc md"""
+    vector_ushort_axpby(alpha, x, beta, y) -> Cint
+
+C signature:
+`int gsl_vector_ushort_axpby (const unsigned short alpha, const gsl_vector_ushort * x, const unsigned short beta, gsl_vector_ushort * y)`
+"""
+function vector_ushort_axpby(alpha, x, beta, y)
+    ccall((:gsl_vector_ushort_axpby, libgsl), Cint, (Cushort, Ref{gsl_vector_ushort}, Cushort, Ref{gsl_vector_ushort}), alpha, x, beta, y)
+end
+
 @doc md"""
     vector_ushort_equal(u, v) -> Cint
 
diff --git a/src/gen/gsl_export.jl b/src/gen/gsl_export.jl
index 8cc82cf..9a5363f 100644
--- a/src/gen/gsl_export.jl
+++ b/src/gen/gsl_export.jl
@@ -519,6 +519,7 @@ export gsl_multifit_nlinear_scale_levenberg
 export gsl_multifit_nlinear_scale_marquardt
 export gsl_multifit_nlinear_scale_more
 export gsl_multifit_nlinear_solver_cholesky
+export gsl_multifit_nlinear_solver_mcholesky
 export gsl_multifit_nlinear_solver_qr
 export gsl_multifit_nlinear_solver_svd
 export gsl_multilarge_linear_normal
@@ -534,6 +535,7 @@ export gsl_multilarge_nlinear_scale_levenberg
 export gsl_multilarge_nlinear_scale_marquardt
 export gsl_multilarge_nlinear_scale_more
 export gsl_multilarge_nlinear_solver_cholesky
+export gsl_multilarge_nlinear_solver_mcholesky
 export gsl_multilarge_nlinear_solver_none
 export gsl_multimin_fdfminimizer_steepest_descent
 export gsl_multimin_fdfminimizer_conjugate_pr
@@ -715,6 +717,7 @@ export vector_mul
 export vector_div
 export vector_scale
 export vector_add_constant
+export vector_axpby
 export vector_equal
 export vector_isnull
 export vector_ispos
@@ -763,6 +766,7 @@ export vector_complex_mul
 export vector_complex_div
 export vector_complex_scale
 export vector_complex_add_constant
+export vector_complex_axpby
 export vector_complex_get
 export vector_complex_set
 export vector_complex_ptr
@@ -1313,7 +1317,6 @@ export filter_median
 export filter_rmedian_alloc
 export filter_rmedian_free
 export filter_rmedian
-export filter_rmedian2
 export filter_impulse_alloc
 export filter_impulse_free
 export filter_impulse
@@ -1497,6 +1500,7 @@ export interp2d_eval
 export interp2d_eval_extrap
 export interp2d_eval_e
 export interp2d_eval_e_extrap
+export interp2d_eval_extrap_e
 export interp2d_eval_deriv_x
 export interp2d_eval_deriv_x_e
 export interp2d_eval_deriv_y
@@ -3284,24 +3288,26 @@ export sf_gegenpoly_n
 export sf_gegenpoly_array
 export sf_hermite_prob_e
 export sf_hermite_prob
-export sf_hermite_prob_der_e
-export sf_hermite_prob_der
-export sf_hermite_phys_e
-export sf_hermite_phys
-export sf_hermite_phys_der_e
-export sf_hermite_phys_der
+export sf_hermite_prob_deriv_e
+export sf_hermite_prob_deriv
+export sf_hermite_e
+export sf_hermite
+export sf_hermite_deriv_e
+export sf_hermite_deriv
 export sf_hermite_func_e
 export sf_hermite_func
+export sf_hermite_func_fast_e
+export sf_hermite_func_fast
 export sf_hermite_prob_array
-export sf_hermite_prob_array_der
-export sf_hermite_prob_der_array
+export sf_hermite_prob_array_deriv
+export sf_hermite_prob_deriv_array
 export sf_hermite_prob_series_e
 export sf_hermite_prob_series
-export sf_hermite_phys_array
-export sf_hermite_phys_array_der
-export sf_hermite_phys_der_array
-export sf_hermite_phys_series_e
-export sf_hermite_phys_series
+export sf_hermite_array
+export sf_hermite_array_deriv
+export sf_hermite_deriv_array
+export sf_hermite_series_e
+export sf_hermite_series
 export sf_hermite_func_array
 export sf_hermite_func_series_e
 export sf_hermite_func_series
@@ -3309,10 +3315,25 @@ export sf_hermite_func_der_e
 export sf_hermite_func_der
 export sf_hermite_prob_zero_e
 export sf_hermite_prob_zero
-export sf_hermite_phys_zero_e
-export sf_hermite_phys_zero
+export sf_hermite_zero_e
+export sf_hermite_zero
 export sf_hermite_func_zero_e
 export sf_hermite_func_zero
+export sf_hermite_phys_e
+export sf_hermite_phys
+export sf_hermite_phys_der_e
+export sf_hermite_phys_der
+export sf_hermite_phys_array
+export sf_hermite_phys_series_e
+export sf_hermite_phys_series
+export sf_hermite_phys_array_der
+export sf_hermite_phys_der_array
+export sf_hermite_phys_zero_e
+export sf_hermite_phys_zero
+export sf_hermite_prob_array_der
+export sf_hermite_prob_der_array
+export sf_hermite_prob_der_e
+export sf_hermite_prob_der
 export sf_hyperg_0F1_e
 export sf_hyperg_0F1
 export sf_hyperg_1F1_int_e
@@ -4098,6 +4119,7 @@ export vector_char_mul
 export vector_char_div
 export vector_char_scale
 export vector_char_add_constant
+export vector_char_axpby
 export vector_char_equal
 export vector_char_isnull
 export vector_char_ispos
@@ -4146,6 +4168,7 @@ export vector_complex_float_mul
 export vector_complex_float_div
 export vector_complex_float_scale
 export vector_complex_float_add_constant
+export vector_complex_float_axpby
 export vector_complex_float_get
 export vector_complex_float_set
 export vector_complex_float_ptr
@@ -4189,6 +4212,7 @@ export vector_complex_long_double_mul
 export vector_complex_long_double_div
 export vector_complex_long_double_scale
 export vector_complex_long_double_add_constant
+export vector_complex_long_double_axpby
 export vector_complex_long_double_get
 export vector_complex_long_double_set
 export vector_complex_long_double_ptr
@@ -4229,6 +4253,7 @@ export vector_float_mul
 export vector_float_div
 export vector_float_scale
 export vector_float_add_constant
+export vector_float_axpby
 export vector_float_equal
 export vector_float_isnull
 export vector_float_ispos
@@ -4274,6 +4299,7 @@ export vector_int_mul
 export vector_int_div
 export vector_int_scale
 export vector_int_add_constant
+export vector_int_axpby
 export vector_int_equal
 export vector_int_isnull
 export vector_int_ispos
@@ -4319,6 +4345,7 @@ export vector_long_mul
 export vector_long_div
 export vector_long_scale
 export vector_long_add_constant
+export vector_long_axpby
 export vector_long_equal
 export vector_long_isnull
 export vector_long_ispos
@@ -4364,6 +4391,7 @@ export vector_long_double_mul
 export vector_long_double_div
 export vector_long_double_scale
 export vector_long_double_add_constant
+export vector_long_double_axpby
 export vector_long_double_equal
 export vector_long_double_isnull
 export vector_long_double_ispos
@@ -4409,6 +4437,7 @@ export vector_short_mul
 export vector_short_div
 export vector_short_scale
 export vector_short_add_constant
+export vector_short_axpby
 export vector_short_equal
 export vector_short_isnull
 export vector_short_ispos
@@ -4454,6 +4483,7 @@ export vector_uchar_mul
 export vector_uchar_div
 export vector_uchar_scale
 export vector_uchar_add_constant
+export vector_uchar_axpby
 export vector_uchar_equal
 export vector_uchar_isnull
 export vector_uchar_ispos
@@ -4499,6 +4529,7 @@ export vector_uint_mul
 export vector_uint_div
 export vector_uint_scale
 export vector_uint_add_constant
+export vector_uint_axpby
 export vector_uint_equal
 export vector_uint_isnull
 export vector_uint_ispos
@@ -4544,6 +4575,7 @@ export vector_ulong_mul
 export vector_ulong_div
 export vector_ulong_scale
 export vector_ulong_add_constant
+export vector_ulong_axpby
 export vector_ulong_equal
 export vector_ulong_isnull
 export vector_ulong_ispos
@@ -4589,6 +4621,7 @@ export vector_ushort_mul
 export vector_ushort_div
 export vector_ushort_scale
 export vector_ushort_add_constant
+export vector_ushort_axpby
 export vector_ushort_equal
 export vector_ushort_isnull
 export vector_ushort_ispos
diff --git a/src/gen/gsl_global_vars.jl b/src/gen/gsl_global_vars.jl
index 7f406be..0dcbb78 100644
--- a/src/gen/gsl_global_vars.jl
+++ b/src/gen/gsl_global_vars.jl
@@ -56,6 +56,7 @@ const gsl_multifit_nlinear_scale_levenberg = Ref{gsl_multifit_nlinear_scale}()
 const gsl_multifit_nlinear_scale_marquardt = Ref{gsl_multifit_nlinear_scale}()
 const gsl_multifit_nlinear_scale_more = Ref{gsl_multifit_nlinear_scale}()
 const gsl_multifit_nlinear_solver_cholesky = Ref{gsl_multifit_nlinear_solver}()
+const gsl_multifit_nlinear_solver_mcholesky = Ref{gsl_multifit_nlinear_solver}()
 const gsl_multifit_nlinear_solver_qr = Ref{gsl_multifit_nlinear_solver}()
 const gsl_multifit_nlinear_solver_svd = Ref{gsl_multifit_nlinear_solver}()
 const gsl_multilarge_linear_normal = Ref{gsl_multilarge_linear_type}()
@@ -71,6 +72,7 @@ const gsl_multilarge_nlinear_scale_levenberg = Ref{gsl_multilarge_nlinear_scale}
 const gsl_multilarge_nlinear_scale_marquardt = Ref{gsl_multilarge_nlinear_scale}()
 const gsl_multilarge_nlinear_scale_more = Ref{gsl_multilarge_nlinear_scale}()
 const gsl_multilarge_nlinear_solver_cholesky = Ref{gsl_multilarge_nlinear_solver}()
+const gsl_multilarge_nlinear_solver_mcholesky = Ref{gsl_multilarge_nlinear_solver}()
 const gsl_multilarge_nlinear_solver_none = Ref{gsl_multilarge_nlinear_solver}()
 const gsl_multimin_fdfminimizer_steepest_descent = Ref{gsl_multimin_fdfminimizer_type}()
 const gsl_multimin_fdfminimizer_conjugate_pr = Ref{gsl_multimin_fdfminimizer_type}()
@@ -251,6 +253,7 @@ function init_global_vars()
     gsl_multifit_nlinear_scale_marquardt[] =  @gload_pp(:gsl_multifit_nlinear_scale_marquardt, gsl_multifit_nlinear_scale) 
     gsl_multifit_nlinear_scale_more[] =  @gload_pp(:gsl_multifit_nlinear_scale_more, gsl_multifit_nlinear_scale) 
     gsl_multifit_nlinear_solver_cholesky[] =  @gload_pp(:gsl_multifit_nlinear_solver_cholesky, gsl_multifit_nlinear_solver) 
+    gsl_multifit_nlinear_solver_mcholesky[] =  @gload_pp(:gsl_multifit_nlinear_solver_mcholesky, gsl_multifit_nlinear_solver) 
     gsl_multifit_nlinear_solver_qr[] =  @gload_pp(:gsl_multifit_nlinear_solver_qr, gsl_multifit_nlinear_solver) 
     gsl_multifit_nlinear_solver_svd[] =  @gload_pp(:gsl_multifit_nlinear_solver_svd, gsl_multifit_nlinear_solver) 
     gsl_multilarge_linear_normal[] =  @gload_pp(:gsl_multilarge_linear_normal, gsl_multilarge_linear_type) 
@@ -266,6 +269,7 @@ function init_global_vars()
     gsl_multilarge_nlinear_scale_marquardt[] =  @gload_pp(:gsl_multilarge_nlinear_scale_marquardt, gsl_multilarge_nlinear_scale) 
     gsl_multilarge_nlinear_scale_more[] =  @gload_pp(:gsl_multilarge_nlinear_scale_more, gsl_multilarge_nlinear_scale) 
     gsl_multilarge_nlinear_solver_cholesky[] =  @gload_pp(:gsl_multilarge_nlinear_solver_cholesky, gsl_multilarge_nlinear_solver) 
+    gsl_multilarge_nlinear_solver_mcholesky[] =  @gload_pp(:gsl_multilarge_nlinear_solver_mcholesky, gsl_multilarge_nlinear_solver) 
     gsl_multilarge_nlinear_solver_none[] =  @gload_pp(:gsl_multilarge_nlinear_solver_none, gsl_multilarge_nlinear_solver) 
     gsl_multimin_fdfminimizer_steepest_descent[] =  @gload_pp(:gsl_multimin_fdfminimizer_steepest_descent, gsl_multimin_fdfminimizer_type) 
     gsl_multimin_fdfminimizer_conjugate_pr[] =  @gload_pp(:gsl_multimin_fdfminimizer_conjugate_pr, gsl_multimin_fdfminimizer_type) 
diff --git a/src/gen/gsl_types.jl b/src/gen/gsl_types.jl
index 2633114..90622df 100644
--- a/src/gen/gsl_types.jl
+++ b/src/gen/gsl_types.jl
@@ -1036,7 +1036,7 @@ mutable struct gsl_movstat_accum
     size::Ptr{Cvoid}
     init::Ptr{Cvoid}
     insert::Ptr{Cvoid}
-    delete::Ptr{Cvoid}
+    delete_oldest::Ptr{Cvoid}
     get::Ptr{Cvoid}
 end
 ```
@@ -1094,7 +1094,7 @@ mutable struct gsl_movstat_accum
     size::Ptr{Cvoid}
     init::Ptr{Cvoid}
     insert::Ptr{Cvoid}
-    delete::Ptr{Cvoid}
+    delete_oldest::Ptr{Cvoid}
     get::Ptr{Cvoid}
 end
 
@@ -4779,6 +4779,27 @@ GSL documentation:
 > known that the Jacobian matrix is well conditioned, this method is
 > accurate and will perform faster than the QR approach.
 >
+> gsl\_multifit\_nlinear\_solver\_mcholesky
+> gsl\_multilarge\_nlinear\_solver\_mcholesky
+>
+> This method solves the alternate normal equations problem
+>
+> not texinfo
+>
+> $$\left( J^T J + \mu D^T D \right) \delta = -J^T f$$
+>
+> texinfo
+>
+>     ( J^T J + \mu D^T D ) \delta = -J^T f
+>
+> by using a modified Cholesky decomposition of the matrix
+> $J^T J + \mu D^T D$. This is more suitable for the dogleg methods
+> where the parameter $\mu = 0$, and the matrix $J^T J$ may be
+> ill-conditioned or indefinite causing the standard Cholesky
+> decomposition to fail. This method is based on Level 2 BLAS and is
+> thus slower than the standard Cholesky decomposition, which is based
+> on Level 3 BLAS.
+>
 > gsl\_multifit\_nlinear\_solver\_svd
 >
 > This method solves the system using a singular value decomposition of
@@ -8659,7 +8680,7 @@ const gsl_vector_ushort_const_view = _gsl_vector_ushort_const_view
 #### gsl_version.h ############################################################
 
 const GSL_MAJOR_VERSION = 2
-const GSL_MINOR_VERSION = 5
+const GSL_MINOR_VERSION = 6
 
 
 #### gsl_wavelet.h ############################################################
diff --git a/src/gen/heuristic_wrappers.jl b/src/gen/heuristic_wrappers.jl
index b498366..38dc635 100644
--- a/src/gen/heuristic_wrappers.jl
+++ b/src/gen/heuristic_wrappers.jl
@@ -3039,42 +3039,42 @@ function sf_hermite_prob_e(n, x)
     return result
 end
 
-export sf_hermite_prob_der_e
+export sf_hermite_prob_deriv_e
 @doc md"""
-    sf_hermite_prob_der_e(m, n, x) -> gsl_sf_result
+    sf_hermite_prob_deriv_e(m, n, x) -> gsl_sf_result
 
 C signature:
-`int gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_prob_deriv_e(const int m, const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_prob_der_e(m, n, x)
+function sf_hermite_prob_deriv_e(m, n, x)
     result = gsl_sf_result(0,0)
-    output = C.sf_hermite_prob_der_e(m, n, x, result)
+    output = C.sf_hermite_prob_deriv_e(m, n, x, result)
     return result
 end
 
-export sf_hermite_phys_e
+export sf_hermite_e
 @doc md"""
-    sf_hermite_phys_e(n, x) -> gsl_sf_result
+    sf_hermite_e(n, x) -> gsl_sf_result
 
 C signature:
-`int gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_e(const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_phys_e(n, x)
+function sf_hermite_e(n, x)
     result = gsl_sf_result(0,0)
-    output = C.sf_hermite_phys_e(n, x, result)
+    output = C.sf_hermite_e(n, x, result)
     return result
 end
 
-export sf_hermite_phys_der_e
+export sf_hermite_deriv_e
 @doc md"""
-    sf_hermite_phys_der_e(m, n, x) -> gsl_sf_result
+    sf_hermite_deriv_e(m, n, x) -> gsl_sf_result
 
 C signature:
-`int gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+`int gsl_sf_hermite_deriv_e(const int m, const int n, const double x, gsl_sf_result * result)`
 """
-function sf_hermite_phys_der_e(m, n, x)
+function sf_hermite_deriv_e(m, n, x)
     result = gsl_sf_result(0,0)
-    output = C.sf_hermite_phys_der_e(m, n, x, result)
+    output = C.sf_hermite_deriv_e(m, n, x, result)
     return result
 end
 
@@ -3091,6 +3091,19 @@ function sf_hermite_func_e(n, x)
     return result
 end
 
+export sf_hermite_func_fast_e
+@doc md"""
+    sf_hermite_func_fast_e(n, x) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_func_fast_e(const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_func_fast_e(n, x)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_func_fast_e(n, x, result)
+    return result
+end
+
 export sf_hermite_prob_array
 @doc md"""
     sf_hermite_prob_array(nmax, x) -> Array{Float64}
@@ -3102,7 +3115,7 @@ GSL documentation:
 
 ### `int gsl_sf_hermite_prob_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all probabilists' Hermite polynomials $He_n(x)$
+> This routine evaluates all probabilist Hermite polynomials $He_n(x)$
 > up to order `nmax` at position `x`. The results are stored in
 > `result_array`.
 
@@ -3113,48 +3126,51 @@ function sf_hermite_prob_array(nmax, x)
     return result_array
 end
 
-export sf_hermite_prob_array_der
+export sf_hermite_prob_array_deriv
 @doc md"""
-    sf_hermite_prob_array_der(m, nmax, x) -> Array{Float64}
+    sf_hermite_prob_array_deriv(m, nmax, x) -> Array{Float64}
 
 C signature:
-`int gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_prob_array_deriv(const int m, const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_prob_array_der (const int m, const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_prob_array_deriv (const int m, const int nmax, const double x, double * result_array)`
 
-> This routine evaluates the `m`-th derivative of all probabilists'
-> Hermite polynomials $He_n(x)$ up to order `nmax` at position `x`. The
-> results are stored in `result_array`.
+> This routine evaluates the `m`-th derivative of all probabilist
+> Hermite polynomials $He_n(x)$ from orders $0, \dots, \text{nmax}$ at
+> position `x`. The result $d^m/dx^m He_n(x)$ is stored in
+> `result_array[n]`. The output `result_array` must have length at least
+> `nmax + 1`.
 
 """
-function sf_hermite_prob_array_der(m, nmax, x)
+function sf_hermite_prob_array_deriv(m, nmax, x)
     result_array = zeros(Cdouble, (nmax + 1))
-    output = C.sf_hermite_prob_array_der(m, nmax, x, result_array)
+    output = C.sf_hermite_prob_array_deriv(m, nmax, x, result_array)
     return result_array
 end
 
-export sf_hermite_prob_der_array
+export sf_hermite_prob_deriv_array
 @doc md"""
-    sf_hermite_prob_der_array(mmax, n, x) -> Array{Float64}
+    sf_hermite_prob_deriv_array(mmax, n, x) -> Array{Float64}
 
 C signature:
-`int gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array)`
+`int gsl_sf_hermite_prob_deriv_array(const int mmax, const int n, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_prob_der_array (const int mmax, const int n, const double x, double * result_array)`
+### `int gsl_sf_hermite_prob_deriv_array (const int mmax, const int n, const double x, double * result_array)`
 
-> This routine evaluates all derivatives (starting from 0) up to the
-> `mmax`-th derivative of the probabilists' Hermite polynomial of order
-> `n` $He_n(x)$ at position `x`. The results are stored in
-> `result_array`.
+> This routine evaluates all derivative orders from
+> $0, \dots, \text{mmax}$ of the probabilist Hermite polynomial of order
+> `n`, $He_n$, at position `x`. The result $d^m/dx^m He_n(x)$ is stored
+> in `result_array[m]`. The output `result_array` must have length at
+> least `mmax + 1`.
 
 """
-function sf_hermite_prob_der_array(mmax, n, x)
+function sf_hermite_prob_deriv_array(mmax, n, x)
     result_array = zeros(Cdouble, mmax)
-    output = C.sf_hermite_prob_der_array(mmax, n, x, result_array)
+    output = C.sf_hermite_prob_deriv_array(mmax, n, x, result_array)
     return result_array
 end
 
@@ -3171,82 +3187,85 @@ function sf_hermite_prob_series_e(n, x, a)
     return result
 end
 
-export sf_hermite_phys_array
+export sf_hermite_array
 @doc md"""
-    sf_hermite_phys_array(nmax, x) -> Array{Float64}
+    sf_hermite_array(nmax, x) -> Array{Float64}
 
 C signature:
-`int gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_array(const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_array (const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all physicists' Hermite polynomials $H_n$ up to
+> This routine evaluates all physicist Hermite polynomials $H_n$ up to
 > order `nmax` at position `x`. The results are stored in
 > `result_array`.
 
 """
-function sf_hermite_phys_array(nmax, x)
+function sf_hermite_array(nmax, x)
     result_array = zeros(Cdouble, (nmax + 1))
-    output = C.sf_hermite_phys_array(nmax, x, result_array)
+    output = C.sf_hermite_array(nmax, x, result_array)
     return result_array
 end
 
-export sf_hermite_phys_array_der
+export sf_hermite_array_deriv
 @doc md"""
-    sf_hermite_phys_array_der(m, nmax, x) -> Array{Float64}
+    sf_hermite_array_deriv(m, nmax, x) -> Array{Float64}
 
 C signature:
-`int gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array)`
+`int gsl_sf_hermite_array_deriv(const int m, const int nmax, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_array_der (const int m, const int nmax, const double x, double * result_array)`
+### `int gsl_sf_hermite_array_deriv (const int m, const int nmax, const double x, double * result_array)`
 
-> This routine evaluates the `m`-th derivative of all physicists'
-> Hermite polynomials $H_n$ up to order `nmax` at position `x`. The
-> results are stored in `result_array`.
+> This routine evaluates the `m`-th derivative of all physicist Hermite
+> polynomials $H_n(x)$ from orders $0, \dots, \text{nmax}$ at position
+> `x`. The result $d^m/dx^m H_n(x)$ is stored in `result_array[n]`. The
+> output `result_array` must have length at least `nmax + 1`.
 
 """
-function sf_hermite_phys_array_der(m, nmax, x)
+function sf_hermite_array_deriv(m, nmax, x)
     result_array = zeros(Cdouble, (nmax + 1))
-    output = C.sf_hermite_phys_array_der(m, nmax, x, result_array)
+    output = C.sf_hermite_array_deriv(m, nmax, x, result_array)
     return result_array
 end
 
-export sf_hermite_phys_der_array
+export sf_hermite_deriv_array
 @doc md"""
-    sf_hermite_phys_der_array(mmax, n, x) -> Array{Float64}
+    sf_hermite_deriv_array(mmax, n, x) -> Array{Float64}
 
 C signature:
-`int gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array)`
+`int gsl_sf_hermite_deriv_array(const int mmax, const int n, const double x, double * result_array)`
 
 GSL documentation:
 
-### `int gsl_sf_hermite_phys_der_array (const int mmax, const int n, const double x, double * result_array)`
+### `int gsl_sf_hermite_deriv_array (const int mmax, const int n, const double x, double * result_array)`
 
-> This routine evaluates all derivatives (starting from 0) up to the
-> `mmax`-th derivative of the physicists' Hermite polynomial of order
-> `n` $H_n$ at position `x`. The results are stored in `result_array`.
+> This routine evaluates all derivative orders from
+> $0, \dots, \text{mmax}$ of the physicist Hermite polynomial of order
+> `n`, $H_n$, at position `x`. The result $d^m/dx^m H_n(x)$ is stored in
+> `result_array[m]`. The output `result_array` must have length at least
+> `mmax + 1`.
 
 """
-function sf_hermite_phys_der_array(mmax, n, x)
+function sf_hermite_deriv_array(mmax, n, x)
     result_array = zeros(Cdouble, mmax)
-    output = C.sf_hermite_phys_der_array(mmax, n, x, result_array)
+    output = C.sf_hermite_deriv_array(mmax, n, x, result_array)
     return result_array
 end
 
-export sf_hermite_phys_series_e
+export sf_hermite_series_e
 @doc md"""
-    sf_hermite_phys_series_e(n, x, a) -> gsl_sf_result
+    sf_hermite_series_e(n, x, a) -> gsl_sf_result
 
 C signature:
-`int gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
+`int gsl_sf_hermite_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
 """
-function sf_hermite_phys_series_e(n, x, a)
+function sf_hermite_series_e(n, x, a)
     result = gsl_sf_result(0,0)
-    output = C.sf_hermite_phys_series_e(n, x, a, result)
+    output = C.sf_hermite_series_e(n, x, a, result)
     return result
 end
 
@@ -3261,8 +3280,10 @@ GSL documentation:
 
 ### `int gsl_sf_hermite_func_array (const int nmax, const double x, double * result_array)`
 
-> This routine evaluates all Hermite functions $\psi_n(x)$ up to order
-> `nmax` at position `x`. The results are stored in `result_array`.
+> This routine evaluates all Hermite functions $\psi_n(x)$ for orders
+> $n = 0, \dots, \textrm{nmax}$ at position `x`, using the recurrence
+> relation algorithm. The results are stored in `result_array` which has
+> length at least `nmax + 1`.
 
 """
 function sf_hermite_func_array(nmax, x)
@@ -3310,16 +3331,16 @@ function sf_hermite_prob_zero_e(n, s)
     return result
 end
 
-export sf_hermite_phys_zero_e
+export sf_hermite_zero_e
 @doc md"""
-    sf_hermite_phys_zero_e(n, s) -> gsl_sf_result
+    sf_hermite_zero_e(n, s) -> gsl_sf_result
 
 C signature:
-`int gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result)`
+`int gsl_sf_hermite_zero_e(const int n, const int s, gsl_sf_result * result)`
 """
-function sf_hermite_phys_zero_e(n, s)
+function sf_hermite_zero_e(n, s)
     result = gsl_sf_result(0,0)
-    output = C.sf_hermite_phys_zero_e(n, s, result)
+    output = C.sf_hermite_zero_e(n, s, result)
     return result
 end
 
@@ -3336,6 +3357,136 @@ function sf_hermite_func_zero_e(n, s)
     return result
 end
 
+export sf_hermite_phys_e
+@doc md"""
+    sf_hermite_phys_e(n, x) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_phys_e(const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_e(n, x)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_phys_e(n, x, result)
+    return result
+end
+
+export sf_hermite_phys_der_e
+@doc md"""
+    sf_hermite_phys_der_e(m, n, x) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_phys_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_der_e(m, n, x)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_phys_der_e(m, n, x, result)
+    return result
+end
+
+export sf_hermite_phys_array
+@doc md"""
+    sf_hermite_phys_array(nmax, x) -> Array{Float64}
+
+C signature:
+`int gsl_sf_hermite_phys_array(const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_phys_array(nmax, x)
+    result_array = zeros(Cdouble, (nmax + 1))
+    output = C.sf_hermite_phys_array(nmax, x, result_array)
+    return result_array
+end
+
+export sf_hermite_phys_series_e
+@doc md"""
+    sf_hermite_phys_series_e(n, x, a) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_phys_series_e(const int n, const double x, const double * a, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_series_e(n, x, a)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_phys_series_e(n, x, a, result)
+    return result
+end
+
+export sf_hermite_phys_array_der
+@doc md"""
+    sf_hermite_phys_array_der(m, nmax, x) -> Array{Float64}
+
+C signature:
+`int gsl_sf_hermite_phys_array_der(const int m, const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_phys_array_der(m, nmax, x)
+    result_array = zeros(Cdouble, (nmax + 1))
+    output = C.sf_hermite_phys_array_der(m, nmax, x, result_array)
+    return result_array
+end
+
+export sf_hermite_phys_der_array
+@doc md"""
+    sf_hermite_phys_der_array(mmax, n, x) -> Array{Float64}
+
+C signature:
+`int gsl_sf_hermite_phys_der_array(const int mmax, const int n, const double x, double * result_array)`
+"""
+function sf_hermite_phys_der_array(mmax, n, x)
+    result_array = zeros(Cdouble, mmax)
+    output = C.sf_hermite_phys_der_array(mmax, n, x, result_array)
+    return result_array
+end
+
+export sf_hermite_phys_zero_e
+@doc md"""
+    sf_hermite_phys_zero_e(n, s) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_phys_zero_e(const int n, const int s, gsl_sf_result * result)`
+"""
+function sf_hermite_phys_zero_e(n, s)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_phys_zero_e(n, s, result)
+    return result
+end
+
+export sf_hermite_prob_array_der
+@doc md"""
+    sf_hermite_prob_array_der(m, nmax, x) -> Array{Float64}
+
+C signature:
+`int gsl_sf_hermite_prob_array_der(const int m, const int nmax, const double x, double * result_array)`
+"""
+function sf_hermite_prob_array_der(m, nmax, x)
+    result_array = zeros(Cdouble, (nmax + 1))
+    output = C.sf_hermite_prob_array_der(m, nmax, x, result_array)
+    return result_array
+end
+
+export sf_hermite_prob_der_array
+@doc md"""
+    sf_hermite_prob_der_array(mmax, n, x) -> Array{Float64}
+
+C signature:
+`int gsl_sf_hermite_prob_der_array(const int mmax, const int n, const double x, double * result_array)`
+"""
+function sf_hermite_prob_der_array(mmax, n, x)
+    result_array = zeros(Cdouble, mmax)
+    output = C.sf_hermite_prob_der_array(mmax, n, x, result_array)
+    return result_array
+end
+
+export sf_hermite_prob_der_e
+@doc md"""
+    sf_hermite_prob_der_e(m, n, x) -> gsl_sf_result
+
+C signature:
+`int gsl_sf_hermite_prob_der_e(const int m, const int n, const double x, gsl_sf_result * result)`
+"""
+function sf_hermite_prob_der_e(m, n, x)
+    result = gsl_sf_result(0,0)
+    output = C.sf_hermite_prob_der_e(m, n, x, result)
+    return result
+end
+
 export sf_hyperg_0F1_e
 @doc md"""
     sf_hyperg_0F1_e(c, x) -> gsl_sf_result