Visible to Intel only — GUID: GUID-DD061530-866F-4D74-A4F3-D74189179375
Visible to Intel only — GUID: GUID-DD061530-866F-4D74-A4F3-D74189179375
Atan2
Computes four-quadrant inverse tangent of elements of two vectors.
Syntax
IppStatus ippsAtan2_32f_A11 (const Ipp32f* pSrc1, const Ipp32f* pSrc2, Ipp32f* pDst, Ipp32s len);
IppStatus ippsAtan2_32f_A21 (const Ipp32f* pSrc1, const Ipp32f* pSrc2, Ipp32f* pDst, Ipp32s len);
IppStatus ippsAtan2_32f_A24 (const Ipp32f* pSrc1, const Ipp32f* pSrc2, Ipp32f* pDst, Ipp32s len);
IppStatus ippsAtan2_64f_A26 (const Ipp64f* pSrc1, const Ipp64f* pSrc2, Ipp64f* pDst, Ipp32s len);
IppStatus ippsAtan2_64f_A50 (const Ipp64f* pSrc1, const Ipp64f* pSrc2, Ipp64f* pDst, Ipp32s len);
IppStatus ippsAtan2_64f_A53 (const Ipp64f* pSrc1, const Ipp64f* pSrc2, Ipp64f* pDst, Ipp32s len);
Include Files
ippvm.h
Domain Dependencies
Headers: ippcore.h
Libraries: ippcore.lib
Parameters
pSrc1 |
Pointer to the first source vector. |
pSrc2 |
Pointer to the second source vector. |
pDst |
Pointer to the destination vector. |
len |
Number of elements in the vectors. |
Description
This function computes the angle between the X axis and the line from the origin to the point (X,Y), for each element of pSrc1 as a Y (the ordinate) and corresponding element of pSrc2 as an X (the abscissa), and stores the result in the corresponding element of pDst. The result angle varies from - π to + π.
For single precision data:
function flavor ippsAtan2_32f_A11 guarantees 11 correctly rounded bits of significand, or at least 3 exact decimal digits;
function flavor ippsAtan2_32f_A21 guarantees 21 correctly rounded bits of significand, or 4 ulps, or about 6 exact decimal digits;
function flavor ippsAtan2_32f_A24 guarantees 24 correctly rounded bits of significand, including the implied bit, with the maximum guaranteed error within 1 ulp.
For double precision data:
function flavor ippsAtan2_64f_A26 guarantees 26 correctly rounded bits of significand, or 6.7E+7 ulps, or approximately 8 exact decimal digits;
function flavor ippsAtan2_64f_A50 guarantees 50 correctly rounded bits of significand, or 4 ulps, or approximately 15 exact decimal digits;
function flavor ippsAtan2_64f_A53 guarantees 53 correctly rounded bits of significand, including the implied bit, with the maximum guaranteed error within 1 ulp.
The computation is performed as follows:
pDst[n] = atan2(pSrc1[n], pSrc2[n]), 0 ≤ n < len.
Return Values
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when pSrc1, pSrc2 or pDst pointer is NULL. |
ippStsSizeErr |
Indicates an error when len is less than or equal to 0. |
Example
The example below shows how to use the function ippsAtan2.
IppStatus ippsAtan2_32f_A21_sample(void) { const Ipp32f x1[4] = {1.492, 1.700, 1.147, 1.142}; const Ipp32f x2[4] = {1.064, 1.505, 1.950, 1.905}; Ipp32f y[4]; IppStatus st = ippsAtan2_32f_A21( x1, x2, y, 4 ); printf(" ippsAtan2_32f_A21:\n"); printf(" x1 = %.3f %.3f %.3f %.3f \n", x1[0], x1[1], x1[2], x1[3]); printf(" x2 = %.3f %.3f %.3f %.3f \n", x2[0], x2[1], x2[2], x2[3]); printf(" y = %.3f %.3f %.3f %.3f \n", y[0], y[1], y[2], y[3]); return st; }
Output:
ippsAtan2_32f_A21: x1 = 1.492 1.700 1.147 1.142 x2 = 1.064 1.505 1.950 1.905 y = 0.951 0.846 0.532 0.540