--- 
:name: zlarfb
:md5sum: 627c934444abbc66d8956c26ce0a6217
:category: :subroutine
:arguments: 
- side: 
    :type: char
    :intent: input
- trans: 
    :type: char
    :intent: input
- direct: 
    :type: char
    :intent: input
- storev: 
    :type: char
    :intent: input
- m: 
    :type: integer
    :intent: input
- n: 
    :type: integer
    :intent: input
- k: 
    :type: integer
    :intent: input
- v: 
    :type: doublecomplex
    :intent: input
    :dims: 
    - ldv
    - k
- ldv: 
    :type: integer
    :intent: input
- t: 
    :type: doublecomplex
    :intent: input
    :dims: 
    - ldt
    - k
- ldt: 
    :type: integer
    :intent: input
- c: 
    :type: doublecomplex
    :intent: input/output
    :dims: 
    - ldc
    - n
- ldc: 
    :type: integer
    :intent: input
- work: 
    :type: doublecomplex
    :intent: workspace
    :dims: 
    - ldwork
    - k
- ldwork: 
    :type: integer
    :intent: input
:substitutions: 
  ldwork: "MAX(1,n) ? side = 'l' : MAX(1,m) ? side = 'r' : 0"
:fortran_help: "      SUBROUTINE ZLARFB( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV, T, LDT, C, LDC, WORK, LDWORK )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  ZLARFB applies a complex block reflector H or its transpose H' to a\n\
  *  complex M-by-N matrix C, from either the left or the right.\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  SIDE    (input) CHARACTER*1\n\
  *          = 'L': apply H or H' from the Left\n\
  *          = 'R': apply H or H' from the Right\n\
  *\n\
  *  TRANS   (input) CHARACTER*1\n\
  *          = 'N': apply H (No transpose)\n\
  *          = 'C': apply H' (Conjugate transpose)\n\
  *\n\
  *  DIRECT  (input) CHARACTER*1\n\
  *          Indicates how H is formed from a product of elementary\n\
  *          reflectors\n\
  *          = 'F': H = H(1) H(2) . . . H(k) (Forward)\n\
  *          = 'B': H = H(k) . . . H(2) H(1) (Backward)\n\
  *\n\
  *  STOREV  (input) CHARACTER*1\n\
  *          Indicates how the vectors which define the elementary\n\
  *          reflectors are stored:\n\
  *          = 'C': Columnwise\n\
  *          = 'R': Rowwise\n\
  *\n\
  *  M       (input) INTEGER\n\
  *          The number of rows of the matrix C.\n\
  *\n\
  *  N       (input) INTEGER\n\
  *          The number of columns of the matrix C.\n\
  *\n\
  *  K       (input) INTEGER\n\
  *          The order of the matrix T (= the number of elementary\n\
  *          reflectors whose product defines the block reflector).\n\
  *\n\
  *  V       (input) COMPLEX*16 array, dimension\n\
  *                                (LDV,K) if STOREV = 'C'\n\
  *                                (LDV,M) if STOREV = 'R' and SIDE = 'L'\n\
  *                                (LDV,N) if STOREV = 'R' and SIDE = 'R'\n\
  *          The matrix V. See further details.\n\
  *\n\
  *  LDV     (input) INTEGER\n\
  *          The leading dimension of the array V.\n\
  *          If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);\n\
  *          if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);\n\
  *          if STOREV = 'R', LDV >= K.\n\
  *\n\
  *  T       (input) COMPLEX*16 array, dimension (LDT,K)\n\
  *          The triangular K-by-K matrix T in the representation of the\n\
  *          block reflector.\n\
  *\n\
  *  LDT     (input) INTEGER\n\
  *          The leading dimension of the array T. LDT >= K.\n\
  *\n\
  *  C       (input/output) COMPLEX*16 array, dimension (LDC,N)\n\
  *          On entry, the M-by-N matrix C.\n\
  *          On exit, C is overwritten by H*C or H'*C or C*H or C*H'.\n\
  *\n\
  *  LDC     (input) INTEGER\n\
  *          The leading dimension of the array C. LDC >= max(1,M).\n\
  *\n\
  *  WORK    (workspace) COMPLEX*16 array, dimension (LDWORK,K)\n\
  *\n\
  *  LDWORK  (input) INTEGER\n\
  *          The leading dimension of the array WORK.\n\
  *          If SIDE = 'L', LDWORK >= max(1,N);\n\
  *          if SIDE = 'R', LDWORK >= max(1,M).\n\
  *\n\n\
  *  =====================================================================\n\
  *\n"
