---
name: "unbdb6"
section: "3"
platform: "linux"
package: "lapack-doc"
version: "3.12.1-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/unbdb6"
---

# unbdb6(3)

{un,or}bdb6: step in uncsd2by1

## NAME

unbdb6 - {un,or}bdb6: step in uncsd2by1

## SYNOPSIS

### Functions

subroutine **cunbdb6** (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)\
 **CUNBDB6**  subroutine **dorbdb6** (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)\
 **DORBDB6**  subroutine **sorbdb6** (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)\
 **SORBDB6**  subroutine **zunbdb6** (m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)\
 **ZUNBDB6**

## Detailed Description

## Function Documentation

### subroutine cunbdb6 (integer m1, integer m2, integer n, complex, dimension(\*) x1, integer incx1, complex, dimension(\*) x2, integer incx2, complex, dimension(ldq1,\*) q1, integer ldq1, complex, dimension(ldq2,\*) q2, integer ldq2, complex, dimension(\*) work, integer lwork, integer info)

**CUNBDB6**

**Purpose:**

```
!>
!> CUNBDB6 orthogonalizes the column vector
!>      X = [ X1 ]
!>          [ X2 ]
!> with respect to the columns of
!>      Q = [ Q1 ] .
!>          [ Q2 ]
!> The columns of Q must be orthonormal. The orthogonalized vector will
!> be zero if and only if it lies entirely in the range of Q.
!>
!> The projection is computed with at most two iterations of the
!> classical Gram-Schmidt algorithm, see
!> * L. Giraud, J. Langou, M. Rozložník.
!>   2002. CERFACS Technical Report No. TR/PA/02/33. URL:
!>   https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf
!>
!>
```

**Parameters**

*M1*

```
!>          M1 is INTEGER
!>           The dimension of X1 and the number of rows in Q1. 0 <= M1.
!>
```

*M2*

```
!>          M2 is INTEGER
!>           The dimension of X2 and the number of rows in Q2. 0 <= M2.
!>
```

*N*

```
!>          N is INTEGER
!>           The number of columns in Q1 and Q2. 0 <= N.
!>
```

*X1*

```
!>          X1 is COMPLEX array, dimension (M1)
!>           On entry, the top part of the vector to be orthogonalized.
!>           On exit, the top part of the projected vector.
!>
```

*INCX1*

```
!>          INCX1 is INTEGER
!>           Increment for entries of X1.
!>
```

*X2*

```
!>          X2 is COMPLEX array, dimension (M2)
!>           On entry, the bottom part of the vector to be
!>           orthogonalized. On exit, the bottom part of the projected
!>           vector.
!>
```

*INCX2*

```
!>          INCX2 is INTEGER
!>           Increment for entries of X2.
!>
```

*Q1*

```
!>          Q1 is COMPLEX array, dimension (LDQ1, N)
!>           The top part of the orthonormal basis matrix.
!>
```

*LDQ1*

```
!>          LDQ1 is INTEGER
!>           The leading dimension of Q1. LDQ1 >= M1.
!>
```

*Q2*

```
!>          Q2 is COMPLEX array, dimension (LDQ2, N)
!>           The bottom part of the orthonormal basis matrix.
!>
```

*LDQ2*

```
!>          LDQ2 is INTEGER
!>           The leading dimension of Q2. LDQ2 >= M2.
!>
```

*WORK*

```
!>          WORK is COMPLEX array, dimension (LWORK)
!>
```

*LWORK*

```
!>          LWORK is INTEGER
!>           The dimension of the array WORK. LWORK >= N.
!>
```

*INFO*

```
!>          INFO is INTEGER
!>           = 0:  successful exit.
!>           < 0:  if INFO = -i, the i-th argument had an illegal value.
!>
```

**Author**

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line **157** of file **cunbdb6.f**.

### subroutine dorbdb6 (integer m1, integer m2, integer n, double precision, dimension(\*) x1, integer incx1, double precision, dimension(\*) x2, integer incx2, double precision, dimension(ldq1,\*) q1, integer ldq1, double precision, dimension(ldq2,\*) q2, integer ldq2, double precision, dimension(\*) work, integer lwork, integer info)

**DORBDB6**

**Purpose:**

```
!>
!> DORBDB6 orthogonalizes the column vector
!>      X = [ X1 ]
!>          [ X2 ]
!> with respect to the columns of
!>      Q = [ Q1 ] .
!>          [ Q2 ]
!> The columns of Q must be orthonormal. The orthogonalized vector will
!> be zero if and only if it lies entirely in the range of Q.
!>
!> The projection is computed with at most two iterations of the
!> classical Gram-Schmidt algorithm, see
!> * L. Giraud, J. Langou, M. Rozložník.
!>   2002. CERFACS Technical Report No. TR/PA/02/33. URL:
!>   https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf
!>
!>
```

**Parameters**

*M1*

```
!>          M1 is INTEGER
!>           The dimension of X1 and the number of rows in Q1. 0 <= M1.
!>
```

*M2*

```
!>          M2 is INTEGER
!>           The dimension of X2 and the number of rows in Q2. 0 <= M2.
!>
```

*N*

```
!>          N is INTEGER
!>           The number of columns in Q1 and Q2. 0 <= N.
!>
```

*X1*

```
!>          X1 is DOUBLE PRECISION array, dimension (M1)
!>           On entry, the top part of the vector to be orthogonalized.
!>           On exit, the top part of the projected vector.
!>
```

*INCX1*

```
!>          INCX1 is INTEGER
!>           Increment for entries of X1.
!>
```

*X2*

```
!>          X2 is DOUBLE PRECISION array, dimension (M2)
!>           On entry, the bottom part of the vector to be
!>           orthogonalized. On exit, the bottom part of the projected
!>           vector.
!>
```

*INCX2*

```
!>          INCX2 is INTEGER
!>           Increment for entries of X2.
!>
```

*Q1*

```
!>          Q1 is DOUBLE PRECISION array, dimension (LDQ1, N)
!>           The top part of the orthonormal basis matrix.
!>
```

*LDQ1*

```
!>          LDQ1 is INTEGER
!>           The leading dimension of Q1. LDQ1 >= M1.
!>
```

*Q2*

```
!>          Q2 is DOUBLE PRECISION array, dimension (LDQ2, N)
!>           The bottom part of the orthonormal basis matrix.
!>
```

*LDQ2*

```
!>          LDQ2 is INTEGER
!>           The leading dimension of Q2. LDQ2 >= M2.
!>
```

*WORK*

```
!>          WORK is DOUBLE PRECISION array, dimension (LWORK)
!>
```

*LWORK*

```
!>          LWORK is INTEGER
!>           The dimension of the array WORK. LWORK >= N.
!>
```

*INFO*

```
!>          INFO is INTEGER
!>           = 0:  successful exit.
!>           < 0:  if INFO = -i, the i-th argument had an illegal value.
!>
```

**Author**

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line **157** of file **dorbdb6.f**.

### subroutine sorbdb6 (integer m1, integer m2, integer n, real, dimension(\*) x1, integer incx1, real, dimension(\*) x2, integer incx2, real, dimension(ldq1,\*) q1, integer ldq1, real, dimension(ldq2,\*) q2, integer ldq2, real, dimension(\*) work, integer lwork, integer info)

**SORBDB6**

**Purpose:**

```
!>
!> SORBDB6 orthogonalizes the column vector
!>      X = [ X1 ]
!>          [ X2 ]
!> with respect to the columns of
!>      Q = [ Q1 ] .
!>          [ Q2 ]
!> The columns of Q must be orthonormal. The orthogonalized vector will
!> be zero if and only if it lies entirely in the range of Q.
!>
!> The projection is computed with at most two iterations of the
!> classical Gram-Schmidt algorithm, see
!> * L. Giraud, J. Langou, M. Rozložník.
!>   2002. CERFACS Technical Report No. TR/PA/02/33. URL:
!>   https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf
!>
!>
```

**Parameters**

*M1*

```
!>          M1 is INTEGER
!>           The dimension of X1 and the number of rows in Q1. 0 <= M1.
!>
```

*M2*

```
!>          M2 is INTEGER
!>           The dimension of X2 and the number of rows in Q2. 0 <= M2.
!>
```

*N*

```
!>          N is INTEGER
!>           The number of columns in Q1 and Q2. 0 <= N.
!>
```

*X1*

```
!>          X1 is REAL array, dimension (M1)
!>           On entry, the top part of the vector to be orthogonalized.
!>           On exit, the top part of the projected vector.
!>
```

*INCX1*

```
!>          INCX1 is INTEGER
!>           Increment for entries of X1.
!>
```

*X2*

```
!>          X2 is REAL array, dimension (M2)
!>           On entry, the bottom part of the vector to be
!>           orthogonalized. On exit, the bottom part of the projected
!>           vector.
!>
```

*INCX2*

```
!>          INCX2 is INTEGER
!>           Increment for entries of X2.
!>
```

*Q1*

```
!>          Q1 is REAL array, dimension (LDQ1, N)
!>           The top part of the orthonormal basis matrix.
!>
```

*LDQ1*

```
!>          LDQ1 is INTEGER
!>           The leading dimension of Q1. LDQ1 >= M1.
!>
```

*Q2*

```
!>          Q2 is REAL array, dimension (LDQ2, N)
!>           The bottom part of the orthonormal basis matrix.
!>
```

*LDQ2*

```
!>          LDQ2 is INTEGER
!>           The leading dimension of Q2. LDQ2 >= M2.
!>
```

*WORK*

```
!>          WORK is REAL array, dimension (LWORK)
!>
```

*LWORK*

```
!>          LWORK is INTEGER
!>           The dimension of the array WORK. LWORK >= N.
!>
```

*INFO*

```
!>          INFO is INTEGER
!>           = 0:  successful exit.
!>           < 0:  if INFO = -i, the i-th argument had an illegal value.
!>
```

**Author**

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line **157** of file **sorbdb6.f**.

### subroutine zunbdb6 (integer m1, integer m2, integer n, complex\*16, dimension(\*) x1, integer incx1, complex\*16, dimension(\*) x2, integer incx2, complex\*16, dimension(ldq1,\*) q1, integer ldq1, complex\*16, dimension(ldq2,\*) q2, integer ldq2, complex\*16, dimension(\*) work, integer lwork, integer info)

**ZUNBDB6**

**Purpose:**

```
!>
!> ZUNBDB6 orthogonalizes the column vector
!>      X = [ X1 ]
!>          [ X2 ]
!> with respect to the columns of
!>      Q = [ Q1 ] .
!>          [ Q2 ]
!> The columns of Q must be orthonormal. The orthogonalized vector will
!> be zero if and only if it lies entirely in the range of Q.
!>
!> The projection is computed with at most two iterations of the
!> classical Gram-Schmidt algorithm, see
!> * L. Giraud, J. Langou, M. Rozložník.
!>   2002. CERFACS Technical Report No. TR/PA/02/33. URL:
!>   https://www.cerfacs.fr/algor/reports/2002/TR_PA_02_33.pdf
!>
!>
```

**Parameters**

*M1*

```
!>          M1 is INTEGER
!>           The dimension of X1 and the number of rows in Q1. 0 <= M1.
!>
```

*M2*

```
!>          M2 is INTEGER
!>           The dimension of X2 and the number of rows in Q2. 0 <= M2.
!>
```

*N*

```
!>          N is INTEGER
!>           The number of columns in Q1 and Q2. 0 <= N.
!>
```

*X1*

```
!>          X1 is COMPLEX*16 array, dimension (M1)
!>           On entry, the top part of the vector to be orthogonalized.
!>           On exit, the top part of the projected vector.
!>
```

*INCX1*

```
!>          INCX1 is INTEGER
!>           Increment for entries of X1.
!>
```

*X2*

```
!>          X2 is COMPLEX*16 array, dimension (M2)
!>           On entry, the bottom part of the vector to be
!>           orthogonalized. On exit, the bottom part of the projected
!>           vector.
!>
```

*INCX2*

```
!>          INCX2 is INTEGER
!>           Increment for entries of X2.
!>
```

*Q1*

```
!>          Q1 is COMPLEX*16 array, dimension (LDQ1, N)
!>           The top part of the orthonormal basis matrix.
!>
```

*LDQ1*

```
!>          LDQ1 is INTEGER
!>           The leading dimension of Q1. LDQ1 >= M1.
!>
```

*Q2*

```
!>          Q2 is COMPLEX*16 array, dimension (LDQ2, N)
!>           The bottom part of the orthonormal basis matrix.
!>
```

*LDQ2*

```
!>          LDQ2 is INTEGER
!>           The leading dimension of Q2. LDQ2 >= M2.
!>
```

*WORK*

```
!>          WORK is COMPLEX*16 array, dimension (LWORK)
!>
```

*LWORK*

```
!>          LWORK is INTEGER
!>           The dimension of the array WORK. LWORK >= N.
!>
```

*INFO*

```
!>          INFO is INTEGER
!>           = 0:  successful exit.
!>           < 0:  if INFO = -i, the i-th argument had an illegal value.
!>
```

**Author**

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line **157** of file **zunbdb6.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.
