/*
 *   -- micMAGMA (version 1.1) --
 *      Univ. of Tennessee, Knoxville
 *      Univ. of California, Berkeley
 *      Univ. of Colorado, Denver
 *      November 2011
 *
 * @generated c Fri Nov 22 14:21:03 2013
 */

#ifndef MAGMA_CBULGEINC_H
#define MAGMA_CBULGEINC_H

#define PRECISION_c

extern "C" {
  magma_int_t magma_chetrd_he2hb(magma_uplo_t uplo, magma_int_t n, magma_int_t NB, 
                                 magmaFloatComplex *a, magma_int_t lda,
                                 magmaFloatComplex *tau, magmaFloatComplex *work, 
                                 magma_int_t lwork, magmaFloatComplex_ptr dT, size_t dT_offset, 
                                 magma_int_t threads, magma_int_t *info, magma_queue_t queue);
  
  magma_int_t magma_chetrd_hb2st(magma_int_t threads, char uplo, magma_int_t n, magma_int_t nb, magma_int_t Vblksiz,
                                 magmaFloatComplex *A, magma_int_t lda, float *D, float *E,
                                 magmaFloatComplex *V, magma_int_t ldv, magmaFloatComplex *TAU, 
                                 magma_int_t compT, magmaFloatComplex *T, magma_int_t ldt);

  magma_int_t magma_cbulge_back(magma_int_t threads, char uplo, magma_int_t n, magma_int_t nb,
                                magma_int_t ne, magma_int_t Vblksiz,
                                magmaFloatComplex *Z, magma_int_t ldz, magmaFloatComplex *dZ, magma_int_t lddz,
                                magmaFloatComplex *V, magma_int_t ldv, magmaFloatComplex *TAU, 
                                magmaFloatComplex *T, magma_int_t ldt, magma_int_t* info);

  magma_int_t magma_cunmqr_gpu_2stages(char side, char trans, magma_int_t m, magma_int_t n, magma_int_t k, 
                                       magmaFloatComplex *dA, magma_int_t ldda,
                                       magmaFloatComplex *dC, magma_int_t lddc, 
                                       magmaFloatComplex *dT, magma_int_t nb, magma_int_t *info);

  magma_int_t magma_cbulge_get_lq2(magma_int_t n);

  magma_int_t magma_cbulge_get_Vblksiz(magma_int_t n, magma_int_t nb);
}
#endif
