sig
  type order = Gsl_blas.order = RowMajor | ColMajor
  type transpose = Gsl_blas.transpose = NoTrans | Trans | ConjTrans
  type uplo = Gsl_blas.uplo = Upper | Lower
  type diag = Gsl_blas.diag = NonUnit | Unit
  type side = Gsl_blas.side = Left | Right
  external dot : [< Gsl_vectmat.vec ] -> [< Gsl_vectmat.vec ] -> float
    = "ml_gsl_blas_ddot"
  external nrm2 : [< Gsl_vectmat.vec ] -> float = "ml_gsl_blas_dnrm2"
  external asum : [< Gsl_vectmat.vec ] -> float = "ml_gsl_blas_dasum"
  external iamax : [< Gsl_vectmat.vec ] -> int = "ml_gsl_blas_idamax"
  external swap : [< Gsl_vectmat.vec ] -> [< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dswap"
  external copy : [< Gsl_vectmat.vec ] -> [< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dcopy"
  external axpy :
    float -> [< Gsl_vectmat.vec ] -> [< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_daxpy"
  external rot :
    [< Gsl_vectmat.vec ] -> [< Gsl_vectmat.vec ] -> float -> float -> unit
    = "ml_gsl_blas_drot"
  external scal : float -> [< Gsl_vectmat.vec ] -> unit = "ml_gsl_blas_dscal"
  external gemv :
    Gsl_blas_gen.transpose ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] ->
    x:[< Gsl_vectmat.vec ] -> beta:float -> y:[< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dgemv_bc" "ml_gsl_blas_dgemv"
  external trmv :
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    Gsl_blas_gen.diag ->
    a:[< Gsl_vectmat.mat ] -> x:[< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dtrmv"
  external trsv :
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    Gsl_blas_gen.diag ->
    a:[< Gsl_vectmat.mat ] -> x:[< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dtrsv"
  external symv :
    Gsl_blas_gen.uplo ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] ->
    x:[< Gsl_vectmat.vec ] -> beta:float -> y:[< Gsl_vectmat.vec ] -> unit
    = "ml_gsl_blas_dsymv_bc" "ml_gsl_blas_dsymv"
  external dger :
    alpha:float ->
    x:[< Gsl_vectmat.vec ] ->
    y:[< Gsl_vectmat.vec ] -> a:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dger"
  external syr :
    Gsl_blas_gen.uplo ->
    alpha:float -> x:[< Gsl_vectmat.vec ] -> a:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dsyr"
  external syr2 :
    Gsl_blas_gen.uplo ->
    alpha:float ->
    x:[< Gsl_vectmat.vec ] ->
    y:[< Gsl_vectmat.vec ] -> a:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dsyr2"
  external gemm :
    ta:Gsl_blas_gen.transpose ->
    tb:Gsl_blas_gen.transpose ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] ->
    b:[< Gsl_vectmat.mat ] -> beta:float -> c:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dgemm_bc" "ml_gsl_blas_dgemm"
  external symm :
    Gsl_blas_gen.side ->
    Gsl_blas_gen.uplo ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] ->
    b:[< Gsl_vectmat.mat ] -> beta:float -> c:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dsymm_bc" "ml_gsl_blas_dsymm"
  external trmm :
    Gsl_blas_gen.side ->
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    Gsl_blas_gen.diag ->
    alpha:float -> a:[< Gsl_vectmat.mat ] -> b:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dtrmm_bc" "ml_gsl_blas_dtrmm"
  external trsm :
    Gsl_blas_gen.side ->
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    Gsl_blas_gen.diag ->
    alpha:float -> a:[< Gsl_vectmat.mat ] -> b:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dtrsm_bc" "ml_gsl_blas_dtrsm"
  external syrk :
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] -> beta:float -> c:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dsyrk_bc" "ml_gsl_blas_dsyrk"
  external syr2k :
    Gsl_blas_gen.uplo ->
    Gsl_blas_gen.transpose ->
    alpha:float ->
    a:[< Gsl_vectmat.mat ] ->
    b:[< Gsl_vectmat.mat ] -> beta:float -> c:[< Gsl_vectmat.mat ] -> unit
    = "ml_gsl_blas_dsyr2k_bc" "ml_gsl_blas_dsyr2k"
  module Complex :
    sig
      external dotu :
        [< Gsl_vectmat.cvec ] -> [< Gsl_vectmat.cvec ] -> Gsl_complex.complex
        = "ml_gsl_blas_zdotu"
      external dotc :
        [< Gsl_vectmat.cvec ] -> [< Gsl_vectmat.cvec ] -> Gsl_complex.complex
        = "ml_gsl_blas_zdotc"
      external nrm2 : [< Gsl_vectmat.cvec ] -> float = "ml_gsl_blas_znrm2"
      external asum : [< Gsl_vectmat.cvec ] -> float = "ml_gsl_blas_zasum"
      external iamax : [< Gsl_vectmat.cvec ] -> int = "ml_gsl_blas_izamax"
      external swap : [< Gsl_vectmat.cvec ] -> [< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zswap"
      external copy : [< Gsl_vectmat.cvec ] -> [< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zcopy"
      external axpy :
        Gsl_complex.complex ->
        [< Gsl_vectmat.cvec ] -> [< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zaxpy"
      external scal : Gsl_complex.complex -> [< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zscal"
      external zdscal : float -> [< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zdscal"
      external gemv :
        Gsl_blas_gen.transpose ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        x:[< Gsl_vectmat.cvec ] ->
        beta:Gsl_complex.complex -> y:[< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zgemv_bc" "ml_gsl_blas_zgemv"
      external trmv :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        Gsl_blas_gen.diag ->
        a:[< Gsl_vectmat.cmat ] -> x:[< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_ztrmv"
      external trsv :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        Gsl_blas_gen.diag ->
        a:[< Gsl_vectmat.cmat ] -> x:[< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_ztrsv"
      external hemv :
        Gsl_blas_gen.uplo ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        x:[< Gsl_vectmat.cvec ] ->
        beta:Gsl_complex.complex -> y:[< Gsl_vectmat.cvec ] -> unit
        = "ml_gsl_blas_zhemv_bc" "ml_gsl_blas_zhemv"
      external geru :
        alpha:Gsl_complex.complex ->
        x:[< Gsl_vectmat.cvec ] ->
        y:[< Gsl_vectmat.cvec ] -> a:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zgeru"
      external gerc :
        alpha:Gsl_complex.complex ->
        x:[< Gsl_vectmat.cvec ] ->
        y:[< Gsl_vectmat.cvec ] -> a:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zgerc"
      external her :
        Gsl_blas_gen.uplo ->
        alpha:float ->
        x:[< Gsl_vectmat.cvec ] -> a:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zher"
      external her2 :
        Gsl_blas_gen.uplo ->
        alpha:Gsl_complex.complex ->
        x:[< Gsl_vectmat.cvec ] ->
        y:[< Gsl_vectmat.cvec ] -> a:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zher2"
      external gemm :
        ta:Gsl_blas_gen.transpose ->
        tb:Gsl_blas_gen.transpose ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        b:[< Gsl_vectmat.cmat ] ->
        beta:Gsl_complex.complex -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zgemm_bc" "ml_gsl_blas_zgemm"
      external symm :
        Gsl_blas_gen.side ->
        Gsl_blas_gen.uplo ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        b:[< Gsl_vectmat.cmat ] ->
        beta:Gsl_complex.complex -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zsymm_bc" "ml_gsl_blas_zsymm"
      external syrk :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        beta:Gsl_complex.complex -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zsyrk_bc" "ml_gsl_blas_zsyrk"
      external syr2k :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        b:[< Gsl_vectmat.cmat ] ->
        beta:Gsl_complex.complex -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zsyr2k_bc" "ml_gsl_blas_zsyr2k"
      external trmm :
        Gsl_blas_gen.side ->
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        Gsl_blas_gen.diag ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] -> b:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_ztrmm_bc" "ml_gsl_blas_ztrmm"
      external trsm :
        Gsl_blas_gen.side ->
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        Gsl_blas_gen.diag ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] -> b:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_ztrsm_bc" "ml_gsl_blas_ztrsm"
      external hemm :
        Gsl_blas_gen.side ->
        Gsl_blas_gen.uplo ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        b:[< Gsl_vectmat.cmat ] ->
        beta:Gsl_complex.complex -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zhemm_bc" "ml_gsl_blas_zhemm"
      external herk :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        alpha:float ->
        a:[< Gsl_vectmat.cmat ] ->
        beta:float -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zherk_bc" "ml_gsl_blas_zherk"
      external her2k :
        Gsl_blas_gen.uplo ->
        Gsl_blas_gen.transpose ->
        alpha:Gsl_complex.complex ->
        a:[< Gsl_vectmat.cmat ] ->
        b:[< Gsl_vectmat.cmat ] ->
        beta:float -> c:[< Gsl_vectmat.cmat ] -> unit
        = "ml_gsl_blas_zher2k_bc" "ml_gsl_blas_zher2k"
    end
end