The datatype field indicates data types used by the function, in the following format:
<bit depth><bit interpretation>,
bit depth = <1|8|16|32|64>
Here u indicates “unsigned integer”, s indicates “signed integer”, f indicates “floating point”, and c indicates “complex”.
Intel IPP supports the data types of the source and destination for signal processing functions listed in the table below.
In the lists of function parameters, the Ipp prefix is added to the data type. For example, 8-bit signed data is denoted as Ipp8s type. These Intel IPP-specific data types are defined in the respective library header files.
|Type||Usual C Type||Intel IPP Type|
|64s||__int64 (Windows*) or long long (Linux*)||Ipp64s|
For functions that operate on a single data type, the datatype field contains only one of the values listed above.
If a function operates on source and destination signals that have different data types, the respective data type identifiers are listed in the function name in order of source and destination as follows:
<datatype> = <src1Datatype>[src2Datatype][dstDatatype]
For example, the function ippsDotProd_16s16sc_Sfs computes the dot product of 16-bit short and 16-bit complex short source vectors and stores the result in a 16-bit complex short destination vector. The dstDatatype modifier is not present in the name because the second operand and the result are of the same type. The result is scaled and saturated.
There are several data types, namely 24u, 24s and 16f that are not supported by Intel IPP, but can be readily converted to the supported data types for further processing by the library functions.
For the unsigned 24u data, each vector element consists of three consecutive bytes represented as Ipp8u data types. It has a little-endian byte order when a lower order byte is at the lower address. These data may be converted to and from 32u or 32f data types by using the appropriate flavors of the Intel IPP function ippsConvert.
For the signed 24s data, each vector element consists of three consecutive bytes represented as Ipp8s data types. It has a little-endian byte order when a lower order byte is at the lower address. The sign is represented by the most significant bit of the highest order byte. These data may be converted to and from 32s or 32f data types by using the appropriate flavors of the Intel IPP function ippsConvert.
For the 16f format, 16-bit floating point data (half type) can represent positive and negative numbers, whose magnitude is between roughly 6.1e-5 and 6.5e4, with a relative error of 9.8e-4 ; numbers smaller than 6.1e-5 can be represented with an absolute error of 6.0e-8 . All integers from -2048 to +2048 can be represented exactly.
The figure below illustrates the bit-layout for a half number:
s is the sign-bit, e is the exponent, and m is the significand.
These data may be converted to and from 16s and 32f data types by using the appropriate flavors of the Intel IPP function ippsConvert.