Atan2
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 whenpSrc1,pSrc2orpDstpointer isNULL.
- ippStsSizeErr
- Indicates an error whenlenis 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 results:
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