---
name: "upgtr"
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/upgtr"
---

# upgtr(3)

{up,op}gtr: generate Q from hetrd

## NAME

upgtr - {up,op}gtr: generate Q from hetrd

## SYNOPSIS

### Functions

subroutine **cupgtr** (uplo, n, ap, tau, q, ldq, work, info)\
 **CUPGTR**  subroutine **dopgtr** (uplo, n, ap, tau, q, ldq, work, info)\
 **DOPGTR**  subroutine **sopgtr** (uplo, n, ap, tau, q, ldq, work, info)\
 **SOPGTR**  subroutine **zupgtr** (uplo, n, ap, tau, q, ldq, work, info)\
 **ZUPGTR**

## Detailed Description

## Function Documentation

### subroutine cupgtr (character uplo, integer n, complex, dimension( \* ) ap, complex, dimension( \* ) tau, complex, dimension( ldq, \* ) q, integer ldq, complex, dimension( \* ) work, integer info)

**CUPGTR**

**Purpose:**

```
!>
!> CUPGTR generates a complex unitary matrix Q which is defined as the
!> product of n-1 elementary reflectors H(i) of order n, as returned by
!> CHPTRD using packed storage:
!>
!> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
!>
!> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
!>
```

**Parameters**

*UPLO*

```
!>          UPLO is CHARACTER*1
!>          = 'U': Upper triangular packed storage used in previous
!>                 call to CHPTRD;
!>          = 'L': Lower triangular packed storage used in previous
!>                 call to CHPTRD.
!>
```

*N*

```
!>          N is INTEGER
!>          The order of the matrix Q. N >= 0.
!>
```

*AP*

```
!>          AP is COMPLEX array, dimension (N*(N+1)/2)
!>          The vectors which define the elementary reflectors, as
!>          returned by CHPTRD.
!>
```

*TAU*

```
!>          TAU is COMPLEX array, dimension (N-1)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by CHPTRD.
!>
```

*Q*

```
!>          Q is COMPLEX array, dimension (LDQ,N)
!>          The N-by-N unitary matrix Q.
!>
```

*LDQ*

```
!>          LDQ is INTEGER
!>          The leading dimension of the array Q. LDQ >= max(1,N).
!>
```

*WORK*

```
!>          WORK is COMPLEX array, dimension (N-1)
!>
```

*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 **113** of file **cupgtr.f**.

### subroutine dopgtr (character uplo, integer n, double precision, dimension( \* ) ap, double precision, dimension( \* ) tau, double precision, dimension( ldq, \* ) q, integer ldq, double precision, dimension( \* ) work, integer info)

**DOPGTR**

**Purpose:**

```
!>
!> DOPGTR generates a real orthogonal matrix Q which is defined as the
!> product of n-1 elementary reflectors H(i) of order n, as returned by
!> DSPTRD using packed storage:
!>
!> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
!>
!> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
!>
```

**Parameters**

*UPLO*

```
!>          UPLO is CHARACTER*1
!>          = 'U': Upper triangular packed storage used in previous
!>                 call to DSPTRD;
!>          = 'L': Lower triangular packed storage used in previous
!>                 call to DSPTRD.
!>
```

*N*

```
!>          N is INTEGER
!>          The order of the matrix Q. N >= 0.
!>
```

*AP*

```
!>          AP is DOUBLE PRECISION array, dimension (N*(N+1)/2)
!>          The vectors which define the elementary reflectors, as
!>          returned by DSPTRD.
!>
```

*TAU*

```
!>          TAU is DOUBLE PRECISION array, dimension (N-1)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by DSPTRD.
!>
```

*Q*

```
!>          Q is DOUBLE PRECISION array, dimension (LDQ,N)
!>          The N-by-N orthogonal matrix Q.
!>
```

*LDQ*

```
!>          LDQ is INTEGER
!>          The leading dimension of the array Q. LDQ >= max(1,N).
!>
```

*WORK*

```
!>          WORK is DOUBLE PRECISION array, dimension (N-1)
!>
```

*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 **113** of file **dopgtr.f**.

### subroutine sopgtr (character uplo, integer n, real, dimension( \* ) ap, real, dimension( \* ) tau, real, dimension( ldq, \* ) q, integer ldq, real, dimension( \* ) work, integer info)

**SOPGTR**

**Purpose:**

```
!>
!> SOPGTR generates a real orthogonal matrix Q which is defined as the
!> product of n-1 elementary reflectors H(i) of order n, as returned by
!> SSPTRD using packed storage:
!>
!> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
!>
!> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
!>
```

**Parameters**

*UPLO*

```
!>          UPLO is CHARACTER*1
!>          = 'U': Upper triangular packed storage used in previous
!>                 call to SSPTRD;
!>          = 'L': Lower triangular packed storage used in previous
!>                 call to SSPTRD.
!>
```

*N*

```
!>          N is INTEGER
!>          The order of the matrix Q. N >= 0.
!>
```

*AP*

```
!>          AP is REAL array, dimension (N*(N+1)/2)
!>          The vectors which define the elementary reflectors, as
!>          returned by SSPTRD.
!>
```

*TAU*

```
!>          TAU is REAL array, dimension (N-1)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by SSPTRD.
!>
```

*Q*

```
!>          Q is REAL array, dimension (LDQ,N)
!>          The N-by-N orthogonal matrix Q.
!>
```

*LDQ*

```
!>          LDQ is INTEGER
!>          The leading dimension of the array Q. LDQ >= max(1,N).
!>
```

*WORK*

```
!>          WORK is REAL array, dimension (N-1)
!>
```

*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 **113** of file **sopgtr.f**.

### subroutine zupgtr (character uplo, integer n, complex\*16, dimension( \* ) ap, complex\*16, dimension( \* ) tau, complex\*16, dimension( ldq, \* ) q, integer ldq, complex\*16, dimension( \* ) work, integer info)

**ZUPGTR**

**Purpose:**

```
!>
!> ZUPGTR generates a complex unitary matrix Q which is defined as the
!> product of n-1 elementary reflectors H(i) of order n, as returned by
!> ZHPTRD using packed storage:
!>
!> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1),
!>
!> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1).
!>
```

**Parameters**

*UPLO*

```
!>          UPLO is CHARACTER*1
!>          = 'U': Upper triangular packed storage used in previous
!>                 call to ZHPTRD;
!>          = 'L': Lower triangular packed storage used in previous
!>                 call to ZHPTRD.
!>
```

*N*

```
!>          N is INTEGER
!>          The order of the matrix Q. N >= 0.
!>
```

*AP*

```
!>          AP is COMPLEX*16 array, dimension (N*(N+1)/2)
!>          The vectors which define the elementary reflectors, as
!>          returned by ZHPTRD.
!>
```

*TAU*

```
!>          TAU is COMPLEX*16 array, dimension (N-1)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by ZHPTRD.
!>
```

*Q*

```
!>          Q is COMPLEX*16 array, dimension (LDQ,N)
!>          The N-by-N unitary matrix Q.
!>
```

*LDQ*

```
!>          LDQ is INTEGER
!>          The leading dimension of the array Q. LDQ >= max(1,N).
!>
```

*WORK*

```
!>          WORK is COMPLEX*16 array, dimension (N-1)
!>
```

*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 **113** of file **zupgtr.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.
