[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]

*AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 2*

## SROTG, DROTG, CROTG, or ZROTG Subroutine

### Purpose

Constructs Givens plane rotation.

### Library

BLAS Library (**libblas.a**)

### FORTRAN Syntax

**SUBROUTINE SROTG(***A***,***B***,***C***,***S***)**
**REAL ***A***,***B***,***C***,***S*

**SUBROUTINE DROTG(***A***,***B***,***C***,***S***)**
**DOUBLE PRECISION ***A***,***B***,***C***,***S*

**SUBROUTINE CROTG(***A***,***B***,***C***,***S***)**
**REAL ***C*
**COMPLEX ***A***,***B***,***S*

**SUBROUTINE ZROTG(***A***,***B***,***C***,***S***)**
**DOUBLE PRECISION ***C*
**COMPLEX*16 ***A***,***B***,***S*

### Description

Given vectors *A* and *B*, the **SROTG**, **DROTG**, **CROTG**, or **ZROTG** subroutine computes:

A B
a = ---------, b = ---------
|A| + |B| |A| + |B|

2 2 1/2
roe = { a if |A| > |B| } r = roe ( a + b ),
{ b if |B| >= |A| }

C = { A/r if r not = 0} S = { B/r if r not = 0 }
{ 1 if r = 0 } { 0 if r = 0 }

The numbers *C*, *S*, and *r* then satisfy the matrix equation:

--- --- --- --- --- ---
| C S | | A | | r |
| | . | | = | |
| -S C | | B | | 0 |
--- --- --- --- --- ---

The subroutines also compute:

{ S if |A| > |B|,
z = { 1/C if |B| >= |A| and C not = 0,
{ 1 if C = 0.

The subroutines return *r* overwriting *A* and *z* overwriting *B*, as well as returning *C* and *S*.

### Parameters

*A* |
On entry, contains a scalar constant; on exit, contains the value *r*. |

*B* |
On entry, contains a scalar constant; on exit, contains the value *z*. |

*C* |
Can contain any value on entry; the value *C* returned on exit. |

*S* |
Can contain any value on entry; the value *S* returned on exit. |

[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]