﻿ c06gs Method
c06gs takes $m$ Hermitian sequences, each containing $n$ data values, and forms the real and imaginary parts of the $m$ corresponding complex sequences.

# Syntax

C#
```public static void c06gs(
int m,
int n,
double[] x,
double[] u,
double[] v,
out int ifail
)```
Visual Basic
```Public Shared Sub c06gs ( _
m As Integer, _
n As Integer, _
x As Double(), _
u As Double(), _
v As Double(), _
<OutAttribute> ByRef ifail As Integer _
)```
Visual C++
```public:
static void c06gs(
int m,
int n,
array<double>^ x,
array<double>^ u,
array<double>^ v,
[OutAttribute] int% ifail
)```
F#
```static member c06gs :
m : int *
n : int *
x : float[] *
u : float[] *
v : float[] *
ifail : int byref -> unit
```

#### Parameters

m
Type: System..::..Int32
On entry: $m$, the number of Hermitian sequences to be converted into complex form.
Constraint: ${\mathbf{m}}\ge 1$.
n
Type: System..::..Int32
On entry: $n$, the number of data values in each Hermitian sequence.
Constraint: ${\mathbf{n}}\ge 1$.
x
Type: array<System..::..Double>[]()[][]
An array of size [${\mathbf{m}}×{\mathbf{n}}$]
On entry: the data must be stored in x as if in a two-dimensional array of dimension $\left(1:{\mathbf{m}},0:{\mathbf{n}}-1\right)$; each of the $m$ sequences is stored in a row of the array in Hermitian form. If the $n$ data values ${z}_{j}^{p}$ are written as ${x}_{j}^{p}+i{y}_{j}^{p}$, then for $0\le j\le n/2$, ${x}_{j}^{p}$ is contained in ${\mathbf{x}}\left[p-1,j\right]$, and for $1\le j\le \left(n-1\right)/2$, ${y}_{j}^{p}$ is contained in ${\mathbf{x}}\left[p,n-j\right]$. (See also [] in the C06 class Chapter Introduction.)
u
Type: array<System..::..Double>[]()[][]
An array of size [${\mathbf{m}}×{\mathbf{n}}$]
On exit: the real and imaginary parts of the $m$ sequences of length $n$, are stored in u and v respectively, as if in two-dimensional arrays of dimension $\left(1:{\mathbf{m}},0:{\mathbf{n}}-1\right)$; each of the $m$ sequences is stored as if in a row of each array. In other words, if the real parts of the $p$th sequence are denoted by ${x}_{\mathit{j}}^{p}$, for $\mathit{j}=0,1,\dots ,n-1$ then the $mn$ elements of the array u contain the values
 $x01,x02,…,x0m,x11,x12,…,x1m,…,xn-11,xn-12,…,xn-1m$
v
Type: array<System..::..Double>[]()[][]
An array of size [${\mathbf{m}}×{\mathbf{n}}$]
On exit: the real and imaginary parts of the $m$ sequences of length $n$, are stored in u and v respectively, as if in two-dimensional arrays of dimension $\left(1:{\mathbf{m}},0:{\mathbf{n}}-1\right)$; each of the $m$ sequences is stored as if in a row of each array. In other words, if the real parts of the $p$th sequence are denoted by ${x}_{\mathit{j}}^{p}$, for $\mathit{j}=0,1,\dots ,n-1$ then the $mn$ elements of the array u contain the values
 $x01,x02,…,x0m,x11,x12,…,x1m,…,xn-11,xn-12,…,xn-1m$
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

# Description

This is a utility method for use in conjunction with c06fp and c06fq (see the C06 class).

None.

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{m}}<1$.
${\mathbf{ifail}}=2$
 On entry, ${\mathbf{n}}<1$.
${\mathbf{ifail}}=-9000$
An error occured, see message report.
${\mathbf{ifail}}=-8000$
Negative dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$

Exact.

None.

None.

# Example

This example reads in sequences of real data values which are assumed to be Hermitian sequences of complex data stored in Hermitian form. The sequences are then expanded into full complex form using c06gs and printed.

Example program (C#): c06gse.cs

Example program data: c06gse.d

Example program results: c06gse.r