Data Types
The
datatype
field indicates data types used by the function, in the following format:
<bit depth>
<bit interpretation>
,
where
bit depth = <1|8|16|32|64>
and
bit interpretation
<
u
|
s
|
f
>[
c
]
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
|
---|---|---|
8u | unsigned char | Ipp8u |
8s | signed char | Ipp8s |
16u | unsigned short | Ipp16u |
16s | signed short | Ipp16s |
16sc | complex short | Ipp16sc |
32u | unsigned int | Ipp32u |
32s | signed int | Ipp32s |
32f | float | Ipp32f |
32fc | complex float | Ipp32fc |
64s | __int64
(Windows*) or
long long
(Linux*)
| Ipp64s |
64f | double | Ipp64f |
64fc | complex double | Ipp64fc |
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.5e
4
, 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
e
m
These data may be converted to and from
16s
and
32f
data types by using the appropriate flavors of the Intel IPP function
ippsConvert
.