# Configuration Settings

Each of the configuration parameters is identified by a named constant in the `MKL_DFTI` module. In C, these named constants have the enumeration type `DFTI_CONFIG_PARAM`. The list of configuration parameters whose values can be set by user is given in Table “Settable Configuration Parameters”; the list of configuration parameters that are read-only is given in Table “Read-Only Configuration Parameters”. All parameters are readable. Most of these parameters are self-explanatory, while some others are discussed more fully in the description of the relevant functions.

Settable Configuration Parameters
Named Constants | Value Type | Comments
--- | --- | ---
Most common configurations, no default, must be set explicitly
`DFTI_FORWARD_DOMAIN` | Named constant | Domain for the forward transform, settable by DftiCreateDescriptor only
`DFTI_PRECISION` | Named constant | Precision of computation, settable by DftiCreateDescriptor only
`DFTI_DIMENSION` | Integer scalar | Dimension of the transform, settable by DftiCreateDescriptor only
`DFTI_LENGTHS` | Integer scalar/array | Lengths of each dimension, settable by DftiCreateDescriptor only
Common configurations including multiple transform and data representation
`DFTI_NUMBER_OF_TRANSFORMS` | Integer scalar | For multiple number of transforms
`DFTI_FORWARD_SCALE` | Floating-point scalar | Scale factor for forward transform
`DFTI_BACKWARD_SCALE` | Floating-point scalar | Scale factor for backward transform
`DFTI_PLACEMENT` | Named constant | Placement of the computation result
`DFTI_COMPLEX_STORAGE` | Named constant | Storage method, complex domain data
`DFTI_REAL_STORAGE` | Named constant | Storage method, real domain data
`DFTI_CONJUGATE_EVEN_STORAGE` | Named constant | Storage method, conjugate even domain data
`DFTI_DESCRIPTOR_NAME` | Character string | No longer than DFTI_MAX_NAME_LENGTH
`DFTI_PACKED_FORMAT` | Named constant | Packed format, real domain data
`DFTI_NUMBER_OF_USER_THREADS` | Integer scalar | Number of user threads employing the same descriptor for FFT computation
Configurations regarding stride of data
`DFTI_INPUT_DISTANCE` | Integer scalar | Multiple transforms, distance of first elements
`DFTI_OUTPUT_DISTANCE` | Integer scalar | Multiple transforms, distance of first elements
`DFTI_INPUT_STRIDES` | Integer array | Stride information of input data
`DFTI_OUTPUT_STRIDES` | Integer array | Stride information of output data
Advanced configuration
`DFTI_ORDERING` | Named constant | Scrambling of data order
`DFTI_TRANSPOSE` | Named constant | Scrambling of dimension

Read-Only Configuration Parameters
Named Constants | Value Type | Comments
--- | --- | ---
`DFTI_COMMIT_STATUS` | Name constant | Whether descriptor has been committed
`DFTI_VERSION` | String | Intel MKL library version number

The configuration parameters are set by various values. Some of these values are specified by native data types such as an integer value (for example, number of simultaneous transforms requested), or a single-precision number (for example, the scale factor one would like to apply on a forward transform).

Other configuration values are discrete in nature (for example, the domain of the forward transform) and are thus provided in the DFTI module as named constants. In C, these named constants have the enumeration type `DFTI_CONFIG_VALUE`. The complete list of named constants used for this kind of configuration values is given in Table “Named Constant Configuration Values”.

Named Constant Configuration Values
Named Constant | Comments
--- | ---
`DFTI_SINGLE` | Single precision
`DFTI_DOUBLE` | Double precision
`DFTI_COMPLEX` | Complex domain
`DFTI_REAL` | Real domain
`DFTI_INPLACE` | Output overwrites input
`DFTI_NOT_INPLACE` | Output does not overwrite input
`DFTI_COMPLEX_COMPLEX` | Storage method (see Storage schemes)
`DFTI_REAL_REAL` | Storage method (see Storage schemes)
`DFTI_COMPLEX_REAL` | Storage method (see Storage schemes)
`DFTI_REAL_COMPLEX` | Storage method (see Storage schemes)
`DFTI_COMMITTED` | Committal status of a descriptor
`DFTI_UNCOMMITTED` | Committal status of a descriptor
`DFTI_ORDERED` | Data ordered in both forward and backward domains
`DFTI_BACKWARD_SCRAMBLED` | Data scrambled in backward domain (by forward transform)
`DFTI_NONE` | Used to specify no transposition
`DFTI_CCS_FORMAT` | Packed format, real data (see Packed formats)
`DFTI_PACK_FORMAT` | Packed format, real data (see Packed formats)
`DFTI_PERM_FORMAT` | Packed format, real data (see Packed formats)
`DFTI_CCE_FORMAT` | Packed format, real data (see Packed formats)
`DFTI_VERSION_LENGTH` | Number of characters for library version length
`DFTI_MAX_NAME_LENGTH` | Maximum descriptor name length
`DFTI_MAX_MESSAGE_LENGTH` | Maximum status message length

Table “Settings for Discrete Configuration Parameters” lists the possible values for those configuration parameters that are discrete in nature.

Settings for Discrete Configuration Parameters
Named Constant | Possible Values
--- | ---
`DFTI_PRECISION` | DFTI_SINGLE, or DFTI_DOUBLE (no default)
`DFTI_FORWARD_DOMAIN` | DFTI_COMPLEX, or DFTI_REAL
`DFTI_PLACEMENT` | DFTI_INPLACE (default), or DFTI_NOT_INPLACE
`DFTI_COMPLEX_STORAGE` | DFTI_COMPLEX_COMPLEX (default)
`DFTI_REAL_STORAGE` | DFTI_REAL_REAL (default), or DFTI_REAL_COMPLEX
`DFTI_CONJUGATE_EVEN_STORAGE` | DFTI_COMPLEX_COMPLEX, or DFTI_COMPLEX_REAL (default)
`DFTI_PACKED_FORMAT` | DFTI_CCS_FORMAT (default), or DFTI_PACK_FORMAT, or DFTI_PERM_FORMAT, or DFTI_CCE_FORMAT
`DFTI_ORDERING` | DFTI_ORDERED (default), or DFTI_BACKWARD_SCRAMBLED

Table “Default Configuration Values of Settable Parameters” lists the default values of the settable configuration parameters.

Default Configuration Values of Settable Parameters
Named Constants | Default Value
--- | ---
`DFTI_NUMBER_OF_TRANSFORMS` | 1
`DFTI_NUMBER_OF_USER_THREADS` | 1
`DFTI_FORWARD_SCALE` | 1.0
`DFTI_BACKWARD_SCALE` | 1.0
`DFTI_PLACEMENT` | DFTI_INPLACE
`DFTI_COMPLEX_STORAGE` | DFTI_COMPLEX_COMPLEX
`DFTI_REAL_STORAGE` | DFTI_REAL_REAL
`DFTI_CONJUGATE_EVEN_STORAGE` | DFTI_COMPLEX_REAL
`DFTI_PACKED_FORMAT` | DFTI_CCS_FORMAT
`DFTI_DESCRIPTOR_NAME` | no name, string of zero length
`DFTI_INPUT_DISTANCE` | 0
`DFTI_OUTPUT_DISTANCE` | 0
`DFTI_INPUT_STRIDES` | Tightly packed according to dimension and FFT lengths
`DFTI_OUTPUT_STRIDES` | Same as above. see Strides for details
`DFTI_ORDERING` | DFTI_ORDERED
`DFTI_TRANSPOSE` | DFTI_NONE

- Precision of transform
- Forward domain of transform
- Transform dimension and lengths
- Number of transforms
- Scale
- Placement of result
- Packed formats
- Storage schemes
- Number of user threads
- Input and output distances
- Strides
- Ordering
- Transposition

Parent topic: FFT Functions