# NewStreamEx

Creates and initializes a random stream for generators with multiple initial conditions.

## Syntax

Fortran:

status = vslnewstreamex( stream, brng, n, params )

C:

status = vslNewStreamEx( &stream, brng, n, params );

## Description

This function provides an advanced tool to set the initial conditions for a basic generator if its input arguments imply several initialization parameters. Initial values are used to select a particular sequence generated by the basic generator brng. Whenever possible, use NewStream, which is analogous to `vsl` NewStreamEx except that it takes only one 32-bit initial condition. In particular, `vsl` NewStreamEx may be used to initialize the state table in Generalized Feedback Shift Register Generators (GFSRs). A more detailed description of this issue can be found in VSL Notes.

This function is also used to pass user-defined initialization parameters of quasi-random number generators into the library. See VSL Notes for the format for their passing and registration in VSL.

### Note

This function is not applicable for abstract basic random number generators. Please use `vsl` iNewAbstractStream, `vsl` sNewAbstractStream or `vsl` dNewAbstractStream to utilize integer, single-precision or double-precision external random data respectively.

## Input Parameters

Name | Type | Description
--- | --- | ---
brng | FORTRAN: INTEGER, INTENT(IN) C: int | Index of the basic generator to initialize the stream. See Table “Values of brng parameter” for specific value.
n | FORTRAN: INTEGER, INTENT(IN) C: unsigned int | Number of initial conditions contained in params
params | FORTRAN: INTEGER, INTENT(IN) C: const unsigned int | Array of initial conditions necessary for the basic generator brng to initialize the stream. In the case of a quasi-random number generator only the first element in params parameter is used to set the dimension. If the dimension is greater than the dimension that brng can support or is less than 1, then the dimension is assumed to be equal to 1.

## Output Parameters

Name | Type | Description
--- | --- | ---
stream | FORTRAN: TYPE(VSL_STREAM_STATE), INTENT(OUT) C: VSLStreamStatePtr* | Stream state descriptor

## Return Values

VSL_ERROR_OK, VSL_STATUS_OK
  Indicates no error, execution is successful.
VSL_ERROR_INVALID_BRNG_INDEX
  BRNG index is invalid.
VSL_ERROR_MEM_FAILURE

  System cannot allocate memory for stream.

Parent topic: Service Routines