sig
  type t
  type ws
  type kind =
      DAUBECHIES
    | DAUBECHIES_CENTERED
    | HAAR
    | HAAR_CENTERED
    | BSPLINE
    | BSPLINE_CENTERED
  type direction = FORWARD | BACKWARD
  val make : Wavelet.kind -> int -> Wavelet.t
  external name : Wavelet.t -> string = "ml_gsl_wavelet_name"
  val workspace_make : int -> Wavelet.ws
  external workspace_size : Wavelet.ws -> int
    = "ml_gsl_wavelet_workspace_size"
  val transform_array :
    Wavelet.t ->
    Wavelet.direction ->
    ?ws:Wavelet.ws ->
    ?stride:int -> ?off:int -> ?len:int -> float array -> unit
  val transform_forward :
    Wavelet.t ->
    ?ws:Wavelet.ws ->
    ?stride:int -> ?off:int -> ?len:int -> float array -> unit
  val transform_inverse :
    Wavelet.t ->
    ?ws:Wavelet.ws ->
    ?stride:int -> ?off:int -> ?len:int -> float array -> unit
  val transform_vector_flat :
    Wavelet.t ->
    Wavelet.direction -> ?ws:Wavelet.ws -> Vector_flat.vector -> unit
  val transform_vector :
    Wavelet.t -> Wavelet.direction -> ?ws:Wavelet.ws -> Vector.vector -> unit
  val transform_gen :
    Wavelet.t ->
    Wavelet.direction -> ?ws:Wavelet.ws -> [< Vectmat.vec ] -> unit
  type ordering = STANDARD | NON_STANDARD
  val transform_matrix_flat :
    Wavelet.t ->
    Wavelet.ordering ->
    Wavelet.direction -> ?ws:Wavelet.ws -> Matrix_flat.matrix -> unit
  val transform_matrix :
    Wavelet.t ->
    Wavelet.ordering ->
    Wavelet.direction -> ?ws:Wavelet.ws -> Matrix.matrix -> unit
  val transform_matrix_gen :
    Wavelet.t ->
    Wavelet.ordering ->
    Wavelet.direction -> ?ws:Wavelet.ws -> [< Vectmat.mat ] -> unit
end