IPP - XLsoft.com
IPP - XLsoft.com
IPP - XLsoft.com
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
® <br />
<br />
<br />
(<strong>IPP</strong>)<br />
<br />
1 :<br />
<br />
© 2000-2001 Intel Corporation.<br />
<br />
: A24968J-1101<br />
Web: http://www.intel.co.jp/jp/developer/ ( )<br />
http://developer.intel.<strong>com</strong> ( )
-1001 2000 9 <br />
-1002 <strong>IPP</strong>1.0 NormDiff 2001 2 <br />
AutoCorr ZeroMean <br />
-1101 <strong>IPP</strong>1.1 2001 4 <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
IntelPentiumMMXItanium Intel Corporation <br />
<br />
* <br />
© 2000-2001 Intel Corporation.<br />
ii
1 <br />
2 <br />
<br />
<strong>IPP</strong> ................................................................................... 1-1<br />
............................................................ 1-1<br />
............................................................... 1-2<br />
..................................................................................................... 1-2<br />
................................................................................................... 1-2<br />
................................................................................................... 1-3<br />
............................................................................................ 1-3<br />
............................................................................................ 1-3<br />
....................................................................................................... 1-3<br />
......................................................................................................... 1-4<br />
................................................................................................... 1-4<br />
......................................................................................... 1-4<br />
....................................................................................................... 1-5<br />
<br />
<strong>IPP</strong> ......................................................................................................... 2-1<br />
<strong>IPP</strong> PLS .................................................................................. 2-1<br />
......................................................................................................... 2-2<br />
.............................................................................................................. 2-2<br />
.............................................................................................................. 2-3<br />
............................................................................................ 2-3<br />
............................................................................................ 2-5<br />
.............................................................................................................. 2-5<br />
................................................................................................. 2-6<br />
................................................................... 2-6<br />
..................................................................................... 2-6<br />
iii
<strong>IPP</strong> : 1 <br />
<br />
.............................................................................. 2-6<br />
............................................................................................ 2-7<br />
.................................... 2-8<br />
.......................................................................................... 2-8<br />
..................................................................................................... 2-9<br />
3 <br />
4 <br />
5 <br />
<br />
............................................................................................................ 3-1<br />
GetLibVersion ............................................................................................... 3-1<br />
GetStatusString ............................................................................................ 3-3<br />
.......................................................................................... 3-4<br />
Malloc ........................................................................................................... 3-4<br />
Free .............................................................................................................. 3-5<br />
<br />
.......................................................................................... 4-1<br />
Copy ............................................................................................................. 4-1<br />
Set ................................................................................................................ 4-2<br />
Zero .............................................................................................................. 4-4<br />
.............................................................................................. 4-5<br />
............................................................................................ 4-5<br />
Tone ............................................................................................................. 4-5<br />
.............................................................................. 4-7<br />
Triangle ........................................................................................................ 4-9<br />
.............................................................................................. 4-11<br />
RandUniform .............................................................................................. 4-11<br />
.......................................................................................... 4-12<br />
RandGauss ................................................................................................ 4-12<br />
Jaehne ................................................................................ 4-13<br />
VectorJaehne ............................................................................................. 4-13<br />
<br />
....................................................................................... 5-1<br />
AndC ............................................................................................................ 5-1<br />
And ............................................................................................................... 5-2<br />
OrC ............................................................................................................... 5-3<br />
iv
<strong>IPP</strong> : 1 <br />
<br />
Or ................................................................................................................. 5-4<br />
XorC ............................................................................................................. 5-5<br />
Xor ................................................................................................................ 5-6<br />
Not ................................................................................................................ 5-7<br />
LShiftC .......................................................................................................... 5-8<br />
RShiftC ......................................................................................................... 5-9<br />
.......................................................................................................... 5-11<br />
AddC .......................................................................................................... 5-12<br />
Add ............................................................................................................. 5-13<br />
MulC ........................................................................................................... 5-15<br />
Mul .............................................................................................................. 5-16<br />
SubC .......................................................................................................... 5-18<br />
SubCRev .................................................................................................... 5-20<br />
Sub ............................................................................................................. 5-21<br />
DivC ........................................................................................................... 5-23<br />
Div ............................................................................................................. 5-24<br />
Abs ............................................................................................................. 5-28<br />
Sqr .............................................................................................................. 5-29<br />
Sqrt ............................................................................................................. 5-31<br />
Exp ............................................................................................................. 5-34<br />
Ln ............................................................................................................... 5-36<br />
Normalize ................................................................................................... 5-38<br />
.......................................................................................................... 5-40<br />
Convert ....................................................................................................... 5-40<br />
Conj ............................................................................................................ 5-42<br />
ConjFlip ...................................................................................................... 5-43<br />
Magnitude ................................................................................................... 5-44<br />
Phase ......................................................................................................... 5-46<br />
Phase ......................................................................................................... 5-47<br />
PowerSpectr ............................................................................................... 5-48<br />
PowerSpectr ............................................................................................... 5-49<br />
Real ............................................................................................................ 5-51<br />
Imag ........................................................................................................... 5-51<br />
RealToCplx ................................................................................................. 5-52<br />
CplxToReal ................................................................................................. 5-53<br />
v
<strong>IPP</strong> : 1 <br />
<br />
Threshold ................................................................................................... 5-54<br />
Threshold_LTThreshold_GT ................................................................... 5-58<br />
Threshold_LTValThreshold_GTVal ........................................................ 5-62<br />
Threshold_LTInv ........................................................................................ 5-65<br />
CartToPolar ................................................................................................ 5-68<br />
CartToPolar ................................................................................................ 5-69<br />
PolarToCart ................................................................................................ 5-70<br />
PolarToCart ................................................................................................ 5-71<br />
MaxOrder ................................................................................................... 5-72<br />
Preemphasize ............................................................................................ 5-73<br />
.......................................................................................................... 5-74<br />
MuLawToLin ............................................................................................... 5-75<br />
LinToMuLaw ............................................................................................... 5-76<br />
ALawToLin ................................................................................................. 5-77<br />
LinToALaw ................................................................................................. 5-78<br />
MuLawToALaw ........................................................................................... 5-79<br />
ALawToMuLaw ........................................................................................... 5-80<br />
(Window) ............................................................................................. 5-81<br />
(Window) ............................................................................. 5-81<br />
WinBartlett .................................................................................................. 5-83<br />
WinBlackman ............................................................................................. 5-85<br />
WinHamming .............................................................................................. 5-88<br />
WinHann ..................................................................................................... 5-90<br />
WinKaiser ................................................................................................... 5-92<br />
.......................................................................................................... 5-95<br />
Sum ............................................................................................................ 5-95<br />
Max ............................................................................................................. 5-97<br />
MaxIndx ...................................................................................................... 5-97<br />
Min .............................................................................................................. 5-98<br />
MinIndx ....................................................................................................... 5-99<br />
Mean ........................................................................................................ 5-101<br />
StdDev ...................................................................................................... 5-102<br />
Norm ......................................................................................................... 5-104<br />
NormDiff ................................................................................................... 5-106<br />
DotProd .................................................................................................... 5-108<br />
vi
<strong>IPP</strong> : 1 <br />
<br />
.......................................................................................... 5-111<br />
SampleUp ................................................................................................. 5-111<br />
SampleDown ............................................................................................ 5-113<br />
6 <br />
<br />
............................................................................... 6-1<br />
Conv ............................................................................................................. 6-1<br />
ConvCyclic ................................................................................................... 6-3<br />
AutoCorr ....................................................................................................... 6-4<br />
CrossCorr ..................................................................................................... 6-6<br />
.......................................................................................... 6-9<br />
FIR ......................................................................................... 6-9<br />
FIRInitAllocFIRMRInitAlloc ..................................................................... 6-10<br />
FIRFree ...................................................................................................... 6-14<br />
FIROne ....................................................................................................... 6-15<br />
FIR .............................................................................................................. 6-17<br />
FIRGetTaps ................................................................................................ 6-22<br />
FIRGetDlyLine, FIRSetDlyLine ................................................................... 6-23<br />
FIR LMS ............................................................................... 6-26<br />
FIRLMSInitAlloc .......................................................................................... 6-27<br />
FIRLMSFree ............................................................................................... 6-28<br />
FIRLMSOne ............................................................................................... 6-28<br />
FIRLMS ...................................................................................................... 6-31<br />
FIRLMSGetTaps ........................................................................................ 6-33<br />
FIRLMSGetDlyLineFIRLMSSetDlyLine .................................................. 6-34<br />
IIR ........................................................................................ 6-35<br />
IIRInitAllocIIRInitAlloc_BiQuad ............................................................... 6-35<br />
IIRFree ....................................................................................................... 6-39<br />
IIROne ........................................................................................................ 6-40<br />
IIR ............................................................................................................... 6-42<br />
IIRGetDlyLineIIRSetDlyLine ................................................................... 6-48<br />
........................................................................ 6-51<br />
FilterMedian ................................................................................................ 6-51<br />
vii
<strong>IPP</strong> : 1 <br />
<br />
7 <br />
<br />
.............................................................................................. 7-1<br />
......................................................................................... 7-1<br />
flag hint ................................................................................ 7-1<br />
Pack ................................................................................................ 7-2<br />
Perm ................................................................................................ 7-3<br />
CCS ................................................................................................. 7-3<br />
................................................................... 7-3<br />
ConjPerm ..................................................................................................... 7-4<br />
ConjPack ...................................................................................................... 7-6<br />
ConjCCS ...................................................................................................... 7-8<br />
............................................................................ 7-10<br />
MulPackMulPerm .................................................................................... 7-10<br />
............................................................................... 7-13<br />
FFTInitAlloc_CFFTInitAlloc_R ................................................................ 7-13<br />
FFTFree_CFFTFree_R ........................................................................... 7-15<br />
FFTGetBufSize_CFFTGetBufSize_R ..................................................... 7-16<br />
FFTFwd_CToCFFTInv_CToC ................................................................ 7-17<br />
FFTFwd_RToPermFFTInv_PermToRFFTFwd_RToPack<br />
FFTInv_PackToRFFTFwd_RToCCSFFTInv_CCSToR .................... 7-20<br />
............................................................................... 7-24<br />
DFTInitAlloc_CDFTInitAlloc_R ............................................................... 7-24<br />
DFTFree_CDFTFree_R .......................................................................... 7-26<br />
DFTGetBufSize_CDFTGetBufSize_R .................................................... 7-27<br />
DFTFwd_CToCDFTInv_CToC ............................................................... 7-28<br />
DFTFwd_RToPermDFTInv_PermToRDFTFwd_RToPack<br />
DFTInv_PackToRDFTFwd_RToCCSDFTInv_CCSToR ................... 7-31<br />
DFT(Goertzel) .............................................................. 7-35<br />
Goertz ......................................................................................................... 7-35<br />
GoertzTwo .................................................................................................. 7-38<br />
............................................................................... 7-39<br />
DCTFwdInitAllocDCTInvInitAlloc ............................................................ 7-39<br />
DCTFwdFreeDCTInvFree ....................................................................... 7-40<br />
DCTFwdGetBufSizeDCTInvGetBufSize ................................................. 7-41<br />
DCTFwdDCTInv ..................................................................................... 7-43<br />
viii
<strong>IPP</strong> : 1 <br />
<br />
................................................................................. 7-46<br />
.......................................................... 7-49<br />
WTHaarFwdWTHaarInv ......................................................................... 7-49<br />
................................................... 7-54<br />
WTFwdInitAllocWTInvInitAlloc ................................................................ 7-54<br />
WTFwdFreeWTInvFree .......................................................................... 7-57<br />
WTFwd ....................................................................................................... 7-58<br />
WTFwdSetDlyLineWTFwdGetDlyLine .................................................... 7-61<br />
WTInv ......................................................................................................... 7-64<br />
WTInvSetDlyLineWTInvGetDlyLine ........................................................ 7-67<br />
8 <br />
<br />
.......................................................................................... 8-1<br />
....................................................................................................... 8-1<br />
AddAllRowSum ........................................................................................... 8-1<br />
AddMulCol .................................................................................................... 8-3<br />
AddMulRow .................................................................................................. 8-4<br />
DotProdCol ................................................................................................... 8-5<br />
MulCol .......................................................................................................... 8-6<br />
QRTransCol ................................................................................................. 8-7<br />
SumCol ......................................................................................................... 8-8<br />
SumColAbs ................................................................................................ 8-10<br />
SumColSqr ................................................................................................. 8-11<br />
RecSqrt ...................................................................................................... 8-12<br />
SubRow ...................................................................................................... 8-13<br />
SumRow ..................................................................................................... 8-14<br />
SumRowAbs ............................................................................................... 8-15<br />
SumRowSqr ............................................................................................... 8-16<br />
AddNRows ................................................................................................. 8-17<br />
ZeroMean ................................................................................................... 8-19<br />
LMThreshold .............................................................................................. 8-20<br />
..................................................................................................... 8-21<br />
MeanCol ..................................................................................................... 8-21<br />
VarCol ........................................................................................................ 8-22<br />
MeanVarCol ............................................................................................... 8-24<br />
ix
<strong>IPP</strong> : 1 <br />
<br />
MeanVarAcc ............................................................................................... 8-25<br />
NormalizeCol .............................................................................................. 8-26<br />
................................................................................................... 8-27<br />
..................................................................................................... 8-27<br />
LogAdd ....................................................................................................... 8-27<br />
LogSub ....................................................................................................... 8-28<br />
......................................................................................................... 8-29<br />
CopyCol ...................................................................................................... 8-31<br />
EvalDelta .................................................................................................... 8-32<br />
Delta ........................................................................................................... 8-33<br />
DeltaDelta ................................................................................................... 8-35<br />
............................................................................................... 8-37<br />
..................................................................................................... 8-37<br />
LogGaussSingle ......................................................................................... 8-37<br />
MahDistSingle ............................................................................................ 8-38<br />
.............................................................................................. 8-39<br />
LogGauss1 ................................................................................................. 8-39<br />
LogGauss2 ................................................................................................. 8-41<br />
MahDist1 .................................................................................................... 8-42<br />
MahDist2 .................................................................................................... 8-44<br />
LogGaussMax1 ........................................................................................ 8-45<br />
LogGaussAdd1 ......................................................................................... 8-47<br />
.......................................................................................... 8-48<br />
GaussianDist .............................................................................................. 8-48<br />
GaussianMerge .......................................................................................... 8-50<br />
GaussianSplit ............................................................................................. 8-51<br />
<br />
<br />
<br />
<br />
2-1 <strong>IPP</strong> ............................... 2-4<br />
2-2 ................................... 2-9<br />
x
<strong>IPP</strong> : 1 <br />
<br />
7-1 flag ............................................................ 7-2<br />
7-2 hint ............................................................ 7-2<br />
7-3 PackPerm CCS FFT ........ 7-3<br />
7-4 FFT ................................... 7-5<br />
7-5 Pack ....................................................... 7-7<br />
7-6 CCS ........................................................ 7-9<br />
7-7 PackPerm CCS FFT ...... 7-22<br />
<br />
<br />
7-1 ...................... 7-47<br />
7-2 3 ................................................ 7-48<br />
7-3 3 ............................................. 7-48<br />
7-4 1 ............................................. 7-61<br />
7-5 1 ............................................. 7-67<br />
3-1 ippsGetLibVersion ....................................................... 3-2<br />
3-2 ippGetStatusString ....................................................... 3-3<br />
4-1 ippsCopy ...................................................................... 4-2<br />
4-2 ippsSet ......................................................................... 4-3<br />
4-3 ippsZero ....................................................................... 4-5<br />
4-4 ippsVectorJaehne ...................................................... 4-14<br />
5-1 ....................................................... 5-11<br />
5-2 ippsAdd ...................................................................... 5-15<br />
5-3 ippsDiv_16s_ISfs ....................................................... 5-27<br />
5-4 ippsDiv_32f_I ............................................................. 5-27<br />
5-5 ippsAbs ...................................................................... 5-29<br />
5-6 ippsSqr ....................................................................... 5-31<br />
5-7 ippsSqrt ...................................................................... 5-33<br />
5-8 ippsExp_16s_ISfs ...................................................... 5-36<br />
5-9 ippsExp_64f_I ............................................................ 5-36<br />
5-10 ippsLn ........................................................................ 5-38<br />
5-11 ippsMagnitude ........................................................... 5-46<br />
5-12 ippsThreshold ............................................. 5-57<br />
5-13 ippsThreshold ......................................... 5-58<br />
xi
<strong>IPP</strong> : 1 <br />
<br />
5-14 ippsThreshold_LTInv ................................................. 5-67<br />
5-15 ippsCartToPolar ......................................................... 5-69<br />
5-16 ............................................................................. 5-81<br />
5-17 Window FFT ... 5-82<br />
5-18 ippsWinBartlett ........................................................... 5-84<br />
5-19 ippsWinBlackmanStd ................................................. 5-88<br />
5-20 ippsWinHamming ....................................................... 5-90<br />
5-21 ippsWinHann ............................................................. 5-92<br />
5-22 ippsWinKaiser ............................................................ 5-94<br />
5-23 ippsSum ..................................................................... 5-96<br />
5-24 ippsMin ippsMax .......................................... 5-100<br />
5-25 ippsMean ................................................................. 5-102<br />
5-26 ippsStdDev .............................................................. 5-104<br />
5-27 ippsNorm ................................................................. 5-108<br />
5-28 ippsDotProd ... 5-110<br />
5-29 ippsSampleDown ..................................................... 5-115<br />
6-1 ippsConv 2 .......................... 6-2<br />
6-2 ippsCrossCorr .............................................................. 6-8<br />
6-3 ippsFIR .................... 6-21<br />
6-4 ippsLMSOne .............................................................. 6-30<br />
6-5 ippsFIRLMS ......................................... 6-32<br />
6-6 ippsIIR_32f 60Hz ........................................ 6-46<br />
6-7 ippsIIR ................................ 6-47<br />
6-8 ippsFilterMedian ...... 6-53<br />
7-1 ippsConjPerm .............................................................. 7-5<br />
7-2 ippsConjPack ............................................................... 7-7<br />
7-3 ippsConjCCS ............................................................... 7-9<br />
7-4 ippsMulPack .............................................................. 7-12<br />
7-5 ippsFFTFwd_RToCCS .............................................. 7-23<br />
7-6 ippsDFTFwd_RToCCS .............................................. 7-34<br />
7-7 Goertzel .......................... 7-37<br />
7-8 ippsDCTFwd ippsDCTInv .................... 7-45<br />
7-9 ippsWTHaarFwd ........................................................ 7-53<br />
xii
1<br />
1 ® <strong>IPP</strong>(Integrated Performance<br />
Primitives) <strong>IPP</strong> <br />
1 <strong>IPP</strong> 2 <strong>IPP</strong><br />
<br />
(IA)MMX ® SIMD <br />
<br />
<strong>IPP</strong> 1 (1D) <br />
<br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<strong>IPP</strong> MMX SSE SIMD<br />
(single-instruction, multiple-data) MMX SSE <br />
<br />
<br />
<br />
<strong>IPP</strong> Microsoft* Windows* 95Windows 98Windows 2000Windows NT*<br />
Windows XP <br />
<strong>IPP</strong> C C++ <br />
<br />
1-1
<strong>IPP</strong> : 1 1<br />
<br />
<strong>IPP</strong> Windows <br />
ANSI C <br />
<strong>IPP</strong> <br />
<br />
<br />
<br />
<strong>IPP</strong> <strong>IPP</strong> <br />
<strong>IPP</strong> <br />
( 3 8 )<br />
<br />
1 <strong>IPP</strong> <br />
<br />
2 <br />
<br />
3 copy set <br />
<br />
4 <br />
5 <br />
6 <br />
<br />
7 ( ) <br />
<br />
8 <br />
<br />
1-2
<strong>IPP</strong> : 1 1<br />
<br />
<br />
<br />
<br />
3 8 ( ipps <br />
)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
/ <br />
C <br />
PDF Adobe* Acrobat*<br />
(Adobe Acrobat <br />
)<br />
<br />
<br />
1-3
<strong>IPP</strong> : 1 1<br />
<br />
<br />
<br />
• ( )<br />
• <br />
• <br />
<br />
THIS TYPE STYLE<br />
This type style<br />
This type style<br />
<strong>IPP</strong> <br />
: <strong>IPP</strong>_MAX_64S<br />
IppLibraryVersion <br />
<br />
<br />
: void ippsFree()<br />
<br />
: val, srcLen<br />
<br />
1D x(n) <br />
x[n] <br />
<br />
x[n], 0 ≤ n < len<br />
len <br />
n <br />
pDst[n] = pSrc[n] + val pDst pDst[n] n (0<br />
len-1) <br />
<br />
1-4
<strong>IPP</strong> : 1 1<br />
<br />
<strong>IPP</strong> <br />
• <br />
: <strong>IPP</strong>_MIN_64S<br />
• Ipps <br />
<strong>IPP</strong> Ipp <br />
<br />
: IppsROIIppLibraryVersion<br />
• ipps <br />
<strong>IPP</strong> <br />
<br />
ipps <br />
<br />
<br />
• <br />
: ippsAddAllRowSum<br />
<strong>IPP</strong> 2-2 <br />
1-5
<strong>IPP</strong> : 1 1<br />
1-6
2<br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<br />
<strong>IPP</strong> <br />
MMX <br />
<br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<br />
<strong>IPP</strong> PLS <br />
1 <strong>IPP</strong> <br />
<strong>IPP</strong> <br />
<br />
• <strong>IPP</strong> <br />
<br />
• <strong>IPP</strong> <br />
<br />
<br />
• <strong>IPP</strong> <br />
<br />
• OS <br />
2-1
<strong>IPP</strong> : 1 2<br />
<br />
<strong>IPP</strong> <br />
<br />
<strong>IPP</strong> <br />
<br />
<strong>IPP</strong> IA-32 <br />
Itanium ® <br />
StrongARM* <strong>IPP</strong> <br />
ANSI C <br />
<br />
<br />
<strong>IPP</strong> <br />
ipps ippi <br />
<br />
<br />
ipp_[_descriptor]();<br />
<br />
<br />
<strong>IPP</strong> <br />
<br />
s ( )<br />
i ( )<br />
ipps <br />
2-2
<strong>IPP</strong> : 1 2<br />
<br />
SetAddCopy <br />
<br />
ippGetStatusString <br />
<br />
<br />
= [_modifier]<br />
<br />
ippsFFTInv_CToC_32fc CToC <br />
<br />
<br />
<br />
[c]<br />
u “ ”s “ ”f “ ”<br />
c “ ” <br />
<strong>IPP</strong> 2-1 <br />
<br />
Ipp <br />
8 Ipp8s <br />
<br />
2-3
<strong>IPP</strong> : 1 2<br />
2-1<br />
<strong>IPP</strong> <br />
<br />
<br />
<strong>IPP</strong> <br />
8 unsigned char Ipp8u<br />
8 signed char Ipp8s<br />
16 unsigned short Ipp16u<br />
16 signed short Ipp16s<br />
16 <strong>com</strong>plex short Ipp16sc<br />
32 unsigned int Ipp32u<br />
32 signed int Ipp32s<br />
32 float Ipp32f<br />
32 <strong>com</strong>plex float Ipp32fc<br />
64 __int64 (Windows ) Ipp64s<br />
long long (Linux )<br />
64 double Ipp64f<br />
64 <strong>com</strong>plex double Ipp64fc<br />
1<br />
<br />
<br />
<br />
<br />
= [src2Depth][dstDepth]<br />
ippsDotProd_16s16sc_Sfs 16 short 16<br />
<strong>com</strong>plex short 16 <br />
<strong>com</strong>plex short <br />
2 <br />
<br />
2-4
<strong>IPP</strong> : 1 2<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
( : ippsThreshold)<br />
<br />
I<br />
<br />
Sfs <br />
<br />
<br />
2 copy <br />
<br />
<br />
<br />
<br />
1. <br />
2. <br />
3. <br />
<br />
• p ( : pPhasepSrcpSeed)<br />
( : valsrcsrcLen)<br />
• ( : pSrc<br />
lenSrcpDlyLine)<br />
• pSrc src <br />
pSrc2 srcLen <br />
pDst dst ( :<br />
pDstdstLen) / pSrcDst <br />
: pPhaselengthdownPhase<br />
pSize<br />
2-5
<strong>IPP</strong> : 1 2<br />
<br />
<strong>IPP</strong> <br />
<br />
IppLibraryVersion <strong>IPP</strong> <br />
<br />
• major minor<br />
• Name<strong>IPP</strong> : “ippsa6”<br />
• Version : “v0.0 Alpha 0.0.3.3”<br />
<br />
<strong>IPP</strong> 2 ( ) <br />
Ipp32fc <br />
<br />
typedef struct {<br />
Ipp32f re;<br />
Ipp32f im;<br />
} Ipp32fc;<br />
:Ipp16scIpp32fcIpp64fc<br />
<br />
<strong>IPP</strong><br />
<br />
IppsFFTSpec <br />
<br />
<br />
<br />
<br />
<br />
2-6
<strong>IPP</strong> : 1 2<br />
<br />
IppStatus <strong>IPP</strong> <br />
<br />
2-9 <br />
IppCmpOp 5-54 <br />
<br />
typedef struct {<br />
ippCmpLess,<br />
ippCmpLessEq,<br />
ippCmpEq,<br />
ippCmpGreaterEq,<br />
ippCmpGreater<br />
} IppCmpOp;<br />
IppCnvrtRnd 5-40 <br />
typedef enum {<br />
ippRndZero,<br />
ippRndNear<br />
} IppCnvrtRnd;<br />
IppHintAlgorithm <br />
( )<br />
7-1 flag hint <br />
typedef enum {<br />
ippAlgHintNone,<br />
ippAlgHintFast,<br />
ippAlgHintAccurate<br />
} IppHintAlgorithm;<br />
2-7
<strong>IPP</strong> : 1 2<br />
<br />
<strong>IPP</strong> /Zp8 /Zp8 <br />
8 ( 8 ) <br />
<br />
<strong>IPP</strong> ippsMalloc 32 <br />
<br />
<br />
<br />
scaleFactor (scaleFactor <br />
)Sfs <br />
<br />
<br />
<br />
<br />
<br />
<br />
2 -scaleFactor <br />
<br />
<br />
200 2 ippsSqr Ipp16s 40000 <br />
32767 <br />
scaleFactor = 1 <br />
20000 20000*2 <br />
<br />
<br />
2 ippsSqrt ( ) 1.414<br />
1 scaleFactor = -3<br />
11 <br />
11*2 -3 = 1.375 <br />
2-8
<strong>IPP</strong> : 1 2<br />
<br />
2-2<br />
<strong>IPP</strong> <br />
<br />
<br />
<br />
IppStatus <br />
2-2 <strong>IPP</strong> <br />
<br />
<br />
<br />
ippStsToneMagnErr -38 Incorrect magnitude for tone generation<br />
<br />
ippStsToneFreqErr -37 Incorrect frequency for tone generating<br />
<br />
ippStsTonePhaseErr -36 Incorrect phase for tone generation<br />
<br />
ippStsTrnglMagnErr -35 Incorrect magnitude for triangle generation<br />
<br />
ippStsTrnglFreqErr -34 Incorrect frequency for triangle generation<br />
<br />
ippStsTrnglPhaseErr -33 Incorrect phase for triangle generation<br />
<br />
ippStsTrnglAsymErr -32 Incorrect asymmetry for triangle generation<br />
<br />
ippStsHugeWinErr -31 Incorrect size of the Kaiser window<br />
Kaiser window <br />
ippStsJaehneErr -30 Incorrect value of the magnitude<br />
<br />
ippStsStepErr -29 Step value is less or equal zero<br />
<br />
ippStsDlyLineIndexErr -28 Incorrect value of the delay line sample index<br />
<br />
ippStsStrideErr -27 Stride value is less than the row length<br />
<br />
2-9
<strong>IPP</strong> : 1 2<br />
2-2<br />
( )<br />
ippStsEpsValErr -26 Negative epsilon value error<br />
<br />
ippStsScaleRangeErr -25 Scale bounds are out of range<br />
<br />
ippStsThresholdErr -24 Incorrect threshold bounds<br />
<br />
ippStsWtOffsetErr -23 Invalid offset value of the wavelet filter<br />
<br />
ippStsAnchorErr -22 Anchor point is outside the mask<br />
<br />
ippStsMaskSizeErr -21 Invalid mask size<br />
<br />
ippStsShiftErr -20 Shift value is negative<br />
<br />
ippStsSampleFactorErr -19 Sampling factor is less than or equal to zero<br />
<br />
ippStsSamplePhaseErr -18 Phase value is out of range, 0 ≤ phase < factor<br />
0 ≤ < <br />
ippStsFIRMRFactorErr -17 Incorrect value of the MR FIR sampling factor<br />
MR FIR <br />
ippStsFIRMRPhaseErr -16 Incorrect value of the MR FIR sampling phase<br />
MR FIR <br />
ippStsRelFreqErr -15 Relative frequency value is out of range<br />
<br />
ippStsFIRLenErr -14 Length of a FIR filter is less or equal to zero<br />
FIR <br />
ippStsIIROrderErr -13 Order of an IIR filter is less or equal to zero<br />
IIR <br />
ippStsResizeFactorErr -12 Resize factor(s) is less or equal to zero<br />
<br />
ippStsDivByZeroErr -11 Attempt to divide by zero<br />
<br />
ippStsInterpolationErr -10 Invalid interpolation mode<br />
<br />
ippStsMirrorFlipErr -9 Invalid flip mode<br />
<br />
2-10
<strong>IPP</strong> : 1 2<br />
2-2<br />
( )<br />
ippStsMoment00ZeroErr -8 Moment value M(0,0) is too small for further calculations<br />
M(0,0) <br />
<br />
ippStsThreshNegLevelErr -7 Negative value of the level in the threshold operation<br />
<br />
ippStsContextMatchErr -6 Context parameter does not match the operation<br />
<br />
ippStsFftFlagErr -5 Incorrect value of the FFT flag parameter<br />
FFT <br />
ippStsFftOrderErr -4 Incorrect value of the FFT order parameter<br />
FFT <br />
ippStsMemAllocErr -3 Not enough memory allocated for the operation<br />
<br />
ippStsNullPtrErr -2 Null pointer error<br />
<br />
ippStsSizeErr -1 Incorrect value of the data size<br />
<br />
ippStsNoErr 0 No error<br />
<br />
ippStsNoOperation 1 No operation executed<br />
<br />
ippStsMisalignedBuf 2 Misaligned pointer encountered in the operation where it<br />
must be aligned<br />
<br />
<br />
ippStsSqrtNegArg 3 Negative value(s) of the argument in the function Sqrt<br />
Sqrt <br />
ippStsInvByZero 4 Inf result. Zero value was encountered by the function<br />
InvThresh called with zero level<br />
inf<br />
InvThresh <br />
ippStsEvenMedianMaskSize 5 Even size of the Median Filter mask was replaced by an<br />
odd number<br />
<br />
<br />
ippStsDivByZero 6 Zero value(s) of the divisor in the function Div<br />
Div <br />
2-11
<strong>IPP</strong> : 1 2<br />
2-2<br />
( )<br />
ippStsLnZeroArg 7 Zero value(s) of the argument in the function Ln<br />
Ln <br />
ippStsLnNegArg 8 Negative value(s) of the argument in the function Ln<br />
Ln <br />
ippStsNanArg 9 Not-a-number (NaN) met in the input<br />
NaN(Not-a-number) <br />
Err (ippStsNoErr ) <br />
<br />
<br />
<br />
<br />
ippsDiv_8u <br />
<br />
ippStsDivByZero <br />
2-12
3<br />
<strong>IPP</strong> <br />
<br />
<br />
ippsGetLibVersion <strong>IPP</strong> <br />
IppLibraryVersion <br />
<br />
ippGetStatusString <strong>IPP</strong> <br />
IppStatus <br />
<br />
GetLibVersion<br />
<br />
<br />
const IppLibraryVersion* ippsGetLibVersion(void);<br />
<br />
ippsGetLibVersion <strong>IPP</strong> <br />
IppLibraryVersion <br />
<br />
3-1
<strong>IPP</strong> : 1 3<br />
IppLibraryVersion <br />
major ( )<br />
minor ( )<br />
Name<br />
<br />
Version <br />
BuildDate <br />
“v1.2 Beta” “ippsm6”<br />
“Jul 20 99” <br />
major = 1, minor = 2, Name = “ippsm6”,<br />
Version = “v1.2 Beta”, BuildDate = “Jul 20 99”<br />
3-1 ippsGetLibVersion <br />
3-1<br />
ippsGetLibVersion <br />
void libinfo(void) {<br />
const IppLibraryVersion* lib = ippsGetLibVersion();<br />
printf(“%s %s %d.%d.%d.%d\n”, lib->Name, lib->Version,<br />
lib->major, lib->minor, lib->majorBuild, lib->build);<br />
}<br />
Output:<br />
ippsa6 v0.0 Alpha 0.0.5.5<br />
3-2
<strong>IPP</strong> : 1 3<br />
GetStatusString<br />
<br />
<br />
const char* ippGetStatusString(IppStatus StsCode);<br />
<br />
stsCode<br />
IppStatus <br />
<br />
ippGetStatusString IppStatus <br />
<br />
<br />
3-2 ippGetStatusString <br />
ippsAdd_16s_I NULL - 2 <br />
<br />
3-2<br />
ippGetStatusString <br />
void statusinfo(void) {<br />
IppStatus st = ippsAddC_16s_I (3, 0, 0);<br />
printf(“%d : %s\n”, st, ippGetStatusString(st));<br />
}<br />
Output:<br />
-2, Null Pointer Error<br />
3-3
<strong>IPP</strong> : 1 3<br />
<br />
<br />
<strong>IPP</strong> <br />
(len) <br />
<br />
ippsFree() <br />
Malloc<br />
32 <br />
Ipp8u* ippsMalloc_8u(int len);<br />
Ipp16u* ippsMalloc_16u(int len);<br />
Ipp32u* ippsMalloc_32u(int len);<br />
Ipp8s* ippsMalloc_8s(int len);<br />
Ipp16s* ippsMalloc_16s(int len);<br />
Ipp32s* ippsMalloc_32s(int len);<br />
Ipp64s* ippsMalloc_64s(int len);<br />
Ipp32f* ippsMalloc_32f(int len);<br />
Ipp64f* ippsMalloc_64f(int len);<br />
Ipp8sc* ippsMalloc_8sc(int len);<br />
Ipp16sc* ippsMalloc_16sc(int len);<br />
Ipp32sc* ippsMalloc_32sc(int len);<br />
Ipp64sc* ippsMalloc_64sc(int len);<br />
Ipp32fc* ippsMalloc_32fc(int len);<br />
Ipp64fc* ippsMalloc_64fc(int len);<br />
3-4
<strong>IPP</strong> : 1 3<br />
<br />
len<br />
<br />
<br />
ippsMalloc 32 <br />
<br />
<br />
ippsMalloc <br />
NULL <br />
ippsFree <br />
Free<br />
ippsMalloc <br />
<br />
void ippsFree(void* ptr);<br />
<br />
ptr<br />
ptr <br />
ippsMalloc <br />
<br />
ippsFree ippsMalloc <br />
<br />
malloc calloc <br />
ippsFree ippsMalloc <br />
free <br />
3-5
<strong>IPP</strong> : 1 3<br />
3-6
4<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
Copy<br />
<br />
IppStatus ippsCopy_8u(const Ipp8u* pSrc, Ipp8u* pDst, int len);<br />
IppStatus ippsCopy_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
IppStatus ippsCopy_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len);<br />
IppStatus ippsCopy_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsCopy_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
IppStatus ippsCopy_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len );<br />
IppStatus ippsCopy_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len);<br />
4-1
<strong>IPP</strong> : 1 4<br />
<br />
pSrc<br />
pDst<br />
len<br />
pDst <br />
<br />
<br />
<br />
ippsCopy pSrc pDst<br />
len <br />
4-1 ippsCopy <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
4-1<br />
ippsCopy <br />
IppStatus copy(void) {<br />
char src[] = “to be copied\0”;<br />
char dst[256];<br />
return ippsCopy_8u(src, dst, strlen(src)+1);<br />
}<br />
Set<br />
<br />
IppStatus ippsSet_8u(Ipp8u val, Ipp8u* pDst, int len);<br />
IppStatus ippsSet_16s(Ipp16s val, Ipp16s* pDst, int len);<br />
IppStatus ippsSet_16sc(Ipp16sc val, Ipp16sc* pDst, int len);<br />
IppStatus ippsSet_32f(Ipp32f val, Ipp32f* pDst, int len);<br />
4-2
<strong>IPP</strong> : 1 4<br />
IppStatus ippsSet_32fc(Ipp32fc val, Ipp32fc* pDst, int len);<br />
IppStatus ippsSet_64f(Ipp64f val, Ipp64f* pDst, int len);<br />
IppStatus ippsSet_64fc(Ipp64fc val, Ipp64fc* pDst, int len);<br />
IppStatus ippsSet_32s(Ipp32s val, Ipp32s* pDst, int len);<br />
IppStatus ippsSet_32sc(Ipp32sc val, Ipp32sc* pDst, int len);<br />
IppStatus ippsSet_64s(Ipp64s val, Ipp64s* pDst, int len);<br />
IppStatus ippsSet_64sc(Ipp64sc val, Ipp64sc* pDst, int len);<br />
<br />
pDst<br />
len<br />
val<br />
<br />
<br />
pDst <br />
<br />
ippsSet pDst len val <br />
(pDst )<br />
4-2 ippsSet <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst NULL<br />
len <br />
4-2<br />
ippsSet <br />
IppStatus set(void) {<br />
char src[] = “set”;<br />
return ippsSet_8u(‘0’, src, strlen(src));<br />
}<br />
4-3
<strong>IPP</strong> : 1 4<br />
Zero<br />
<br />
IppStatus ippsZero_8u(Ipp8u* pDst, int len);<br />
IppStatus ippsZero_16s(Ipp16s* pDst, int len);<br />
IppStatus ippsZero_16sc(Ipp16sc* pDst, int len);<br />
IppStatus ippsZero_32f(Ipp32f* pDst, int len);<br />
IppStatus ippsZero_32fc(Ipp32fc* pDst, int len);<br />
IppStatus ippsZero_64f(Ipp64f* pDst, int len);<br />
IppStatus ippsZero_64fc(Ipp64fc* pDst, int len);<br />
<br />
pDst<br />
len<br />
<br />
<br />
<br />
ippsZero pDst len pDst <br />
<br />
4-3 ippsZero <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst NULL<br />
len <br />
4-4
<strong>IPP</strong> : 1 4<br />
4-3<br />
ippsZero <br />
IppStatus zero(void) {<br />
char src[] = “zero”;<br />
return ippsZero_8u(src, strlen(src));<br />
}<br />
<br />
<br />
<br />
Jaehne <br />
<strong>IPP</strong> <br />
( ) <br />
<br />
<br />
<br />
C sin() <br />
sin() cos() <br />
<br />
<br />
Tone<br />
<br />
<br />
IppStatus ippsTone_Direct_32f(Ipp32f* pDst, int len, float magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
IppStatus ippsTone_Direct_32fc(Ipp32fc* pDst, int len, float magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
4-5
<strong>IPP</strong> : 1 4<br />
IppStatus ippsTone_Direct_64f(Ipp64f* pDst, int len, float magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
IppStatus ippsTone_Direct_64fc(Ipp64fc* pDst, int len, float magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
IppStatus ippsTone_Direct_16s(Ipp16s* pDst, int len, Ipp16s magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
IppStatus ippsTone_Direct_16sc(Ipp16sc* pDst, int len, Ipp16s magn,<br />
float rfreq, float* pPhase, IppHintAlgorithm hint);<br />
<br />
magn<br />
pPhase<br />
rfreq<br />
pDst<br />
len<br />
hint<br />
<br />
0.0~2π <br />
<br />
0.0 0.5 <br />
<br />
<br />
<br />
hint flag <br />
hint <br />
<br />
ippsTone rfreq pPhase magn <br />
len <br />
pDst x(n) <br />
x(n) = magn ⋅ cos(2πn ⋅ rfreq + phase)<br />
x(n) <br />
x(n) = magn ⋅ (cos(2πn ⋅ rfreq + phase)+j ⋅ sin(2πn ⋅ rfreq + phase))<br />
hint ( <br />
) hint 7-2 <br />
4-6
<strong>IPP</strong> : 1 4<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsToneMagnErr<br />
ippStsToneFreqErr<br />
ippStsTonePhaseErr<br />
<br />
pDst pPhase NULL<br />
len <br />
magn <br />
rfreq 0.5 <br />
pPhase <strong>IPP</strong>_2PI <br />
<br />
<br />
( ) <br />
<br />
rfreq phase magn h <br />
x[n] ( ) <br />
xn [ ] = magn ⋅ ct h<br />
( 2π ⋅ rfreq ⋅ n + phase) , n = 012… , , ,<br />
rfreq phase mag h <br />
x[n]( ) <br />
xn [ ] = magn ⋅ ( ct h ( 2π ⋅ rfreq ⋅ n + phase)<br />
+<br />
j ⋅ st h ( 2π ⋅ rfreq ⋅ n + phase)<br />
),<br />
n=<br />
012… , , ,<br />
ct h () <br />
H = π + h<br />
⎧ 2<br />
⎪– --- ⋅ ⎛α H<br />
– --- H ⎞,<br />
0 ≤α ≤H<br />
⎪ ⎝ 2⎠<br />
ct h<br />
( α)<br />
= ⎨<br />
⎪ 2<br />
--------------- ⋅ ⎛α –<br />
2π ----------------<br />
+ H ⎞<br />
⎪2π<br />
– H ⎝ 2 ⎠<br />
, H ≤α ≤2π<br />
⎩<br />
ct h<br />
( α + k ⋅ 2π) = ct h<br />
( α) , k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
4-7
<strong>IPP</strong> : 1 4<br />
H = π h = 0 ct h () cos() <br />
<br />
ct h<br />
( H ⁄ 2 + k ⋅ π) = 0, k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
ct h<br />
( k ⋅ 2π) = 1, k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
ct h<br />
( H + k ⋅ 2π) = – 1,<br />
k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
st h () <br />
⎧<br />
2<br />
--------------- ⋅ α,<br />
0≤α ≤ 2π ---------------<br />
– H<br />
⎪2π<br />
– H<br />
2<br />
⎪<br />
⎪ 2 2π – H<br />
st h ( α)<br />
= –---<br />
⋅ ( α – π)<br />
, --------------- ≤ α ≤ ----------------<br />
2π + H<br />
⎨ H<br />
2<br />
2<br />
⎪<br />
⎪ 2<br />
2π + H<br />
⎪--------------- ⋅ ( α – 2π)<br />
, ---------------- ≤α ≤2π<br />
⎩2π<br />
– H<br />
2<br />
st h<br />
( α + k ⋅ 2π) = st h<br />
( α) , k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
H = π h = 0 st h () <br />
<br />
st h<br />
( α) = ct h<br />
( α + ( 3π + h) ⁄ 2)<br />
st h<br />
( πk) = 0, k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
st h<br />
(( π – h) ⁄ 2+<br />
2πk) = 1, k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
st h<br />
(( 3π + h) ⁄ 2 + 2πk) = – 1,<br />
k=<br />
0,<br />
± 1,<br />
± 2 , …<br />
4-8
<strong>IPP</strong> : 1 4<br />
Triangle<br />
<br />
<br />
IppStatus ippsTriangle_Direct_64f(Ipp64f* pDst, int len, float magn,<br />
float rfreq, float asym, float* pPhase);<br />
IppStatus ippsTriangle_Direct_64fc(Ipp64fc* pDst, int len, float magn,<br />
float rfreq, float asym, float* pPhase);<br />
IppStatus ippsTriangle_Direct_32f(Ipp32f* pDst, int len, float magn,<br />
float rfreq, float asym, float* pPhase);<br />
IppStatus ippsTriangle_Direct_32fc(Ipp32fc* pDst, int len, float magn,<br />
float rfreq, float asym, float* pPhase);<br />
IppStatus ippsTriangle_Direct_16s(Ipp16s* pDst, int len, Ipp16s magn,<br />
float rfreq, float asym, float* pPhase);<br />
IppStatus ippsTriangle_Direct_16sc(Ipp16sc* pDst, int len, Ipp16s magn,<br />
float rfreq, float asym, float* pPhase);<br />
<br />
rfreq<br />
pPhase<br />
magn<br />
asym<br />
pDst<br />
len<br />
0.0 0.5 <br />
<br />
0.0 2π<br />
<br />
<br />
<br />
h- π π h=0 <br />
<br />
<br />
<br />
4-9
<strong>IPP</strong> : 1 4<br />
<br />
ippsTriangle rfreqpPhase <br />
magn len <br />
pDst <br />
x(n) <br />
xn [ ] = magn ⋅ ct h ( 2π ⋅ rfreq ⋅ n + phase), n = 012… , , ,<br />
x(n) <br />
xn [ ] = magn ⋅ ( ct h ( 2π ⋅ rfreq ⋅ n + phase) + j ⋅ st h ( 2π ⋅ rfreq ⋅ n + phase)), n = 012… , , ,<br />
ct h st h 4-7 <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsTrnglMagnErr<br />
ippStsTrnglFreqErr<br />
ippStsTrnglPhaseErr<br />
ippStsTrnglAsymErr<br />
<br />
pDst pPhase NULL<br />
len <br />
magn <br />
rfreq 0.5 <br />
pPhase <strong>IPP</strong>_2PI <br />
asym -<strong>IPP</strong>_PI <strong>IPP</strong>_PI <br />
4-10
<strong>IPP</strong> : 1 4<br />
<br />
<br />
RandUniform<br />
<br />
<br />
IppStatus ippsRandUniform_Direct_16s(Ipp16s* pDst, int len, Ipp16s low,<br />
Ipp16s high, unsigned int* pSeed);<br />
IppStatus ippsRandUniform_Direct_32f(Ipp32f* pDst, int len, Ipp32f low,<br />
Ipp32f high, unsigned int* pSeed);<br />
IppStatus ippsRandUniform_Direct_64f(Ipp64f* pDst, int len, Ipp64f low,<br />
Ipp64f high, unsigned int* pSeed);<br />
<br />
pSeed<br />
low<br />
high<br />
pDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsRandUniform len <br />
pDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSeed NULL<br />
len <br />
4-11
<strong>IPP</strong> : 1 4<br />
<br />
<br />
<br />
RandGauss<br />
<br />
<br />
IppStatus ippsRandGauss_Direct_16s(Ipp16s* pDst, int len, Ipp16s mean,<br />
Ipp16s stdev, unsigned int* pSeed);<br />
IppStatus ippsRandGauss_Direct_32f(Ipp32f* pDst, int len, Ipp32f mean,<br />
Ipp32f stdev, unsigned int* pSeed);<br />
IppStatus ippsRandGauss_Direct_64f(Ipp64f* pDst, int len, Ipp64f mean,<br />
Ipp64f stdev, unsigned int* pSeed);<br />
<br />
pSeed<br />
mean<br />
stdev<br />
pDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsRandGauss len <br />
pDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSeed NULL<br />
len <br />
4-12
<strong>IPP</strong> : 1 4<br />
Jaehne <br />
Jaehne <br />
<br />
VectorJaehne<br />
Jaehne <br />
IppStatus ippsVectorJaehne_8u(Ipp8u* pDst, int len, Ipp8u magn);<br />
IppStatus ippsVectorJaehne_8s(Ipp8s* pDst, int len, Ipp8s magn);<br />
IppStatus ippsVectorJaehne_16u(Ipp16u* pDst, int len, Ipp16u magn);<br />
IppStatus ippsVectorJaehne_16s(Ipp16s* pDst, int len, Ipp16s magn);<br />
IppStatus ippsVectorJaehne_32u(Ipp32u* pDst, int len, Ipp32u magn);<br />
IppStatus ippsVectorJaehne_32s(Ipp32s* pDst, int len, Ipp32s magn);<br />
IppStatus ippsVectorJaehne_32f(Ipp32f* pDst, int len, Ipp32f magn);<br />
IppStatus ippsVectorJaehne_64f(Ipp64f* pDst, int len, Ipp64f magn);<br />
<br />
pDst<br />
len<br />
magn<br />
<br />
<br />
<br />
<br />
ippsVectorJaehne Jaehne pDst <br />
magn <br />
<br />
0.5πn 2<br />
pDst[ n] = magn ⋅ sin --------<br />
⎝<br />
⎛ , 0≤n
<strong>IPP</strong> : 1 4<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsJaehneErr<br />
<br />
pSrcDst NULL<br />
len <br />
magn <br />
4-4 ippsVectorJaehne <br />
IppStatus Jaehne (void) {<br />
Ipp16s buf[100] ;<br />
return ippsVectorJaehne_16s ( buf, 100, 255 );<br />
}<br />
4-14
5<br />
(window) <br />
<br />
<br />
<strong>IPP</strong>( ) <br />
<br />
ANDOR XOR <br />
- : AndCOrCXorC<br />
- : AndOrXor<br />
AndC<br />
AND<br />
<br />
IppStatus ippsAndC_8u_I(Ipp8u val, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsAndC_8u(const Ipp8u* pSrc, Ipp8u val, Ipp8u* pDst, int len);<br />
IppStatus ippsAndC_16u_I(Ipp16u val, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsAndC_16u(const Ipp16u* pSrc, Ipp16u val, Ipp16u* pDst, int len);<br />
5-1
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsAndC val pSrc AND<br />
pDst <br />
ippsAndC val pSrcDst <br />
AND pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
And<br />
2 AND <br />
IppStatus ippsAnd_8u_I(const Ipp8u* pSrc, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsAnd_8u(const Ipp8u* pSrc1, const Ipp8u* pSrc2,<br />
Ipp8u* pDst, int len);<br />
IppStatus ippsAnd_16u_I(const Ipp16u* pSrc, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsAnd_16u(const Ipp16u* pSrc1, const Ipp16u* pSrc2,<br />
Ipp16u* pDst, int len);<br />
5-2
<strong>IPP</strong> : 1 5<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
2 <br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsAnd pSrc1 pSrc2 <br />
AND pDst <br />
ippsAnd pSrc pSrcDst <br />
AND pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
OrC<br />
OR<br />
<br />
IppStatus ippsOrC_8u_I(Ipp8u val, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsOrC_8u(const Ipp8u* pSrc, Ipp8u val, Ipp8u* pDst, int len);<br />
IppStatus ippsOrC_16u_I(Ipp16u val, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsOrC_16u(const Ipp16u* pSrc, Ipp16u val, Ipp16u* pDst, int len);<br />
5-3
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsOrC val pSrc OR <br />
pDst <br />
ippsOrC val pSrcDst <br />
OR pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Or<br />
2 OR <br />
IppStatus ippsOr_8u_I(const Ipp8u* pSrc, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsOr_8u(const Ipp8u* pSrc1, const Ipp8u* pSrc2,<br />
Ipp8u* pDst, int len);<br />
IppStatus ippsOr_16u_I(const Ipp16u* pSrc, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsOr_16u(const Ipp16u* pSrc1, const Ipp16u* pSrc2,<br />
Ipp16u* pDst, int len);<br />
5-4
<strong>IPP</strong> : 1 5<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
2 <br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsOr pSrc1 pSrc2 <br />
OR pDst <br />
ippsOr pSrc pSrcDst <br />
OR pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
XorC<br />
XOR<br />
<br />
IppStatus ippsXorC_8u_I(Ipp8u val, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsXorC_8u(const Ipp8u* pSrc, Ipp8u val, Ipp8u* pDst, int len);<br />
IppStatus ippsXorC_16u_I(Ipp16u val, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsXorC_16u(const Ipp16u* pSrc, Ipp16u val, Ipp16u* pDst, int len);<br />
5-5
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsXorC val pSrc XOR<br />
pDst <br />
ippsXorC val pSrcDst <br />
XOR pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Xor<br />
2 XOR <br />
IppStatus ippsXor_8u_I(const Ipp8u* pSrc, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsXor_8u(const Ipp8u* pSrc1, const Ipp8u* pSrc2,<br />
Ipp8u* pDst, int len);<br />
IppStatus ippsXor_16u_I(const Ipp16u* pSrc, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsXor_16u(const Ipp16u* pSrc1, const Ipp16u* pSrc2,<br />
Ipp16u* pDst, int len);<br />
5-6
<strong>IPP</strong> : 1 5<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
2 <br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsXor pSrc1 pSrc2 <br />
XOR pDst <br />
ippsXor pSrc pSrcDst <br />
XOR pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Not<br />
NOT <br />
IppStatus ippsNot_8u_I(Ipp8u* pSrcDst, int len);<br />
IppStatus ippsNot_8u(const Ipp8u* pSrc, Ipp8u* pDst, int len);<br />
IppStatus ippsNot_16u_I(Ipp16u* pSrcDst, int len);<br />
IppStatus ippsNot_16u(const Ipp16u* pSrc, Ipp16u* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
<br />
<br />
5-7
<strong>IPP</strong> : 1 5<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
ippsNot pSrc NOT <br />
pDst <br />
ippsNot pSrcDst <br />
NOT pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
LShiftC<br />
<br />
IppStatus ippsLShiftC_8u_I(int val, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsLShiftC_8u(const Ipp8u* pSrc, int val, Ipp8u* pDst, int len);<br />
IppStatus ippsLShiftC_16u_I(int val, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsLShiftC_16u(const Ipp16u* pSrc, int val, Ipp16u* pDst, int len);<br />
IppStatus ippsLShiftC_16s_I(int val, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsLShiftC_16s(const Ipp16s* pSrc, int val, Ipp16s* pDst, int len);<br />
IppStatus ippsLShiftC_32s_I(int val, Ipp32s* pSrcDst, int len);<br />
IppStatus ippsLShiftC_32s(const Ipp32s* pSrc, int val, Ipp32s* pDst, int len);<br />
<br />
val<br />
pSrc<br />
pSrc pSrcDst <br />
<br />
<br />
5-8
<strong>IPP</strong> : 1 5<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
ippsLShiftC pSrc val <br />
pDst <br />
ippsLShiftC pSrcDst val <br />
pSrcDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
RShiftC<br />
<br />
IppStatus ippsRShiftC_8u_I(int val, Ipp8u* pSrcDst, int len);<br />
IppStatus ippsRShiftC_8u(const Ipp8u* pSrc, int val, Ipp8u* pDst, int len);<br />
IppStatus ippsRShiftC_16u_I(int val, Ipp16u* pSrcDst, int len);<br />
IppStatus ippsRShiftC_16u(const Ipp16u* pSrc, int val, Ipp16u* pDst, int len);<br />
IppStatus ippsRShiftC_16s_I(int val, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsRShiftC_16s(const Ipp16s* pSrc, int val, Ipp16s* pDst, int len);<br />
IppStatus ippsRShiftC_32s_I(int val, Ipp32s* pSrcDst, int len);<br />
IppStatus ippsRShiftC_32s(const Ipp32s* pSrc, int val, Ipp32s* pDst, int len);<br />
5-9
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
pSrc pSrcDst <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsRShiftC pSrc val <br />
pDst <br />
ippsRShiftC pSrcDst val <br />
pSrcDst <br />
<br />
<br />
5-1 <br />
[0...255] <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-10
<strong>IPP</strong> : 1 5<br />
5-1<br />
<br />
void saturate(void) {<br />
Ipp16s x[8] = {1000, -257, 127, 4, 5, 0, 7, 8}, lo[8], hi[8];<br />
IppStatus status = ippsNot_16u((Ipp16u*)x, (Ipp16u*)lo, 8);<br />
ippsRShiftC_16s_I(15, lo, 8);<br />
ippsCopy_16s(x, hi, 8);<br />
ippsSubCRev_16s_ISfs(255, hi, 8, 0);<br />
ippsRShiftC_16s_I(15, hi, 8);<br />
ippsAnd_16u_I((Ipp16u*)lo, (Ipp16u*)x, 8);<br />
ippsOr_16u_I((Ipp16u*)hi, (Ipp16u*)x, 8);<br />
ippsAndC_16u_I(255, (Ipp16u*)x, 8);<br />
printf_16s(“saturate =”, x, 8, status);<br />
}<br />
Output:<br />
saturate = 255 0 127 4 5 0 7 8<br />
<br />
<strong>IPP</strong>( ) <br />
<br />
2 <br />
<br />
2 1 <br />
“ ” 1 <br />
<br />
5-11
<strong>IPP</strong> : 1 5<br />
AddC<br />
<br />
IppStatus ippsAddC_16s_I(Ipp16s val, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsAddC_32f_I(Ipp32f val, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsAddC_64f_I(Ipp64f val, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsAddC_16s_ISfs(Ipp16s val, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsAddC_32fc_I(Ipp32fc val, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsAddC_64fc_I(Ipp64fc val, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsAddC_16sc_ISfs(Ipp16sc val, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrc pSrcDst <br />
<br />
<br />
pSrc[n] + val <br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsAddC pSrc val pDst <br />
<br />
ippsAddC pSrcDst val <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
5-12
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Add<br />
2 <br />
IppStatus ippsAdd_16s_I(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsAdd_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsAdd_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsAdd_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsAdd_16s(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len);<br />
IppStatus ippsAdd_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsAdd_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsAdd_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsAdd_32fc_I(const Ipp32fc* pSrc, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsAdd_64fc_I(const Ipp64fc* pSrc, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsAdd_16sc_ISfs(const Ipp16sc* pSrc, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsAdd_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsAdd_32fc(const Ipp32fc* pSrc1, const Ipp32fc* pSrc2,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsAdd_64fc(const Ipp64fc* pSrc1, const Ipp64fc* pSrc2,<br />
Ipp64fc* pDst, int len);<br />
5-13
<strong>IPP</strong> : 1 5<br />
IppStatus ippsAdd_16sc_Sfs(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
Ipp16sc* pDst, int len, int scaleFactor);<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
pSrc2[n] + pSrc1[n] <br />
<br />
pSrcDst <br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsAdd pSrc1 pSrc2 <br />
pDst <br />
ippsAdd pSrc pSrcDst <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
5-2 <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-14
<strong>IPP</strong> : 1 5<br />
5-2<br />
ippsAdd <br />
IppStatus add(void) {<br />
Ipp16s x[4] = {-1, 32767, 2, 30000};<br />
IppStatus st = ippsAdd_16s_ISfs(x, x, 4, 1);<br />
printf_16s(“add =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
add = -1 32767 2 30000<br />
MulC<br />
<br />
IppStatus ippsMulC_16s_I(Ipp16s val, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsMulC_32f_I(Ipp32f val, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsMulC_64f_I(Ipp64f val, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsMulC_16s_ISfs(Ipp16s val, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsMulC_32f(const Ipp32f* pSrc, Ipp32f val, Ipp32f* pDst, int len);<br />
IppStatus ippsMulC_64f(const Ipp64f* pSrc, Ipp64f val, Ipp64f* pDst, int len);<br />
IppStatus ippsMulC_32fc_I(Ipp32fc val, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsMulC_64fc_I(Ipp64fc val, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsMulC_16sc_ISfs(Ipp16sc val, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
5-15
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrc pSrcDst <br />
<br />
<br />
pSrc[n] * val <br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsMulC pSrc val pDst <br />
<br />
ippsMulC pSrcDst val <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Mul<br />
2 <br />
IppStatus ippsMul_16s_I(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsMul_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsMul_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int len);<br />
5-16
<strong>IPP</strong> : 1 5<br />
IppStatus ippsMul_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsMul_16s(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len);<br />
IppStatus ippsMul_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsMul_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsMul_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsMul_32fc_I(const Ipp32fc* pSrc, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsMul_64fc_I(const Ipp64fc* pSrc, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsMul_16sc_ISfs(const Ipp16sc* pSrc, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsMul_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsMul_32fc(const Ipp32fc* pSrc1, const Ipp32fc* pSrc2,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsMul_64fc(const Ipp64fc* pSrc1, const Ipp64fc* pSrc2,<br />
Ipp64fc* pDst, int len);<br />
IppStatus ippsMul_16sc_Sfs(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
Ipp16sc* pDst, int len, int scaleFactor);<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
pSrc1[n] * pSrc2[n] <br />
<br />
pSrcDst <br />
<br />
<br />
<br />
<br />
2 <br />
5-17
<strong>IPP</strong> : 1 5<br />
<br />
ippsMul pSrc1 pSrc2 <br />
pDst <br />
ippsMul pSrc pSrcDst <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
SubC<br />
<br />
IppStatus ippsSubC_16s_I(Ipp16s val, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsSubC_32f_I(Ipp32f val, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsSubC_64f_I(Ipp64f val, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsSubC_16s_ISfs(Ipp16s val, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsSubC_32fc_I(Ipp32fc val, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsSubC_64fc_I(Ipp64fc val, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsSubC_16sc_ISfs(Ipp16sc val, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
5-18
<strong>IPP</strong> : 1 5<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrc pSrcDst <br />
<br />
<br />
pSrc[n] - val <br />
<br />
val pSrcDst <br />
<br />
<br />
2 <br />
<br />
ippsSubC pSrc val pDst <br />
<br />
ippsSubC pSrcDst val <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-19
<strong>IPP</strong> : 1 5<br />
SubCRev<br />
<br />
( )<br />
IppStatus ippsSubCRev_32f_I(Ipp32f val, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsSubCRev_32fc_I(Ipp32fc val, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsSubCRev_64f_I(Ipp64f val, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsSubCRev_64fc_I(Ipp64fc val, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsSubCRev_16s_ISfs(Ipp16s val, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsSubCRev_16sc_ISfs(Ipp16sc val, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
<br />
val<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrcDst <br />
val <br />
val - pSrcDst[n] <br />
<br />
<br />
2 <br />
<br />
ippsSubCRev val pSrcDst <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-20
<strong>IPP</strong> : 1 5<br />
Sub<br />
2 <br />
IppStatus ippsSub_16s_I(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len);<br />
IppStatus ippsSub_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsSub_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsSub_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsSub_16s(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len);<br />
IppStatus ippsSub_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsSub_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsSub_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsSub_32fc_I(const Ipp32fc* pSrc, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsSub_64fc_I(const Ipp64fc* pSrc, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsSub_16sc_ISfs(const Ipp16sc* pSrc, Ipp16sc* pSrcDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsSub_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsSub_32fc(const Ipp32fc* pSrc1, const Ipp32fc* pSrc2,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsSub_64fc(const Ipp64fc* pSrc1, const Ipp64fc* pSrc2,<br />
Ipp64fc* pDst, int len);<br />
IppStatus ippsSub_16sc_Sfs(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
Ipp16sc* pDst, int len, int scaleFactor);<br />
5-21
<strong>IPP</strong> : 1 5<br />
<br />
pSrc1<br />
pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrc2 <br />
pSrc1 <br />
pSrc2[n] - pSrc1[n] <br />
<br />
pSrcDst <br />
<br />
pSrc pSrcDst <br />
<br />
<br />
2 <br />
<br />
ippsSub pSrc2 pSrc1 <br />
pDst <br />
ippsSub pSrcDst pSrc <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-22
<strong>IPP</strong> : 1 5<br />
DivC<br />
<br />
IppStatus ippsDivC_32f(const Ipp32f* pSrc, Ipp32f val, Ipp32f* pDst, int len);<br />
IppStatus ippsDivC_32fc(const Ipp32fc* pSrc, Ipp32fc val,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsDivC_64f(const Ipp64f* pSrc, Ipp64f val, Ipp64f* pDst, int len);<br />
IppStatus ippsDivC_64fc(const Ipp64fc* pSrc, Ipp64fc val,<br />
Ipp64fc* pDst, int len);<br />
IppStatus ippsDivC_16s_Sfs(const Ipp16s* pSrc, Ipp16s val, Ipp16s* pDst,<br />
int len, int ScaleFactor);<br />
IppStatus ippsDivC_8u_Sfs(const Ipp8u* pSrc, Ipp8u val, Ipp8u* pDst,<br />
int len, int ScaleFactor);<br />
IppStatus ippsDivC_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc val,<br />
Ipp16sc* pDst, int len, int ScaleFactor);<br />
IppStatus ippsDivC_32f_I(Ipp32f val, Ipp32f* pSrcDst, int len);<br />
IppStatus ippsDivC_32fc_I(Ipp32fc val, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsDivC_64f_I(Ipp64f val, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsDivC_64fc_I(Ipp64fc val, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsDivC_16s_ISfs(Ipp16s val, Ipp16s* pSrcDst, int len,<br />
int ScaleFactor);<br />
IppStatus ippsDivC_8u_ISfs(Ipp8u val, Ipp8u* pSrcDst, int len,<br />
int ScaleFactor);<br />
IppStatus ippsDivC_16sc_ISfs(Ipp16sc val, Ipp16sc* pSrcDst, int len,<br />
int ScaleFactor);<br />
<br />
val<br />
pSrc<br />
pDst<br />
pSrc pSrcDst <br />
<br />
<br />
pSrc[n] / val <br />
<br />
5-23
<strong>IPP</strong> : 1 5<br />
pSrcDst<br />
len<br />
scaleFactor<br />
val pSrcDst <br />
<br />
<br />
2 <br />
<br />
ippsDivC pSrc val pDst <br />
<br />
ippsDivC pSrcDst val <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsDivByZeroErr<br />
<br />
pDst pSrc NULL<br />
len <br />
val <br />
Div<br />
2 <br />
IppStatus ippsDiv_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsDiv_32fc(const Ipp32fc* pSrc1, const Ipp32fc* pSrc2,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsDiv_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsDiv_64fc(const Ipp64fc* pSrc1, const Ipp64fc* pSrc2,<br />
Ipp64fc* pDst, int len);<br />
IppStatus ippsDiv_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int len);<br />
5-24
<strong>IPP</strong> : 1 5<br />
IppStatus ippsDiv_32fc_I(const Ipp32fc* pSrc, Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsDiv_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int len);<br />
IppStatus ippsDiv_64fc_I(const Ipp64fc* pSrc, Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsDiv_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst, int len,<br />
int ScaleFactor);<br />
IppStatus ippsDiv_8u_ISfs(const Ipp8u* pSrc, Ipp8u* pSrcDst, int len,<br />
int ScaleFactor);<br />
IppStatus ippsDiv_16sc_ISfs(const Ipp16sc* pSrc, Ipp16sc* pSrcDst, int len,<br />
int ScaleFactor);<br />
IppStatus ippsDiv_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsDiv_8u_Sfs(const Ipp8u* pSrc1, const Ipp8u* pSrc2, Ipp8u* pDst,<br />
int len, int scaleFactor);<br />
IppStatus ippsDiv_16sc_Sfs(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
Ipp16sc* pDst, int len, int scaleFactor);<br />
<br />
pSrc1<br />
pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
len<br />
scaleFactor<br />
pSrc2 <br />
pSrc1 <br />
pSrc2[n] / pSrc1[n] <br />
pDst <br />
pSrcDst <br />
<br />
pSrc pSrcDst <br />
<br />
<br />
2 <br />
5-25
<strong>IPP</strong> : 1 5<br />
<br />
ippsDiv pSrc2 pSrc1 <br />
pDst <br />
ippsDiv pSrcDst pSrc <br />
pSrcDst <br />
Sfs scaleFactor <br />
<br />
5-3 <br />
5-4 (x / 0, 0 / 0) <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsDivByZero<br />
<br />
pDst pSrc NULL<br />
len <br />
<br />
<br />
<br />
NaN<br />
<br />
+Inf <br />
-Inf <br />
5-26
<strong>IPP</strong> : 1 5<br />
5-3<br />
ippsDiv_16s_ISfs <br />
IppStatus div16s( void ) {<br />
Ipp16s x[4] = { -3, 2, 0, 300 };<br />
Ipp16s y[4] = { -2, 2, 0, 0 };<br />
IppStatus st = ippsDiv_16s_ISfs( y, x, 4, -1 );<br />
printf_16s(“div16s =”, x, 4, st );<br />
return st;<br />
}<br />
Output:<br />
-- warning 6, Zero value(s) in the divisor of the function Div<br />
div16s = 3 2 0 32767<br />
5-4<br />
ippsDiv_32f_I <br />
IppStatus div32f( void ) {<br />
Ipp32f x[4] = { -3, 2, 0, 300 };<br />
Ipp32f y[4] = { -2, 2, 0, 0 };<br />
IppStatus st = ippsDiv_32f_I( y, x, 4 );<br />
printf_32f( "div32f =", x, 4, st );<br />
return st;<br />
}<br />
Output:<br />
-- warning 6, Zero value(s) in the divisor of the function Div<br />
div32f = 1.500000 1.000000 1.#IND00 1.#INF00<br />
5-27
<strong>IPP</strong> : 1 5<br />
Abs<br />
<br />
IppStatus ippsAbs_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsAbs_64f_I(Ipp64f* pSrcDst, int len);<br />
IppStatus ippsAbs_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsAbs_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsAbs_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsAbs_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsAbs pSrc pDst <br />
<br />
ippsAbs pSrcDst <br />
pSrcDst <br />
ippsMagnitude <br />
5-5 ippsAbs_32f_I <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-28
<strong>IPP</strong> : 1 5<br />
5-5<br />
ippsAbs <br />
void abs32f(void) {<br />
Ipp32f x[4] = {-1, 1, 0, 0};<br />
x[3] *= (-1);<br />
ippsAbs_32f_I(x, 4);<br />
printf_32f(“abs =”, x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
abs = 1.000000 1.000000 0.000000 0.000000<br />
Sqr<br />
2 <br />
IppStatus ippsSqr_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsSqr_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsSqr_64f_I(Ipp64f* pSrcDst, int len);<br />
IppStatus ippsSqr_64fc_I(Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsSqr_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsSqr_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
IppStatus ippsSqr_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsSqr_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len);<br />
IppStatus ippsSqr_16s_ISfs(Ipp16s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsSqr_16sc_ISfs(Ipp16sc* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsSqr_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsSqr_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
int scaleFactor);<br />
5-29
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsSqr pSrc 2 pDst <br />
<br />
pDst[n] = pSrc[n] 2<br />
ippsSqr pSrcDst 2 <br />
pSrcDst <br />
pSrcDst[n] = pSrcDst[n] 2<br />
2 <br />
5-6 200 2 <br />
32767 <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-30
<strong>IPP</strong> : 1 5<br />
5-6<br />
ippsSqr <br />
IppStatus sqr(void) {<br />
Ipp16s x[4] = {-3, 2, 30, 200};<br />
IppStatus st = ippsSqr_16s_ISfs(x, 4, 1);<br />
printf_16s(“sqr =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
sqr = 4 2 450 20000<br />
Sqrt<br />
<br />
IppStatus ippsSqrt_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsSqrt_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsSqrt_64f_I(Ipp64f* pSrcDst, int len);<br />
IppStatus ippsSqrt_64fc_I(Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsSqrt_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsSqrt_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
IppStatus ippsSqrt_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsSqrt_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len);<br />
IppStatus ippsSqrt_16s_ISfs(Ipp16s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsSqrt_16sc_ISfs(Ipp16sc* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsSqrt_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, int scaleFactor);<br />
IppStatus ippsSqrt_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, int scaleFactor);<br />
5-31
<strong>IPP</strong> : 1 5<br />
IppStatus ippsSqrt_64s_ISfs(Ipp64s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsSqrt_64s_Sfs(const Ipp64s* pSrc, Ipp64s* pDst, int len,<br />
int scaleFactor);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsSqrt pSrc pDst <br />
<br />
pDst[ n] = pSrc[ n]<br />
ippsSqrt pSrcDst <br />
pSrcDst <br />
pSrcDst[ n] = pSrcDst[ n]<br />
<br />
a+<br />
j ⋅ b<br />
=<br />
a 2 + b 2 + a<br />
-------------------------------- + j ⋅sign( b)<br />
⋅<br />
2<br />
a 2 + b 2 – a<br />
--------------------------------<br />
2<br />
<br />
ippsSqrt <br />
<br />
5-7 ippsSqrt_16s_ISfs <br />
5-32
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsSqrtNegArg<br />
<br />
pDst pSrc NULL<br />
len <br />
<br />
<br />
NaN<br />
<br />
<br />
0 <br />
5-7<br />
ippsSqrt <br />
IppStatus sqrt(void) {<br />
Ipp16s x[4] = {-3, 2, 30, 300};<br />
IppStatus st = ippsSqrt_16s_ISfs(x, 4, -1);<br />
printf_16s(“sqrt =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
-- warning 3, Negative value(s) in the argument of the function Sqrt<br />
sqrt = 0 3 11 35<br />
5-33
<strong>IPP</strong> : 1 5<br />
Exp<br />
e <br />
IppStatus ippsExp_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsExp_64f_I(Ipp64f* pSrcDst, int len);<br />
IppStatus ippsExp_16s_ISfs(Ipp16s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsExp_32s_ISfs(Ipp32s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsExp_64s_ISfs(Ipp64s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsExp_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsExp_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsExp_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsExp_32s_Sfs(const Ipp32s* pSrc, Ipp32s* pDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsExp_64s_Sfs(const Ipp64s* pSrc, Ipp64s* pDst, int len,<br />
int scaleFactor);<br />
IppStatus ippsExp_32f64f(const Ipp32f* pSrc, Ipp64f* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
pSrcDst <br />
<br />
2 <br />
5-34
<strong>IPP</strong> : 1 5<br />
<br />
ippsExp pSrc pDst <br />
<br />
<br />
pDst[n] = e pSrc[n]<br />
ippsExp pSrcDst <br />
pSrcDst <br />
<br />
pSrcDst[n] = e pSrcDst[n]<br />
<br />
<br />
ippsExp_32f64f <br />
5-8 ippsExp_16s_ISfs 5-9 ippsExp_64f_I<br />
<br />
<br />
ippsExp ippsLn <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-35
<strong>IPP</strong> : 1 5<br />
5-8<br />
ippsExp_16s_ISfs <br />
IppStatus exp16s(void) {<br />
Ipp16s x[4] = {-1, 2, 30, 0};<br />
IppStatus st = ippsExp_16s_ISfs(x, 4, -1);<br />
printf_16s(“exp16s =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
exp16s = 1 15 32767 2<br />
5-9<br />
ippsExp_64f_I <br />
IppStatus exp64f(void) {<br />
Ipp64f x[4] = {-1, 2, 1, log(1.234567)};<br />
IppStatus st = ippsExp_64f_I(x, 4);<br />
printf_64f(“exp64f =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
exp64f = 0.367879 7.389056 2.718282 1.234567<br />
Ln<br />
<br />
IppStatus ippsLn_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsLn_64f_I(Ipp64f* pSrcDst, int len);<br />
IppStatus ippsLn_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
5-36
<strong>IPP</strong> : 1 5<br />
IppStatus ippsLn_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsLn_64f32f(const Ipp64f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsLn_16s_ISfs(Ipp16s* pSrcDst, int len, int scaleFactor);<br />
IppStatus ippsLn_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
int scaleFactor);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsLn pSrc pDst <br />
<br />
pDst[n] = log e (pSrc[n])<br />
ippsLn pSrcDst <br />
pSrcDst <br />
pSrcDst[n] = log e (pSrcDst[n])<br />
5-10 ippsLn_32f_I <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsLnZeroArg<br />
ippStsLnNegArg<br />
<br />
pDst pSrc NULL<br />
len <br />
<br />
<br />
-Inf <br />
<br />
<br />
NaN <br />
5-37
<strong>IPP</strong> : 1 5<br />
5-10<br />
ippsLn <br />
IppStatus ln32f(void) {<br />
Ipp32f x[4] = {-1, (float)<strong>IPP</strong>_E, 0, (float)(exp(1.234567))};<br />
IppStatus st = ippsLn_32f_I(x, 4);<br />
printf_32f(“Ln =”, x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
-- warning 8, Negative value(s) of argument in the Ln function<br />
Ln = -1.#IND00 1.000000 -1.#INF00 1.234567<br />
Normalize<br />
<br />
<br />
<br />
IppStatus ippsNormalize_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
int len, Ipp64fc vsub, Ipp64f vdiv);<br />
IppStatus ippsNormalize_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len, Ipp32fc vsub, Ipp32f vdiv);<br />
IppStatus ippsNormalize_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, Ipp16sc vsub, int vdiv, int scaleFactor);<br />
IppStatus ippsNormalize_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
Ipp64f vsub, Ipp64f vdiv);<br />
IppStatus ippsNormalize_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f vsub, Ipp32f vdiv);<br />
IppStatus ippsNormalize_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, Ipp16s vsub, int vdiv, int scaleFactor);<br />
5-38
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
vsub<br />
vdiv<br />
pDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsNormalize pSrc vsub vdiv<br />
pDst <br />
pSrc[ n] – vsub<br />
pDst[ n]<br />
= --------------------------------------------<br />
vdiv<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsDivByZeroErr<br />
<br />
pSrc pDst NULL<br />
len <br />
vdiv <br />
5-39
<strong>IPP</strong> : 1 5<br />
<br />
<br />
• <br />
• <br />
• <br />
• <br />
<strong>IPP</strong> <br />
<strong>IPP</strong> <br />
ippsReal ippsImag <br />
<br />
ippsRealToCplx 2 <br />
1 <br />
ippsCplxToReal 2 <br />
<br />
ippsMagnitude <br />
Convert<br />
<br />
<br />
2 <br />
<br />
IppStatus ippsConvert_8s32f(const Ipp8s* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsConvert_8u32f(const Ipp8u* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsConvert_16s32f(const Ipp16s* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsConvert_16u32f(const Ipp16u* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsConvert_32s64f(const Ipp32s* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsConvert_32f8s_Sfs(const Ipp32f* pSrc, Ipp8s* pDst, int len,<br />
IppCnvrtRnd rndmode, int scaleFactor);<br />
5-40
<strong>IPP</strong> : 1 5<br />
IppStatus ippsConvert_32f8u_Sfs(const Ipp32f* pSrc, Ipp8u* pDst, int len,<br />
IppCnvrtRnd rndmode, int scaleFactor);<br />
IppStatus ippsConvert_32f16s_Sfs(const Ipp32f* pSrc, Ipp16s* pDst, int len,<br />
IppCnvrtRnd rndmode, int scaleFactor);<br />
IppStatus ippsConvert_32f16u_Sfs(const Ipp32f* pSrc, Ipp16u* pDst, int len,<br />
IppCnvrtRnd rndmode, int scaleFactor);<br />
IppStatus ippsConvert_64f32s_Sfs(const Ipp64f* pSrc, Ipp32s* pDst, int len,<br />
IppCnvrtRnd rndmode, int scaleFactor);<br />
<br />
pSrc<br />
pDst<br />
rndmode<br />
len<br />
scaleFactor<br />
<br />
<br />
ippRndZero ippRndNear <br />
ippRndZero<br />
<br />
ippRndNear <br />
<br />
<br />
2 <br />
<br />
ippsConvert pSrc <br />
pDst <br />
Sfs ippsConvert pSrc <br />
pDst <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-41
<strong>IPP</strong> : 1 5<br />
Conj<br />
2 <br />
( )<br />
IppStatus ippsConj_64fc_I(Ipp64fc* pSrcDst, int len);<br />
IppStatus ippsConj_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsConj_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsConj_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len);<br />
IppStatus ippsConj_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
IppStatus ippsConj_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsConj pSrc pDst <br />
<br />
pDst[n].re = pSrc[n].re<br />
pDst[n].im = - pSrc[n].im<br />
ippsConj( ) pSrcDst <br />
pSrcDst <br />
<br />
pSrcDst[n].re = pSrcDst[n].re<br />
pSrcDst[n].im = - pSrcDst[n].im<br />
5-42
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
ConjFlip<br />
<br />
<br />
IppStatus ippsConjFlip_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
int len);<br />
IppStatus ippsConjFlip_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len);<br />
IppStatus ippsConjFlip_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
pSrc <br />
<br />
<br />
<br />
<br />
<br />
ippsConjFlip pSrc pDst <br />
<br />
<br />
pDst[n] = conj(pSrc[len - n - 1])<br />
5-43
<strong>IPP</strong> : 1 5<br />
ippsConjFlip pSrcDst <br />
pSrcDst <br />
<br />
pSrcDst[n] = conj(pSrcDst[len - n - 1])<br />
pSrc pDst <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Magnitude<br />
<br />
IppStatus ippsMagnitude_32fc(const Ipp32fc* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsMagnitude_64fc(const Ipp64fc* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsMagnitude_16sc32f(const Ipp16sc* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsMagnitude_16sc_Sfs(const Ipp16sc* pSrc, Ipp16s* pDst,<br />
int len, int scaleFactor);<br />
IppStatus ippsMagnitude_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsMagnitude_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsMagnitude_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
5-44
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pSrcRe<br />
pSrcIm<br />
pDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
“ ” ippsMagnitude pSrc <br />
pDst <br />
magn[ n] = pSrc[ n].re 2 + pSrc[ n].im 2<br />
“ ” ippsMagnitude pSrcRe <br />
pSrcIm <br />
pDst <br />
magn[ n] = pSrcRe[ n] 2 + pSrcIm[ n] 2<br />
5-11 sin 2 x +cos 2 x = 1 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-45
<strong>IPP</strong> : 1 5<br />
5-11<br />
ippsMagnitude <br />
void magn(void) {<br />
Ipp64f x[6], magn[4];<br />
int n;<br />
for (n = 0; n> n = 0:9; x = sin(2*pi*n/8); z = [x(1:8)+j*x(3:10)]; abs(z(1:4))<br />
Phase<br />
2 <br />
<br />
IppStatus ippsPhase_64fc(const Ipp64fc* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsPhase_32fc(const Ipp32fc* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsPhase_16sc32f(const Ipp16sc* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsPhase_16sc_Sfs(const Ipp16sc* pSrc, Ipp16s* pDst, int len,<br />
int scaleFactor);<br />
<br />
pSrc<br />
pDst<br />
<br />
( ) <br />
(- π, π] <br />
5-46
<strong>IPP</strong> : 1 5<br />
len<br />
scaleFactor<br />
<br />
2 <br />
<br />
ippsPhase pSrc pDst <br />
(- π, π] <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Phase<br />
2 <br />
<br />
3 <br />
<br />
IppStatus ippsPhase_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsPhase_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsPhase_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsPhase_16s32f(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp32f* pDst, int len);<br />
<br />
pSrcRe<br />
pSrcIm<br />
pDst<br />
<br />
<br />
( ) <br />
(- π, π] <br />
5-47
<strong>IPP</strong> : 1 5<br />
len<br />
scaleFactor<br />
<br />
2 <br />
<br />
ippsPhase pSrcRe <br />
pSrcIm <br />
pDst (- π, π] <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcRepSrcIm pDst NULL<br />
len <br />
PowerSpectr<br />
2 <br />
<br />
IppStatus ippsPowerSpectr_64fc(const Ipp64fc* pSrc, Ipp64f* pDst, int len);<br />
IppStatus ippsPowerSpectr_32fc(const Ipp32fc* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsPowerSpectr_16sc_Sfs(const Ipp16sc* pSrc, Ipp16s* pDst,<br />
int len, int scaleFactor);<br />
IppStatus ippsPowerSpectr_16sc32f(const Ipp16sc* pSrc, Ipp32f* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
2 <br />
5-48
<strong>IPP</strong> : 1 5<br />
<br />
ippsPowerSpectr pSrc <br />
pDst 2 <br />
<br />
pDst[n] = (pSrc[n].re) 2 + (pSrc[n].im) 2<br />
5-44 ippsMagnitude <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
PowerSpectr<br />
2 <br />
<br />
3 <br />
<br />
IppStatus ippsPowerSpectr_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDst, int len);<br />
IppStatus ippsPowerSpectr_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDst, int len);<br />
IppStatus ippsPowerSpectr_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDst, int len, int scaleFactor);<br />
IppStatus ippsPowerSpectr_16s32f(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp32f* pDst, int len);<br />
5-49
<strong>IPP</strong> : 1 5<br />
<br />
pSrcRe<br />
pSrcIm<br />
pDst<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
ippsPowerSpectr pSrcRe <br />
pSrcIm <br />
pDst <br />
2 <br />
pDst[n] = (pSrcRe[n]) 2 + (pSrcIm[n]) 2<br />
5-44 ippsMagnitude <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcRepSrcIm pDst NULL<br />
len <br />
5-50
<strong>IPP</strong> : 1 5<br />
Real<br />
2 <br />
<br />
IppStatus ippsReal_64fc(const Ipp64fc* pSrc, Ipp64f* pDstRe, int len);<br />
IppStatus ippsReal_32fc(const Ipp32fc* pSrc, Ipp32f* pDstRe, int len);<br />
IppStatus ippsReal_16sc(const Ipp16sc* pSrc, Ipp16s* pDstRe, int len);<br />
<br />
pSrc<br />
pDstRe<br />
len<br />
<br />
<br />
<br />
<br />
ippsReal pSrc pDstRe <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
Imag<br />
2 <br />
<br />
IppStatus ippsImag_64fc(const Ipp64fc* pSrc, Ipp64f* pDstIm, int len);<br />
IppStatus ippsImag_32fc(const Ipp32fc* pSrc, Ipp32f* pDstIm, int len);<br />
IppStatus ippsImag_16sc(const Ipp16sc* pSrc, Ipp16s* pDstIm, int len);<br />
5-51
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pDstIm<br />
len<br />
<br />
<br />
<br />
<br />
ippsImag pSrc pDstIm <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
RealToCplx<br />
2 <br />
<br />
IppStatus ippsRealToCplx_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64fc* pDst, int len);<br />
IppStatus ippsRealToCplx_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32fc* pDst, int len);<br />
IppStatus ippsRealToCplx_16s(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16sc* pDst, int len);<br />
<br />
pSrcRe<br />
pSrcIm<br />
pDst<br />
len<br />
<br />
<br />
<br />
<br />
5-52
<strong>IPP</strong> : 1 5<br />
<br />
ippsRealToCplx 2 pSrcRe pSrcIm <br />
pDst <br />
pSrcRe NULL <br />
pSrcIm NULL <br />
NULL <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst NULL pSrcRe <br />
pSrcIm NULL <br />
len <br />
CplxToReal<br />
2 <br />
<br />
IppStatus ippsCplxToReal_64fc(const Ipp64fc* pSrc, Ipp64f* pDstRe,<br />
Ipp64f* pDstIm, int len);<br />
IppStatus ippsCplxToReal_32fc(const Ipp32fc* pSrc, Ipp32f* pDstRe,<br />
Ipp32f* pDstIm, int len);<br />
IppStatus ippsCplxToReal_16sc(const Ipp16sc* pSrc, Ipp16s* pDstRe,<br />
Ipp16s* pDstIm, int len);<br />
<br />
pSrc<br />
pDstRe<br />
pDstIm<br />
len<br />
pSrc <br />
<br />
<br />
<br />
5-53
<strong>IPP</strong> : 1 5<br />
<br />
ippsCplxToReal pSrc 2 <br />
pDstRe pDstIm <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
len <br />
Threshold<br />
level <br />
<br />
IppStatus ippsThreshold_32f_I(Ipp32f* pSrcDst, int len,<br />
Ipp32f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_32fc_I(Ipp32fc* pSrcDst, int len,<br />
Ipp32f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_64f_I(Ipp64f* pSrcDst, int len,<br />
Ipp64f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_64fc_I(Ipp64fc* pSrcDst, int len,<br />
Ipp64f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_16s_I(Ipp16s* pSrcDst, int len,<br />
Ipp16s level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_16sc_I(Ipp16sc* pSrcDst, int len,<br />
Ipp16s level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
Ipp32f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
Ipp64f level, IppThreshCmp relOp);<br />
5-54
<strong>IPP</strong> : 1 5<br />
IppStatus ippsThreshold_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len,<br />
Ipp64f level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
Ipp16s level, IppThreshCmp relOp);<br />
IppStatus ippsThreshold_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
Ipp16s level, IppThreshCmp relOp);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
level<br />
relOp<br />
<br />
<br />
<br />
<br />
<br />
pSrc pSrcDst <br />
<br />
<br />
level <br />
relOp <br />
<br />
ippCmpLess level <br />
<br />
ippCmpGreater level <br />
<br />
5-55
<strong>IPP</strong> : 1 5<br />
<br />
ippsThreshold level pSrc <br />
<br />
ippsThreshold level <br />
pSrcDst <br />
relOp <br />
level ippCmpLess<br />
ippsThreshold <br />
pDst[ n]<br />
=<br />
level,pSrc[ n] < level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold level ippCmpLess<br />
ippsThreshold <br />
pDst[ n]<br />
⎧pSrc -------------------------, [ n] ⋅ level<br />
abs( pSrc[ n]<br />
)<br />
abs ( pSrc [ n ]) < level<br />
⎪<br />
= ⎨<br />
⎪pSrc[ n] , otherwise<br />
⎩<br />
<br />
level <br />
<br />
<br />
ippsThreshold <br />
<br />
(ippCmpLess <br />
) ( +Inf<br />
-Inf) (ippCmpGreater ) <br />
“ ” ippsThreshold_16sc_I 5-13 <br />
<br />
5-12 “ ” ippsTreshold_16s_I <br />
5-56
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpDst pSrcDst NULL<br />
len <br />
ippStsThreshNegLevelErr<br />
level <br />
5-12<br />
ippsThreshold <br />
IppStatus threshold( void ) {<br />
Ipp16s x[4] = { -1, 0, 2, 3 };<br />
IppStatus st = ippsThreshold_16s_I( x, 4, 2, ippCmpLess );<br />
printf_16s("threshold result =", x, 4, st );<br />
return st;<br />
}<br />
Output:<br />
threshold result = 2 2 2 3<br />
5-57
<strong>IPP</strong> : 1 5<br />
5-13<br />
ippsThreshold <br />
IppStatus cmplx_threshold(void) {<br />
Ipp16sc x[4] = {{2,3}, {3,3}, {4,3}, {4,2}};<br />
/// level is near to the point {2,3} = 3.6<br />
/// the point {2,3} is to be replaced<br />
/// the <strong>com</strong>puted coordinates are {2.2188,3.3282}<br />
/// the point used is {3,4};<br />
/// notice that it is the point with the phase,<br />
/// nearest to the source<br />
IppStatus st = ippsThreshold_16sc_I(x, 4, 4, ippCmpLess);<br />
printf_16sc("<strong>com</strong>plex threshold result =", x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
<strong>com</strong>plex threshold result = {3, 4} {3, 3} {4, 3} {4, 2}<br />
Threshold_LTThreshold_GT<br />
level <br />
<br />
IppStatus ippsThreshold_LT_32f_I(Ipp32f* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_LT_32fc_I(Ipp32fc* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_LT_64f_I(Ipp64f* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_LT_64fc_I(Ipp64fc* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_LT_16s_I(Ipp16s* pSrcDst, int len, Ipp16s level);<br />
IppStatus ippsThreshold_LT_16sc_I(Ipp16sc* pSrcDst, int len, Ipp16s level);<br />
IppStatus ippsThreshold_LT_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f level);<br />
5-58
<strong>IPP</strong> : 1 5<br />
IppStatus ippsThreshold_LT_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
Ipp32f level);<br />
IppStatus ippsThreshold_LT_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
Ipp64f level);<br />
IppStatus ippsThreshold_LT_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len,<br />
Ipp64f level);<br />
IppStatus ippsThreshold_LT_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
Ipp16s level);<br />
IppStatus ippsThreshold_LT_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
Ipp16s level);<br />
IppStatus ippsThreshold_GT_32f_I(Ipp32f* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_GT_32fc_I(Ipp32fc* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_GT_64f_I(Ipp64f* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_GT_64fc_I(Ipp64fc* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_GT_16s_I(Ipp16s* pSrcDst, int len, Ipp16s level);<br />
IppStatus ippsThreshold_GT_16sc_I(Ipp16sc* pSrcDst, int len, Ipp16s level);<br />
IppStatus ippsThreshold_GT_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f level);<br />
IppStatus ippsThreshold_GT_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
Ipp32f level);<br />
IppStatus ippsThreshold_GT_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
Ipp64f level);<br />
IppStatus ippsThreshold_GT_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len,<br />
Ipp64f level);<br />
IppStatus ippsThreshold_GT_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
Ipp16s level);<br />
IppStatus ippsThreshold_GT_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
Ipp16s level);<br />
5-59
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
level<br />
<br />
<br />
<br />
<br />
<br />
pSrc pSrcDst <br />
<br />
<br />
<br />
level pSrc <br />
<br />
level pSrcDst <br />
<br />
ippsThreshold_LTippsThreshold_LT <br />
level ippsThresholdLT <br />
<br />
pDst[ n]<br />
=<br />
level,pSrc[ n] < level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_LT level <br />
ippsThreshold_LT <br />
pDst[ n]<br />
⎧pSrc -------------------------, [ n] ⋅ level<br />
abs( pSrc[ n]<br />
)<br />
abs ( pSrc [ n ]) < level<br />
⎪<br />
= ⎨<br />
⎪pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_GT ippsThreshold_GT <br />
level <br />
ippsThreshold_GT <br />
pDst[ n]<br />
=<br />
level,pSrc[ n] > level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_GT level <br />
5-60
<strong>IPP</strong> : 1 5<br />
ippsThreshold_GT <br />
pDst[ n]<br />
<br />
level <br />
<br />
<br />
<br />
<br />
(ippsThreshold_LT ) <br />
( +Inf -Inf)<br />
(ippsThreshold_GT ) <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
⎧pSrc[ n] ⋅ level<br />
⎪<br />
-------------------------, abs( pSrc[ n]<br />
)<br />
abs ( pSrc [ n ]) > level<br />
= ⎨<br />
⎪pSrc[ n] , otherwise<br />
⎩<br />
<br />
pSrcpDst pSrcDst NULL<br />
len <br />
ippStsThreshNegLevelErr<br />
level <br />
5-61
<strong>IPP</strong> : 1 5<br />
Threshold_LTValThreshold_GTVal<br />
level <br />
<br />
IppStatus ippsThreshold_LTVal_32f_I(Ipp32f* pSrcDst, int len, Ipp32f level,<br />
Ipp32f value);<br />
IppStatus ippsThreshold_LTVal_32fc_I(Ipp32fc* pSrcDst, int len, Ipp32f level,<br />
Ipp32fc value);<br />
IppStatus ippsThreshold_LTVal_64f_I(Ipp64f* pSrcDst, int len, Ipp64f level,<br />
Ipp64f value);<br />
IppStatus ippsThreshold_LTVal_64fc_I(Ipp64fc* pSrcDst, int len, Ipp64f level,<br />
Ipp64fc value);<br />
IppStatus ippsThreshold_LTVal_16s_I(Ipp16s* pSrcDst, int len, Ipp16s level,<br />
Ipp16s value);<br />
IppStatus ippsThreshold_LTVal_16sc_I(Ipp16sc* pSrcDst, int len, Ipp16s level,<br />
Ipp16sc value);<br />
IppStatus ippsThreshold_LTVal_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len, Ipp32f level, Ipp32f value);<br />
IppStatus ippsThreshold_LTVal_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len, Ipp32f level, Ipp32fc value);<br />
IppStatus ippsThreshold_LTVal_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
int len, Ipp64f level, Ipp64f value);<br />
IppStatus ippsThreshold_LTVal_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
int len, Ipp64f level, Ipp64fc value);<br />
IppStatus ippsThreshold_LTVal_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, Ipp16s level, Ipp16s value);<br />
IppStatus ippsThreshold_LTVal_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, Ipp16s level, Ipp16sc value);<br />
IppStatus ippsThreshold_GTVal_32f_I(Ipp32f* pSrcDst, int len, Ipp32f level,<br />
Ipp32f value);<br />
IppStatus ippsThreshold_GTVal_32fc_I(Ipp32fc* pSrcDst, int len, Ipp32f level,<br />
Ipp32fc value);<br />
IppStatus ippsThreshold_GTVal_64f_I(Ipp64f* pSrcDst, int len, Ipp64f level,<br />
Ipp64f value);<br />
5-62
<strong>IPP</strong> : 1 5<br />
IppStatus ippsThreshold_GTVal_64fc_I(Ipp64fc* pSrcDst, int len, Ipp64f level,<br />
Ipp64fc value);<br />
IppStatus ippsThreshold_GTVal_16s_I(Ipp16s* pSrcDst, int len, Ipp16s level,<br />
Ipp16s value);<br />
IppStatus ippsThreshold_GTVal_16sc_I(Ipp16sc* pSrcDst, int len, Ipp16s level,<br />
Ipp16sc value);<br />
IppStatus ippsThreshold_GTVal_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f level, Ipp32f value);<br />
IppStatus ippsThreshold_GTVal_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len, Ipp32f level, Ipp32fc value);<br />
IppStatus ippsThreshold_GTVal_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
int len, Ipp64f level, Ipp64f value);<br />
IppStatus ippsThreshold_GTVal_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
int len, Ipp64f level, Ipp64fc value);<br />
IppStatus ippsThreshold_GTVal_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, Ipp16s level, Ipp16s value);<br />
IppStatus ippsThreshold_GTVal_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, Ipp16s level, Ipp16sc value);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
level<br />
value<br />
<br />
<br />
<br />
<br />
<br />
pSrc pSrcDst <br />
<br />
<br />
level <br />
5-63
<strong>IPP</strong> : 1 5<br />
<br />
level pSrc <br />
<br />
level pSrcDst <br />
<br />
ippsThreshold_LTValippsThreshold_LTVal <br />
level level value <br />
<br />
ippsThreshold_LTVal <br />
pDst[ n]<br />
=<br />
value,pSrc[ n] < level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_LTVal level <br />
ippsThreshold_LTVal <br />
pDst[ n]<br />
=<br />
value, abs( pSrc[ n]<br />
) < level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_GTValippsThreshold_GTVal <br />
level level value <br />
<br />
ippsThreshold_GtVal <br />
pDst[ n]<br />
=<br />
value,pSrc[ n] > level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
ippsThreshold_GTVal level <br />
ippsThreshold_GTVal <br />
pDst[ n]<br />
=<br />
value, abs( pSrc[ n]<br />
) > level<br />
⎧<br />
⎨pSrc[ n] , otherwise<br />
⎩<br />
5-64
<strong>IPP</strong> : 1 5<br />
<br />
level <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpDst pSrcDst NULL<br />
len <br />
ippStsThreshNegLevelErr<br />
level <br />
Threshold_LTInv<br />
level <br />
<br />
<br />
IppStatus ippsThreshold_LTInv_32f_I(Ipp32f* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_LTInv_32fc_I(Ipp32fc* pSrcDst, int len, Ipp32f level);<br />
IppStatus ippsThreshold_LTInv_64f_I(Ipp64f* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_LTInv_64fc_I(Ipp64fc* pSrcDst, int len, Ipp64f level);<br />
IppStatus ippsThreshold_LTInv_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
Ipp32f level);<br />
IppStatus ippsThreshold_LTInv_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len, Ipp32f level);<br />
IppStatus ippsThreshold_LTInv_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
Ipp64f level);<br />
IppStatus ippsThreshold_LTInv_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
int len, Ipp64f level);<br />
5-65
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
level<br />
<br />
<br />
<br />
<br />
<br />
pSrc pSrcDst <br />
<br />
<br />
ippsThreshold_LTInv pSrc pDst<br />
level <br />
<br />
ippsThreshold_LTInv pSrcDst <br />
pSrcDst level<br />
<br />
level <br />
ippsThreshold_LTInv <br />
<br />
pDst[ n]<br />
=<br />
1<br />
⎧----------, abs( pSrc[ n]<br />
) = 0<br />
⎪level<br />
⎪<br />
⎪ abs( pSrc[ n]<br />
)<br />
-------------------------, 0 < abs( pSrc[ n]<br />
) < level<br />
⎨pSrc[ n] ⋅ level<br />
⎪<br />
⎪ 1<br />
⎪------------------------ , otherwise<br />
pSrc[ n]<br />
⎩<br />
level Inf<br />
( ) <br />
pDst[ n]<br />
⎧Inf,pSrc[ n] = 0<br />
⎪<br />
= ⎨<br />
1<br />
------------------------ , otherwise<br />
⎪pSrc[ n]<br />
⎩<br />
5-14 ippsThreshold_LTInv_32f_I <br />
5-66
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpDst pSrcDst NULL<br />
len <br />
ippStsThreshNegLevelErr<br />
level <br />
ippStsInvZero<br />
level <br />
<br />
Inf <br />
5-14<br />
ippsThreshold_LTInv <br />
IppStatus invThreshold(void) {<br />
Ipp32f x[4] = {-1, 0, 2, 3};<br />
IppStatus st = ippsThreshold_LTInv_32f_I(x, 4, 0);<br />
printf_32f("inv threshold =", x, 4, st);<br />
return st;<br />
}<br />
Output:<br />
-- warning 4, INF result. Zero value met by invThreshold with zero level<br />
inv threshold = -1.000000 1.#INF00 0.500000 0.333333<br />
5-67
<strong>IPP</strong> : 1 5<br />
CartToPolar<br />
<br />
IppStatus ippsCartToPolar_32fc(const Ipp32fc* pSrc, Ipp32f* pDstMagn,<br />
Ipp32f* pDstPhase, int len);<br />
IppStatus ippsCartToPolar_64fc(const Ipp64fc* pSrc, Ipp64f* pDstMagn,<br />
Ipp64f* pDstPhase, int len);<br />
<br />
pSrc<br />
pDstMagn<br />
pDstPhase<br />
len<br />
<br />
pSrc ()<br />
<br />
pSrc ( )<br />
(- π, π] <br />
<br />
<br />
ippsCartToPolar pSrc <br />
( ) pDstMagn ( ) <br />
pDstPhase <br />
5-15 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpDstMagn pDstPhase <br />
NULL<br />
len <br />
5-68
<strong>IPP</strong> : 1 5<br />
5-15 ippsCartToPolar <br />
IppStatus cart2polar( void ) {<br />
Ipp64f cart[6], magn[4], phase[4];<br />
int n;<br />
for (n=0; n
<strong>IPP</strong> : 1 5<br />
<br />
pSrcRe<br />
pSrcIm<br />
pDstMagn<br />
pDstPhase<br />
len<br />
X/Y <br />
<br />
X/Y <br />
<br />
( ) <br />
<br />
()<br />
(- π, π] <br />
<br />
<br />
ippsCartToPolar pSrcRe pSrcIm <br />
/ ( X/Y) ( ) <br />
pDstMagn ( ) pDstPhase <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcRepSrcImpDstMagn<br />
pDstPhase NULL<br />
len <br />
PolarToCart<br />
<br />
/ <br />
<br />
IppStatus ippsPolarToCart_32fc(const Ipp32f* pSrcMagn,<br />
const Ipp32f* pSrcPhase, Ipp32fc* pDst, int len);<br />
IppStatus ippsPolarToCart_64fc(const Ipp64f* pSrcMagn,<br />
const Ipp64f* pSrcPhase, Ipp64fc* pDst, int len);<br />
5-70
<strong>IPP</strong> : 1 5<br />
<br />
pSrcMagn<br />
pSrcPhase<br />
pDst<br />
len<br />
( ) <br />
( ) <br />
<br />
()()<br />
<br />
<br />
<br />
ippsPolarToCart pSrcMagn pSrcPhase <br />
/ pDst <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcMagnpSrcPhase pDst <br />
NULL<br />
len <br />
PolarToCart<br />
<br />
/ <br />
IppStatus ippsPolarToCart_32f(const Ipp32f* pSrcMagn, const Ipp32f* pSrcPhase,<br />
Ipp32f* pDstRe, Ipp32f* pDstIm, int len);<br />
IppStatus ippsPolarToCart_64f(const Ipp64f* pSrcMagn, const Ipp64f* pSrcPhase,<br />
Ipp64f* pDstRe, Ipp64f* pDstIm, int len);<br />
5-71
<strong>IPP</strong> : 1 5<br />
<br />
pSrcMagn<br />
pSrcPhase<br />
pDstRe<br />
pDstIm<br />
len<br />
( )<br />
<br />
( ) <br />
(- π, π] <br />
X/Y <br />
<br />
X/Y <br />
<br />
<br />
<br />
ippsPolarToCart pSrcMagn pSrcPhase <br />
/ <br />
pDstRe pDstIm <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcMagnpSrcPhasepDstRe<br />
pDstIm NULL<br />
len <br />
MaxOrder<br />
<br />
IppStatus ippsMaxOrder_64f(const Ipp64f* pSrc, int len, int* pOrder);<br />
IppStatus ippsMaxOrder_32f(const Ipp32f* pSrc, int len, int* pOrder);<br />
IppStatus ippsMaxOrder_32s(const Ipp32s* pSrc, int len, int* pOrder);<br />
IppStatus ippsMaxOrder_16s(const Ipp16s* pSrc, int len, int* pOrder);<br />
5-72
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
len<br />
pOrder<br />
<br />
<br />
<br />
<br />
ippsMaxOrder pSrc <br />
pOrder <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsNanArg<br />
<br />
pSrc pOrder NULL<br />
len <br />
NaN <br />
Preemphasize<br />
<br />
( )<br />
IppStatus ippsPreemphasize_32f(Ipp32f* pSrcDst, int len, Ipp32f val);<br />
<br />
pSrcDst<br />
len<br />
val<br />
<br />
<br />
<br />
<br />
5-73
<strong>IPP</strong> : 1 5<br />
<br />
ippsPreemphasize( ) pSrcDst <br />
<br />
y(n) = x(n) - val ⋅ x(n - 1),<br />
y(n) x(n) val <br />
val = 0.95 0 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDst NULL<br />
len <br />
<br />
( ) <br />
[Rab78] <br />
<br />
<strong>IPP</strong> <br />
• 8 µ-lawPCM(<br />
)<br />
• 8Α-lawPCM(<br />
)<br />
• 8 µ-lawΑ-law<br />
( )<br />
µ-law A-law <br />
S/N <br />
<br />
<br />
[-1; +1] <br />
CCITT G.711([CCITT]) µ-law Α-law <br />
[CCITT] <br />
5-16 <br />
5-74
<strong>IPP</strong> : 1 5<br />
MuLawToLin<br />
8 µ-law <br />
<br />
IppStatus ippsMuLawToLin_8u32f(const Ipp8u* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsMuLawToLin_8u16s(const Ipp8u* pSrc, Ipp16s* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
8 µ-law <br />
<br />
<br />
<br />
<br />
<br />
ippsMuLawToLin pSrc 8 µ-law <br />
PCM pDst <br />
µ-law <br />
Cµ ( x ) ln( 1 + 255 ⋅ x )<br />
= -------------------------------------- ⋅<br />
ln( 256)<br />
128 , – 1 ≤x ≤1<br />
x C µ (x) µ-law <br />
<br />
<br />
<br />
5-75
<strong>IPP</strong> : 1 5<br />
<br />
<br />
µ-law CCITT G.711 <br />
2a/G.711 2b/G.711 <br />
G.711 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
LinToMuLaw<br />
8 µ-law <br />
<br />
IppStatus ippsLinToMuLaw_32f8u(const Ipp32f* pSrc, Ipp8u* pDst, int len);<br />
IppStatus ippsLinToMuLaw_16s8u(const Ipp16s* pSrc, Ipp8u* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
(1.0 ) <br />
<br />
ippsLinToMuLaw <br />
<br />
<br />
ippsLinToMuLaw pSrc PCM 8 µ-law <br />
pDst <br />
5-16 ippsLinToMuLaw_32f8u <br />
5-76
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
ALawToLin<br />
8 Α-law <br />
<br />
IppStatus ippsALawToLin_8u32f(const Ipp8u* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsALawToLin_8u16s(const Ipp8u* pSrc, Ipp16s* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
<br />
ippsALawToLin <br />
<br />
<br />
ippsALawToLin pSrc 8 Α-law <br />
PCM pDst <br />
Α-law <br />
C A<br />
( x)<br />
⎧ 87.56 x<br />
1 --------------------------- + ln87.56<br />
⋅ 128<br />
1<br />
⎪<br />
, 0 ≤ x ≤ ------------<br />
⎪<br />
87.56<br />
= ⎨<br />
⎪ --------------------------------------- 1+<br />
ln( 87.56 x )<br />
,<br />
1+<br />
ln87.56<br />
⋅ 128<br />
1<br />
⎪<br />
, 87.56<br />
------------ < x ≤ 1<br />
⎩<br />
x C Α (x) Α-law <br />
<br />
<br />
<br />
5-77
<strong>IPP</strong> : 1 5<br />
<br />
<br />
Α-law CCITT G.711 <br />
1a/G.711 1b/G.711 <br />
G.711 <br />
5-16 ippsALawToLin_8u32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
LinToALaw<br />
8 A-law <br />
<br />
IppStatus ippsLinToALaw_32f8u(const Ipp32f* pSrc, Ipp8u* pDst, int len);<br />
IppStatus ippsLinToALaw_16s8u(const Ipp16s* pSrc, Ipp8u* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
<br />
ippsLinToALaw <br />
<br />
<br />
ippsLinToALaw pSrc PCM 8 Α-law <br />
pDst <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-78
<strong>IPP</strong> : 1 5<br />
MuLawToALaw<br />
8 µ-law <br />
8 A-law <br />
<br />
IppStatus ippsMuLawToALaw_8u(const Ipp8u* pSrc, Ipp8u* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
8 µ-law <br />
<br />
8 Α-law <br />
<br />
<br />
<br />
ippsMuLawToALaw pSrc 8 µ-law <br />
8 A-law <br />
pDst <br />
<br />
µ-law A-law CCITT G.711 <br />
3/G.711 G.711 <br />
5-16 ippsMuLawToALaw_8u <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-79
<strong>IPP</strong> : 1 5<br />
ALawToMuLaw<br />
8 A-law <br />
8 µ-law <br />
<br />
IppStatus ippsALawToMuLaw_8u(const Ipp8u* pSrc, Ipp8u* pDst, int len);<br />
pSrc<br />
pDst<br />
len<br />
8 Α-law <br />
<br />
8 µ-law <br />
<br />
<br />
<br />
ippsMuLawToALaw pSrc 8 Α-law <br />
8 µ-law <br />
pDst <br />
<br />
Α-law µ-law CCITT G.711 <br />
4/G.711 G.711 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len <br />
5-80
<strong>IPP</strong> : 1 5<br />
5-16<br />
<br />
void <strong>com</strong>pand( void ) {<br />
Ipp32f x[4] = { 0.1f, 0.2f, 0.3f, 0.4f };<br />
Ipp8u m[4], a[4];<br />
ippsLinToMuLaw_32f8u( x, m, 4 );<br />
ippsMuLawToALaw_8u( m, a, 4 );<br />
ippsALawToLin_8u32f( a, x, 4 );<br />
// now x must be close to original<br />
printf_32f("x =", x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
x = 0.099609 0.207031 0.304688 0.398438<br />
(Window) <br />
(Window) (Window) <br />
<br />
(Window) FFT <br />
(Window) <br />
<strong>IPP</strong> (Window) <br />
• Bartlett (Window) <br />
• Blackman( ) (Window) <br />
• Hamming( ) (Window) <br />
• Hann( ) (Window) <br />
• Kaiser (Window) <br />
(Window) <br />
(Window) (Window) <br />
<br />
5-81
<strong>IPP</strong> : 1 5<br />
(Window) <br />
1.0 (Window) 1 ( ippsWinHann) <br />
(Window) <br />
1 ( ippsMul) <br />
(Window) (Window) <br />
5-17 <br />
5-17<br />
(Window) FFT <br />
void multiFrameWin( void ) {<br />
Ipp32f win[LEN], x[LEN], X[LEN];<br />
IppsFFTSpec_R_32f* ctx;<br />
ippsSet_32f( 1, win, LEN );<br />
ippsWinHann_32f_I( win, LEN );<br />
/// ... initialize FFT context<br />
while(1 ){<br />
/// ... get x signal<br />
///<br />
ippsMul_32f_I( win, x, LEN );<br />
ippsFFTFwd_RToPack_32f( x, X, ctx, 0 );<br />
}<br />
}<br />
<br />
(Window) [Jac89] 7.3 Windows in Spectrum Analysis[Jac89] 9.1 <br />
Window-Function Technique [Mit93] 16-2 Fourier Analysis of Finite-Time<br />
Signals<br />
<br />
5-82
<strong>IPP</strong> : 1 5<br />
WinBartlett<br />
Bartlett (Window) <br />
IppStatus ippsWinBartlett_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsWinBartlett_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsWinBartlett_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsWinBartlett_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsWinBartlett_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len);<br />
IppStatus ippsWinBartlett_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len);<br />
IppStatus ippsWinBartlett_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len);<br />
IppStatus ippsWinBartlett_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsWinBartlett pSrc Bartlett( ) (Window) <br />
pDst <br />
ippsWinBartlett pSrcDst Bartlett( ) <br />
(Window) pSrcDst <br />
(Window) <br />
5-83
<strong>IPP</strong> : 1 5<br />
Bartlett (Window) <br />
w bartlett ( n)<br />
2n<br />
⎧ -------------------- ,<br />
len – 1<br />
0 ≤ n ≤ --------------------<br />
len – 1<br />
⎪<br />
2<br />
= ⎨<br />
⎪ 2n len – 1<br />
2 – -------------------- --------------------<br />
⎩<br />
,<br />
< n≤<br />
len–<br />
1<br />
len – 1 2<br />
5-18 ippsWinBartlett_32f_I <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len 3 <br />
5-18<br />
ippsWinBartlett <br />
void bartlett(void) {<br />
Ipp32f x[8];<br />
ippsSet_32f(1, x, 8);<br />
ippsWinBartlett_32f_I(x, 8);<br />
printf_32f(“bartlett (half) =”, x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
bartlett (half) = 0.000000 0.285714 0.571429 0.857143<br />
Matlab* Analog:<br />
>> b = bartlett(8); b(1:4)'<br />
5-84
<strong>IPP</strong> : 1 5<br />
WinBlackman<br />
Blackman( ) (Window)<br />
<br />
IppStatus ippsWinBlackmanQ15_16s_I(Ipp16s* pSrcDst, int len,<br />
int alphaQ15);<br />
IppStatus ippsWinBlackmanQ15_16sc_I(Ipp16sc* pSrcDst, int len,<br />
int alphaQ15);<br />
IppStatus ippsWinBlackman_16s_I(Ipp16s* pSrcDst, int len,<br />
float alpha);<br />
IppStatus ippsWinBlackman_16sc_I(Ipp16sc* pSrcDst, int len,<br />
float alpha);<br />
IppStatus ippsWinBlackman_32f_I(Ipp32f* pSrcDst, int len,<br />
float alpha);<br />
IppStatus ippsWinBlackman_32fc_I(Ipp32fc* pSrcDst, int len,<br />
float alpha);<br />
IppStatus ippsWinBlackmanQ15_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, int alphaQ15);<br />
IppStatus ippsWinBlackmanQ15_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, int alphaQ15);<br />
IppStatus ippsWinBlackman_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, float alpha);<br />
IppStatus ippsWinBlackman_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len, float alpha);<br />
IppStatus ippsWinBlackman_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len, float alpha);<br />
IppStatus ippsWinBlackman_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len, float alpha);<br />
IppStatus ippsWinBlackmanStd_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanStd_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanStd_32f_I(Ipp32f* pSrcDst, int len);<br />
5-85
<strong>IPP</strong> : 1 5<br />
IppStatus ippsWinBlackmanStd_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanStd_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
IppStatus ippsWinBlackmanStd_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len);<br />
IppStatus ippsWinBlackmanStd_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len);<br />
IppStatus ippsWinBlackmanStd_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len);<br />
IppStatus ippsWinBlackmanOpt_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanOpt_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanOpt_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanOpt_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsWinBlackmanOpt_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
IppStatus ippsWinBlackmanOpt_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int len);<br />
IppStatus ippsWinBlackmanOpt_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len);<br />
IppStatus ippsWinBlackmanOpt_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
alpha<br />
alphaQ15<br />
len<br />
<br />
<br />
<br />
<br />
Blackman window <br />
alpha scaleFactor 15<br />
<br />
5-86
<strong>IPP</strong> : 1 5<br />
<br />
ippsWinBlackman pSrc Blackman( )<br />
(Window) pDst <br />
ippsWinBlackman pSrcDst <br />
Blackman( ) (Window) pSrcDst <br />
(Window) <br />
Blackman( ) (Window) <br />
ippsWinBlackman ippsWinBlackman alpha<br />
Blackman( ) (Window) <br />
w blackman ( n)<br />
=<br />
alpha + 1<br />
2πn<br />
----------------------------- 0.5<br />
2<br />
cos --------------------<br />
⎝<br />
⎛ len – 1⎠<br />
⎞ alpha 4πn<br />
–<br />
– -------------------<br />
2<br />
cos --------------------<br />
⎝<br />
⎛ len – 1⎠<br />
⎞<br />
ippsWinBlackmanQ15 ippsWinBlackmanQ15 alphaQ15( <br />
15) Blackman( ) (Window) <br />
ippsWinBlackmanStd Blackman( ) (Window) <br />
ippsWinBlackmanStd alpha <br />
Blackman( ) (Window) <br />
alpha = -0.16<br />
ippsWinBlackmanOpt ippsWinBlackmanOpt alpha <br />
Blackman( ) (Window) 30dB/ <br />
Window <br />
0.5<br />
alpha = –---------------------------------------<br />
2π<br />
1 + cos --------------------<br />
len – 1<br />
len 4 len alpha alpha <br />
alpha <br />
alpha = -0.25<br />
5-19 ippsWinBlackmanStd_32f_I <br />
5-87
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len ippsWinBalckmanOpt 4 <br />
3<br />
<br />
5-19<br />
ippsWinBlackmanStd <br />
void blackman(void) {<br />
Ipp32f x[8];<br />
ippsSet_32f(1, x, 8);<br />
ippsWinBlackmanStd_32f_I(x, 8);<br />
printf_32f(“blackman (half) =”, x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
blackman(half) = 0.000000 0.090453 0.459183 0.920364<br />
Matlab* Analog:<br />
>> b = blackman(8)'; b(1:4)<br />
WinHamming<br />
Hamming( ) (Window) <br />
<br />
IppStatus ippsWinHamming_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsWinHamming_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsWinHamming_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsWinHamming_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsWinHamming_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
IppStatus ippsWinHamming_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len);<br />
5-88
<strong>IPP</strong> : 1 5<br />
IppStatus ippsWinHamming_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsWinHamming_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsWinHamming pSrc Hamming( ) (Window) <br />
pDst <br />
ippsWinHamming pSrcDst Hamming( ) <br />
(Window) pSrcDst <br />
(Window) <br />
Hamming( ) (Window) <br />
2πn<br />
w hamming ( n) = 0.54 – 0.46 cos --------------------<br />
⎝<br />
⎛ len – 1⎠<br />
⎞<br />
5-20 ippsWinHamming_32f_I <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len 3 <br />
5-89
<strong>IPP</strong> : 1 5<br />
5-20<br />
ippsWinHamming <br />
void hamming(void) {<br />
Ipp32f x[8];<br />
ippsSet_32f(1, x, 8);<br />
ippsWinHamming_32f_I(x, 8);<br />
printf_32f(“hamming(half) =”, x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
hamming(half) = 0.080000 0.253195 0.642360 0.954446<br />
Matlab* Analog:<br />
>> b = hamming(8); b(1:4)'<br />
WinHann<br />
Hann( ) (Window) <br />
<br />
IppStatus ippsWinHann_16s_I(Ipp16s* pSrcDst, int len);<br />
IppStatus ippsWinHann_16sc_I(Ipp16sc* pSrcDst, int len);<br />
IppStatus ippsWinHann_32f_I(Ipp32f* pSrcDst, int len);<br />
IppStatus ippsWinHann_32fc_I(Ipp32fc* pSrcDst, int len);<br />
IppStatus ippsWinHann_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len);<br />
IppStatus ippsWinHann_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len);<br />
IppStatus ippsWinHann_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsWinHann_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len);<br />
5-90
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsWinHann pSrc Hann( ) (Window) <br />
pDst <br />
ippsWinHann( ) pSrcDst Hann( ) <br />
(Window) pSrcDst <br />
(Window) <br />
Hann( ) (Window) <br />
2πn<br />
w hann ( n) = 0.5 – 0.5 cos --------------------<br />
⎝<br />
⎛ len – 1⎠<br />
⎞<br />
5-21 ippsWinHann_32f_I <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len 3 <br />
5-91
<strong>IPP</strong> : 1 5<br />
5-21<br />
ippsWinHann <br />
void hann(void) {<br />
Ipp32f x[8];<br />
ippsSet_32f(1, x, 8);<br />
ippsWinHann_32f_I(x, 8);<br />
printf_32f(“hann(half) =”, x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
hann(half) = 0.000000 0.188255 0.611260 0.950484<br />
Matlab* Analog:<br />
>> N = 8; n = 0:N-1; 0.5*(1-cos(2*pi*n/(N-1)))<br />
WinKaiser<br />
Kaiser (Window) <br />
IppStatus ippsWinKaiser_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
float alpha);<br />
IppStatus ippsWinKaiser_16s_I(Ipp16s* pSrcDst, int len, float alpha);<br />
IppStatus ippsWinKaiserQ15_16s(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
int alphaQ15);<br />
IppStatus ippsWinKaiserQ15_16s_I(Ipp16s* pSrcDst, int len, int alphaQ15);<br />
IppStatus ippsWinKaiser_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
float alpha);<br />
IppStatus ippsWinKaiser_16sc_I(Ipp16sc* pSrcDst, int len, float alpha);<br />
IppStatus ippsWinKaiserQ15_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
int alphaQ15);<br />
IppStatus ippsWinKaiserQ15_16sc_I(Ipp16sc* pSrcDst, int len, int alphaQ15);<br />
IppStatus ippsWinKaiser_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
float alpha);<br />
5-92
<strong>IPP</strong> : 1 5<br />
IppStatus ippsWinKaiser_32f_I(Ipp32f* pSrcDst, int len, float alpha);<br />
IppStatus ippsWinKaiser_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
float alpha);<br />
IppStatus ippsWinKaiser_32fc_I(Ipp32fc* pSrcDst, int len, float alpha);<br />
IppStatus ippsWinKaiser_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
float alpha);<br />
IppStatus ippsWinKaiser_64f_I(Ipp64f* pSrcDst, int len, float alpha);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
alpha<br />
alphaQ15<br />
len<br />
<br />
<br />
<br />
<br />
Kaiser window <br />
alpha scaleFactor 15<br />
<br />
<br />
ippsWinKaiser pSrc Kaiser (Window) <br />
pDst <br />
ippsWinKaiser pSrcDst Kaiser (Window) <br />
pSrcDst <br />
ippsWinKaiser ippsWinKaiser alpha <br />
(Window)<br />
Kaiser (Window) <br />
w kaiser ( n)<br />
I ⎛ len – 1<br />
0 alpha ⎛--------------------<br />
⎞ 2 ⎛ len – 1<br />
n --------------------<br />
⎝ 2 ⎠ ⎝<br />
– ⎝<br />
⎛ 2 ⎠<br />
⎞ ⎞ 2<br />
–<br />
⎞<br />
⎝<br />
⎠ ⎠<br />
= -------------------------------------------------------------------------------------------------------------------<br />
I ⎛<br />
0 alpha⎛--------------------<br />
len – 1 ⎞⎞<br />
⎝ ⎝ 2 ⎠⎠<br />
I 0 () 1 Bessel <br />
ippsWinKaiserQ15 ippsWinKaiserQ15 alphaQ15( 15)<br />
Kaiser (Window) <br />
5-22 ippsWinKaiser_32f_I <br />
5-93
<strong>IPP</strong> : 1 5<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsHugeWinErr<br />
<br />
pDstpSrc pSrcDst NULL<br />
len 1 <br />
Kaiser Window <br />
5-22<br />
ippsWinKaiser <br />
void kaiser(void) {<br />
Ipp32f x[8];<br />
IppStatus st;<br />
ippsSet_32f(1, x, 8);<br />
st = ippsWinKaiser_32f_I( x, 8, 1.0f );<br />
printf_32f("kaiser(half) =", x, 4, ippStsNoErr);<br />
}<br />
Output:<br />
kaiser(half) = 0.135534 0.429046 0.755146 0.970290<br />
Matlab* Analog:<br />
>> kaiser(8,7/2)'<br />
5-94
<strong>IPP</strong> : 1 5<br />
<br />
( ) <strong>IPP</strong> <br />
<br />
Sum<br />
<br />
IppStatus ippsSum_32f(const Ipp32f* pSrc, int len, Ipp32f* pSum);<br />
IppStatus ippsSum_64f(const Ipp64f* pSrc, int len, Ipp64f* pSum);<br />
IppStatus ippsSum_32fc(const Ipp32fc* pSrc, int len, Ipp32fc* pSum);<br />
IppStatus ippsSum_16s32s_Sfs(const Ipp16s* pSrc, int len, Ipp32s* pSum,<br />
int scaleFactor);<br />
IppStatus ippsSum_16sc32sc_Sfs(const Ipp16sc* pSrc, int len, Ipp32sc* pSum,<br />
int scaleFactor);<br />
IppStatus ippsSum_16s_Sfs(const Ipp16s* pSrc, int len, Ipp16s* pSum,<br />
int scaleFactor);<br />
IppStatus ippsSum_16sc_Sfs(const Ipp16sc* pSrc, int len, Ipp16sc* pSum,<br />
int scaleFactor);<br />
<br />
pSrc<br />
pSum<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
2 <br />
<br />
ippsSum pSrc pSum <br />
5-95
<strong>IPP</strong> : 1 5<br />
pSrc <br />
sum =<br />
len – 1<br />
∑<br />
n = 0<br />
pSrc[ n]<br />
<br />
scaleFactor <br />
<br />
5-23 ippsSum <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSum pSrc NULL<br />
len <br />
5-23<br />
ippsSum <br />
void sum(void) {<br />
Ipp16s x[4] = {-32768, 32767, 32767, 32767}, sm;<br />
ippsSum_16s_Sfs(x, 4, &sm, 1);<br />
printf_16s(“sum =”, &sm, 1, ippStsNoErr);<br />
}<br />
Output:<br />
sum = 32766<br />
Matlab* Analog:<br />
>> x = [-32768, 32767, 32767, 32767]; sum(x)/2<br />
5-96
<strong>IPP</strong> : 1 5<br />
Max<br />
<br />
IppStatus ippsMax_32f(const Ipp32f* pSrc, int len, Ipp32f* pMax);<br />
IppStatus ippsMax_64f(const Ipp64f* pSrc, int len, Ipp64f* pMax);<br />
IppStatus ippsMax_16s(const Ipp16s* pSrc, int len, Ipp16s* pMax);<br />
<br />
pSrc<br />
pMax<br />
len<br />
<br />
<br />
<br />
<br />
ippsMax pSrc pMax <br />
5-24 ippsMax_32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pMax pSrc NULL<br />
len <br />
MaxIndx<br />
<br />
<br />
IppStatus ippsMaxIndx_16s(const Ipp16s* pSrc, int len, Ipp16s* pMax,<br />
int* pIndx);<br />
IppStatus ippsMaxIndx_32f(const Ipp32f* pSrc, int len, Ipp32f* pMax,<br />
int* pIndx);<br />
5-97
<strong>IPP</strong> : 1 5<br />
IppStatus ippsMaxIndx_64f(const Ipp64f* pSrc, int len, Ipp64f* pMax,<br />
int* pIndx);<br />
<br />
pSrc<br />
pMax<br />
len<br />
pIndx<br />
<br />
<br />
<br />
<br />
<br />
ippsMaxIndx pSrc pMax <br />
pIndx NULL <br />
pIndx <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pMax pSrc NULL<br />
len <br />
Min<br />
<br />
IppStatus ippsMin_32f(const Ipp32f* pSrc, int len, Ipp32f* pMin);<br />
IppStatus ippsMin_64f(const Ipp64f* pSrc, int len, Ipp64f* pMin);<br />
IppStatus ippsMin_16s(const Ipp16s* pSrc, int len, Ipp16s* pMin);<br />
<br />
pSrc<br />
pMin<br />
len<br />
<br />
<br />
<br />
5-98
<strong>IPP</strong> : 1 5<br />
<br />
ippsMin pSrc pMin <br />
5-24 ippsMin_32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pMin pSrc NULL<br />
len <br />
MinIndx<br />
<br />
<br />
IppStatus ippsMinIndx_16s(const Ipp16s* pSrc, int len, Ipp16s* pMin,<br />
int* pIndx);<br />
IppStatus ippsMinIndx_32f(const Ipp32f* pSrc, int len, Ipp32f* pMin,<br />
int* pIndx);<br />
IppStatus ippsMinIndx_64f(const Ipp64f* pSrc, int len, Ipp64f* pMin,<br />
int* pIndx);<br />
<br />
pSrc<br />
pMin<br />
len<br />
pIndx<br />
<br />
<br />
<br />
<br />
5-99
<strong>IPP</strong> : 1 5<br />
<br />
ippsMinIndx pSrc pMin <br />
pIndx NULL <br />
pIndx <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pMin pSrc NULL<br />
len <br />
5-24<br />
ippsMin ippsMax <br />
void minmax(void) {<br />
Ipp32f *x = ippsMalloc_32f(1000), minmax[2];<br />
int i;<br />
for (i = 0; i> x = rand(1,1000); min(x), max(x)<br />
5-100
<strong>IPP</strong> : 1 5<br />
Mean<br />
<br />
IppStatus ippsMean_32f(const Ipp32f* pSrc, int len, Ipp32f* pMean);<br />
IppStatus ippsMean_32fc(const Ipp32fc* pSrc, int len, Ipp32fc* pMean);<br />
IppStatus ippsMean_64f(const Ipp64f* pSrc, int len, Ipp64f* pMean);<br />
IppStatus ippsMean_16s(const Ipp16s* pSrc, int len, Ipp16s* pMean,<br />
int scaleFactor);<br />
IppStatus ippsMean_16sc(const Ipp16sc* pSrc, int len, Ipp16sc* pMean,<br />
int scaleFactor);<br />
<br />
pSrc<br />
pMean<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
2 <br />
<br />
ippsMean pSrc pMean <br />
pSrc <br />
len – 1<br />
1<br />
mean = ----- pSrc[ n]<br />
len<br />
∑<br />
n = 0<br />
5-25 ippsMean_32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pMean pSrc NULL<br />
len <br />
5-101
<strong>IPP</strong> : 1 5<br />
5-25<br />
ippsMean <br />
void mean(void) {<br />
Ipp32f *x = ippsMalloc_32f(1000), mean;<br />
int i;<br />
for(i = 0; i> x = rand(1,1000); mean(x)<br />
StdDev<br />
<br />
IppStatus ippsStdDev_32f(const Ipp32f* pSrc, int len, Ipp32f* pStdDev);<br />
IppStatus ippsStdDev_64f(const Ipp64f* pSrc, int len, Ipp64f* pStdDev);<br />
IppStatus ippsStdDev_16s32s_Sfs(const Ipp16s* pSrc, int len,<br />
Ipp32s* pStdDev, int scaleFactor);<br />
IppStatus ippsStdDev_16s_Sfs(const Ipp16s* pSrc, int len,<br />
Ipp16s* pStdDev, int scaleFactor);<br />
5-102
<strong>IPP</strong> : 1 5<br />
<br />
pSrc<br />
pStdDev<br />
len<br />
scaleFactor<br />
<br />
<br />
<br />
2 <br />
<br />
ippsStdDev pSrc pStdDev <br />
2 pSrc <br />
<br />
stdev =<br />
len – 1<br />
∑<br />
n = 0<br />
( pSrc[ n] – mean( pSrc)<br />
) 2<br />
-------------------------------------------------<br />
len – 1<br />
5-26 ippsStdDev_32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pStdDev pSrc NULL<br />
len 1 <br />
5-103
<strong>IPP</strong> : 1 5<br />
5-26<br />
ippsStdDev <br />
void stdev(void) {<br />
Ipp32f *x = ippsMalloc_32f(1000), stdev;<br />
int i;<br />
for (i = 0; i> x = rand(1,1000); std(x)<br />
Norm<br />
CL1 L2 <br />
IppStatus ippsNorm_Inf_16s32f(const Ipp16s* pSrc, int len, Ipp32f* pNorm);<br />
IppStatus ippsNorm_Inf_16s32s_Sfs(const Ipp16s* pSrc, int len, Ipp32s* pNorm,<br />
int scaleFactor);<br />
IppStatus ippsNorm_Inf_32f(const Ipp32f* pSrc, int len, Ipp32f* pNorm);<br />
IppStatus ippsNorm_Inf_64f(const Ipp64f* pSrc, int len, Ipp64f* pNorm);<br />
IppStatus ippsNorm_L1_16s32f(const Ipp16s* pSrc, int len, Ipp32f* pNorm);<br />
IppStatus ippsNorm_L1_16s32s_Sfs(const Ipp16s* pSrc, int len, Ipp32s* pNorm,<br />
int scaleFactor);<br />
IppStatus ippsNorm_L1_32f(const Ipp32f* pSrc, int len, Ipp32f* pNorm);<br />
IppStatus ippsNorm_L1_64f(const Ipp64f* pSrc, int len, Ipp64f* pNorm);<br />
IppStatus ippsNorm_L2_16s32f(const Ipp16s* pSrc, int len, Ipp32f* pNorm);<br />
5-104
<strong>IPP</strong> : 1 5<br />
IppStatus ippsNorm_L2_16s32s_Sfs(const Ipp16s* pSrc, int len, Ipp32s* pNorm,<br />
int scaleFactor);<br />
IppStatus ippsNorm_L2_32f(const Ipp32f* pSrc, int len, Ipp32f* pNorm);<br />
IppStatus ippsNorm_L2_64f(const Ipp64f* pSrc, int len, Ipp64f* pNorm);<br />
<br />
pSrc<br />
pNorm<br />
len<br />
scaleFactor<br />
pSrc <br />
<br />
<br />
2 <br />
<br />
ippsNorm pSrc CL1 L2 <br />
pNorm <br />
ippsNorm_Inf ippsNorm_Inf C <br />
Norm C = max len – 1<br />
ippsNorm_L1 ippsNorm_L1 L1 <br />
Norm L1 =<br />
n = 0<br />
pSrc[ n]<br />
ippsNorm_L2 ippsNorm_L2 L2 <br />
Norm L2 =<br />
len – 1<br />
∑<br />
n = 0<br />
len – 1<br />
∑<br />
n = 0<br />
pSrc[ n]<br />
pSrc[ n] 2<br />
Sfs scaleFactor <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc pNorm NULL<br />
len <br />
5-105
<strong>IPP</strong> : 1 5<br />
NormDiff<br />
2 CL1 L2 <br />
<br />
IppStatus ippsNormDiff_Inf_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_Inf_16s32s_Sfs(const Ipp16s* pSrc1,<br />
const Ipp16s* pSrc2, int len, Ipp32s* pNorm, int scaleFactor);<br />
IppStatus ippsNormDiff_Inf_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_Inf_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
int len, Ipp64f* pNorm);<br />
IppStatus ippsNormDiff_L1_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_L1_16s32s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32s* pNorm, int scaleFactor);<br />
IppStatus ippsNormDiff_L1_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_L1_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
int len, Ipp64f* pNorm);<br />
IppStatus ippsNormDiff_L2_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_L2_16s32s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32s* pNorm, int scaleFactor);<br />
IppStatus ippsNormDiff_L2_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
int len, Ipp32f* pNorm);<br />
IppStatus ippsNormDiff_L2_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
int len, Ipp64f* pNorm);<br />
5-106
<strong>IPP</strong> : 1 5<br />
<br />
pSrc1pSrc2<br />
pNorm<br />
len<br />
scaleFactor<br />
2 pSrc2 NULL <br />
<br />
<br />
<br />
2 <br />
<br />
ippsNorm CL1 L2 <br />
pNorm <br />
ippsNormDiff_Inf ippsNormDiff_Inf C <br />
<br />
Norm Inf = max len – 1<br />
pSrc1[ n] – pSrc2[ n]<br />
n = 0<br />
ippsNormDiff_L1 ippsNormDiff_L1 L1 <br />
<br />
Norm L1<br />
=<br />
n = 0<br />
pSrc1[ n] – pSrc2[ n]<br />
ippsNormDiff_L2 ippsNormDiff_L2 L2 <br />
<br />
Norm L2 =<br />
len – 1<br />
∑<br />
len – 1<br />
∑<br />
n = 0<br />
pSrc1[ n] pSrc2[ n]<br />
–<br />
2<br />
Sfs scaleFactor <br />
<br />
5-27 ippsNormDiff <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc1pSrc2 pNorm NULL<br />
len <br />
5-107
<strong>IPP</strong> : 1 5<br />
5-27<br />
ippsNorm <br />
int norm( void ) {<br />
Ipp16s x[LEN];<br />
Ipp32f Norm[3];<br />
IppStatus st;<br />
int i;<br />
for( i=0; i
<strong>IPP</strong> : 1 5<br />
IppStatus ippsDotProd_64fc(const Ipp64fc* pSrc1, const Ipp64fc* pSrc2,<br />
int len, Ipp64fc* pDp);<br />
IppStatus ippsDotProd_64f64fc(const Ipp64f* pSrc1, const Ipp64fc* pSrc2,<br />
int len, Ipp64fc* pDp);<br />
IppStatus ippsDotProd_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp16s* pDp, int scaleFactor);<br />
IppStatus ippsDotProd_16sc_Sfs(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp16sc* pDp, int scaleFactor);<br />
IppStatus ippsDotProd_16s16sc_Sfs(const Ipp16s* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp16sc* pDp, int scaleFactor);<br />
IppStatus ippsDotProd_16s64s(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp64s* pDp);<br />
IppStatus ippsDotProd_16sc64sc(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp64sc* pDp);<br />
IppStatus ippsDotProd_16s16sc64sc(const Ipp16s* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp64sc* pDp);<br />
IppStatus ippsDotProd_16s32f(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
int len, Ipp32f* pDp);<br />
IppStatus ippsDotProd_16sc32fc(const Ipp16sc* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp32fc* pDp);<br />
IppStatus ippsDotProd_16s16sc32fc(const Ipp16s* pSrc1, const Ipp16sc* pSrc2,<br />
int len, Ipp32fc* pDp);<br />
<br />
pSrc1<br />
pSrc2<br />
pDp<br />
len<br />
scaleFactor<br />
<br />
2 <br />
<br />
<br />
2 <br />
5-109
<strong>IPP</strong> : 1 5<br />
<br />
ippsDotProd 2 pSrc1 pSrc2 ( ) <br />
pDp <br />
<br />
dp =<br />
len – 1<br />
∑<br />
n = 0<br />
pSrc1[ n] ⋅ pSrc2[ n]<br />
1 <br />
ippsConj pSrc1 pSrc2 <br />
5-28 ippsDotProd_64f <br />
2 2 <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDppSrc1 pSrc2 NULL<br />
len <br />
5-28<br />
ippsDotProd <br />
void dotprod(void) {<br />
Ipp64f x[10], dp;<br />
int n;<br />
for (n = 0; n> n = 0:9; x = sin(2*pi*n/8); a = x(1:8); b = x(3:10); a*b'<br />
5-110
<strong>IPP</strong> : 1 5<br />
<br />
<br />
<br />
<br />
• ( )<br />
• ( )<br />
6 <br />
<br />
SampleUp<br />
<br />
<br />
IppStatus ippsSampleUp_32f (const Ipp32f* pSrc, int srcLen, Ipp32f* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleUp_32fc (const Ipp32fc* pSrc, int srcLen, Ipp32fc* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleUp_64f (const Ipp64f* pSrc, int srcLen, Ipp64f* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleUp_64fc (const Ipp64fc* pSrc, int srcLen, Ipp64fc* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleUp_16s (const Ipp16s* pSrc, int srcLen, Ipp16s* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleUp_16sc (const Ipp16sc* pSrc, int srcLen, Ipp16sc* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
<br />
pSrc<br />
srcLen<br />
pDst<br />
pDstLen<br />
( ) <br />
pSrc <br />
<br />
pDst <br />
5-111
<strong>IPP</strong> : 1 5<br />
factor factor -1<br />
pSrc <br />
pPhase pSrc pDst factor <br />
<br />
<br />
pPhase [0; factor-1] pPhase <br />
factor pSrc <br />
<br />
<br />
ippsSampleUp srcLen pSrc factor pPhase <br />
pDst pDstLen <br />
<br />
factor-1 pSrc <br />
pPhase factor <br />
pPhase [0; factor-1] <br />
factor <br />
factor-1 <br />
pDstLen <br />
pPhase <br />
<br />
pPhase <br />
ippsSampleUp <br />
pDst[factor * n + phase] = pSrc[n], 0 ≤ n < srcLen<br />
pDst[factor * n + m] = 0, 0 ≤ n < srcLen, 0 ≤ m < factor, m ≠ phase<br />
pDstLen = factor * srcLen<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDstpSrcpDstLen pPhase<br />
NULL<br />
srcLen <br />
ippStsSampleFactorErr factor <br />
ippStsSamplePhaseErr<br />
pPhase factor <br />
5-112
<strong>IPP</strong> : 1 5<br />
SampleDown<br />
<br />
<br />
IppStatus ippsSampleDown_32f(const Ipp32f* pSrc, int srcLen, Ipp32f* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleDown_32fc(const Ipp32fc* pSrc, int srcLen, Ipp32fc* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleDown_64f(const Ipp64f* pSrc, int srcLen, Ipp64f* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleDown_64fc(const Ipp64fc* pSrc, int srcLen, Ipp64fc* Dst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleDown_16s(const Ipp16s* pSrc, int srcLen, Ipp16s* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
IppStatus ippsSampleDown_16sc(const Ipp16sc* pSrc, int srcLen, Ipp16sc* pDst,<br />
int* pDstLen, int factor, int* pPhase);<br />
<br />
pSrc<br />
srcLen<br />
pDst<br />
pDstLen<br />
<br />
pSrc <br />
ippsSampleDown <br />
pDst <br />
factor factor - 1<br />
pSrc factor <br />
<br />
pPhase pSrc factor <br />
pDst <br />
pPhase [0; factor-1] <br />
pPhase factor pSrc <br />
( ) <br />
5-113
<strong>IPP</strong> : 1 5<br />
<br />
ippsSampleDown srcLen pSrc factor pPhase <br />
pDst pDstLen <br />
<br />
pSrc factor - 1 <br />
factor 1 pSrc pDst <br />
pPhase <br />
factor pPhase <br />
[0; factor-1] pDstLen <br />
<br />
pPhase <br />
<br />
pPhase <br />
FIR <br />
<br />
<br />
ippsSampleDown <br />
pDstLen = (srcLen + factor - 1 - phase)/factor<br />
pDst[n] = pSrc[factor * n + phase], 0 ≤ n < pDstLen<br />
phase = (factor + phase - srcLen %factor)%factor<br />
5-29 ippsSampleDown <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDstpSrcpDstLen pPhase<br />
NULL<br />
srcLen <br />
ippStsSampleFactorErr factor <br />
ippStsSamplePhaseErr<br />
pPhase factor <br />
5-114
<strong>IPP</strong> : 1 5<br />
5-29<br />
ippsSampleDown <br />
void sampling( void ) {<br />
Ipp16s x[8] = { 1,2,3,4,5,6,7,8 };<br />
Ipp16s y[8] = {9,10,11,12,13,14,15,16}, z[8];<br />
int dstLen1, dstLen2, phase = 2;<br />
IppStatus st = ippsSampleDown_16s(x, 8, z, &dstLen1, 3, &phase);<br />
st = ippsSampleDown_16s(y, 8, z+dstLen1, &dstLen2, 3, &phase);<br />
printf_16s(“down-sumpling =”, z, dstLen1+dstLen2, st);<br />
}<br />
Output:<br />
down-sampling = 3 6 9 12 15<br />
5-115
<strong>IPP</strong> : 1 5<br />
5-116
6<br />
<br />
<strong>IPP</strong> <br />
<br />
LTI(linear time-invariant) <br />
<br />
2 <br />
<br />
Conv<br />
2 <br />
<br />
IppStatus ippsConv_32f(const Ipp32f* pSrc1, int lenSrc1,<br />
const Ipp32f* pSrc2, int lenSrc2, Ipp32f* pDst);<br />
IppStatus ippsConv_16s_Sfs(const Ipp16s* pSrc1, int lenSrc1,<br />
const Ipp16s* pSrc2, int lenSrc2, Ipp16s* pDst, int scaleFactor);<br />
<br />
pSrc1pSrc2<br />
lenSrc1<br />
lenSrc2<br />
2 <br />
pSrc1 <br />
pSrc2 <br />
6-1
<strong>IPP</strong> : 1 6<br />
pDst<br />
scaleFactor<br />
pDst <br />
<br />
2 <br />
<br />
ippsConv 2 <br />
lenSrc1 pSrc1 lenSrc2 pSrc2 <br />
(lenSrc1 + lenSrc2 - 1) pDst <br />
<br />
n<br />
pDst[ n] = ∑ pSrc1[ k] ⋅ pSrc2 [ n – k ], 0 ≤ n < lenSrc1 + lenSrc2 – 1<br />
k = 0<br />
i ≥ lenSrc1 pSrc1[i] = 0j ≥ lenSrc2 pSrc2[j] = 0 <br />
6-1 ippsConv_16s_Sfs 2 <br />
<br />
6-1<br />
ippsConv 2 <br />
IppStatus convolution(void) {<br />
Ipp16s x[5] = {-2,0,1,-1,3}, h[2] = {0,1}, y[6];<br />
IppStatus st = ippsConv_16s_Sfs(x, 5, h, 2, y, 0);<br />
printf_16s(“conv =”, y, 6, st);<br />
return st;<br />
}<br />
Output:<br />
conv = 0 -2 0 1 -1 3<br />
Matlab* Analog:<br />
>> x = [-2,0,1,-1,3]; h = [0,1]; y = conv(x,h)<br />
6-2
<strong>IPP</strong> : 1 6<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsMemAllocErr<br />
<br />
pDst pSrc NULL<br />
len <br />
<br />
ConvCyclic<br />
2 <br />
<br />
IppStatus ippsConvCyclic8x8_32f(const Ipp32f* x, const Ipp32f* h,<br />
Ipp32f* y);<br />
IppStatus ippsConvCyclic8x8_16s_Sfs(const Ipp16s* x, const Ipp16s* h,<br />
Ipp16s* y, int scaleFactor);<br />
IppStatus ippsConvCyclic4x4_32f32fc(const Ipp32f* x, const Ipp32fc* h,<br />
Ipp32fc* y);<br />
<br />
xh<br />
y<br />
scaleFactor<br />
<br />
y <br />
2 <br />
<br />
ippsConvCyclic 2 <br />
<br />
<br />
ippStsNoErr<br />
<br />
6-3
<strong>IPP</strong> : 1 6<br />
AutoCorr<br />
<br />
2 <br />
<br />
IppStatus ippsAutoCorr_32f( const Ipp32f* pSrc, int srcLen, Ipp32f* pDst,<br />
int dstLen );<br />
IppStatus ippsAutoCorr_NormA_32f( const Ipp32f* pSrc, int srcLen,<br />
Ipp32f* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_NormB_32f( const Ipp32f* pSrc, int srcLen,<br />
Ipp32f* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_64f( const Ipp64f* pSrc, int srcLen, Ipp64f* pDst,<br />
int dstLen );<br />
IppStatus ippsAutoCorr_NormA_64f( const Ipp64f* pSrc, int srcLen,<br />
Ipp64f* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_NormB_64f( const Ipp64f* pSrc, int srcLen,<br />
Ipp64f* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_32fc( const Ipp32fc* pSrc, int srcLen, Ipp32fc* pDst,<br />
int dstLen );<br />
IppStatus ippsAutoCorr_NormA_32fc( const Ipp32fc* pSrc, int srcLen,<br />
Ipp32fc* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_NormB_32fc( const Ipp32fc* pSrc, int srcLen,<br />
Ipp32fc* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_64fc( const Ipp64fc* pSrc, int srcLen, Ipp64fc* pDst,<br />
int dstLen );<br />
IppStatus ippsAutoCorr_NormA_64fc( const Ipp64fc* pSrc, int srcLen,<br />
Ipp64fc* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_NormB_64fc( const Ipp64fc* pSrc, int srcLen,<br />
Ipp64fc* pDst, int dstLen );<br />
IppStatus ippsAutoCorr_16s_Sfs( const Ipp16s* pSrc, int srcLen, Ipp16s* pDst,<br />
int dstLen, int scaleFactor );<br />
IppStatus ippsAutoCorr_NormA_16s_Sfs( const Ipp16s* pSrc, int srcLen,<br />
Ipp16s* pDst, int dstLen, int scaleFactor );<br />
IppStatus ippsAutoCorr_NormB_16s_Sfs( const Ipp16s* pSrc, int srcLen,<br />
Ipp16s* pDst, int dstLen, int scaleFactor );<br />
6-4
<strong>IPP</strong> : 1 6<br />
<br />
pSrc<br />
srcLen<br />
<br />
<br />
pDst<br />
<br />
<br />
dstLen ( )<br />
scaleFactor<br />
2 <br />
<br />
ippsAutoCorr srcLen pSrc <br />
dstLen pDst <br />
ippsAutoCorr_NormA ippsAutoCorr_NormA <br />
pDst <br />
<br />
srcLen – 1<br />
∑<br />
pDst[ n] =<br />
conj( pSrc[ i]<br />
) ⋅ pSrc[ i + n] , 0 ≤ n < dstLen<br />
i = 0<br />
( )<br />
pDst[ n]<br />
=<br />
srcLen – 1<br />
1<br />
---------------------- conj( pSrc[ i]<br />
) ⋅ pSrc[ i + n] , 0 ≤ n < dstLen ( )<br />
srcLen ∑<br />
i = 0<br />
pDst[ n]<br />
=<br />
srcLen – 1<br />
1<br />
srcLen<br />
-------------------------------- – n ∑ conj ( pSrc [ i ]) ⋅ pSrc[ i + n] , 0 ≤ n < dstLen<br />
i = 0<br />
(<br />
)<br />
<br />
pSrc[ i]<br />
⎧pSrc[ i] , 0 ≤ i < srcLen<br />
= ⎨<br />
⎩<br />
0,<br />
otherwise<br />
6-5
<strong>IPP</strong> : 1 6<br />
<br />
<br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc pDst NULL<br />
srcLen dstLen <br />
<br />
CrossCorr<br />
2 <br />
CrossCorr<br />
2 <br />
IppStatus ippsCrossCorr_32f(const Ipp32f* pSrc1, int len1,<br />
const Ipp32f* pSrc2, int len2, Ipp32f* pDst, int dstLen, int lowLag);<br />
IppStatus ippsCrossCorr_64f(const Ipp64f* pSrc1, int len1,<br />
const Ipp64f* pSrc2, int len2, Ipp64f* pDst, int dstLen, int lowLag);<br />
IppStatus ippsCrossCorr_32fc(const Ipp32fc* pSrc1, int len1,<br />
const Ipp32fc* pSrc2, int len2, Ipp32fc* pDst, int dstLen, int lowLag);<br />
IppStatus ippsCrossCorr_64fc(const Ipp64fc* pSrc1, int len1,<br />
const Ipp64fc* pSrc2, int len2, Ipp64fc* pDst, int dstLen, int lowLag);<br />
IppStatus ippsCrossCorr_16s_Sfs(const Ipp16s* pSrc1, int len1,<br />
const Ipp16s* pSrc2, int len2, Ipp16s* pDst, int dstLen, int lowLag,<br />
int scaleFactor);<br />
<br />
pSrc1<br />
len1<br />
pSrc2<br />
<br />
pSrc1 <br />
2 <br />
6-6
<strong>IPP</strong> : 1 6<br />
len2<br />
pDst<br />
dstLen<br />
lowLag<br />
scaleFactor<br />
pSrc2 <br />
pSrc1 pSrc2 <br />
<br />
pDst <br />
<br />
<br />
2 <br />
<br />
ippsCrossCorr len1 pSrc1 len2 pSrc2<br />
pDst <br />
pDst <br />
len1 – 1<br />
∑<br />
pDst[ n] = conj( pSrc1[ i]<br />
) ⋅ pSrc2[ n+ i + lowLag]<br />
i = 0<br />
,<br />
<br />
0 ≤ n < dstLen ,<br />
<br />
pSrc2[ j]<br />
⎧pSrc2[ j] , 0 ≤ j < len2<br />
= ⎨<br />
⎩0,<br />
otherwise<br />
6-2 ippsCrossCorr <br />
6-7
<strong>IPP</strong> : 1 6<br />
6-2<br />
ippsCrossCorr <br />
void crossCorr(void) {<br />
#undef LEN<br />
#define LEN 11<br />
Ipp32f win[LEN], y[LEN];<br />
IppStatus st;<br />
ippsSet_32f (1, win, LEN);<br />
ippsWinHamming_32f_I (win, LEN);<br />
st = ippsCrossCorr_32f (win, LEN, win, LEN, y, -(LEN-1));<br />
printf_32f(“cross corr =”, y,7,st);<br />
}<br />
Output:<br />
cross corr = 0.006400 0.026856 0.091831 0.242704 0.533230<br />
1.009000 1.672774<br />
Matlab* analog:<br />
>> x = hamming(11)'; y = xcorr(x,x); y(1:7)<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc1 pSrc2 NULL<br />
len1 len2 <br />
6-8
<strong>IPP</strong> : 1 6<br />
<br />
<br />
• (FIR) <br />
• 2 (LMS) FIR <br />
• (IIR) <br />
• <br />
FIR <br />
FIR ( ) <br />
<br />
FIR <br />
1. ippsFIRInitAlloc <br />
ippsFIRMRInitAlloc <br />
<br />
2. ippsFIROne <br />
ippsFIR <br />
<br />
<br />
3. ippsFIRGetTaps ( ) <br />
ippsFIRGetDlyLine ippsFIRSetDlyLine <br />
<br />
4. ippsFIRFree FIR <br />
6-9
<strong>IPP</strong> : 1 6<br />
FIRInitAllocFIRMRInitAlloc<br />
<br />
FIR <br />
IppStatus ippsFIRInitAlloc_32f(IppsFIRState_32f** pState,<br />
const Ipp32f* pTaps, int tapsLen, const Ipp32f* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc_32f(IppsFIRState_32f** pState,<br />
const Ipp32f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32f* pDlyLine);<br />
IppStatus ippsFIRInitAlloc_32fc(IppsFIRState_32fc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc_32fc(IppsFIRState_32fc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc32f_16s(IppsFIRState32f_16s** pState,<br />
const Ipp32f* pTaps, int tapsLen, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32f_16s(IppsFIRState32f_16s** pState,<br />
const Ipp32f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRInitAlloc32fc_16sc(IppsFIRState32fc_16sc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32fc_16sc(IppsFIRState32fc_16sc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc_64f(IppsFIRState_64f** pState,<br />
const Ipp64f* pTaps, int tapsLen, const Ipp64f* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc_64f(IppsFIRState_64f** pState,<br />
const Ipp64f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp64f* pDlyLine);<br />
IppStatus ippsFIRInitAlloc_64fc(IppsFIRState_64fc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, const Ipp64fc* pDlyLine);<br />
6-10
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRMRInitAlloc_64fc(IppsFIRState_64fc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp64fc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64f_32f(IppsFIRState64f_32f** pState,<br />
const Ipp64f* pTaps, int tapsLen, const Ipp32f* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64f_32f(IppsFIRState64f_32f** pState,<br />
const Ipp64f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32f* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64fc_32fc(IppsFIRState64fc_32fc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64fc_32fc(IppsFIRState64fc_32fc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64f_32s(IppsFIRState64f_32s** pState,<br />
const Ipp64f* pTaps, int tapsLen, const Ipp32s* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64f_32s(IppsFIRState64f_32s** pState,<br />
const Ipp64f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32s* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64fc_32sc(IppsFIRState64fc_32sc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, const Ipp32sc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64fc_32sc(IppsFIRState64fc_32sc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp32sc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64f_16s(IppsFIRState64f_16s** pState,<br />
const Ipp64f* pTaps, int tapsLen, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64f_16s(IppsFIRState64f_16s** pState,<br />
const Ipp64f* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRInitAlloc64fc_16sc(IppsFIRState64fc_16sc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc64fc_16sc(IppsFIRState64fc_16sc** pState,<br />
const Ipp64fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16sc* pDlyLine);<br />
6-11
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRInitAlloc32s_16s(IppsFIRState32s_16s** pState,<br />
const Ipp32s* pTaps, int tapsLen, int tapsFactor, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32s_16s(IppsFIRState32s_16s** pState,<br />
const Ipp32s* pTaps, int tapsLen, int tapsFactor, int upFactor,<br />
int upPhase, int downFactor, int downPhase, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRInitAlloc32s_16s32f(IppsFIRState32s_16s** pState,<br />
const Ipp32f* pTaps, int tapsLen, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32s_16s32f(IppsFIRState32s_16s** pState,<br />
const Ipp32f *pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRInitAlloc32sc_16sc(IppsFIRState32sc_16sc** pState,<br />
const Ipp32sc* pTaps, int tapsLen, int tapsFactor,<br />
const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32sc_16sc(IppsFIRState32sc_16sc** pState,<br />
const Ipp32sc* pTaps, int tapsLen, int tapsFactor, int upFactor,<br />
int upPhase, int downFactor, int downPhase, const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRInitAlloc32sc_16sc32fc(IppsFIRState32sc_16sc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRMRInitAlloc32sc_16sc32fc(IppsFIRState32sc_16sc** pState,<br />
const Ipp32fc* pTaps, int tapsLen, int upFactor, int upPhase,<br />
int downFactor, int downPhase, const Ipp16sc* pDlyLine);<br />
<br />
pTaps<br />
tapsLen<br />
tapsFactor<br />
downFactor<br />
downPhase<br />
upFactor<br />
upPhase<br />
<br />
tapsLen <br />
<br />
Ipp32s <br />
( )<br />
ippsFIRMRInit<br />
<br />
ippsFIRMRInit<br />
<br />
ippsFIRMRInit<br />
<br />
ippsFIRMRInit<br />
<br />
6-12
<strong>IPP</strong> : 1 6<br />
pDlyLine<br />
pState<br />
<br />
tapsLen<br />
(tapsLen + upFactor - 1) / upFactor <br />
FIR <br />
<br />
ippsFIRInitAlloc ippsFIRMRInitAlloc <br />
FIR <br />
tapsLen pTaps pState <br />
tapsFactor pDlyLine <br />
pDlyLine NULL <br />
pState <br />
<br />
<br />
ippsFIRInitAlloc ippsFIRInitAlloc <br />
pState tapsLen pTaps <br />
pDlyLine NULL tapsLen <br />
ippsFIRMRInitAlloc ippsFIRMRInitAlloc ( <br />
<br />
) pState <br />
<br />
<br />
<br />
upFactor <br />
(5-111 SampleUp )<br />
upFactor-1 <br />
upPhase upFactor <br />
<br />
downFactor FIR<br />
(5-113 SampleDown<br />
) downFactor <br />
downFactor-1 <br />
6-13
<strong>IPP</strong> : 1 6<br />
downPhase <br />
<br />
pDelay NULL <br />
(tapsLen + upFactor - 1) / upFactor<br />
<br />
ippStsNoErr<br />
ippStsMemAllocErr<br />
ippStsNullPtrErr<br />
ippStsFIRLenErr<br />
<br />
<br />
NULL<br />
tapsLen <br />
ippStsFIRMRFactorErr upFactor (downFactor) <br />
ippStsFIRMRPhaseErr<br />
upPhase (downPhase) upFactor<br />
(downFactor) <br />
ippStsContextMatchErr<br />
<br />
FIRFree<br />
FIR <br />
IppStatus ippsFIRFree_32f(IppsFIRState_32f* pState);<br />
IppStatus ippsFIRFree_32fc(IppsFIRState_32fc* pState);<br />
IppStatus ippsFIRFree32f_16s(IppsFIRState32f_16s* pState);<br />
IppStatus ippsFIRFree32fc_16sc(IppsFIRState32fc_16sc* pState);<br />
IppStatus ippsFIRFree_64f(IppsFIRState_64f* pState);<br />
IppStatus ippsFIRFree_64fc(IppsFIRState_64fc* pState);<br />
IppStatus ippsFIRFree64f_32f(IppsFIRState64f_32f* pState);<br />
IppStatus ippsFIRFree64fc_32fc(IppsFIRState64fc_32fc* pState);<br />
IppStatus ippsFIRFree64f_32s(IppsFIRState64f_32s* pState);<br />
IppStatus ippsFIRFree64fc_32sc(IppsFIRState64fc_32sc* pState);<br />
6-14
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRFree64f_16s(IppsFIRState64f_16s* pState);<br />
IppStatus ippsFIRFree64fc_16sc(IppsFIRState64fc_16sc* pState);<br />
IppStatus ippsFIRFree32s_16s(IppsFIRState32s_16s* pState);<br />
IppStatus ippsFIRFree32sc_16sc(IppsFIRState32sc_16sc* pState);<br />
<br />
pState<br />
FIR <br />
<br />
ippsFIRFree ippsFIRInitAlloc ippsFIRMRInitAlloc <br />
FIR <br />
ippsFIRFree <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
FIROne<br />
FIR <br />
<br />
IppStatus ippsFIROne_32f(Ipp32f src, Ipp32f* pDstVal,<br />
IppsFIRState_32f* pState);<br />
IppStatus ippsFIROne_32fc(Ipp32fc src, Ipp32fc* pDstVal,<br />
IppsFIRState_32fc* pState);<br />
IppStatus ippsFIROne32f_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsFIRState32f_16s* pState, int scaleFactor);<br />
6-15
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIROne32fc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsFIRState32fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsFIROne_64f(Ipp64f src, Ipp64f* pDstVal,<br />
IppsFIRState_64f* pState);<br />
IppStatus ippsFIROne_64fc(Ipp64fc src, Ipp64fc* pDstVal,<br />
IppsFIRState_64fc* pState);<br />
IppStatus ippsFIROne64f_32f(Ipp32f src, Ipp32f* pDstVal,<br />
IppsFIRState64f_32f* pState);<br />
IppStatus ippsFIROne64fc_32fc(Ipp32fc src, Ipp32fc* pDstVal,<br />
IppsFIRState64fc_32fc* pState);<br />
IppStatus ippsFIROne64f_32s_Sfs(Ipp32s src, Ipp32s* pDstVal,<br />
IppsFIRState64f_32s* pState, int scaleFactor);<br />
IppStatus ippsFIROne64fc_32sc_Sfs(Ipp32sc src, Ipp32sc* pDstVal,<br />
IppsFIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsFIROne64f_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsFIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsFIROne64fc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsFIRState64fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsFIROne32s_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsFIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsFIROne32sc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsFIRState32sc_16sc* pState, int scaleFactor);<br />
<br />
pState<br />
src<br />
pDstVal<br />
scaleFactor<br />
FIR <br />
ippsFIROne <br />
ippsFIROne <br />
2 <br />
6-16
<strong>IPP</strong> : 1 6<br />
<br />
ippsFIROne src <br />
pDstVal pState <br />
scaleFactor <br />
FIR <br />
x(n) h(i) <br />
y(n) <br />
ippsFIROne ippsFIRInitAlloc <br />
tapsLenpTaps <br />
pDelay <br />
<br />
tapsLen – 1<br />
∑<br />
yn ( ) =<br />
hi ( ) ⋅ xn ( – i)<br />
i = 0<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
FIR<br />
<br />
<br />
<br />
IppStatus ippsFIR_32f(const Ipp32f* pSrc, Ipp32f* pDst, int numIters,<br />
IppsFIRState_32f* pState);<br />
IppStatus ippsFIR_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int numIters,<br />
IppsFIRState_32fc* pState);<br />
IppStatus ippsFIR32f_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int numIters,<br />
IppsFIRState32f_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR32fc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int numIters, IppsFIRState32fc_16sc* pState, int scaleFactor);<br />
6-17
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIR_32f_I(Ipp32f* pSrcDst, int numIters,<br />
IppsFIRState_32f* pState);<br />
IppStatus ippsFIR_32fc_I(Ipp32fc* pSrcDst, int numIters,<br />
IppsFIRState_32fc* pState);<br />
IppStatus ippsFIR32f_16s_ISfs(Ipp16s* pSrcDst, int numIters,<br />
IppsFIRState32f_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR32fc_16sc_ISfs(Ipp16sc* pSrcDst, int numIters,<br />
IppsFIRState32fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsFIR_64f(const Ipp64f* pSrc, Ipp64f* pDst, int numIters,<br />
IppsFIRState_64f* pState);<br />
IppStatus ippsFIR_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int numIters,<br />
IppsFIRState_64fc* pState);<br />
IppStatus ippsFIR_64f_I(Ipp64f* pSrcDst, int numIters,<br />
IppsFIRState_64f* pState);<br />
IppStatus ippsFIR_64fc_I(Ipp64fc* pSrcDst, int numIters,<br />
IppsFIRState_64fc* pState);<br />
IppStatus ippsFIR64f_32f(const Ipp32f* pSrc, Ipp32f* pDst, int numIters,<br />
IppsFIRState64f_32f* pState);<br />
IppStatus ippsFIR64fc_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int numIters,<br />
IppsFIRState64fc_32fc* pState);<br />
IppStatus ippsFIR64f_32f_I(Ipp32f* pSrcDst, int numIters,<br />
IppsFIRState64f_32f* pState);<br />
IppStatus ippsFIR64fc_32fc_I(Ipp32fc* pSrcDst, int numIters,<br />
IppsFIRState64fc_32fc* pState);<br />
IppStatus ippsFIR64f_32s_Sfs(const Ipp32s* pSrc, Ipp32s* pDst, int numIters,<br />
IppsFIRState64f_32s* pState, int scaleFactor);<br />
IppStatus ippsFIR64fc_32sc_Sfs(const Ipp32sc* pSrc, Ipp32sc* pDst,<br />
int numIters, IppsFIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsFIR64f_32s_ISfs(Ipp32s* pSrcDst, int numIters,<br />
IppsFIRState64f_32s* pState, int scaleFactor);<br />
IppStatus ippsFIR64fc_32sc_ISfs(Ipp32sc* pSrcDst, int numIters,<br />
IppsFIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsFIR64f_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int numIters,<br />
IppsFIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR64fc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int numIters, IppsFIRState64fc_16sc* pState, int scaleFactor);<br />
6-18
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIR64f_16s_ISfs(Ipp16s* pSrcDst, int numIters,<br />
IppsFIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR64fc_16sc_ISfs(Ipp16sc* pSrcDst, int numIters,<br />
IppsFIRState64fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsFIR32s_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int numIters, IppsFIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR32sc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
int numIters, IppsFIRState32sc_16sc* pState, int scaleFactor);<br />
IppStatus ippsFIR32s_16s_ISfs(Ipp16s* pSrcDst, int numIters,<br />
IppsFIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsFIR32sc_16sc_ISfs(Ipp16sc* pSrcDst, int numIters,<br />
IppsFIRState32sc_16sc* pState, int scaleFactor);<br />
<br />
pState<br />
pSrc<br />
pDst<br />
pSrcDst<br />
numIters<br />
scaleFactor<br />
FIR <br />
ippsFIR <br />
ippsFIR <br />
ippsFIR ( <br />
) <br />
ippsFIR <br />
<br />
numIters numIters<br />
<br />
(numIters * downFactor) <br />
(numIters * upFactor) <br />
<br />
2 <br />
6-19
<strong>IPP</strong> : 1 6<br />
<br />
ippsFIR <br />
pSrc pSrcDst pDst <br />
pSrcDst pState <br />
pSrc pSrcDst numIters <br />
numIters pDst <br />
pSrcDst ippsFIROne numIters <br />
<br />
FIR x(n)<br />
h(i) y(n) <br />
y(n) <br />
tapsLen – 1<br />
∑<br />
yn ( ) =<br />
hi ( ) ⋅ xn ( – i), 0 ≤ n < numIters<br />
i = 0<br />
<br />
numIters <br />
<br />
ippsFIR (numIters*downFactor) <br />
(numIters*upFactor) <br />
<br />
FIR 3 <br />
3 <br />
<br />
(upFactor*srcLen) <br />
ippsFIR ippsFIRInitAlloc ippsFIRMRInitAlloc <br />
tapsLen<br />
pTaps pDelay <br />
<br />
6-3 ippsFIR_32f <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
len <br />
6-20
<strong>IPP</strong> : 1 6<br />
ippStsContextMatchErr<br />
<br />
6-3<br />
ippsFIR <br />
IppStatus fir(void) {<br />
#undef NUMITERS<br />
#define NUMITERS 150<br />
int n;<br />
IppStatus status;<br />
IppsIIRState_32f *ictx;<br />
IppsFIRState_32f *fctx;<br />
Ipp32f *x = ippsMalloc_32f(NUMITERS),<br />
*y = ippsMalloc_32f(NUMITERS),<br />
*z = ippsMalloc_32f(NUMITERS);<br />
const float taps[] = {<br />
0.0051f, 0.0180f, 0.0591f, 0.1245f, 0.1869f, 0.2127f, 0.1869f,<br />
0.1245f, 0.0591f, 0.0180f, 0.0051f, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0<br />
};<br />
for (n =0;n> F = 0.2; N = 150; n = 0:N-1; x = sin(2*pi*n*F);<br />
y = filter(fir1(10,0.15),1,x); y(121:125)<br />
6-21
<strong>IPP</strong> : 1 6<br />
FIRGetTaps<br />
FIR <br />
IppStatus ippsFIRGetTaps_32f(const IppsFIRState_32f* pState, Ipp32f* pTaps);<br />
IppStatus ippsFIRGetTaps_32fc(const IppsFIRState_32fc* pState,<br />
Ipp32fc* pTaps);<br />
IppStatus ippsFIRGetTaps32f_16s(const IppsFIRState32f_16s* pState,<br />
Ipp32f* pTaps);<br />
IppStatus ippsFIRGetTaps32fc_16sc(const IppsFIRState32fc_16sc* pState,<br />
Ipp32fc* pTaps);<br />
IppStatus ippsFIRGetTaps_64f(const IppsFIRState_64f* pState, Ipp64f* pTaps);<br />
IppStatus ippsFIRGetTaps_64fc(const IppsFIRState_64fc* pState,<br />
Ipp64fc* pTaps);<br />
IppStatus ippsFIRGetTaps64f_32f(const IppsFIRState64f_32f* pState,<br />
Ipp64f* pTaps);<br />
IppStatus ippsFIRGetTaps64fc_32fc(const IppsFIRState64fc_32fc* pState,<br />
Ipp64fc* pTaps);<br />
IppStatus ippsFIRGetTaps64f_32s(const IppsFIRState64f_32s* pState,<br />
Ipp64f* pTaps);<br />
IppStatus ippsFIRGetTaps64fc_32sc(const IppsFIRState64fc_32sc* pState,<br />
Ipp64fc* pTaps);<br />
IppStatus ippsFIRGetTaps64f_16s(const IppsFIRState64f_16s* pState,<br />
Ipp64f* pTaps);<br />
IppStatus ippsFIRGetTaps64fc_16sc(const IppsFIRState64fc_16sc* pState,<br />
Ipp64fc* pTaps);<br />
IppStatus ippsFIRGetTaps32s_16s(const IppsFIRState32s_16s* pState,<br />
Ipp32s* pTaps, int* tapsFactor);<br />
IppStatus ippsFIRGetTaps32sc_16sc(const IppsFIRState32sc_16sc* pState,<br />
Ipp32sc* pTaps, int* tapsFactor);<br />
IppStatus ippsFIRGetTaps32s_16s32f(const IppsFIRState32s_16s* pState,<br />
Ipp32f* pTaps);<br />
6-22
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRGetTaps32sc_16sc32fc(const IppsFIRState32sc_16sc* pState,<br />
Ipp32fc* pTaps);<br />
<br />
pState<br />
pTaps<br />
tapsFactor<br />
FIR <br />
<br />
Ipp32s <br />
( )<br />
<br />
ippsFIRGetTaps pState tapsLen pTaps <br />
tapsFactor <br />
ippsFIRInit <br />
ippsFIRMRInit <br />
ippsFIRGetTaps ippspFIRInitAlloc ippspFIRMRInitAlloc <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
FIRGetDlyLine, FIRSetDlyLine<br />
FIR <br />
<br />
IppStatus ippsFIRGetDlyLine_32f(const IppsFIRState_32f* pState,<br />
Ipp32f* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine_32f(IppsFIRState_32f* pState,<br />
const Ipp32f* pDlyLine);<br />
6-23
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRGetDlyLine_32fc(const IppsFIRState_32fc* pState,<br />
Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine_32fc(IppsFIRState_32fc* pState,<br />
const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine32f_16s(const IppsFIRState32f_16s* pState,<br />
Ipp16s* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine32f_16s(IppsFIRState32f_16s* pState,<br />
const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine32fc_16sc(const IppsFIRState32fc_16sc* pState,<br />
Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine32fc_16sc(IppsFIRState32fc_16sc* pState,<br />
const Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine_64f(const IppsFIRState_64f* pState,<br />
Ipp64f* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine_64f(IppsFIRState_64f* pState,<br />
const Ipp64f* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine_64fc(const IppsFIRState_64fc* pState,<br />
Ipp64fc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine_64fc(IppsFIRState_64fc* pState,<br />
const Ipp64fc* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine64f_32f(const IppsFIRState64f_32f* pState,<br />
Ipp32f* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64f_32f(IppsFIRState64f_32f* pState,<br />
const Ipp32f* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine64fc_32fc(const IppsFIRState64fc_32fc* pState,<br />
Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64fc_32fc(IppsFIRState64fc_32fc* pState,<br />
const Ipp32fc* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine64f_32s(const IppsFIRState64f_32s* pState,<br />
Ipp32s* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64f_32s(IppsFIRState64f_32s* pState,<br />
const Ipp32s* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine64fc_32sc(const IppsFIRState64fc_32sc* pState,<br />
Ipp32sc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64fc_32sc(IppsFIRState64fc_32sc* pState,<br />
const Ipp32sc* pDlyLine);<br />
6-24
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRGetDlyLine64f_16s(const IppsFIRState64f_16s* pState,<br />
Ipp16s* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64f_16s(IppsFIRState64f_16s* pState,<br />
const Ipp16s* pDlyLine);<br />
IppStatus ippsFIRGetDlyLine64fc_16sc(const IppsFIRState64fc_16sc* pState,<br />
Ipp16sc* pDlyLine);<br />
IppStatus ippsFIRSetDlyLine64fc_16sc(IppsFIRState64fc_16sc* pState,<br />
const Ipp16sc* pDlyLine);<br />
IppStatus, ippsFIRGetDlyLine32s_16s, (const IppsFIRState32s_16s* pState,<br />
Ipp16s* pDlyLine);<br />
IppStatus, ippsFIRSetDlyLine32s_16s, (IppsFIRState32s_16s* pState,<br />
const Ipp16s* pDlyLine);<br />
IppStatus, ippsFIRGetDlyLine32sc_16sc, (const IppsFIRState32sc_16sc* pState,<br />
Ipp16sc* pDlyLine);<br />
IppStatus, ippsFIRSetDlyLine32sc_16sc, (IppsFIRState32sc_16sc* pState,<br />
const Ipp16sc* pDlyLine);<br />
<br />
pState<br />
pDlyLine<br />
FIR <br />
<br />
<br />
ippsFIRGetDlyLine ippsFIRSetDlyLine FIR <br />
<br />
ippsFIRGetDlyLine ippsFIRGetDlyLine pState <br />
pDlyLine <br />
ippsFIRSetDlyLine ippsFIRSetDlyLine pDlyLine <br />
pState <br />
ippsFIRGetDlyLine ippsFIRSetDlyLine ippsFIRInitAlloc <br />
ippsFIRMRInitAlloc <br />
<br />
6-25
<strong>IPP</strong> : 1 6<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
FIR LMS <br />
<br />
• FIR LMS <br />
• <br />
• ( ) <br />
• <br />
• <br />
FIR LMS <br />
1. ippsFIRLMSInitAlloc FIR LMS <br />
<br />
2. ippsFIRLMSOne 1 FIR <br />
1 ippsFIRLMS <br />
<br />
3. ippsFIRLMSGetTaps ( ) <br />
ippsFIRLMSGetDlyLine ippsFIRLMSSetDlyLine <br />
<br />
4. ippsFIRLMSFree FIR LMS <br />
<br />
6-26
<strong>IPP</strong> : 1 6<br />
FIRLMSInitAlloc<br />
2 (LMS) <br />
FIR <br />
IppStatus ippsFIRLMSInitAlloc_32f(IppsFIRLMSState_32f** pState,<br />
const Ipp32f* pTaps, int tapsLen, const Ipp32f* pDlyLine, int dlyIndex);<br />
IppStatus ippsFIRLMSInitAlloc32f_16s(IppsFIRLMSState32f_16s** pState,<br />
const Ipp32f* pTaps, int tapsLen, const Ipp16s* pDlyLine, int dlyIndex);<br />
<br />
pTaps<br />
tapsLen<br />
pDlyLine<br />
dlyIndex<br />
pState<br />
<br />
tapsLen <br />
<br />
<br />
2*tapsLen <br />
<br />
<br />
<br />
ippsFIRLMSInitAlloc FIR LMS <br />
ippsFIRLMSInitAlloc tapsLen pTaps <br />
pState 2*tapsLen pDlyLine <br />
pDlyLine dlyIndex <br />
pDlyLine pTaps NULL <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
6-27
<strong>IPP</strong> : 1 6<br />
FIRLMSFree<br />
2 (LMS) <br />
FIR <br />
IppStatus ippsFIRLMSFree_32f(IppsFIRLMSState_32f* pState);<br />
IppStatus ippsFIRLMSFree32f_16s(IppsFIRLMSState32f_16s* pState);<br />
<br />
pState<br />
FIR LMS <br />
<br />
ippsFIRLMSFree ippsFIRLMSInitAlloc <br />
FIR LMS <br />
ippsFIRLMSFree <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
FIRLMSOne<br />
FIR LMS <br />
<br />
IppStatus ippsFIRLMSOne_Direct_32f(Ipp32f src, Ipp32f ref, Ipp32f* pDstVal,<br />
Ipp32f* pTapsInv, int tapsLen, float mu, Ipp32f* pDlyLine, int* pDlyIndex);<br />
IppStatus ippsFIRLMSOne_Direct32f_16s(Ipp16s src, Ipp16s ref, Ipp16s* pDstVal,<br />
Ipp32f* pTapsInv, int tapsLen, float mu, Ipp16s* pDlyLine, int* pDlyIndex);<br />
6-28
<strong>IPP</strong> : 1 6<br />
IppStatus ippsFIRLMSOne_DirectQ15_16s(Ipp16s src, Ipp16s ref, Ipp16s* pDstVal,<br />
Ipp32s* pTapsInv, int tapsLen, int mu15, Ipp16s* pDlyLine, int* pDlyIndex);<br />
<br />
src<br />
pDstVal<br />
ref<br />
pTapsInv<br />
tapsLen<br />
pDlyLine<br />
pDlyIndex<br />
mu<br />
muQ15<br />
<br />
<br />
<br />
FIR <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsFIRLMSOne FIR 1 <br />
tapsLen pTapsInv FIR <br />
2*tapsLen pDlyLine pDlyIndex <br />
pDstVal <br />
<br />
err[n] = ref[n] - *pDstVal.<br />
ippsFIRLMSOne mu FIR 1<br />
<br />
<br />
ippsLMSOne <br />
<br />
<br />
6-29
<strong>IPP</strong> : 1 6<br />
DirectQ15 ippsFIRLMSOne FIR <br />
1 muQ15 <br />
<br />
muQ15 = (int)(mu *(1
<strong>IPP</strong> : 1 6<br />
FIRLMS<br />
FIR LMS <br />
<br />
IppStatus ippsFIRLMS_32f(const Ipp32f* pSrc, const Ipp32f* pRef,<br />
Ipp32f* pDst, int len, float mu, IppsFIRLMSState_32f* pState);<br />
IppStatus ippsFIRLMS32f_16s(const Ipp16s* pSrc, const Ipp16s* pRef,<br />
Ipp16s* pDst, int len, float mu, IppsFIRLMSState32f_16s* pState);<br />
<br />
pState<br />
pSrc<br />
pRef<br />
pDst<br />
len<br />
mu<br />
FIR LMS <br />
<br />
<br />
<br />
<br />
<br />
<br />
ippsFIRLMS pRef mu pSrc <br />
<br />
len 2 1 <br />
ippsLMS pSrc <br />
pDst 2 pRef pDst<br />
mu <br />
ippsFIRLMS ippsFIRLMSInitAlloc pState <br />
<br />
6-5 ippsFIRLMS_32f <br />
<br />
6-31
<strong>IPP</strong> : 1 6<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
len <br />
ippStsContextMatchErr<br />
<br />
6-5<br />
ippsFIRLMS <br />
IppStatus firlms(void) {<br />
IppStatus st;<br />
Ipp32f taps = 0, x[LEN], y[LEN], mu = 0.03f;<br />
IppsFIRLMSState_32f* ctx;<br />
int i;<br />
/// no taps and no delay line from outside<br />
ippsFIRLMSInitAlloc_32f( &ctx, 0, 1, 0, 0 );<br />
/// make a const signal of amplitude 1 and noise it<br />
for(i=0; i
<strong>IPP</strong> : 1 6<br />
FIRLMSGetTaps<br />
FIR LMS <br />
IppStatus ippsFIRLMSGetTaps_32f(const IppsFIRLMSState_32f* pState,<br />
Ipp32f* pOutTaps);<br />
IppStatus ippsFIRLMSGetTaps32f_16s(const IppsFIRLMSState32f_16s* pState,<br />
Ipp32f* pOutTaps);<br />
<br />
pState<br />
pOutTaps<br />
FIR LMS <br />
<br />
<br />
ippsFIRLMSGetTaps pState tapsLen <br />
pOutTaps <br />
ippsFIRLMSInitAlloc <br />
ippsFIRLMSGetTaps ippsFIRLMSInitAlloc <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
6-33
<strong>IPP</strong> : 1 6<br />
FIRLMSGetDlyLineFIRLMSSetDlyLine<br />
FIR LMS <br />
<br />
IppStatus ippsFIRLMSGetDlyLine_32f(const IppsFIRLMSState_32f* pState,<br />
Ipp32f* pDlyLine, int* pDlyIndex);<br />
IppStatus ippsFIRLMSGetDlyLine32f_16s(const IppsFIRLMSState32f_16s* pState,<br />
Ipp16s* pDlyLine, int* pDlyIndex);<br />
IppStatus ippsFIRLMSSetDlyLine_32f(IppsFIRLMSState_32f* pState,<br />
const Ipp32f* pDlyLine, int dlyIndex);<br />
IppStatus ippsFIRLMSSetDlyLine32f_16s(IppsFIRLMSState32f_16s* pState,<br />
const Ipp16s* pDlyLine, int dlyIndex);<br />
<br />
pState<br />
pDlyLine<br />
pDlyIndex<br />
dlyIndex<br />
FIR LMS <br />
tapsLen <br />
ippsFIRLMSGetDlyLine pState <br />
<br />
ippsFIRLMSSetDlyLine pState <br />
<br />
<br />
ippsFIRLMSGetDlyLine ippsFIRLMSSetDlyLine FIR LMS <br />
<br />
ippsFIRLMSGetDlyLine ippsFIRLMSGetDlyLine pState<br />
pDlyLine<br />
pDlyIndex <br />
ippsFIRLMSSetDlyLine ippsFIRLMSSetDlyLine pDlyLine <br />
dlyIndex <br />
pState <br />
ippsFIRLMSGetDlyLine ippsFIRLMSSetDlyLine <br />
ippsFIRLMSInitAlloc <br />
<br />
6-34
<strong>IPP</strong> : 1 6<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
IIR <br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
(IIR) <br />
<br />
IIR <br />
1. ippsIIRInitAlloc IIR <br />
ippsIIRInitAlloc_BiQuad <br />
<br />
2. ippsIIROne IIR <br />
ippsIIR 1 <br />
<br />
3. ippsIIRGetDlyLine ippsIIRSetDlyLine IIR <br />
<br />
4. ippsIIRFree <br />
<br />
IIRInitAllocIIRInitAlloc_BiQuad<br />
<br />
IppStatus ippsIIRInitAlloc_32f(IppsIIRState_32f** pState,<br />
const Ipp32f* pTaps, int order, const Ipp32f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_32fc(IppsIIRState_32fc** pState,<br />
const Ipp32fc* pTaps, int order, const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32f_16s(IppsIIRState32f_16s** pState,<br />
const Ipp32f* pTaps, int order, const Ipp32f* pDlyLine);<br />
6-35
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIRInitAlloc32fc_16sc(IppsIIRState32fc_16sc** pState,<br />
const Ipp32fc* pTaps, int order, const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_64f(IppsIIRState_64f** pState,<br />
const Ipp64f* pTaps, int order, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_64fc(IppsIIRState_64fc** pState,<br />
const Ipp64fc* pTaps, int order, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_32f(IppsIIRState64f_32f** pState,<br />
const Ipp64f* pTaps, int order, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64fc_32fc(IppsIIRState64fc_32fc** pState,<br />
const Ipp64fc* pTaps, int order, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_32s(IppsIIRState64f_32s** pState,<br />
const Ipp64f* pTaps, int order, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64fc_32sc(IppsIIRState64fc_32sc** pState,<br />
const Ipp64fc* pTaps, int order, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_16s(IppsIIRState64f_16s** pState,<br />
const Ipp64f* pTaps, int order, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64fc_16sc(IppsIIRState64fc_16sc** pState,<br />
const Ipp64fc* pTaps, int order, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_BiQuad_32f(IppsIIRState_32f** pState,<br />
const Ipp32f* pTaps, int numBq, const Ipp32f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_BiQuad_32fc(IppsIIRState_32fc** pState,<br />
const Ipp32fc* pTaps, int numBq, const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32f_BiQuad_16s(IppsIIRState32f_16s** pState,<br />
const Ipp32f* pTaps, int numBq, const Ipp32f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32fc_BiQuad_16sc(IppsIIRState32fc_16sc** pState,<br />
const Ipp32fc* pTaps, int numBq, const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_BiQuad_64f(IppsIIRState_64f** pState,<br />
const Ipp64f* pTaps, int numBq, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc_BiQuad_64fc(IppsIIRState_64fc** pState,<br />
const Ipp64fc* pTaps, int numBq, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_BiQuad_32f(IppsIIRState64f_32f** pState,<br />
const Ipp64f* pTaps, int numBq, const Ipp64f* pDlyLine);<br />
6-36
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIRInitAlloc64fc_BiQuad_32fc(IppsIIRState64fc_32fc** pState,<br />
const Ipp64fc* pTaps, int numBq, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_BiQuad_32s(IppsIIRState64f_32s** pState,<br />
const Ipp64f* pTaps, int numBq, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64fc_BiQuad_32sc(IppsIIRState64fc_32sc** pState,<br />
const Ipp64fc* pTaps, int numBq, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64f_BiQuad_16s(IppsIIRState64f_16s** pState,<br />
const Ipp64f* pTaps, int numBq, const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRInitAlloc64fc_BiQuad_16sc(IppsIIRState64fc_16sc** pState,<br />
const Ipp64fc* pTaps, int numBq, const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32s_16s(IppsIIRState32s_16s** pState,<br />
const Ipp32s* pTaps, int order, int tapsFactor, const Ipp32s* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32s_16s32f(IppsIIRState32s_16s** pState,<br />
const Ipp32f* pTaps, int order, const Ipp32s* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32sc_16sc(IppsIIRState32sc_16sc** pState,<br />
const Ipp32sc* pTaps, int order, int tapsFactor, const Ipp32sc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32sc_16sc32fc(IppsIIRState32sc_16sc** pState,<br />
const Ipp32fc* pTaps, int order, const Ipp32sc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32s_BiQuad_16s(IppsIIRState32s_16s** pState,<br />
const Ipp32s* pTaps, int numBq, int tapsFactor, const Ipp32s* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32s_BiQuad_16s32f(IppsIIRState32s_16s** pState,<br />
const Ipp32f* pTaps, int numBq, const Ipp32s* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32sc_BiQuad_16sc(IppsIIRState32sc_16sc** pState,<br />
const Ipp32sc* pTaps, int numBq, int tapsFactor, const Ipp32sc* pDlyLine);<br />
IppStatus ippsIIRInitAlloc32sc_BiQuad_16sc32fc(IppsIIRState32sc_16sc** pState,<br />
const Ipp32fc* pTaps, int numBq, const Ipp32sc* pDlyLine);<br />
<br />
pTaps<br />
tapsFactor<br />
<br />
2*(order+1)BQ 6*numBq<br />
<br />
Ipp32s ( <br />
)<br />
6-37
<strong>IPP</strong> : 1 6<br />
numBq<br />
order<br />
pDlyLine<br />
pState<br />
numBq ippsIIRBQInit <br />
<br />
IIR ippsIIRInit <br />
<br />
orderBQ 2*numBq <br />
<br />
IIR <br />
<br />
ippsIIRInitAlloc ippsIIRInitAlloc_BiQuad <br />
(BQ) IIR <br />
pTaps pState <br />
tapsFactor pDlyLine <br />
pDlyLine NULL <br />
<br />
<br />
ippsIIRInitAlloc ippsIIRInitAlloc IIR <br />
order pDlyLine <br />
order <br />
2*(order + 1) pTaps <br />
<br />
B 0 , B 1 , .. ., B order , A 0 , A 1 , .. ., A order<br />
A 0 ≠ 0<br />
32s ippsIIRInitAlloc <br />
ippsIIRInitAlloc_BiQuad ippsConvert <br />
<br />
32s_32f <br />
<br />
<br />
6-7 <br />
<br />
6-38
<strong>IPP</strong> : 1 6<br />
ippsIIRInitAlloc_BiQuad ippsIIRInitAlloc_BiQuad IIR<br />
( ) <br />
2*numBq pDlyLine <br />
numBq 6*numBq pTaps<br />
<br />
B 0,0 , B 0,1 , B 0,2 , A 0,0 , A 0,1 , A 0,2 ; B 1,0 , B 1,1 , B 1,2 , A 1,0 , A 1,1 , A 1,2 ; .. . A numBq-1,2<br />
A n,0 ≠ 0, B n,0 ≠ 0<br />
<br />
ippStsNoErr<br />
ippStsMemAllocErr<br />
ippStsNullPtrErr<br />
ippStsIIROrderErr<br />
ippStsDivByZeroErr<br />
<br />
<br />
NULL<br />
order numBq <br />
A 0 A n,0 B n,0 <br />
ippStsContextMatchErr<br />
<br />
IIRFree<br />
IIR <br />
IppStatus ippsIIRFree_32f(IppsIIRState_32f* pState);<br />
IppStatus ippsIIRFree_32fc(IppsIIRState_32fc* pState);<br />
IppStatus ippsIIRFree32f_16s(IppsIIRState32f_16s* pState);<br />
IppStatus ippsIIRFree32fc_16sc(IppsIIRState32fc_16sc* pState);<br />
IppStatus ippsIIRFree_64f(IppsIIRState_64f* pState);<br />
IppStatus ippsIIRFree_64fc(IppsIIRState_64fc* pState);<br />
IppStatus ippsIIRFree64f_32f(IppsIIRState64f_32f* pState);<br />
IppStatus ippsIIRFree64fc_32fc(IppsIIRState64fc_32fc* pState);<br />
IppStatus ippsIIRFree64f_32s(IppsIIRState64f_32s* pState);<br />
6-39
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIRFree64fc_32sc(IppsIIRState64fc_32sc* pState);<br />
IppStatus ippsIIRFree64f_16s(IppsIIRState64f_16s* pState);<br />
IppStatus ippsIIRFree64fc_16sc(IppsIIRState64fc_16sc* pState);<br />
IppStatus ippsIIRFree32s_16s(IppsIIRState32s_16s* pState);<br />
IppStatus ippsIIRFree32sc_16sc(IppsIIRState32sc_16sc* pState);<br />
<br />
pState<br />
IIR <br />
<br />
ippsIIRFree ippsIIRInitAlloc ippsIIRBQInitAlloc <br />
IIR <br />
ippsIIRFree <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
IIROne<br />
IIR <br />
<br />
IppStatus ippsIIROne_32f(Ipp32f src, Ipp32f* pDstVal,<br />
IppsIIRState_32f* pState);<br />
IppStatus ippsIIROne_32fc(Ipp32fc src, Ipp32fc* pDstVal,<br />
IppsIIRState_32fc* pState);<br />
6-40
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIROne32f_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsIIRState32f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIROne32fc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsIIRState32fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIROne_64f(Ipp64f src, Ipp64f* pDstVal,<br />
IppsIIRState_64f* pState);<br />
IppStatus ippsIIROne_64fc(Ipp64fc src, Ipp64fc* pDstVal,<br />
IppsIIRState_64fc* pState);<br />
IppStatus ippsIIROne64f_32f(Ipp32f src, Ipp32f* pDstVal,<br />
IppsIIRState64f_32f* pState);<br />
IppStatus ippsIIROne64fc_32fc(Ipp32fc src, Ipp32fc* pDstVal,<br />
IppsIIRState64fc_32fc* pState);<br />
IppStatus ippsIIROne64f_32s_Sfs(Ipp32s src, Ipp32s* pDstVal,<br />
IppsIIRState64f_32s* pState, int scaleFactor);<br />
IppStatus ippsIIROne64fc_32sc_Sfs(Ipp32sc src, Ipp32sc* pDstVal,<br />
IppsIIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsIIROne64f_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsIIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIROne64fc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsIIRState64fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIROne32s_16s_Sfs(Ipp16s src, Ipp16s* pDstVal,<br />
IppsIIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsIIROne32sc_16sc_Sfs(Ipp16sc src, Ipp16sc* pDstVal,<br />
IppsIIRState32sc_16sc* pState, int scaleFactor);<br />
6-41
<strong>IPP</strong> : 1 6<br />
<br />
pState<br />
src<br />
pDstVal<br />
scaleFactor<br />
IIR <br />
ippsIIROne <br />
ippsIIROne <br />
<br />
2 <br />
<br />
ippsIIROne IIR src<br />
pDstVal <br />
pState scaleFactor <br />
<br />
scaleFactor <br />
ippsIIR ippsFIROne ippsIIRInitAlloc <br />
ippsIIRBQInitAlloc <br />
tapsLenpTaps pDlyLine <br />
order numBq <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
IIR<br />
IIR <br />
<br />
IppStatus ippsIIR_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
IppsIIRState_32f* pState);<br />
IppStatus ippsIIR_32f_I(Ipp32f* pSrcDst, int len, IppsIIRState_32f* pState);<br />
6-42
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIR_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
IppsIIRState_32fc* pState);<br />
IppStatus ippsIIR_32fc_I(Ipp32fc* pSrcDst, int len,<br />
IppsIIRState_32fc* pState);<br />
IppStatus ippsIIR32f_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
IppsIIRState32f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR32f_16s_ISfs(Ipp16s* pSrcDst, int len,<br />
IppsIIRState32f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR32fc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
IppsIIRState32fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIR32fc_16sc_ISfs(Ipp16sc* pSrcDst, int len,<br />
IppsIIRState32fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIR_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
IppsIIRState_64f* pState);<br />
IppStatus ippsIIR_64f_I(Ipp64f* pSrcDst, int len, IppsIIRState_64f* pState);<br />
IppStatus ippsIIR_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int len,<br />
IppsIIRState_64fc* pState);<br />
IppStatus ippsIIR_64fc_I(Ipp64fc* pSrcDst, int len,<br />
IppsIIRState_64fc* pState);<br />
IppStatus ippsIIR64f_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
IppsIIRState64f_32f* pState);<br />
IppStatus ippsIIR64f_32f_I(Ipp32f* pSrcDst, int len,<br />
IppsIIRState64f_32f* pState);<br />
IppStatus ippsIIR64fc_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int len,<br />
IppsIIRState64fc_32fc* pState);<br />
IppStatus ippsIIR64fc_32fc_I(Ipp32fc* pSrcDst, int len,<br />
IppsIIRState64fc_32fc* pState);<br />
IppStatus ippsIIR64f_32s_Sfs(const Ipp32s* pSrc, Ipp32s* pDst, int len,<br />
IppsIIRState64f_32s* pState, int scaleFactor);<br />
IppStatus ippsIIR64f_32s_ISfs(Ipp32s* pSrcDst, int len,<br />
IppsIIRState64f_32s* pState, int scaleFactor);<br />
6-43
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIR64fc_32sc_Sfs(const Ipp32sc* pSrc, Ipp32sc* pDst, int len,<br />
IppsIIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsIIR64fc_32sc_ISfs(Ipp32sc* pSrcDst, int len,<br />
IppsIIRState64fc_32sc* pState, int scaleFactor);<br />
IppStatus ippsIIR64f_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
IppsIIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR64f_16s_ISfs(Ipp16s* pSrcDst, int len,<br />
IppsIIRState64f_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR64fc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
IppsIIRState64fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIR64fc_16sc_ISfs(Ipp16sc* pSrcDst, int len,<br />
IppsIIRState64fc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIR32s_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst, int len,<br />
IppsIIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR32sc_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst, int len,<br />
IppsIIRState32sc_16sc* pState, int scaleFactor);<br />
IppStatus ippsIIR32s_16s_ISfs(Ipp16s* pSrcDst, int len,<br />
IppsIIRState32s_16s* pState, int scaleFactor);<br />
IppStatus ippsIIR32sc_16sc_ISfs(Ipp16sc* pSrcDst, int len,<br />
IppsIIRState32sc_16sc* pState, int scaleFactor);<br />
<br />
pState<br />
pSrc<br />
pDst<br />
pSrcDst<br />
len<br />
scaleFactor<br />
IIR <br />
ippsIIR <br />
ippsIIR <br />
ippsIIR ( <br />
) <br />
ippsIIR <br />
2 <br />
6-44
<strong>IPP</strong> : 1 6<br />
<br />
ippsIIR IIR pSrc <br />
pSrcDst len pDst <br />
pSrcDst pState <br />
scaleFactor <br />
scaleFactor <br />
ippsIIR ippsIIRInitAlloc ippsIIRBQInitAlloc <br />
tapsLen<br />
pTaps pDlyLine order numBq <br />
<br />
6-6 ippsIIR_32f 60Hz <br />
6-7 ippsIIR <br />
ippsCnvrt_64f32s_Sfs ippsIIRInitAlloc_32s <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
len <br />
ippStsContextMatchErr<br />
<br />
6-45
<strong>IPP</strong> : 1 6<br />
6-6<br />
ippsIIR_32f 60Hz <br />
IppStatus iir( void ) {<br />
#undef NUMITERS<br />
#define NUMITERS 150<br />
int n;<br />
IppStatus status;<br />
IppsIIRState_32f *ctx;<br />
Ipp32f *x = ippsMalloc_32f( NUMITERS ), *y = ippsMalloc_32f( NUMITERS );<br />
/// A second-order notch filter having notch freq at 60 Hz<br />
const float taps[] = {<br />
0.940809f,-1.105987f,0.940809f,1,-1.105987f,0.881618f<br />
};<br />
/// generate a signal having 60 Hz freq sampled with 400 Hz freq<br />
for(n=0;n> B = [0.940809,-1.105987,0.940809]; A = [1,-1.105987,0.881618];<br />
n = 0:150; x = sin(2*pi*n*60/400); y = filter(B,A,x); y(121:125)<br />
6-46
<strong>IPP</strong> : 1 6<br />
6-7<br />
ippsIIR <br />
IppStatus iir16s( void ) {<br />
#undef NUMITERS<br />
#define NUMITERS 150<br />
int n, tapsfactor = 30;<br />
IppStatus status;<br />
IppsIIRState32s_16s *ctx;<br />
Ipp16s *x = ippsMalloc_16s( NUMITERS ), *y = ippsMalloc_16s( NUMITERS );<br />
/// A second-order notch filter having notch freq at 60 Hz<br />
Ipp64f taps[6] = {<br />
0.940809f,-1.105987f,0.940809f,1,-1.105987f,0.881618f<br />
};<br />
Ipp32s taps32s[6];<br />
Ipp64f tmax, tmp[6];<br />
ippsAbs_64f( taps, tmp, 6 );<br />
ippsMax_64f( tmp, 6, &tmax );<br />
tapsfactor = 0;<br />
if( tmax > <strong>IPP</strong>_MAX_32S )<br />
while( (tmax/=2) > <strong>IPP</strong>_MAX_32S ) ++tapsfactor;<br />
else<br />
while( (tmax*=2) < <strong>IPP</strong>_MAX_32S ) --tapsfactor;<br />
if(tapsfactor >0 )<br />
ippsDivC_64f_I( (float)(1
<strong>IPP</strong> : 1 6<br />
IIRGetDlyLineIIRSetDlyLine<br />
IIR <br />
<br />
IppStatus ippsIIRGetDlyLine_32f(const IppsIIRState_32f* pState,<br />
Ipp32f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine_32f(IppsIIRState_32f* pState,<br />
const Ipp32f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine_32fc(const IppsIIRState_32fc* pState,<br />
Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine_32fc(IppsIIRState_32fc* pState,<br />
const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine32f_16s(const IppsIIRState32f_16s* pState,<br />
Ipp32f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine32f_16s(IppsIIRState32f_16s* pState,<br />
const Ipp32f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine32fc_16sc(const IppsIIRState32fc_16sc* pState,<br />
Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine32fc_16sc(IppsIIRState32fc_16sc* pState,<br />
const Ipp32fc* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine_64f(const IppsIIRState_64f* pState,<br />
Ipp64f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine_64f(IppsIIRState_64f* pState,<br />
const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine_64fc(const IppsIIRState_64fc* pState,<br />
Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine_64fc(IppsIIRState_64fc* pState,<br />
const Ipp64fc* pDlyLine);<br />
6-48
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIRGetDlyLine64f_32f(const IppsIIRState64f_32f* pState,<br />
Ipp64f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64f_32f(IppsIIRState64f_32f* pState,<br />
const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine64fc_32fc(const IppsIIRState64fc_32fc* pState,<br />
Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64fc_32fc(IppsIIRState64fc_32fc* pState,<br />
const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine64f_32s(const IppsIIRState64f_32s* pState,<br />
Ipp64f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64f_32s(IppsIIRState64f_32s* pState,<br />
const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine64fc_32sc(const IppsIIRState64fc_32sc* pState,<br />
Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64fc_32sc(IppsIIRState64fc_32sc* pState,<br />
const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine64f_16s(const IppsIIRState64f_16s* pState,<br />
Ipp64f* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64f_16s(IppsIIRState64f_16s* pState,<br />
const Ipp64f* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine64fc_16sc(const IppsIIRState64fc_16sc* pState,<br />
Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine64fc_16sc(IppsIIRState64fc_16sc* pState,<br />
const Ipp64fc* pDlyLine);<br />
IppStatus ippsIIRGetDlyLine32s_16s(const IppsIIRState32s_16s* pState,<br />
Ipp32s* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine32s_16s(IppsIIRState32s_16s* pState,<br />
const Ipp32s* pDlyLine);<br />
6-49
<strong>IPP</strong> : 1 6<br />
IppStatus ippsIIRGetDlyLine32sc_16sc(const IppsIIRState32sc_16sc* pState,<br />
Ipp32sc* pDlyLine);<br />
IppStatus ippsIIRSetDlyLine32sc_16sc(IppsIIRState32sc_16sc* pState,<br />
const Ipp32sc* pDlyLine);<br />
<br />
pState<br />
pDlyLine<br />
IIR <br />
<br />
orderBQ 2*numBq <br />
NULL <br />
<br />
<br />
ippsIIRGetDlyLine ippsIIRSetDlyLine IIR <br />
<br />
ippsIIRGetDlyLine ippsIIRGetDlyLine pState <br />
pDlyLine <br />
ippsIIRSetDlyLine ippsIIRSetDlyLine pDlyLine <br />
pState <br />
ippsIIRGetDlyLine ippsIIRSetDlyLine ippsIIRInitAlloc <br />
ippsIIPBQInitAlloc <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
<br />
6-50
<strong>IPP</strong> : 1 6<br />
<br />
<br />
( ) <br />
<br />
<br />
( Window ) <br />
<strong>IPP</strong> <br />
<br />
<br />
1 <strong>IPP</strong> <br />
<br />
<br />
<br />
FilterMedian<br />
<br />
IppStatus ippsFilterMedian_32f_I(Ipp32f* pSrcDst, int len, int maskSize);<br />
IppStatus ippsFilterMedian_64f_I(Ipp64f* pSrcDst, int len, int maskSize);<br />
IppStatus ippsFilterMedian_16s_I(Ipp16s* pSrcDst, int len, int maskSize);<br />
IppStatus ippsFilterMedian_8u_I(Ipp8u* pSrcDst, int len, int maskSize);<br />
IppStatus ippsFilterMedian_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
int len, int maskSize);<br />
IppStatus ippsFilterMedian_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
int len, int maskSize);<br />
IppStatus ippsFilterMedian_16s(const Ipp16s* pSrc, Ipp16s* pDst,<br />
int len, int maskSize);<br />
IppStatus ippsFilterMedian_8u(const Ipp8u* pSrc, Ipp8u* pDst,<br />
int len, int maskSize);<br />
6-51
<strong>IPP</strong> : 1 6<br />
<br />
pSrcDst<br />
pSrc<br />
pDst<br />
len<br />
maskSize<br />
( ) <br />
ippsFilterMedian <br />
<br />
ippsFilterMedian <br />
<br />
<br />
<br />
1 <br />
<br />
<br />
ippsFilterMedian pSrc pSrcDst <br />
pDst pSrcDst <br />
<br />
x[-1]=x[0] x[len]=x[len-1] <br />
6-8 ippsFilterMedian_16s_I <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
len <br />
ippStsEvenMedianMaskSize<br />
<br />
6-52
<strong>IPP</strong> : 1 6<br />
6-8<br />
ippsFilterMedian <br />
void median(void) {<br />
Ipp16s x[8] = {1,2,127,4,5,0,7,8};<br />
IppStatus status = ippsFilterMedian_16s_I(x, 8, 3);<br />
printf_16s(“median =”, x,8, status);<br />
}<br />
Output:<br />
median = 1 2 4 5 4 5 7 8<br />
Matlab* Analog:<br />
>> x = [1 2 127 4 5 0 7 8]; medfilt1(x)<br />
6-53
<strong>IPP</strong> : 1 6<br />
6-54
7<br />
<br />
<strong>IPP</strong> <strong>IPP</strong> <br />
(DFT) (FFT)<br />
(DCT) <br />
<br />
<br />
flag hint <br />
PermPackCCS <br />
<br />
<br />
flag hint <br />
flag hint <br />
flag 7-1 flag <br />
flag 1 A B DFT <br />
<br />
7-1
<strong>IPP</strong> : 1 7<br />
7-1<br />
flag <br />
A B <br />
<strong>IPP</strong>_FFT_DIV_FWD_BY_N 1/N 1 1/N <br />
<strong>IPP</strong>_FFT_DIV_INV_BY_N 1 1/N 1/N <br />
<strong>IPP</strong>_FFT_DIV_BY_SQRTN 1/N 1/2 1/N 1/2 1/N 1/2 <br />
<br />
<strong>IPP</strong>_FFT_NODIV_BY_ANY 1 1 1/N<br />
1/N 1/2 <br />
hint <br />
7-2 hint <br />
hint 4-5 <br />
8-27 <br />
7-2<br />
<br />
hint <br />
ippAlgHintNone<br />
ippAlgHintFast<br />
ippAlgHintAccurate<br />
Pack <br />
<br />
<br />
<br />
<br />
Pack <br />
FFT <br />
( 2 FFT )Pack <br />
FFT 7-3 <br />
ippsConjPack 7-6 <br />
ConjPack<br />
7-2
<strong>IPP</strong> : 1 7<br />
Perm <br />
Perm FFT FFT <br />
Perm Pack<br />
1 Perm 1 <br />
<br />
Perm FFT 7-3 <br />
ippsConjPerm 7-4 <br />
ConjPerm<br />
CCS <br />
CCS FFT <br />
<br />
CCS FFT 7-3 CCS <br />
1 <br />
ippsConjCCS 7-8<br />
ConjCCS<br />
7-3<br />
PackPerm<br />
CCS FFT <br />
FFTReal 0 1 2 3 . . . N-2 N-1 N N+1<br />
Pack R 0 R 1 I 1 R 2 . . . I N/2-1 R N/2<br />
Perm R 0 R N/2 R 1 I 1 . . . R N/2-1 I N/2-1<br />
CCS R 0 0 R 1 I 1 . . . R N/2-1 I N/2-1 R N/2 0<br />
<br />
ConjPermConjPack ConjCCS FFT <br />
<br />
<br />
2 CCS <br />
<br />
<br />
<br />
7-3
<strong>IPP</strong> : 1 7<br />
ConjPerm<br />
Perm <br />
<br />
IppStatus ippsConjPerm_64fc_I(Ipp64fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPerm_32fc_I(Ipp32fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPerm_16sc_I(Ipp16sc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPerm_64fc(const Ipp64f* pSrc, Ipp64fc* pDst, int lenDst);<br />
IppStatus ippsConjPerm_32fc(const Ipp32f* pSrc, Ipp32fc* pDst, int lenDst);<br />
IppStatus ippsConjPerm_16sc(const Ipp16s* pSrc, Ipp16sc* pDst, int lenDst);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
lenDst<br />
<br />
<br />
( ) <br />
<br />
<br />
<br />
ippsConjPerm pSrc Perm <br />
pDst <br />
ippsConjPerm pSrcDst Perm <br />
pSrcDst <br />
7-4 Perm FFT <br />
<br />
<br />
7-1 ippsConjPerm <br />
<br />
7-4
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDstpDst pSrc NULL<br />
lenDst <br />
7-4 FFT <br />
<br />
<br />
<br />
<br />
FFT([1]) 1 {1, 0} 1<br />
FFT([1 2]) 3, -1 {3, 0}, {-1, 0} 2<br />
FFT([1 2 3]) 6, -1.5, 0.86 {6, 0}, {-1.5, 0.86}, {-1.5, -0.86} 3<br />
FFT([1 2 3 9]) 15, -7, -2, 7 {15, 0}, {-2, 7}, {-7, 0}, {-2, -7} 4<br />
7-1<br />
ippsConjPerm <br />
void ConjPerm(void) {<br />
Ipp16s x[8] = {1,2,3,5,6,7,8,9};<br />
Ipp16sc zero={0,0}, y[6];<br />
IppStatus st;<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjPerm_16sc( x, y, 6 );<br />
printf_16sc(“Perm 6:”, y, 6, st );<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjPerm_16sc( x, y, 5 );<br />
printf_16sc(“Perm 5:”, y, 5, st );<br />
}<br />
Output:<br />
Perm 6: {1,0} {3,5} {6,7} {2,0} {6,-7} {3,-5}<br />
Perm 5: {1,0} {2,3} {5,6} {5,-6} {2,-3}<br />
7-5
<strong>IPP</strong> : 1 7<br />
ConjPack<br />
Pack <br />
<br />
IppStatus ippsConjPack_64fc_I(Ipp64fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPack_32fc_I(Ipp32fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPack_16sc_I(Ipp16sc* pSrcDst, int lenDst);<br />
IppStatus ippsConjPack_64fc(const Ipp64f* pSrc, Ipp64fc* pDst, int lenDst);<br />
IppStatus ippsConjPack_32fc(const Ipp32f* pSrc, Ipp32fc* pDst, int lenDst);<br />
IppStatus ippsConjPack_16sc(const Ipp16s* pSrc, Ipp16sc* pDst, int lenDst);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
lenDst<br />
<br />
<br />
( ) <br />
<br />
<br />
<br />
ippsConjPack pSrc Pack <br />
pDst <br />
ippsConjPack pSrcDst Pack <br />
pSrcDst <br />
7-5 Pack FFT <br />
<br />
<br />
7-2 ippsConjPack <br />
<br />
7-6
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDstpDst pSrc NULL<br />
lenDst <br />
7-5 Pack <br />
<br />
<br />
<br />
<br />
FFT([1]) 1 {1, 0} 1<br />
FFT([1 2]) 3, -1 {3, 0}, {-1, 0} 2<br />
FFT([1 2 3]) 6, -1.5, 0.86 {6, 0}, {-1.5, 0.86}, {-1.5, -0.86} 3<br />
FFT([1 2 3 9]) 15, -2, 7, -7 {15, 0}, {-2, 7}, {-7, 0}, {-2, -7} 4<br />
7-2<br />
ippsConjPack <br />
void ConjPack(void) {<br />
Ipp16s x[8] = {1,2,3,5,6,7,8,9};<br />
Ipp16sc zero={0,0}, y[6];<br />
IppStatus st;<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjPack_16sc( x, y, 6 );<br />
printf_16sc(“pack 6”, y, 6, st );<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjPack_16sc( x, y, 5 );<br />
printf_16sc(“pack 5”, y, 5, st );<br />
}<br />
Output:<br />
Pack 6: {1,0} {2,3} {5,6} {7,0} {5,-6} {2,-3}<br />
Pack 5: {1,0} {2,3} {5,6} {5,-6} {2,-3}<br />
7-7
<strong>IPP</strong> : 1 7<br />
ConjCCS<br />
CCS <br />
<br />
IppStatus ippsConjCCS_64fc_I(Ipp64fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjCCS_32fc_I(Ipp32fc* pSrcDst, int lenDst);<br />
IppStatus ippsConjCCS_16sc_I(Ipp16sc* pSrcDst, int lenDst);<br />
IppStatus ippsConjCCS_64fc(const Ipp64f* pSrc, Ipp64fc* pDst, int lenDst);<br />
IppStatus ippsConjCCS_32fc(const Ipp32f* pSrc, Ipp32fc* pDst, int lenDst);<br />
IppStatus ippsConjCCS_16sc(const Ipp16s* pSrc, Ipp16sc* pDst, int lenDst);<br />
<br />
pSrc<br />
pDst<br />
pSrcDst<br />
lenDst<br />
<br />
<br />
( ) <br />
<br />
<br />
<br />
ippsConjCCS pSrc CCS <br />
pDst <br />
ippsConjCcs pSrcDst CCS <br />
pSrcDst <br />
7-6 CCS FFT <br />
<br />
<br />
CCS <br />
2 7-3 ippsConjCCS <br />
7-8
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDstpDst pSrc NULL<br />
lenDst <br />
7-6 CCS <br />
<br />
<br />
<br />
<br />
FFT([1]) 1, 0 {1, 0} 1<br />
FFT([1 2]) 3, 0, -1, 0 {3, 0}, {-1, 0} 2<br />
FFT([1 2 3]) 6, 0, -1.5, 0.86 {6, 0}, {-1.5, 0.86}, {-1.5, -0.86} 3<br />
FFT([1 2 3 9]) 15, 0, -2, 7, -7, 0 {15, 0}, {-2, 7}, {-7, 0}, {-2, -7} 4<br />
7-3<br />
ippsConjCCS <br />
void ConjCCS(void) {<br />
Ipp16s x[8] = {1,2,3,5,6,7,8,9};<br />
Ipp16sc zero={0,0}, y[6];<br />
IppStatus st;<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjCCS_16sc( x, y, 6 );<br />
printf_16sc(“CCS 6:”, y, 6, st );<br />
ippsSet_16sc( zero, y, 6 );<br />
st = ippsConjCCS_16sc( x, y, 5 );<br />
printf_16sc(“CCS 5:”, y, 5, st );<br />
}<br />
Ouput:<br />
CCS 6: {1,2} {3,5} {6,7} {8,9} {6,-7} {3,-5}<br />
CCS 5: {1,2} {3,5} {6,7} {6,-7} {3,-5}<br />
7-9
<strong>IPP</strong> : 1 7<br />
<br />
Pack Perm <br />
ippsFFTFwd_RToPack <br />
ippsFFTInv_PackToR <br />
ippsMul Pack Perm <br />
<br />
• Pack 2 <br />
• Perm <br />
<br />
order FFT N 2 (N = 2 order )<br />
MulPackMulPerm<br />
Pack Perm <br />
2 <br />
IppStatus ippsMulPack_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst,<br />
int length, int scaleFactor);<br />
IppStatus ippsMulPack_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int length, int scaleFactor);<br />
IppStatus ippsMulPack_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int length);<br />
IppStatus ippsMulPack_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int length);<br />
IppStatus ippsMulPack_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int length);<br />
IppStatus ippsMulPack_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int length);<br />
IppStatus ippsMulPerm_16s_ISfs(const Ipp16s* pSrc, Ipp16s* pSrcDst,<br />
int length, int scaleFactor);<br />
IppStatus ippsMulPerm_16s_Sfs(const Ipp16s* pSrc1, const Ipp16s* pSrc2,<br />
Ipp16s* pDst, int length, int scaleFactor);<br />
IppStatus ippsMulPerm_32f_I(const Ipp32f* pSrc, Ipp32f* pSrcDst, int length);<br />
7-10
<strong>IPP</strong> : 1 7<br />
IppStatus ippsMulPerm_32f(const Ipp32f* pSrc1, const Ipp32f* pSrc2,<br />
Ipp32f* pDst, int length);<br />
IppStatus ippsMulPerm_64f_I(const Ipp64f* pSrc, Ipp64f* pSrcDst, int length);<br />
IppStatus ippsMulPerm_64f(const Ipp64f* pSrc1, const Ipp64f* pSrc2,<br />
Ipp64f* pDst, int length);<br />
<br />
pSrc1pSrc2<br />
pDst<br />
pSrc<br />
pSrcDst<br />
length<br />
scaleFactor<br />
<br />
pSrc1[n] * pSrc2[n] <br />
<br />
pSrcDst <br />
<br />
( ) <br />
<br />
<br />
2 <br />
<br />
ippsMulPack ippsMulPerm pSrc1 pSrc2 <br />
pDst <br />
ippsMulPack ippsMulPerm( ) pSrc <br />
pSrcDst pSrcDst <br />
<br />
Perm Pack <br />
<br />
FFT <br />
<br />
ippsMulPack ippsMulPack Pack <br />
ippsMulPerm ippsMulPerm Perm <br />
CCS <br />
Sfs scaleFactor <br />
<br />
7-4 ippsMulPack_32f_I <br />
7-11
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDstpDstpSrc1pSrc2<br />
pSrc NULL<br />
length <br />
7-4<br />
ippsMulPack <br />
void mulpack( void ) {<br />
Ipp32f x[8], X[8], h[8]={1.0f/3,1.0f/3,1.0f/3,0,0,0,0,0}, H[8];<br />
IppStatus st;<br />
IppsFFTSpec_R_32f* spec;<br />
st = ippsFFTInitAlloc_R_32f(&spec, 3, <strong>IPP</strong>_FFT_DIV_INV_BY_N,<br />
ippAlgHintNone);<br />
ippsSet_32f( 3, x, 8 );<br />
x[3] = 5;<br />
st = ippsFFTFwd_RToPack_32f( x, X, spec, NULL );<br />
st = ippsFFTFwd_RToPack_32f( h, H, spec, NULL );<br />
ippsMulPack_32f_I( H, X, 8 );<br />
st = ippsFFTInv_PackToR_32f( X, x, spec, NULL );<br />
printf_32f("filtered =", x, 8, st );<br />
ippsFFTFree_R_32f( spec );<br />
}<br />
Output:<br />
filtered = 3.0 3.0 3.0 3.666667 3.666667 3.666667 3.0 3.0<br />
Matlab* analog:<br />
>> x=3*ones(1,8); x(4)=5;h=zeros(1,8); h(1:3)=1/3;<br />
real(ifft(fft(x).*fft(h)))<br />
7-12
<strong>IPP</strong> : 1 7<br />
<br />
(FFT)<br />
FFT (DFT) <br />
FFT 2 <br />
<br />
FFT <br />
<br />
<br />
<br />
hint ( <br />
) flag <br />
<br />
2 FFT PermPack<br />
CCS <br />
SIMD FFT <br />
<br />
<br />
<br />
FFTInitAlloc_CFFTInitAlloc_R<br />
<br />
<br />
IppStatus ippsFFTInitAlloc_C_16sc(IppsFFTSpec_C_16sc** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_C_16s(IppsFFTSpec_C_16s** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_R_16s(IppsFFTSpec_R_16s** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_C_32fc(IppsFFTSpec_C_32fc** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
7-13
<strong>IPP</strong> : 1 7<br />
IppStatus ippsFFTInitAlloc_C_32f(IppsFFTSpec_C_32f** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_R_32f(IppsFFTSpec_R_32f** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_C_64fc(IppsFFTSpec_C_64fc** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_C_64f(IppsFFTSpec_C_64f** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsFFTInitAlloc_R_64f(IppsFFTSpec_R_64f** pFFTSpec, int order,<br />
int flag, IppHintAlgorithm hint);<br />
<br />
flag<br />
hint<br />
order<br />
pFFTSpec<br />
flag flag <br />
hint <br />
hint <br />
flag hint <br />
FFT N=2 order <br />
FFT <br />
<br />
ippsFFTInitAlloc_C ippsFFTInitAlloc_R order<br />
flag hint <br />
FFT pFFTSpec order <br />
2 order <br />
ippsFFTInitAlloc_C ippsFFTInitAlloc_C FFT <br />
<br />
ippsFFTInitAlloc_R ippsFFTInitAlloc_R FFT <br />
<br />
<br />
ippStsNoErr<br />
ippsStsNullPtrErr<br />
ippStsFftOrderErr<br />
<br />
pFFTSpec NULL<br />
order <br />
7-14
<strong>IPP</strong> : 1 7<br />
ippStsFftFlagErr<br />
ippStsMemAllocErr<br />
flag <br />
<br />
FFTFree_CFFTFree_R<br />
<br />
<br />
IppStatus ippsFFTFree_C_16sc(IppsFFTSpec_C_16sc* pFFTSpec);<br />
IppStatus ippsFFTFree_C_16s(IppsFFTSpec_C_16s* pFFTSpec);<br />
IppStatus ippsFFTFree_R_16s(IppsFFTSpec_R_16s* pFFTSpec);<br />
IppStatus ippsFFTFree_C_32fc(IppsFFTSpec_C_32fc* pFFTSpec);<br />
IppStatus ippsFFTFree_C_32f(IppsFFTSpec_C_32f* pFFTSpec);<br />
IppStatus ippsFFTFree_R_32f(IppsFFTSpec_R_32f* pFFTSpec);<br />
IppStatus ippsFFTFree_C_64fc(IppsFFTSpec_C_64fc* pFFTSpec);<br />
IppStatus ippsFFTFree_C_64f(IppsFFTSpec_C_64f* pFFTSpec);<br />
IppStatus ippsFFTFree_R_64f(IppsFFTSpec_R_64f* pFFTSpec);<br />
<br />
pFFTSpec<br />
FFT <br />
<br />
ippsFFTFree ippsFFTInit_C ippsFFTInit_R <br />
FFT pFFTSpec <br />
ippsFFTFree <br />
ippsFFTFree_C ippsFFTFree_C FFT <br />
<br />
ippsFFTFree_R ippsFFTFree_R FFT <br />
7-15
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pFFTSpec NULL<br />
ippStsContextMatchErr<br />
pFFTSpec <br />
FFTGetBufSize_CFFTGetBufSize_R<br />
FFT ( ) <br />
<br />
IppStatus ippsFFTGetBufSize_C_16sc(const IppsFFTSpec_C_16sc* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_C_16s(const IppsFFTSpec_C_16s* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_R_16s(const IppsFFTSpec_R_16s* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_C_32fc(const IppsFFTSpec_C_32fc* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_C_32f(const IppsFFTSpec_C_32f* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_R_32f(const IppsFFTSpec_R_32f* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_C_64fc(const IppsFFTSpec_C_64fc* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_C_64f(const IppsFFTSpec_C_64f* pFFTSpec,<br />
int* pSize);<br />
IppStatus ippsFFTGetBufSize_R_64f(const IppsFFTSpec_R_64f* pFFTSpec,<br />
int* pSize);<br />
7-16
<strong>IPP</strong> : 1 7<br />
<br />
pFFTSpec<br />
pSize<br />
FFT <br />
FFT <br />
<br />
ippsFFTGetBufSize pFFTSpec FFT <br />
( ) pSize <br />
ippsFFTGetBufSize_C ippsFFTGetBufSize_C FFT <br />
<br />
ippsFFTGetBufSize_R ippsFFTGetBufSize_R FFT <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pFFTSpec NULL<br />
ippStsContextMatchErr<br />
pFFTSpec <br />
FFTFwd_CToCFFTInv_CToC<br />
<br />
(FFT) <br />
IppStatus ippsFFTFwd_CToC_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
const IppsFFTSpec_C_16sc* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
const IppsFFTSpec_C_16sc* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_CToC_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDstRe, Ipp16s* pDstIm, const IppsFFTSpec_C_16s* pFFTSpecx,<br />
int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDstRe, Ipp16s* pDstIm, const IppsFFTSpec_C_16s* pFFTSpec,<br />
int scaleFactor, Ipp8u* pBuffer);<br />
7-17
<strong>IPP</strong> : 1 7<br />
IppStatus ippsFFTFwd_CToC_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
const IppsFFTSpec_C_32fc* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
const IppsFFTSpec_C_32fc* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_CToC_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDstRe, Ipp32f* pDstIm, const IppsFFTSpec_C_32f* pFFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDstRe, Ipp32f* pDstIm, const IppsFFTSpec_C_32f* pFFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_CToC_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
const IppsFFTSpec_C_64fc* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
const IppsFFTSpec_C_64fc* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_CToC_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDstRe, Ipp64f* pDstIm, const IppsFFTSpec_C_64f* pFFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CToC_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDstRe, Ipp64f* pDstIm, const IppsFFTSpec_C_64f* pFFTSpec,<br />
Ipp8u* pBuffer);<br />
<br />
pFFTSpec<br />
pSrc<br />
pDst<br />
pSrcRe<br />
pSrcIm<br />
pDstRe<br />
pDstIm<br />
pBuffer<br />
scaleFactor<br />
FFT <br />
<br />
<br />
<br />
<br />
<br />
<br />
FFT <br />
2 <br />
7-18
<strong>IPP</strong> : 1 7<br />
<br />
ippsFFTFwd_CToC ippsFFTInv_CToC pFFTSpec ( <br />
order flag<br />
hint) FFT <br />
(32fc ) <br />
pSrc pDst <br />
pSrcRe pSrcIm <br />
(32f ) pDstRe<br />
pDstIm <br />
scaleFactor <br />
pBuffer FFT <br />
<br />
FFT <br />
2 <br />
ippsFFTFwd_CToC ippsFFTFwd_CToC FFT <br />
FFT 2 <br />
ippsFFTInv_CToC ippsFFTInv_CToC FFT <br />
FFT 2 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
pFFTSpec <br />
ippStsMemAllocErr<br />
<br />
7-19
<strong>IPP</strong> : 1 7<br />
FFTFwd_RToPermFFTInv_PermToR<br />
FFTFwd_RToPackFFTInv_PackToR<br />
FFTFwd_RToCCSFFTInv_CCSToR<br />
<br />
(FFT) <br />
IppStatus ippsFFTFwd_RToPerm_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToPack_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToCCS_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PermToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PackToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CCSToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsFFTSpec_R_16s* pFFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToPerm_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToPack_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToCCS_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PermToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PackToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CCSToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);<br />
7-20
<strong>IPP</strong> : 1 7<br />
IppStatus ippsFFTFwd_RToPerm_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToPack_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTFwd_RToCCS_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PermToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_PackToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsFFTInv_CCSToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsFFTSpec_R_64f* pFFTSpec, Ipp8u* pBuffer);<br />
<br />
pFFTSpec<br />
pSrc<br />
pDst<br />
pBuffer<br />
scaleFactor<br />
FFT <br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
pFFTSpec ( order<br />
flag hint) <br />
FFT <br />
( ) PackPerm<br />
CCS <br />
FFT <br />
scaleFactor <br />
pBuffer <br />
FFT <br />
FFT <br />
2 <br />
7-21
<strong>IPP</strong> : 1 7<br />
ippsFFTFwd_RToPermippsFFTInv_PermToR<br />
FFT Perm FFT 2 <br />
<br />
ippsFFTFwd_RToPackippsFFTInv_PackToR<br />
FFT Pack FFT 2 <br />
<br />
ippsFFTFwd_RToCCSippsFFTInv_CCSToR<br />
FFT CCS FFT 2 <br />
<br />
7-7 PackPerm CCS <br />
7-5 ippsFFTFwd_RToCCS_32f <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
pFFTSpec <br />
ippStsMemAllocErr<br />
<br />
7-7<br />
PackPerm<br />
CCS FFT <br />
FFTReal 0 1 2 3 . . . N-2 N-1 N N+1<br />
Pack R 0 R 1 I 1 R 2 . . . I N/2-1 R N/2<br />
Perm R 0 R N/2 R 1 I 1 . . . R N/2-1 I N/2-1<br />
CCS R 0 0 R 1 I 1 . . . R N/2-1 I N/2-1 R N/2 0<br />
7-22
<strong>IPP</strong> : 1 7<br />
7-5<br />
ippsFFTFwd_RToCCS <br />
IppStatus fft( void ) {<br />
Ipp32f x[8], X[10];<br />
int n;<br />
IppStatus status;<br />
IppsFFTSpec_R_32f* spec;<br />
status = ippsFFTInitAlloc_R_32f(&spec, 3, <strong>IPP</strong>_FFT_DIV_INV_BY_N,<br />
ippAlgHintNone );<br />
for(n=0; n> n=0:7; x=sin(2*pi*n*16/64); X=abs(fft(x)); X(1:4)<br />
7-23
<strong>IPP</strong> : 1 7<br />
<br />
<br />
(DFT) DFT <br />
DFT <br />
hint ( <br />
) flag <br />
<br />
2 FFT PermPack<br />
CCS <br />
DFT <br />
<br />
<br />
[Mit93]8-2 Fast Computation of the DFT <br />
<br />
DFTInitAlloc_CDFTInitAlloc_R<br />
<br />
<br />
IppStatus ippsDFTInitAlloc_C_16sc(IppsDFTSpec_C_16sc** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_C_16s(IppsDFTSpec_C_16s** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_R_16s(IppsDFTSpec_R_16s** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_C_32fc(IppsDFTSpec_C_32fc** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_C_32f(IppsDFTSpec_C_32f** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_R_32f(IppsDFTSpec_R_32f** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
7-24
<strong>IPP</strong> : 1 7<br />
IppStatus ippsDFTInitAlloc_C_64fc(IppsDFTSpec_C_64fc** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_C_64f(IppsDFTSpec_C_64f** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
IppStatus ippsDFTInitAlloc_R_64f(IppsDFTSpec_R_64f** pDFTSpec, int length,<br />
int flag, IppHintAlgorithm hint);<br />
<br />
flag<br />
hint<br />
length<br />
pDFTSpec<br />
flag flag <br />
hint <br />
hint <br />
flag hint <br />
DFT <br />
DFT <br />
<br />
ippsDFTInitAlloc_C ippsDFTInitAlloc_R length<br />
flag hint <br />
DFT pDFTSpec length <br />
<br />
ippsDFTInitAlloc_C ippsDFTInitAlloc_C DFT <br />
<br />
ippsDFTInitAlloc_R ippsDFTInitAlloc_R DFT <br />
<br />
<br />
ippStsNoErr<br />
ippsNullPtrErr<br />
ippStsFftOrderErr<br />
ippStsFftFlagErr<br />
ippStsMemAllocErr<br />
<br />
pDFTSpec NULL<br />
order <br />
flag <br />
<br />
7-25
<strong>IPP</strong> : 1 7<br />
DFTFree_CDFTFree_R<br />
<br />
<br />
IppStatus ippsDFTFree_C_16sc(IppsDFTSpec_C_16sc* pDFTSpec);<br />
IppStatus ippsDFTFree_C_16s(IppsDFTSpec_C_16s* pDFTSpec);<br />
IppStatus ippsDFTFree_R_16s(IppsDFTSpec_R_16s* pDFTSpec);<br />
IppStatus ippsDFTFree_C_32fc(IppsDFTSpec_C_32fc* pDFTSpec);<br />
IppStatus ippsDFTFree_C_32f(IppsDFTSpec_C_32f* pDFTSpec);<br />
IppStatus ippsDFTFree_R_32f(IppsDFTSpec_R_32f* pDFTSpec);<br />
IppStatus ippsDFTFree_C_64fc(IppsDFTSpec_C_64fc* pDFTSpec);<br />
IppStatus ippsDFTFree_C_64f(IppsDFTSpec_C_64f* pDFTSpec);<br />
IppStatus ippsDFTFree_R_64f(IppsDFTSpec_R_64f* pDFTSpec);<br />
<br />
pDFTSpec<br />
DFT <br />
<br />
ippsDFTFree ippsDFTInitAlloc_C ippsDFTInitAlloc_R <br />
DFT <br />
pDFTSpec ippsDFTFree <br />
ippsDFTFree_C ippsDFTFree_C DFT <br />
<br />
ippsDFTFree_R ippsDFTFree_R DFT <br />
7-26
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pDFTSpec NULL<br />
ippStsContextMatchErr<br />
pDFTSpec <br />
DFTGetBufSize_CDFTGetBufSize_R<br />
DFT ( ) <br />
<br />
IppStatus ippsDFTGetBufSize_C_16sc(const IppsDFTSpec_C_16sc* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_C_16s(const IppsDFTSpec_C_16s* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_R_16s(const IppsDFTSpec_R_16s* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_C_32fc(const IppsDFTSpec_C_32fc* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_C_32f(const IppsDFTSpec_C_32f* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_R_32f(const IppsDFTSpec_R_32f* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_C_64fc(const IppsDFTSpec_C_64fc* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_C_64f(const IppsDFTSpec_C_64f* pDFTSpec,<br />
int* pSize);<br />
IppStatus ippsDFTGetBufSize_R_64f(const IppsDFTSpec_R_64f* pDFTSpec,<br />
int* pSize);<br />
7-27
<strong>IPP</strong> : 1 7<br />
<br />
pDFTSpec<br />
pSize<br />
DFT <br />
DFT <br />
<br />
ippsDFTGetBufSize pDFTSpec DFT <br />
( ) pSize <br />
ippsDFTGetBufSize_C ippsDFTGetBufSize_C DFT <br />
<br />
ippsDFTGetBufSize_R ippsDFTGetBufSize_R DFT <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pDFTSpec NULL<br />
ippStsContextMatchErr<br />
pDFTSpec <br />
DFTFwd_CToCDFTInv_CToC<br />
<br />
(DFT) <br />
IppStatus ippsDFTFwd_CToC_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
const IppsDFTSpec_C_16sc* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_16sc_Sfs(const Ipp16sc* pSrc, Ipp16sc* pDst,<br />
const IppsDFTSpec_C_16sc* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_CToC_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDstRe, Ipp16s* pDstIm, const IppsDFTSpec_C_16s* pDFTSpec,<br />
int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_16s_Sfs(const Ipp16s* pSrcRe, const Ipp16s* pSrcIm,<br />
Ipp16s* pDstRe, Ipp16s* pDstIm, const IppsDFTSpec_C_16s* pDFTSpec,<br />
int scaleFactor, Ipp8u* pBuffer);<br />
7-28
<strong>IPP</strong> : 1 7<br />
IppStatus ippsDFTFwd_CToC_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
const IppsDFTSpec_C_32fc* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst,<br />
const IppsDFTSpec_C_32fc* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_CToC_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDstRe, Ipp32f* pDstIm, const IppsDFTSpec_C_32f* pDFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm,<br />
Ipp32f* pDstRe, Ipp32f* pDstIm, const IppsDFTSpec_C_32f* pDFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_CToC_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
const IppsDFTSpec_C_64fc* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst,<br />
const IppsDFTSpec_C_64fc* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_CToC_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDstRe, Ipp64f* pDstIm, const IppsDFTSpec_C_64f* pDFTSpec,<br />
Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CToC_64f(const Ipp64f* pSrcRe, const Ipp64f* pSrcIm,<br />
Ipp64f* pDstRe, Ipp64f* pDstIm, const IppsDFTSpec_C_64f* pDFTSpec,<br />
Ipp8u* pBuffer);<br />
<br />
pDFTSpec<br />
pSrc<br />
pDst<br />
pSrcRe<br />
pSrcIm<br />
pDstRe<br />
pDstIm<br />
pBuffer<br />
scaleFactor<br />
DFT <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
2 <br />
7-29
<strong>IPP</strong> : 1 7<br />
<br />
ippsDFTFwd_CToC ippsDFTInv_CToC pDFTSpec ( <br />
length flag<br />
hint) DFT <br />
(32fc ) <br />
pSrc pDst <br />
pSrcRe pSrcIm <br />
(32f ) pDstRe<br />
pDstIm <br />
scaleFactor <br />
pBuffer DFT <br />
<br />
DFT <br />
2 <br />
DFT <br />
Xk ( ) = A ∑ x( n) ⋅ exp – j2π kn ------ ,<br />
⎝<br />
⎛ N ⎠<br />
⎞<br />
k n N <br />
lengthA B flag x(n) <br />
pSrc[n]X(k) pDst[k] x(n) pDst[n]X(k) <br />
pSrc[k] <br />
<br />
ippsDFTFwd_CToC ippsDFTFwd_CToC DFT <br />
ippsDFTInv_CToC ippsDFTInv_CToC DFT <br />
<br />
N – 1<br />
n = 0<br />
N – 1<br />
xk ( ) = B ∑ X( n) ⋅ exp j2π kn ------<br />
⎝<br />
⎛ N ⎠<br />
⎞<br />
n = 0<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
pDFTSpec <br />
ippStsMemAllocErr<br />
<br />
7-30
<strong>IPP</strong> : 1 7<br />
DFTFwd_RToPermDFTInv_PermToR<br />
DFTFwd_RToPackDFTInv_PackToR<br />
DFTFwd_RToCCSDFTInv_CCSToR<br />
<br />
(DFT) <br />
IppStatus ippsDFTFwd_RToPerm_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToPack_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToCCS_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PermToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PackToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus, ippsDFTInv_CCSToR_16s_Sfs(const Ipp16s* pSrc, Ipp16s* pDst,<br />
const IppsDFTSpec_R_16s* pDFTSpec, int scaleFactor, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToPerm_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToPack_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToCCS_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PermToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PackToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CCSToR_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDFTSpec_R_32f* pDFTSpec, Ipp8u* pBuffer);<br />
7-31
<strong>IPP</strong> : 1 7<br />
IppStatus ippsDFTFwd_RToPerm_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToPack_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTFwd_RToCCS_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PermToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_PackToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDFTInv_CCSToR_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDFTSpec_R_64f* pDFTSpec, Ipp8u* pBuffer);<br />
<br />
pDFTSpec<br />
pSrc<br />
pDst<br />
pBuffer<br />
scaleFactor<br />
DFT <br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
pDFTSpec ( length<br />
flag hint) <br />
DFT <br />
( ) PackPerm<br />
CCS <br />
DFT <br />
scaleFactor <br />
pBuffer DFT <br />
<br />
DFT <br />
2 <br />
7-32
<strong>IPP</strong> : 1 7<br />
DFT <br />
Xk ( ) = A ∑ x( n) ⋅ exp – j2π kn ------<br />
⎝<br />
⎛ ,<br />
N ⎠<br />
⎞<br />
k n N <br />
lengthA B flag x(n) <br />
pSrc[n]X(k) pDst[k] x(n) pDst[n]X(k) <br />
pSrc[k] <br />
<br />
ippsDFTFwd_RToPermippsDFTInv_PermToR<br />
DFT Perm <br />
ippsDFTFwd_RToPackippsDFTInv_PackToR<br />
DFT Pack <br />
ippsDFTFwd_RToCCSippsDFTInv_CCSToR<br />
DFT CCS <br />
7-6 ippsDFTFwd_RToCCS_32f <br />
<br />
N – 1<br />
n = 0<br />
N – 1<br />
xk ( ) = B ∑ X( n) ⋅ exp j2π kn ------<br />
⎝<br />
⎛ N ⎠<br />
⎞<br />
n = 0<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
pDFTSpec <br />
ippStsMemAllocErr<br />
<br />
7-33
<strong>IPP</strong> : 1 7<br />
7-6<br />
ippsDFTFwd_RToCCS <br />
IppStatus dft( void ) {<br />
Ipp32f x[7], X[8];<br />
int n;<br />
IppStatus status;<br />
IppsDFTSpec_R_32f* spec;<br />
status = ippsDFTInitAlloc_R_32f(&spec, 7, <strong>IPP</strong>_FFT_DIV_INV_BY_N,<br />
ippAlgHintNone);<br />
for( n=0; n> N=7;F=14/49;n=0:N-1;x=cos(2*pi*n*F);y=abs(fft(x));y(1:4)<br />
7-34
<strong>IPP</strong> : 1 7<br />
DFT(Goertzel) <br />
1 <br />
DFT 01/N2/N<br />
... (N-1)/N N <br />
<br />
<strong>IPP</strong> Goertzel [Mit98] ( )<br />
DFT <br />
1 2 <br />
( <br />
) SIMD <br />
<br />
Goertz<br />
DFT <br />
<br />
IppStatus ippsGoertz_32fc(const Ipp32fc* pSrc, int len, Ipp32fc* pVal,<br />
Ipp32f freq);<br />
IppStatus ippsGoertz_64fc(const Ipp64fc* pSrc, int len, Ipp64fc* pVal,<br />
Ipp64f freq);<br />
IppStatus ippsGoertz_16sc_Sfs(const Ipp16sc* pSrc, int len, Ipp16sc* pVal,<br />
Ipp32f freq, int scaleFactor);<br />
<br />
freq<br />
pSrc<br />
len<br />
pVal<br />
scaleFactor<br />
[0, 1.0) <br />
<br />
<br />
DFT <br />
2 <br />
7-35
<strong>IPP</strong> : 1 7<br />
<br />
ippsGoertz freq len pSrc <br />
DFT pVal <br />
ippsGoertz <br />
N – 1<br />
yk ( ) = ∑ xn ( ) ⋅ exp – j2π kn ------<br />
⎝<br />
⎛ N ⎠<br />
⎞<br />
n = 0<br />
,<br />
k/N DFT freq <br />
7-7 DFT Goertzel <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsRelFreqErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
freq <br />
len <br />
7-36
<strong>IPP</strong> : 1 7<br />
7-7<br />
Goertzel <br />
IppStatus goertzel( void ) {<br />
#undef LEN<br />
#define LEN 100<br />
IppStatus status;<br />
Ipp32fc *x = ippsMalloc_32fc( LEN ), y;<br />
int n;<br />
///generate a signal of 60 Hz freq that<br />
/// is sampled with 400 Hz freq<br />
for( n=0; n> N=100;F=60/400;n=0:N-1;x=sin(2*pi*n*F);y=fft(x);n=N*F;y(n+1)<br />
7-37
<strong>IPP</strong> : 1 7<br />
GoertzTwo<br />
2 <br />
DFT <br />
IppStatus ippsGoertzTwo_32fc(const Ipp32fc* pSrc, int len, Ipp32fc pVal[2],<br />
const Ipp32f freq[2]);<br />
IppStatus ippsGoertzTwo_64fc(const Ipp64fc* pSrc, int len, Ipp64fc pVal[2],<br />
const Ipp64f freq[2]);<br />
IppStatus ippsGoertzTwo_16sc_Sfs(const Ipp16sc* pSrc, int len,<br />
Ipp16sc pVal[2], const Ipp32f freq[2], int scaleFactor);<br />
<br />
freq<br />
pSrc<br />
len<br />
pVal<br />
scaleFactor<br />
2 [0, 1.0) <br />
<br />
<br />
DFT <br />
2 <br />
<br />
ippsGoertzTwo 2 freq len pSrc <br />
DFT pVal ® Pentium ® III <br />
1 DFT 2 DFT <br />
DFT <br />
ippsGoertz <br />
N – 1<br />
yk ( ) = ∑ xn ( ) ⋅ exp – j2π kn ------<br />
⎝<br />
⎛ N ⎠<br />
⎞<br />
n = 0<br />
k/N DFT freq 1 <br />
,<br />
7-38
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsRelFreqErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
freq <br />
len <br />
<br />
<br />
DCTFwdInitAllocDCTInvInitAlloc<br />
<br />
IppStatus ippsDCTFwdInitAlloc_32f(IppsDCTFwdSpec_32f** pDCTSpec, int length,<br />
IppHintAlgorithm hint);<br />
IppStatus ippsDCTInvInitAlloc_32f(IppsDCTInvSpec_32f** pDCTSpec, int length,<br />
IppHintAlgorithm hint);<br />
IppStatus ippsDCTFwdInitAlloc_64f(IppsDCTFwdSpec_64f** pDCTSpec, int length,<br />
IppHintAlgorithm hint);<br />
IppStatus ippsDCTInvInitAlloc_64f(IppsDCTInvSpec_64f** pDCTSpec, int length,<br />
IppHintAlgorithm hint);<br />
<br />
flag<br />
hint<br />
length<br />
pDCTSpec<br />
flag flag <br />
hint <br />
hint <br />
flag hint <br />
DCT <br />
DCT <br />
7-39
<strong>IPP</strong> : 1 7<br />
<br />
ippsDCTFwdInitAlloc ippsDCTInvInitAlloc length<br />
flag hint <br />
DCT pDCTSpec length <br />
<br />
ippsDCTFwdInitAlloc ippsDCTFwdInitAlloc DCT <br />
<br />
ippsDCTInvInitAlloc ippsDCTInvInitAlloc DCT <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsMemAllocErr<br />
<br />
pDCTSpec NULL<br />
length <br />
<br />
DCTFwdFreeDCTInvFree<br />
<br />
IppStatus ippsDCTFwdFree_32f(IppsDCTFwdSpec_32f* pDCTSpec);<br />
IppStatus ippsDCTInvFree_32f(IppsDCTInvSpec_32f* pDCTSpec);<br />
IppStatus ippsDCTFwdFree_64f(IppsDCTFwdSpec_64f* pDCTSpec);<br />
IppStatus ippsDCTInvFree_64f(IppsDCTInvSpec_64f* pDCTSpec);<br />
<br />
pDCTSpec<br />
DCT <br />
7-40
<strong>IPP</strong> : 1 7<br />
<br />
ippsFFTFwdFree ippsFFTInvFree ippsDCTFwdInitAlloc <br />
ippsDCTInvInitAlloc <br />
DCT pDCTSpec ippsDCTFwdFree <br />
ippsDCTInvFree <br />
ippsDCTFwdFree ippsDCTFwdFree DCT <br />
<br />
ippsDCTInvFree ippsDCTInvFree DCT <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pDCTSpec NULL<br />
ippStsContextMatchErr<br />
pDCTSpec <br />
DCTFwdGetBufSize<br />
DCTInvGetBufSize<br />
DCT ( ) <br />
<br />
IppStatus ippsDCTFwdGetBufSize_32f(const IppsDCTFwdSpec_32f* pDCTSpec,<br />
int* pSize);<br />
IppStatus ippsDCTInvGetBufSize_32f(const IppsDCTInvSpec_32f* pDCTSpec,<br />
int* pSize);<br />
IppStatus ippsDCTFwdGetBufSize_64f(const IppsDCTFwdSpec_64f* pDCTSpec,<br />
int* pSize);<br />
IppStatus ippsDCTInvGetBufSize_64f(const IppsDCTInvSpec_64f* pDCTSpec,<br />
int* pSize);<br />
7-41
<strong>IPP</strong> : 1 7<br />
<br />
pDCTSpec<br />
pSize<br />
DCT <br />
DCT <br />
<br />
ippsDCTFwdGetBufSize ippsDCTInvGetBufSize pDCTSpec<br />
DCT ( ) pSize <br />
<br />
ippsDCTFwdGetBufSize ippsDCTFwdGetBufSize DCT <br />
<br />
ippsDCTInvGetBufSize ippsDCTInvGetBufSize DCT <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pDCTSpec NULL<br />
ippStsContextMatchErr<br />
pDCTSpec <br />
7-42
<strong>IPP</strong> : 1 7<br />
DCTFwdDCTInv<br />
<br />
(DCT) <br />
IppStatus ippsDCTFwd_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDCTFwdSpec_32f* pDCTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDCTInv_32f(const Ipp32f* pSrc, Ipp32f* pDst,<br />
const IppsDCTInvSpec_32f* pDCTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDCTFwd_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDCTFwdSpec_64f* pDCTSpec, Ipp8u* pBuffer);<br />
IppStatus ippsDCTInv_64f(const Ipp64f* pSrc, Ipp64f* pDst,<br />
const IppsDCTInvSpec_64f* pDCTSpec, Ipp8u* pBuffer);<br />
<br />
pDCTSpec<br />
pSrc<br />
pDst<br />
pBuffer<br />
scaleFactor<br />
DCT <br />
<br />
<br />
DCT <br />
2 <br />
<br />
ippsDCTFwd ippsDCTInv (DCT) <br />
length 2 DCT <br />
length <br />
<br />
<br />
7-43
<strong>IPP</strong> : 1 7<br />
DCT N = length<br />
1<br />
2<br />
Ck ( ) = ------- (k = 0 ) Ck ( ) = ------- (k > 0 );<br />
N<br />
N<br />
DCT x(n) pSrc[n]y(k) pDst[k]; DCT <br />
x(n) pDst[n]y(k) pSrc[k] <br />
DCT <br />
N – 1<br />
( 2n + 1)πk<br />
yk ( ) = C( k) ∑ xn ( ) ⋅ cos ----------------------------<br />
2N<br />
n = 0<br />
<br />
N – 1<br />
( 2n + 1)πk<br />
xn ( ) = ∑ C( k)yk<br />
( ) ⋅ cos ----------------------------<br />
2N<br />
k = 0<br />
scaleFactor <br />
pBuffer DCT <br />
<br />
DCT <br />
2 <br />
ippsDCTFwd ippsDCTFwd DCT <br />
ippsDCTInv ippsDCTInv DCT <br />
7-8 ippsDCTFwd_32f ippsDCTInv_32f <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pSrcpDst pDCTSpec NULL<br />
ippStsContextMatchErr<br />
pDCTSpec <br />
ippStsMemAllocErr<br />
<br />
7-44
<strong>IPP</strong> : 1 7<br />
7-8 ippsDCTFwd ippsDCTInv <br />
void dct( void ) {<br />
#define LEN 256<br />
Ipp32f x[LEN], y[LEN];<br />
int n;<br />
IppsDCTFwdSpec_32f* fspec;<br />
IppsDCTInvSpec_32f* ispec;<br />
IppStatus status;<br />
/// data: Gaussian function, magn =1 and sigma=N/3<br />
for(n=0; n
<strong>IPP</strong> : 1 7<br />
<br />
<br />
<br />
<br />
“ ” “ ” 2 <br />
a i,k <br />
1 “ ” <br />
1 2 n <br />
<br />
7-1<br />
<br />
<strong>IPP</strong> <br />
(DWT) <br />
DWT 2 <br />
DWT <br />
<br />
1 <br />
DWT 7-2 DWT <br />
7-1 3 <br />
7-3 1 <br />
<br />
2 <br />
<br />
<strong>IPP</strong> <br />
<br />
7-46
<strong>IPP</strong> : 1 7<br />
2 <br />
• <br />
<br />
• <br />
<br />
<br />
7-1<br />
<br />
Frequency<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
a 2,0 a 2,1 a 2,2 a 2,3<br />
a 1,0<br />
a 1,1 a 1,2 a 1,3 a 1,4 a 1,5 a 1,6 a 1,7<br />
a 3,0<br />
a 3,1<br />
Time<br />
0 1 2 3 4 5 6 7 8 9<br />
7-47
<strong>IPP</strong> : 1 7<br />
7-2<br />
3 <br />
<br />
<br />
<br />
FWD<br />
1{a 1,0 a 1.1 ... a 1,6 a 1.7 }<br />
2{a 2,0 a 2.1 a 2,2 a 2.3 }<br />
FWD<br />
3 {a 2,0 a 2.1 }<br />
FWD<br />
{c 0 }<br />
7-3<br />
3 <br />
1{a 1,0 a 1.1 ... a 1,6 a 1.7 }<br />
2{a 2,0 a 2.1 a 2,2 a 2.3 }<br />
INV<br />
<br />
<br />
<br />
3 {a 2,0 a 2.1 }<br />
INV<br />
{c 0 }<br />
INV<br />
7-48
<strong>IPP</strong> : 1 7<br />
<br />
<br />
<br />
WTHaarFwdWTHaarInv<br />
<br />
Haar <br />
IppStatus ippsWTHaarFwd_8s(const Ipp8s* pSrc, int lenSrc,<br />
Ipp8s* pDstLow, Ipp8s* pDstHigh);<br />
IppStatus ippsWTHaarFwd_16s(const Ipp16s* pSrc, int lenSrc,<br />
Ipp16s* pDstLow, Ipp16s* pDstHigh);<br />
IppStatus ippsWTHaarFwd_32s(const Ipp32s* pSrc, int lenSrc,<br />
Ipp32s* pDstLow, Ipp32s* pDstHigh);<br />
IppStatus ippsWTHaarFwd_64s(const Ipp64s* pSrc, int lenSrc,<br />
Ipp64s* pDstLow, Ipp64s* pDstHigh);<br />
IppStatus ippsWTHaarFwd_32f(const Ipp32f* pSrc, int lenSrc,<br />
Ipp32f* pDstLow, Ipp32f* pDstHigh);<br />
IppStatus ippsWTHaarFwd_64f(const Ipp64f* pSrc, int lenSrc,<br />
Ipp64f* pDstLow, Ipp64f* pDstHigh);<br />
IppStatus ippsWTHaarFwd_8s_Sfs(const Ipp8s* pSrc, int lenSrc,<br />
Ipp8s* pDstLow, Ipp8s* pDstHigh, int scaleFactor);<br />
IppStatus ippsWTHaarFwd_16s_Sfs(const Ipp16s* pSrc, int lenSrc,<br />
Ipp16s* pDstLow, Ipp16s* pDstHigh, int scaleFactor );<br />
IppStatus ippsWTHaarFwd_32s_Sfs(const Ipp32s* pSrc, int lenSrc,<br />
Ipp32s* pDstLow, Ipp32s* pDstHigh, int scaleFactor);<br />
IppStatus ippsWTHaarFwd_64s_Sfs(const Ipp64s* pSrc, int lenSrc,<br />
Ipp64s* pDstLow, Ipp64s* pDstHigh, int scaleFactor);<br />
IppStatus ippsWTHaarInv_8s(const Ipp8s* pSrcLow, const Ipp8s* pSrcHigh,<br />
Ipp8s* pDst, int lenDst);<br />
7-49
<strong>IPP</strong> : 1 7<br />
IppStatus ippsWTHaarInv_16s(const Ipp16s* pSrcLow, const Ipp16s* pSrcHigh,<br />
Ipp16s* pDst, int lenDst);<br />
IppStatus ippsWTHaarInv_32s(const Ipp32s* pSrcLow, const Ipp32s* pSrcHigh,<br />
Ipp32s* pDst, int lenDst);<br />
IppStatus ippsWTHaarInv_64s(const Ipp64s* pSrcLow, const Ipp64s* pSrcHigh,<br />
Ipp64s* pDst, int lenDst);<br />
IppStatus ippsWTHaarInv_32f(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
Ipp32f* pDst, int lenDst);<br />
IppStatus ippsWTHaarInv_64f(const Ipp64f* pSrcLow, const Ipp64f* pSrcHigh,<br />
Ipp64f* pDst, int lenDst);<br />
IppStatus ippsWTHaarInv_8s_Sfs(const Ipp8s* pSrcLow, const Ipp8s* pSrcHigh,<br />
Ipp8s* pDst, int lenDst, int scaleFactor);<br />
IppStatus ippsWTHaarInv_16s_Sfs(const Ipp16s* pSrcLow, const Ipp16s* pSrcHigh,<br />
Ipp16s* pDst, int lenDst, int scaleFactor);<br />
IppStatus ippsWTHaarInv_32s_Sfs(const Ipp32s* pSrcLow, const Ipp32s* pSrcHigh,<br />
Ipp32s* pDst, int lenDst, int scaleFactor);<br />
IppStatus ippsWTHaarInv_64s_Sfs(const Ipp64s* pSrcLow, const Ipp64s* pSrcHigh,<br />
Ipp64s* pDst, int lenDst, int scaleFactor);<br />
<br />
pSrc<br />
lenSrc<br />
pDstLow<br />
pDstHigh<br />
pSrcLow<br />
pSrcHigh<br />
pDst<br />
lenDst<br />
scaleFactor<br />
ippsWTHaarFwd <br />
pSrc <br />
ippsWTHaarFwd“”<br />
<br />
ippsWTHaarFwd“”<br />
<br />
ippsWTHaarInv“”<br />
<br />
ippsWTHaarInv“”<br />
<br />
ippsWTHaarInv <br />
pDst <br />
2 <br />
7-50
<strong>IPP</strong> : 1 7<br />
<br />
ippsWTHaar Haar <br />
<br />
{1/2, 1/2}<br />
{1/2, -1/2} <br />
<br />
{1, 1}<br />
{-1, 1} <br />
<br />
<br />
1 0.5 <br />
<br />
1 <br />
<br />
2 scaleFactor = -1 <br />
<br />
( [Str96] )<br />
{2 -1/2 , 2 -1/2 } {2 -1/2 , -2 -1/2 }<br />
{2 -1/2 , 2 -1/2 } {-2 -1/2 , 2 -1/2 } <br />
Haar N=lenSrc “ <br />
” c(k) pDstLow[k] “ ” d(k) pDstHigh[k] <br />
x(2k) x(2k+1) pSrc <br />
c(k)=(x(2k)+x(2k+1))/2<br />
d(k)=(x(2k+1)-x(2k))/2<br />
N=lenDst “ ” c(k) pSrcLow[k]<br />
“ ” d(k) pSrcHigh[k] y(2i) y(2i+1) <br />
pDst <br />
y(2i)=c(i)-d(i)<br />
y(2i+1)=c(i)+d(i)<br />
N 0≤k
<strong>IPP</strong> : 1 7<br />
N N+1 <br />
2 x[N]=x[N-1] <br />
<br />
c((N+1)/2-1)=x(N-1)<br />
d((N+1)/2-1)=0<br />
<br />
y(N)=y(N-1)=c((N+1)/2-1)<br />
N 0≤k
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pDst pSrc NULL<br />
len ippsWinBalckmanOpt 4 <br />
3 <br />
<br />
7-9<br />
ippsWTHaarFwd <br />
IppStatus wthaar(void) {<br />
Ipp32f x[8], lo[4], hi[4];<br />
IppStatus status;<br />
ippsSet_32f(7, x, 8); --x[4];<br />
status = ippsWTHaarFwd_32f(x, 8, lo, hi);<br />
printf_32f(“WT Haar low =”, lo, 4, status);<br />
printf_32f(“WT Haar high =”, hi, 4, status);<br />
return status;<br />
}<br />
Output:<br />
WT Haar low = 7.000000 7.000000 6.500000 7.000000<br />
WT Haar high = 0.000000 0.000000 0.500000 0.000000<br />
<br />
[Str96], P.153-157, Wavelet and Filter Banks,<br />
Wellesley-Cambridge Press [Bri94], Classification of Nonexpansive Symmetric Extension<br />
Transforms for Multirate Filter Banks, Los Alamos Report LA-UR-94-1747, 1994 <br />
<br />
7-53
<strong>IPP</strong> : 1 7<br />
<br />
<br />
<br />
WTFwdInitAllocWTInvInitAlloc<br />
<br />
IppStatus ippsWTFwdInitAlloc_32f(IppsWTFwdState_32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTFwdInitAlloc_8s32f(IppsWTFwdState_8s32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTFwdInitAlloc_8u32f(IppsWTFwdState_8u32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTFwdInitAlloc_16s32f(IppsWTFwdState_16s32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTFwdInitAlloc_16u32f(IppsWTFwdState_16u32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTInvInitAlloc_32f(IppsWTInvState_32f** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTInvInitAlloc_32f8s(IppsWTInvState_32f8s** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTInvInitAlloc_32f8u(IppsWTInvState_32f8u** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
7-54
<strong>IPP</strong> : 1 7<br />
IppStatus ippsWTInvInitAlloc_32f16s(IppsWTInvState_32f16s** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
IppStatus ippsWTInvInitAlloc_32f16u(IppsWTInvState_32f16u** pState,<br />
const Ipp32f* pTapsLow, int lenLow, int offsLow,<br />
const Ipp32f* pTapsHigh, int lenHigh, int offsHigh);<br />
<br />
pState <br />
<br />
pTapsLow <br />
lenLow <br />
offsLow ( )<br />
pTapsHigh<br />
lenHigh<br />
<br />
<br />
offsHigh ( )<br />
<br />
ippsWTFwdInitAlloc ippsWTInvInitAlloc <br />
pTapsLow pTapsHigh lenLow lenHigh<br />
offsLow offsHigh WT <br />
pState <br />
ippsWTFwdInitAlloc ippsWTFwdInitAlloc WT <br />
<br />
ippsWTInvInitAlloc ippsWTInvInitAlloc WT <br />
<br />
<br />
<br />
pState <br />
<br />
2 <br />
<br />
<br />
pTapsHigh pTapsLow lenHigh lenLow <br />
7-55
<strong>IPP</strong> : 1 7<br />
pTapsHigh pTapsLow<br />
lenHigh lenLow <br />
offsLow offsHigh <br />
<br />
• <br />
• <br />
<br />
7-58 WTFwd 7-64 <br />
WTInv -1 <br />
<br />
7-58 WTFwd 7-64 WTInv<br />
pState <br />
<br />
<br />
<br />
<br />
7-61 <br />
ippsWTFwdSetDlyLine <br />
<br />
<br />
<br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsWtOffsetErr<br />
<br />
pStatepTapsHigh pTapsLow<br />
NULL<br />
lenLow lenHigh <br />
offsLow offsHigh <br />
-1 <br />
7-56
<strong>IPP</strong> : 1 7<br />
WTFwdFreeWTInvFree<br />
<br />
IppStatus ippsWTFwdFree_32f(IppsWTFwdState_32f* pState);<br />
IppStatus ippsWTFwdFree_8s32f(IppsWTFwdState_8s32f* pState);<br />
IppStatus ippsWTFwdFree_8u32f(IppsWTFwdState_8u32f* pState);<br />
IppStatus ippsWTFwdFree_16s32f(IppsWTFwdState_16s32f* pState);<br />
IppStatus ippsWTFwdFree_16u32f(IppsWTFwdState_16u32f* pState);<br />
IppStatus ippsWTInvFree_32f(IppsWTInvState_32f* pState);<br />
IppStatus ippsWTInvFree_32f8s(IppsWTInvState_32f8s* pState);<br />
IppStatus ippsWTInvFree_32f8u(IppsWTInvState_32f8u* pState);<br />
IppStatus ippsWTInvFree_32f16s (IppsWTInvState_32f16s* pState);<br />
IppStatus ippsWTInvFree_32f16u(IppsWTInvState_32f16u* pState);<br />
<br />
pState<br />
<br />
<br />
ippsWTFwdFree ippsWTInvFree ippsWTFwdInitAlloc <br />
ippsWTInvInitAlloc <br />
WT pState <br />
ippsWTFwdFree ippsWTInvFree pState <br />
NULL ippStsNullPtrErr <br />
ippsWTFwdFree ippsWTFwdFree WT <br />
<br />
ippsWTInvFree ippsWTInvFree WT <br />
<br />
7-57
<strong>IPP</strong> : 1 7<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsStateMatchErr<br />
<br />
pState NULL<br />
pState <br />
WTFwd<br />
<br />
IppStatus ippsWTFwd_32f(const Ipp32f* pSrc, Ipp32f* pDstLow,<br />
Ipp32f* pDstHigh, int dstLen, IppsWTFwdState_32f* pState);<br />
IppStatus ippsWTFwd_8s32f(const Ipp8s* pSrc, Ipp32f* pDstLow,<br />
Ipp32f* pDstHigh, int dstLen, IppsWTFwdState_8s32f* pState);<br />
IppStatus ippsWTFwd_8u32f(const Ipp8u* pSrc, Ipp32f* pDstLow,<br />
Ipp32f* pDstHigh, int dstLen, IppsWTFwdState_8u32f* pState);<br />
IppStatus ippsWTFwd_16s32f(const Ipp16s* pSrc, Ipp32f* pDstLow,<br />
Ipp32f* pDstHigh, int dstLen, IppsWTFwdState_16s32f* pState);<br />
IppStatus ippsWTFwd_16u32f(const Ipp16u* pSrc, Ipp32f* pDstLow,<br />
Ipp32f* pDstHigh, int dstLen, IppsWTFwdState_16u32f* pState);<br />
<br />
pSrc<br />
pDstLow<br />
pDstHigh<br />
dstLen<br />
pState<br />
<br />
“”<br />
“ ” <br />
<br />
pDstHigh pDstLow <br />
<br />
7-58
<strong>IPP</strong> : 1 7<br />
<br />
ippsWTFwd (2 *<br />
dstLen) pSrc “ ” pDstLow “ <br />
” pDstLow pState <br />
<br />
<br />
1 7-4 <br />
“ ” “ ” <br />
<br />
pState <br />
<br />
<br />
<br />
<br />
<br />
1 <br />
2 <br />
<br />
<br />
<br />
6 2 <br />
static const float decLow[6] =<br />
{<br />
-6.25000000e-002f,<br />
6.25000000e-002f,<br />
5.00000000e-001f,<br />
5.00000000e-001f,<br />
6.25000000e-002f,<br />
-6.25000000e-002f<br />
};<br />
static const float decHigh[2] =<br />
{<br />
-5.00000000e-001f,<br />
5.00000000e-001f<br />
};<br />
7-59
<strong>IPP</strong> : 1 7<br />
2 <br />
<br />
offsLow = -1offsHigh = -1 + 2 = 1 <br />
<br />
2 <br />
<br />
1 <br />
<br />
<br />
<br />
<br />
7-2 3 6<br />
2 <br />
<br />
offsLow3 = -1offsHigh3 = 1 <br />
2 <br />
2 “ ” <br />
2*2 2 <br />
offsLow2 = -1offsHigh2 = offsHigh3 + 4 = 5 <br />
offsLow1 = -1offsHigh1 = offsHigh2 + 2*4 = 13 “ ” <br />
<br />
3 12 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
NULL<br />
ippStsContextMatchErr<br />
pState <br />
ippStsSizeErr<br />
dstLen srcLen <br />
7-60
<strong>IPP</strong> : 1 7<br />
7-4<br />
1 <br />
( )<br />
<br />
<br />
<br />
<br />
FIR <br />
2<br />
<br />
( )<br />
<br />
<br />
<br />
<br />
FIR <br />
2<br />
<br />
( )<br />
<br />
( )<br />
<br />
<br />
WTFwdSetDlyLine<br />
WTFwdGetDlyLine<br />
<br />
<br />
IppStatus ippsWTFwdSetDlyLine_32f(IppsWTFwdState_32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdSetDlyLine_8s32f(IppsWTFwdState_8s32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdSetDlyLine_8u32f(IppsWTFwdState_8u32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdSetDlyLine_16s32f(IppsWTFwdState_16s32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
7-61
<strong>IPP</strong> : 1 7<br />
IppStatus ippsWTFwdSetDlyLine_16u32f(IppsWTFwdState_16u32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdGetDlyLine_32f(IppsWTFwdState_32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdGetDlyLine_8s32f(IppsWTFwdState_8s32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdGetDlyLine_8u32f(IppsWTFwdState_8u32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdGetDlyLine_16s32f(IppsWTFwdState_16s32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTFwdGetDlyLine_16u32f(IppsWTFwdState_16u32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
<br />
pState<br />
pDlyLow<br />
pDlyHigh<br />
<br />
“ ” <br />
“ ” <br />
<br />
ippsWTFwdSetDlyLine ippsWTFwdSetDlyLine pDlyHigh pDlyLow <br />
pState <br />
ippsWTFwdSetDlyLine ippsWTFwdSetDlyLine WT <br />
<br />
ippsWTFwdGetDlyLine ippsWTFwdSetDlyLine WT <br />
<br />
<br />
<br />
<br />
<br />
7-62
<strong>IPP</strong> : 1 7<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
“ ” <br />
dlyLowLen = lenLow + offsLow - 1<br />
lenLow offsLow “ ” <br />
<br />
“ ” <br />
dlyHighLen = lenHigh + offsHigh - 1,<br />
lenHigh offsHigh “ ” <br />
<br />
lenLowoffsLowlenHigh offsHigh <br />
7-54 WTFwdInitAllocWTInvInitAlloc<br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsStateMatchErr<br />
<br />
pDlyLow pDlyHigh NULL<br />
pState <br />
7-63
<strong>IPP</strong> : 1 7<br />
WTInv<br />
<br />
IppStatus ippsWTInv_32f(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
int srcLen, Ipp32f* pDst, IppsWTInvState_32f* pState);<br />
IppStatus ippsWTInv_32f8s(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
int srcLen, Ipp8s* pDst, IppsWTInvState_32f8s* pState);<br />
IppStatus ippsWTInv_32f8u(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
int srcLen, Ipp8u* pDst, IppsWTInvState_32f8u* pState);<br />
IppStatus ippsWTInv_32f16s(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
int srcLen, Ipp16s* pDst, IppsWTInvState_32f16s* pState);<br />
IppStatus ippsWTInv_32f16u(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,<br />
int srcLen, Ipp16u* pDst, IppsWTInvState_32f16u* pState);<br />
<br />
pSrcLow<br />
pSrcHigh<br />
srcLen<br />
pDst<br />
pState<br />
“”<br />
“ ” <br />
pSrcHigh pSrcLow <br />
<br />
<br />
<br />
ippsDCTInv “ ”<br />
pSrcLow “ ” pSrcHigh (2 * srcLen) <br />
pDst <br />
pState <br />
7-64
<strong>IPP</strong> : 1 7<br />
<br />
1 “ <br />
” “ ” 2 7-5 <br />
2 <br />
<br />
<br />
<br />
<br />
<br />
2 <br />
<br />
2 6 <br />
<br />
static const float recLow[2] =<br />
{<br />
1.00000000e+000f,<br />
1.00000000e+000f<br />
};<br />
static const float recHigh[6] =<br />
{<br />
-1.25000000e-001f,<br />
-1.25000000e-001f,<br />
1.00000000e+000f,<br />
-1.00000000e+000f,<br />
1.25000000e-001f,<br />
1.25000000e-001f<br />
};<br />
<br />
7-58 WTFwd<br />
2 <br />
2 <br />
offsLow<br />
= 2offsHigh = 0 <br />
2 <br />
<br />
7-65
<strong>IPP</strong> : 1 7<br />
1 4 <br />
<br />
1 <br />
<br />
<br />
<br />
7-3 3 <br />
<br />
7-58 WTFwd<br />
6 2 <br />
offsLow3 = 2offsHigh3 = 0 <br />
2 “ ” <br />
2 offsLow2 = 2<br />
offsHigh2 = offsHigh3 + 2*2 = 4 offsLow1 = -1<br />
offsHigh1 = offsHigh2 + 2*4 = 12 <br />
<br />
3 12 3 <br />
24 <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsStateMatchErr<br />
ippStsSizeErr<br />
<br />
NULL<br />
pState <br />
dstLen srcLen <br />
7-66
<strong>IPP</strong> : 1 7<br />
7-5<br />
1 <br />
<br />
( )<br />
<br />
<br />
( )<br />
<br />
<br />
( )<br />
<br />
↑ 2<br />
↑ 2<br />
<br />
FIR <br />
<br />
FIR <br />
<br />
<br />
<br />
<br />
<br />
( )<br />
<br />
WTInvSetDlyLine<br />
WTInvGetDlyLine<br />
<br />
<br />
IppStatus ippsWTInvSetDlyLine_32f(IppsWTInvState_32f* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvSetDlyLine_32f8s(IppsWTInvState_32f8s* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvSetDlyLine_32f8u(IppsWTInvState_32f8u* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvSetDlyLine_32f16s(IppsWTInvState_32f16s* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
7-67
<strong>IPP</strong> : 1 7<br />
IppStatus ippsWTInvSetDlyLine_32f16u(IppsWTInvState_32f16u* pState,<br />
const Ipp32f* pDlyLow, const Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvGetDlyLine_32f(IppsWTInvState_32f* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvGetDlyLine_32f8s(IppsWTInvState_32f8s* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvGetDlyLine_32f8u(IppsWTInvState_32f8u* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvGetDlyLine_32f16s(IppsWTInvState_32f16s* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
IppStatus ippsWTInvGetDlyLine_32f16u(IppsWTInvState_32f16u* pState,<br />
Ipp32f* pDlyLow, Ipp32f* pDlyHigh);<br />
<br />
pState<br />
pDlyLow<br />
pDlyHigh<br />
<br />
“ ” <br />
“ ” <br />
<br />
ippsWTFwdSetDlyLine ippsWTInvSetDlyLine pDlyHigh pDlyLow <br />
pState <br />
ippsWTFwdSetDlyLine ippsWTFwdSetDlyLine WT <br />
<br />
ippsWTInvSetDlyLine ippsWTInvSetDlyLine WT <br />
<br />
7-68
<strong>IPP</strong> : 1 7<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
“ ” C <br />
( 2 )<br />
dlyLowLen = (lenLow + offsLow - 1) / 2<br />
lenLow offsLow “ ” <br />
<br />
“ ” C <br />
<br />
dlyHighLen = (lenHigh + offsHigh - 1) / 2<br />
lenHigh offsHigh “ ” <br />
<br />
lenLowoffsLowlenHigh offsHigh <br />
7-54 WTFwdInitAlloc<br />
WTInvInitAlloc<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsStateMatchErr<br />
<br />
pDlyLow pDlyHigh NULL<br />
pState <br />
7-69
<strong>IPP</strong> : 1 7<br />
7-70
8<br />
<br />
<br />
<br />
<br />
<strong>IPP</strong> <br />
<br />
SVD(Single Value De<strong>com</strong>position) <br />
<br />
AddAllRowSum<br />
<br />
( )<br />
IppStatus ippsAddAllRowSum_32f_D2(const Ipp32f* pSrc, int srcStep,<br />
int srcHeight, Ipp32f* pSrcDst, int width);<br />
IppStatus ippsAddAllRowSum_32f_D2L(const Ipp32f** mSrc, int srcHeight,<br />
Ipp32f* pSrcDst, int width);<br />
<br />
pSrc<br />
mSrc<br />
[srcHeight*srcStep] <br />
[srcHeight][width] <br />
8-1
<strong>IPP</strong> : 1 8<br />
srcStep pSrc <br />
srcHeight <br />
pSrcDst [width] <br />
width<br />
mSrc pSrcDst <br />
<br />
ippsAddAllRowSum pScrDst <br />
<br />
D2 :<br />
srcHeight – 1<br />
pSrcDst[ j] = pSrcDst[ j] +<br />
pSrc[ i ⋅ srcStep + j]<br />
, 0≤j
<strong>IPP</strong> : 1 8<br />
AddMulCol<br />
<br />
IppStatus ippsAddMulCol_64f_D2L(Ipp64f** mSrcDst, int srcWidth, int srcHeight,<br />
int col1, int col2, int row1, const Ipp64f val);<br />
<br />
mSrcDst<br />
srcWidth<br />
srcHeight<br />
col1<br />
col2<br />
row1<br />
val<br />
[srcHeight][srcWidth] <br />
<br />
mSrcDst <br />
mSrcDst <br />
1<br />
2<br />
1<br />
<br />
<br />
AddMulCol val <br />
SVD <br />
<br />
mSrcDst[ i] [ col2] = mSrcDst[ i] [ col2] + mSrcDst[ i] [ col1] ⋅ val ,<br />
row1≤i
<strong>IPP</strong> : 1 8<br />
AddMulRow<br />
<br />
ippsAddMulRow_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
const Ipp64f val);<br />
pSrc<br />
[len] <br />
pDst<br />
len<br />
val<br />
<br />
[len] <br />
<br />
<br />
AddMulRow val 1 <br />
pDst SVD <br />
<br />
pDst[ i] = pDst[ i] + pSrc[ i] ⋅ val , 0≤i
<strong>IPP</strong> : 1 8<br />
DotProdCol<br />
2 <br />
IppStatus ippsDotProdCol_64f_D2L(const Ipp64f** mSrc, int srcWidth,<br />
int srcHeight, Ipp64f* pSum, int col1, int col2, int row1);<br />
<br />
mSrc<br />
srcWidth<br />
srcHeight<br />
pSum<br />
col1<br />
col2<br />
row1<br />
[srcHeight][srcWidth] <br />
mSrc <br />
mSrc <br />
<br />
1<br />
2<br />
1<br />
<br />
ippsDotProdCol 2 <br />
SVD <br />
sum =<br />
srcHeight – 1<br />
∑<br />
i = row1<br />
mSrc[ i] [ col1] ⋅ mSrc[ i] [ col2]<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
mSrc pSum NULL<br />
srcHeightsrcWidthcol1 row1 <br />
;<br />
row1 srcHeight ;<br />
col1 srcWidth <br />
8-5
<strong>IPP</strong> : 1 8<br />
MulCol<br />
<br />
IppStatus ippsMulCol_64f_D2L(Ipp64f** mSrcDst, int srcWidth, int srcHeight,<br />
int col1, int row1, const Ipp64f val);<br />
<br />
mSrcDst<br />
srcWidth<br />
srcHeight<br />
col1<br />
row1<br />
val<br />
[srcHeight][srcWidth] <br />
<br />
mSrcDst <br />
mSrcDst <br />
1<br />
1<br />
<br />
<br />
ippsMulCol mSrcDst val SVD <br />
<br />
mSrcDst[ i] [ col1] = mSrcDst[ i] [ col1] ⋅ val , row1≤i
<strong>IPP</strong> : 1 8<br />
QRTransCol<br />
QR <br />
IppStatus ippsQRTransCol_64f_D2L(Ipp64f** mSrcDst, int srcWidth, int<br />
srcHeight, int col1, int col2, const Ipp64f val1, const Ipp64f val2);<br />
<br />
mSrcDst<br />
srcWidth<br />
srcHeight<br />
col1<br />
col2<br />
val1<br />
val2<br />
[srcHeight][srcWidth] <br />
<br />
mSrcDst <br />
mSrcDst <br />
1<br />
2<br />
1<br />
2<br />
<br />
ippsQRTransCol QR SVD <br />
<br />
mSrcDst[ i] col2<br />
mSrcDst[ i] col1<br />
0≤i
<strong>IPP</strong> : 1 8<br />
SumCol<br />
<br />
IppStatus ippsSumCol_32f_D2(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst,<br />
int height, int width);<br />
IppStatus ippsSumCol_64f_D2(const Ipp64f* pSrc, int srcStep, Ipp64f* pDst,<br />
int height, int width);<br />
IppStatus ippsSumCol_32f_D2L(const float** mSrc, int width, Ipp32f* pDst,<br />
int height);<br />
IppStatus ippsSumCol_64f_D2L(const Ipp64f** mSrc, int width, Ipp64f* pDst,<br />
int height);<br />
ippsSumCol_32f_D2 ippsSumCol_32f_D2L <br />
<br />
IppStatus ippsSumAllRow_32f_D2(const Ipp32f* pSrc, int<br />
srcStep, int srcHeight, Ipp32f* pDst, int width);<br />
<br />
IppStatus ippsSumAllRow_32f_D2L(const Ipp32f** mSrc, int<br />
srcHeight, Ipp32f* pDst, int width);<br />
<br />
pSrc<br />
[height*srcStep] <br />
mSrc<br />
[height][width] <br />
srcStep pSrc <br />
pDst<br />
[width] <br />
height(srcHeight) <br />
width<br />
pDst <br />
8-8
<strong>IPP</strong> : 1 8<br />
<br />
ippsSumCol pDst<br />
pDst <br />
D2 :<br />
height – 1<br />
∑<br />
pDst[ j] = pSrc[ i ⋅ srsStep + j]<br />
, 0≤j
<strong>IPP</strong> : 1 8<br />
SumColAbs<br />
<br />
IppStatus ippsSumColAbs_64f_D2L(const Ipp64f** mSrc, int srcWidth,<br />
int srcHeight, Ipp64f* pSum, int col1, int row1);<br />
<br />
mSrc<br />
srcWidth<br />
srcHeight<br />
pSum<br />
col1<br />
row1<br />
[srcHeight][srcWidth] <br />
mSrc <br />
mSrc <br />
<br />
1<br />
1<br />
<br />
ippsSumColAbs SVD <br />
<br />
<br />
sum =<br />
srcHeight – 1<br />
∑<br />
i = row1<br />
pSrc[ i] [ col1]<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
mSrc pSum NULL<br />
srcWidthsrcHeightcol1 row1 <br />
;<br />
row1 srcHeight ;<br />
col1 srcWidth <br />
8-10
<strong>IPP</strong> : 1 8<br />
SumColSqr<br />
2 <br />
<br />
IppStatus ippsSumColSqr_64f_D2L(Ipp64f** mSrcDst, int srcWidth, int srcHeight,<br />
Ipp64f* pSum, int col1, int row1, const Ipp64f val);<br />
<br />
mSrcDst<br />
srcWidth<br />
srcHeight<br />
pSum<br />
col1<br />
row1<br />
val<br />
[srcHeight][srcWidth] <br />
<br />
mSrcDst <br />
mSrcDst <br />
<br />
1<br />
2<br />
<br />
<br />
ippsSumColSqr mSrcDst val 2 <br />
pSum SVD <br />
<br />
mSrcDst[ i] [ col1] = mSrcDst[ i] [ col1] ⋅ val , 0≤i
<strong>IPP</strong> : 1 8<br />
ippStsSizeErr<br />
srcWidthsrcHeightcol1 row1 <br />
;<br />
row1 srcHeight ;<br />
col1 srcWidth <br />
RecSqrt<br />
<br />
( )<br />
IppStatus ippsRecSqrt_32f_Th(Ipp32f* pSrcDst, int len, Ipp32f val);<br />
<br />
pSrcDst<br />
len<br />
val<br />
pSrcDst <br />
<br />
<br />
<br />
ippsRecSqrt pSrcDst <br />
<br />
⎧val, pSrcDst[ j] < val<br />
⎪<br />
pSrcDst[ j]<br />
= ⎨ 1<br />
, 0≤j
<strong>IPP</strong> : 1 8<br />
SubRow<br />
<br />
IppStatus ippsSubRow_32f_D2(const Ipp32f* pSrc, int width, Ipp32f* pSrcDst,<br />
int dstStep, int height);<br />
IppStatus ippsSubRow_32f_D2L(const Ipp32f* pSrc, Ipp32f** mSrcDst, int width,<br />
int height);<br />
<br />
pSrc<br />
mSrcDst<br />
pSrcDst<br />
width<br />
dstStep<br />
height<br />
[height*width] <br />
[height][width] <br />
<br />
[height*dstStep] <br />
<br />
<br />
pSrcDst <br />
<br />
<br />
ippsSubRow pSrc <br />
<br />
D2 :<br />
pSrcDst[ i ⋅ dstStep + j] = pSrcDst[ i ⋅ dstStep + j] – pSrc[ j]<br />
,<br />
0≤i
<strong>IPP</strong> : 1 8<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsStrideErr<br />
<br />
pSrcpDst mDst NULL<br />
height width <br />
width > dstStep <br />
SumRow<br />
<br />
IppStatus ippsSumRow_32f_D2(const Ipp32f* pSrc, int height, int srcStep,<br />
Ipp32f* pDst, int srcWidth);<br />
IppStatus ippsSumRow_64f_D2(const Ipp64f* pSrc, int height, int srcStep,<br />
Ipp64f* pDst, int srcWidth);<br />
IppStatus ippsSumRow_32f_D2L(const Ipp32f** mSrc, int height, Ipp32f* pDst,<br />
int srcWidth);<br />
IppStatus ippsSumRow_64f_D2L(const Ipp64f** mSrc, int height, Ipp64f* pDst,<br />
int srcWidth);<br />
<br />
pSrc<br />
[height*srcStep] <br />
mSrc<br />
[height][srcWidth] <br />
height <br />
srcStep pSrc <br />
pDst<br />
[height] <br />
dstWidth <br />
8-14
<strong>IPP</strong> : 1 8<br />
<br />
ippsSumRow <br />
<br />
D2 :<br />
srcWidth – 1<br />
∑<br />
pDst[ i] =<br />
pSrc[ i ⋅ srcStep + j]<br />
, 0≤i
<strong>IPP</strong> : 1 8<br />
<br />
ippsSumRowAbs pSrc SVD<br />
<br />
sum =<br />
len – 1<br />
∑<br />
i = 0<br />
pSrc[ i]<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc pSum NULL<br />
len <br />
SumRowSqr<br />
2 <br />
<br />
IppStatus ippsSumRowSqr_64f(Ipp64f* pSrcDst, int len, Ipp64f* pSum,<br />
const Ipp64f val);<br />
<br />
pSrcDst<br />
len<br />
pSum<br />
val<br />
[len] <br />
<br />
pSrcDst <br />
<br />
<br />
8-16
<strong>IPP</strong> : 1 8<br />
<br />
ippsSumRowSqr pSrcDst val 2 <br />
SVD <br />
<br />
pSrcDst[ i] = pSrcDst[ i] ⋅ val , 0≤i
<strong>IPP</strong> : 1 8<br />
width<br />
weight<br />
pDst <br />
<br />
<br />
ippsAddNRows N <br />
SDCHMM width pDst<br />
<br />
pDst[ k] = pSrc[ k + offset + srcStep ⋅ ( pInd[ i] + pAddIndex[ i])<br />
] + weight ,<br />
0≤k srcStep <br />
8-18
<strong>IPP</strong> : 1 8<br />
ZeroMean<br />
<br />
<br />
IppStatus ippsZeroMean_16s(Ipp16s* pSrcDst, int len);<br />
<br />
pSrcDst<br />
len<br />
[len] <br />
<br />
<br />
<br />
ippsZeroMean pSrcDst pSrcDst<br />
<br />
<br />
pSrcDst[n] = max(<strong>IPP</strong>_MIN_16s, min(<strong>IPP</strong>_MAX_16s, pSrcDst[n] -<br />
len – 1<br />
1<br />
- ---------- pSrcDst[ i]<br />
)), 0 ≤ n < len<br />
len ∑<br />
i = 0<br />
<strong>IPP</strong>_MIN_16s = -32768<strong>IPP</strong>_MAX_16s = 32767 <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcDst NULL<br />
len <br />
8-19
<strong>IPP</strong> : 1 8<br />
LMThreshold<br />
<br />
<br />
IppStatus ippsLMThreshold_32f(const Ipp32f floor, const Ipp32f scale,<br />
const Ipp32f base, const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
<br />
floor<br />
scale<br />
base<br />
pSrc<br />
pDst<br />
len<br />
pSrc <br />
<br />
<br />
[len] <br />
[len] <br />
pSrc pDst <br />
<br />
ippsLMThreshold pSrc <br />
<br />
⎧scale ⋅ pSrc[ n] + base , pSrc[ n] > floor<br />
pDst[ n]<br />
= ⎨<br />
, 0 ≤ n < len<br />
⎩scale ⋅ floor + base , pSrc[ n] < floor<br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc pDst NULL<br />
len <br />
8-20
<strong>IPP</strong> : 1 8<br />
<br />
<br />
MeanCol<br />
<br />
IppStatus ippsMeanCol_32f_D2(const Ipp32f* pSrc, int srcHeight, int srcStep,<br />
Ipp32f* pDstMean, int width);<br />
IppStatus ippsMeanCol_32f_D2L(const Ipp32f** mSrc, int srcHeight,<br />
Ipp32f* pDstMean, int width);<br />
<br />
pSrc<br />
mSrc<br />
srcHeight<br />
srcStep<br />
pDstMean<br />
width<br />
[srcHeight*srcStep] <br />
[srcHeight][width] <br />
<br />
pSrc <br />
[width] <br />
pDstMean <br />
<br />
ippsMeanCol <br />
<br />
D2 :<br />
srcHeight – 1<br />
∑<br />
i = 1<br />
pSrc[ i ⋅ srcStep + j]<br />
pDstMean[ j]<br />
= ----------------------------------------------------------------------------------------------------- , 0≤j
<strong>IPP</strong> : 1 8<br />
D2L :<br />
srcHeight – 1<br />
∑<br />
i = 1<br />
mSrc[ i] [ j]<br />
pDstMean[ j]<br />
= -------------------------------------------------------------------- , 0≤j srcStep <br />
VarCol<br />
<br />
IppStatus ippsVarCol_32f_D2(const Ipp32f* pSrc, int srcHeight, int srcStep,<br />
Ipp32f* pSrcMean, Ipp32f* pDstVar, int width);<br />
IppStatus ippsVarCol_32f_D2L(const Ipp32f** mSrc, int srcHeight,<br />
Ipp32f* pSrcMean, Ipp32f* pDstVar, int width);<br />
<br />
pSrc<br />
mSrc<br />
srcHeight<br />
srcStep<br />
pSrcMean<br />
pDstVar<br />
width<br />
[srcHeight*srcStep] <br />
[srcHeight][width] <br />
<br />
pSrc <br />
[width] <br />
[width] <br />
pSrcMean <br />
pDstVar <br />
8-22
<strong>IPP</strong> : 1 8<br />
<br />
ippsVarCol <br />
<br />
D2 :<br />
pDstVar[ j]<br />
0≤j
<strong>IPP</strong> : 1 8<br />
MeanVarCol<br />
<br />
<br />
IppStatus ippsMeanVarCol_32f_D2(const Ipp32f* pSrc, int srcHeight,<br />
int srcStep, Ipp32f* pDstMean, Ipp32f* pDstVar, int width);<br />
IppStatus ippsMeanVarCol_32f_D2L(const Ipp32f** mSrc, int srcHeight,<br />
Ipp32f* pDstMean, Ipp32f* pDstVar, int width);<br />
<br />
pSrc<br />
mSrc<br />
srcHeight<br />
srcStep<br />
pDstMean<br />
pDstVar<br />
width<br />
[srcHeight*srcStep] <br />
[srcHeight][width] <br />
<br />
pSrc <br />
[width] <br />
[width] <br />
pDstMean <br />
pDstVar <br />
<br />
ippsMeanVarCol 8-22 ippsVarCol 8-21 <br />
ippsMeanCol width pDstMean <br />
pDstVar <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsStrideErr<br />
<br />
pSrcmSrcpDstMean pDstVar<br />
NULL<br />
srcHeight width <br />
width > srcStep <br />
8-24
<strong>IPP</strong> : 1 8<br />
MeanVarAcc<br />
<br />
IppStatus ippsMeanVarAcc_32f(Ipp32f const* pSrc, Ipp32f const* pSrcMean,<br />
Ipp32f* pDstMeanAcc, Ipp32f* pDstVarAcc, int len, Ipp32f val);<br />
IppStatus ippsMeanVarAcc_64f(Ipp64f const* pSrc, Ipp64f const* pSrcMean,<br />
Ipp64f* pDstMeanAcc, Ipp64f* pDstVarAcc, int len, Ipp64f val);<br />
<br />
pSrc<br />
pSrcMean<br />
pDstMeanAcc<br />
pDstVarAcc<br />
len<br />
val<br />
[len] <br />
[len] <br />
[len] <br />
[len] <br />
<br />
<br />
<br />
ippsMeanVarAcc <br />
<br />
pDstMeanAcc[ i] = pDstMeanAcc[ i] + val ⋅ ( pSrc[ i] – pSrcMean[ i]<br />
) ,<br />
pDstVarAcc[ i] = pDstMeanAcc[ i] + val ⋅ ( pSrc[ i] – pSrcMean[ i]<br />
) 2 , 0≤i
<strong>IPP</strong> : 1 8<br />
NormalizeCol<br />
<br />
<br />
IppStatus ippsNormalizeCol_32f_D2(const Ipp32f* pSrcMean,<br />
const Ipp32f* pSrcVar, int width, Ipp32f* pSrcDst, int step, int height);<br />
<br />
pSrcMean<br />
pSrcVar<br />
width<br />
pSrcDst<br />
step<br />
height<br />
[width] <br />
[width] <br />
<br />
[height*step] <br />
pSrcDst <br />
<br />
<br />
ippsNormalizeCol <br />
<br />
pSrcDst[ i ⋅ step + j] = ( pSrcDst[ i ⋅ step + j] – pSrcMean[ j]) ⋅ pSrcVar[ j]<br />
,<br />
0≤i
<strong>IPP</strong> : 1 8<br />
<br />
<br />
<br />
<br />
<br />
LogAdd<br />
2 <br />
( )<br />
IppStatus ippsLogAdd_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len,<br />
IppHintAlgorithm hint);<br />
IppStatus ippsLogAdd_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len,<br />
IppHintAlgorithm hint);<br />
<br />
pSrc<br />
pDst<br />
len<br />
hint<br />
[len] 1 <br />
[len] 2 <br />
<br />
hint <br />
flag hint <br />
<br />
ippsLogAdd pSrc pDst <br />
pDst <br />
pDst[ i] = ln( e pSrc[ i]<br />
+ e pDst[ i]<br />
), 0≤i
<strong>IPP</strong> : 1 8<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrc pDst NULL<br />
len <br />
LogSub<br />
2 <br />
( )<br />
IppStatus ippsLogSub_32f(const Ipp32f* pSrc, Ipp32f* pDst, int len);<br />
IppStatus ippsLogSub_64f(const Ipp64f* pSrc, Ipp64f* pDst, int len);<br />
<br />
pSrc<br />
pDst<br />
len<br />
[len] <br />
[len] <br />
<br />
<br />
ippsLogSub pSrc pDst <br />
pDst <br />
pDst[ i] = ln( e pSrc[ i]<br />
– e pDst[ i]<br />
), 0≤i pSrc[i] <br />
8-28
<strong>IPP</strong> : 1 8<br />
<br />
1 2 <br />
<br />
<br />
a 0 ,..., a N - 1 N ⋅M 1 <br />
(N M )<br />
b 0 ,..., b N - 1 N ⋅K 1 (K <br />
)M K <br />
ippsCopyCol K ≥ MippsDelta K ≥ 2M<br />
ippsDeltaDelta K ≥ 3M ippsEvalDelta <br />
( )<br />
ippsCopyCol <br />
<br />
ippsCopyCol ippsEvalDelta <br />
ippsDelta ippsDeltaDelta 1 2 <br />
<br />
<br />
<br />
b i, j<br />
= a i,<br />
j<br />
(1.1)<br />
b i, j+<br />
M<br />
= a′ i j<br />
b ij , + 2M<br />
= a″ i j<br />
w<br />
∑<br />
,<br />
= ν 1<br />
⋅ k ⋅ ( b max( i – k,<br />
0)<br />
, j<br />
– b min( i + k,<br />
N – 1)<br />
, j<br />
)<br />
k = 1<br />
w<br />
⋅∑<br />
= ν , 2<br />
k ⋅( b max( i – k,<br />
0)<br />
, j + M<br />
– b min( i + k,<br />
N–<br />
1 ),<br />
j + M<br />
)<br />
k = 1<br />
(1.2)<br />
(1.3)<br />
i = 0,..., N-1; j = 0,..., M-1 ν 1 ν 2 w <br />
<br />
8-29
<strong>IPP</strong> : 1 8<br />
<br />
ippsDelta ippsDeltaDelta <br />
L L <br />
<br />
b i, j<br />
= a i,<br />
j<br />
, i = 0,..., L-1; (2.1)<br />
b i, j+<br />
M<br />
= a′ i j<br />
b i, j+<br />
2M<br />
= a″ i j<br />
w<br />
∑<br />
,<br />
= ν 1<br />
⋅ k ⋅ ( b max( i – k,<br />
0)<br />
, j<br />
– b i + k,<br />
j<br />
)<br />
k = 1<br />
w<br />
∑<br />
,<br />
= ν 2<br />
⋅ k⋅<br />
( b max( i – k,<br />
0)<br />
, j + M<br />
– b i+ k,<br />
j + M<br />
)<br />
k = 1<br />
, i = 0,..., L-w-1; (2.2)<br />
i = 0,..., L-2w-1;<br />
, (2.3)<br />
L > w⋅d d ippsDelta<br />
d = 1 ippsDeltaDelta d = 2 w⋅d <br />
<br />
L L+w⋅d <br />
w⋅d <br />
<br />
=<br />
, i = w⋅d ,..., L+ w⋅d -1; (3.1)<br />
b i, j<br />
a i – w⋅d<br />
, j<br />
b i, j+<br />
M<br />
= a′ i– w ⋅d<br />
j<br />
w<br />
∑<br />
,<br />
= ν 1<br />
⋅ k ⋅ ( b i– k,<br />
j<br />
– b i + k,<br />
j<br />
)<br />
k = 1<br />
, (3.2)<br />
i = w⋅(d-1) ,..., L+ w⋅(d-1) -1;<br />
b i, j+<br />
2M<br />
= a″ i– w⋅d<br />
j<br />
w<br />
∑<br />
,<br />
= ν 2<br />
⋅ k ⋅ ( b i– k,<br />
j+<br />
M<br />
– b i+ k,<br />
j + M<br />
)<br />
k = 1<br />
, (3.3)<br />
i = 0,..., L -1.<br />
8-30
<strong>IPP</strong> : 1 8<br />
L L+w⋅d <br />
w⋅d <br />
<br />
=<br />
, i = w⋅d ,..., L+ w⋅d -1; (4.1)<br />
b i, j<br />
a i – w⋅d<br />
, j<br />
b i, j+<br />
M<br />
= a′ i– w ⋅d<br />
j<br />
w<br />
∑<br />
,<br />
= ν 1<br />
⋅ k ⋅ ( b i– k,<br />
j<br />
– b min( i + k,<br />
N – 1)<br />
, j<br />
)<br />
k = 1<br />
, (4.2)<br />
i = w⋅(d-1) ,..., L+ w⋅d -1;<br />
b i, j+<br />
2M<br />
= a″ i– w⋅d<br />
j<br />
w<br />
,<br />
= ν 2 ∑⋅ k ⋅ ( b i – k,<br />
j + M<br />
– b min( i + k,<br />
N – 1)<br />
, j + M<br />
)<br />
k = 1<br />
, (4.3)<br />
i = 0,..., L+2w-1.<br />
CopyCol<br />
<br />
<br />
<br />
IppStatus ippsCopyCol_32f_D2(const Ipp32f* pSrc, int srcWidth, Ipp32f* pDst,<br />
int dstStep, int height);<br />
<br />
pSrc<br />
srcWidth<br />
pDst<br />
dstStep<br />
height<br />
[height*srcWidth] <br />
<br />
<br />
[height*dstStep] <br />
<br />
<br />
<br />
8-31
<strong>IPP</strong> : 1 8<br />
<br />
ippsCopyCol (1.1) pSrc pDst <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsStrideErr<br />
<br />
pSrc pDst NULL<br />
height srcWidth <br />
srcWidth > dstStep <br />
EvalDelta<br />
<br />
( )<br />
IppStatus ippsEvalDelta_32f_D2(Ipp32f* pSrcDst, int height, int step,<br />
int width, int offset, int winSize, const Ipp32f val);<br />
<br />
pSrcDst<br />
height<br />
step<br />
width<br />
offset<br />
winSize<br />
val<br />
[height*step] <br />
<br />
pSrcDst <br />
pSrcDst <br />
<br />
<br />
<br />
<br />
8-32
<strong>IPP</strong> : 1 8<br />
<br />
ippsEvalDelta pSrcDst <br />
offset (offset + width - 1) <br />
(offset + width) (offset + 2*width - 1) <br />
(1.1) <br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pSrcDst NULL<br />
ippStsSizeErr heightwidth winSize ;<br />
offset ;<br />
width offset ;<br />
height 2*winSize <br />
ippStsStrideErr<br />
offset+2*width > step <br />
Delta<br />
<br />
IppStatus ippsDeltaW1_32f_D2(const Ipp32f* pSrc, int srcWidth, Ipp32f* pDst,<br />
int dstStep, int height, const Ipp32f val, int deltamode);<br />
IppStatus ippsDeltaW2_32f_D2(const Ipp32f* pSrc, int srcWidth, Ipp32f* pDst,<br />
int dstStep, int height, const Ipp32f val, int deltamode);<br />
<br />
pSrc<br />
srcWidth<br />
pDst<br />
dstStep<br />
height<br />
[height*srcWidth] <br />
<br />
<br />
<br />
<br />
<br />
8-33
<strong>IPP</strong> : 1 8<br />
val<br />
deltamode<br />
<br />
2 ippsDeltaBegin <br />
ippsDeltaEnd <br />
<br />
ippsDelta pSrc pDst <br />
1 <br />
<br />
ippsDelta deltamode <br />
<br />
• ippsDeltaBegin ippsDeltaEnd <br />
(1.1) (1.2) <br />
• ippsDeltaBegin (2.1) (2.2) <br />
• ippsDeltaEnd (4.1) (4.2) <br />
• (3.1) (3.2) <br />
ippsDeltaBegin <br />
[height*dstStep] <br />
[(height+winSize)*dstStep] <br />
winSize =<br />
⎧<br />
⎨<br />
⎩<br />
1<br />
2<br />
( ippsDeltaW1 )<br />
( ippsDeltaW2 )<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pSrc pDst NULL<br />
ippStsSizeErr srcWidth ;<br />
height ;<br />
ippsDeltaBegin <br />
height≤ winSize+1 ;<br />
ippsDeltaBegin height < 0 <br />
<br />
ippStsStrideErr 2*srcWidth > dstStep <br />
8-34
<strong>IPP</strong> : 1 8<br />
DeltaDelta<br />
1 2 <br />
<br />
IppStatus ippsDeltaDeltaW1_32f_D2(const Ipp32f* pSrc, int srcWidth, Ipp32f*<br />
pDst, int dstStep, int height, const Ipp32f val1, const Ipp32f val2,<br />
int deltamode);<br />
IppStatus ippsDeltaDeltaW1_32f_D2(const Ipp32f* pSrc, int srcWidth, Ipp32f*<br />
pDst, int dstStep, int height, const Ipp32f val1, const Ipp32f val2,<br />
int deltamode);<br />
<br />
pSrc<br />
srcWidth<br />
pDst<br />
dstStep<br />
height<br />
val1, val2<br />
deltamode<br />
[height*srcWidth] <br />
<br />
<br />
<br />
<br />
<br />
1 2 <br />
2 ippsDeltaBegin <br />
ippsDeltaEnd <br />
<br />
ippsDeltaDelta pSrc pDst <br />
1 2 <br />
<br />
ippsDeltaDelta deltamode <br />
<br />
• ippsDeltaBegin ippsDeltaEnd <br />
(1.1)(1.2) (1.3) <br />
• ippsDeltaBegin (2.1)(2.2) (2.3) <br />
<br />
8-35
<strong>IPP</strong> : 1 8<br />
• ippsDeltaEnd (4.1)(4.2) (4.3) <br />
<br />
• (3.1)(3.2) (3.3) <br />
<br />
ippsDeltaBegin <br />
[height*dstStep] <br />
[(height+2*winSize)*dstStep] <br />
winSize =<br />
⎧<br />
⎨<br />
⎩<br />
1<br />
2<br />
( ippsDeltaDeltaW1 )<br />
( ippsDeltaDeltaW2 )<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
<br />
pSrc pDst NULL<br />
ippStsSizeErr srcWidth ;<br />
height ;<br />
ippsDeltaBegin height≤<br />
2*(winSize+1) ;<br />
ippsDeltaBegin height < 0 <br />
<br />
ippStsStrideErr 3*srcWidth > dstStep <br />
8-36
<strong>IPP</strong> : 1 8<br />
<br />
<br />
(PDF) <strong>IPP</strong> <br />
<br />
PDF <br />
LogGaussSingle<br />
<br />
IppStatus ippsLogGaussSingle_32f(const Ipp32f* pSrc, const Ipp32f* pSrcMean,<br />
const Ipp32f* pSrcVar, int srcLen, Ipp32f* pResult, Ipp32f val);<br />
IppStatus ippsLogGaussSingle_64f(const Ipp64f* pSrc, const Ipp64f* pSrcMean,<br />
const Ipp64f* pSrcVar, int srcLen, Ipp64f* pResult, Ipp64f val);<br />
IppStatus ippsLogGaussSingle_32f64f(const Ipp32f* pSrc, const Ipp32f*<br />
pSrcMean, const Ipp32f* pSrcVar, int srcLen, Ipp64f* pResult, Ipp64f val);<br />
<br />
pSrc<br />
pSrcMean<br />
pSrcVar<br />
srcLen<br />
pResult<br />
val<br />
[srcLen] <br />
[srcLen] <br />
[srcLen] <br />
<br />
<br />
<br />
<br />
ippsLogGaussSingle 1 1 <br />
<br />
8-37
<strong>IPP</strong> : 1 8<br />
<br />
srcLen – 1<br />
∑<br />
result = val – 0.5 ⋅ pSrcVar[ i] ⋅ ( pSrc[ i] – pSrcMean[ i]<br />
)<br />
i = 0<br />
2<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpSrcMeanpSrcVar<br />
pResult NULL<br />
srcLen <br />
MahDistSingle<br />
<br />
IppStatus ippsMahDistSingle_32f(const Ipp32f* pSrc, const Ipp32f* pSrcMean,<br />
const Ipp32f* pSrcVar, int srcLen, Ipp32f* pResult);<br />
IppStatus ippsMahDistSingle_64f(const Ipp64f* pSrc, const Ipp64f* pSrcMean,<br />
const Ipp64f* pSrcVar, int srcLen, Ipp64f* pResult);<br />
<br />
pSrc<br />
pSrcMean<br />
pSrcVar<br />
srcLen<br />
pResult<br />
[srcLen] <br />
[srcLen] <br />
[srcLen] <br />
<br />
<br />
8-38
<strong>IPP</strong> : 1 8<br />
<br />
ippsMahDistSingle 1 1 <br />
<br />
result =<br />
srcLen – 1<br />
∑<br />
i = 0<br />
pSrcVar[ i] ⋅ ( pSrc[ i] – pSrcMean[ i]<br />
)<br />
2<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcpSrcMeanpSrcVar<br />
pResult NULL<br />
srcLen <br />
<br />
PDF <br />
LogGauss1<br />
<br />
IppStatus ippsLogGauss1_32f_D2(const Ipp32f* pSrc, int srcStep,<br />
const Ipp32f* pSrcMean, const Ipp32f* pSrcVar, int width, Ipp32f* pDst,<br />
int height, Ipp32f val);<br />
IppStatus ippsLogGauss1_32f_D2L(const Ipp32f** mSrc, const Ipp32f* pSrcMean,<br />
const Ipp32f* pSrcVar, int width, Ipp32f* pDst, int height, Ipp32f val);<br />
IppStatus ippsLogGauss1_64f_D2(const Ipp64f* pSrc, int srcStep,<br />
const Ipp64f* pSrcMean, const Ipp64f* pSrcVar, int width, Ipp64f* pDst,<br />
int height, Ipp64f val);<br />
IppStatus ippsLogGauss1_64f_D2L(const Ipp64f** mSrc, const Ipp64f* pSrcMean,<br />
const Ipp64f* pSrcVar, int width, Ipp64f* pDst, int height, Ipp64f val);<br />
8-39
<strong>IPP</strong> : 1 8<br />
<br />
pSrc<br />
mSrc<br />
srcStep<br />
pSrcMean<br />
pSrcVar<br />
width<br />
pDst<br />
height<br />
val<br />
[height*srcStep] <br />
[height][width] <br />
pSrc <br />
[width] <br />
[width] <br />
<br />
[height] <br />
pDst <br />
<br />
<br />
ippsLogGauss1 1 <br />
<br />
D2 :<br />
pDst[ i] = val – 0.5 ⋅ pSrcVar[ j] ⋅ ( p Src[ i ⋅ srcStep + j] – pSrcMean[ j]) 2<br />
0≤i
<strong>IPP</strong> : 1 8<br />
LogGauss2<br />
<br />
IppStatus ippsLogGauss2_32f_D2(const Ipp32f* pSrcMean, const Ipp32f* pSrcVar,<br />
int srcStep, const Ipp32f* pSrc, int width, Ipp32f* pSrcDst, int height);<br />
IppStatus ippsLogGauss2_32f_D2L(const Ipp32f** mSrcMean, const Ipp32f**<br />
mSrcVar, const Ipp32f* pSrc, int width, Ipp32f* pSrcDst, int height);<br />
IppStatus ippsLogGauss2_64f_D2(const Ipp64f* pSrcMean, const Ipp64f* pSrcVar,<br />
int srcStep, const Ipp64f* pSrc, int width, Ipp64f* pSrcDst, int height);<br />
IppStatus ippsLogGauss2_64f_D2L(const Ipp64f** mSrcMean, const Ipp64f**<br />
mSrcVar, const Ipp64f* pSrc, int width, Ipp64f* pSrcDst, int height);<br />
<br />
pSrcMean<br />
pSrcVar<br />
mSrcMean<br />
mSrcVar<br />
pSrcDst<br />
srcStep<br />
pSrc<br />
height<br />
width<br />
[height*srcStep] <br />
[height*srcStep] <br />
[height][width] <br />
[height][width] <br />
[height] <br />
pSrcMean pSrcVar <br />
[width] <br />
pSrcDst <br />
pSrc <br />
<br />
ippsLogGauss2 1 <br />
pSrcDst <br />
<br />
8-41
<strong>IPP</strong> : 1 8<br />
D2 :<br />
pSrcDst[ i] = pSrcDst[ i] -<br />
width – 1<br />
∑<br />
– 0.5 ⋅ pSrcVar[ i ⋅ srcStep + j] ⋅ ( pSrc[ j] – pSrcMean[ i ⋅ srcStep + j]) 2<br />
j = 0<br />
0≤i
<strong>IPP</strong> : 1 8<br />
<br />
pSrc<br />
mSrc<br />
srcStep<br />
pSrcMean<br />
pSrcVar<br />
width<br />
pDst<br />
height<br />
[height*srcStep] <br />
[height][width] <br />
pSrc <br />
[width] <br />
[width] <br />
<br />
[height] <br />
pDst <br />
<br />
ippsMahDist1 1 <br />
<br />
D2 :<br />
pDst[ i] = pSrcVar[ j] ⋅ ( pSrc[ i ⋅ srcStep + j] – pSrcMean[ j]<br />
)<br />
0≤i
<strong>IPP</strong> : 1 8<br />
MahDist2<br />
<br />
IppStatus ippsMahDist2_32f_D2(const Ipp32f* pSrcMean, const Ipp32f* pSrcVar,<br />
int srcStep, const Ipp32f* pSrc, int width, Ipp32f* pDst, int height);<br />
IppStatus ippsMahDist2_32f_D2L(const Ipp32f** mSrcMean, const Ipp32f**<br />
mSrcVar, const Ipp32f* pSrc, int width, Ipp32f* pDst, int height);<br />
IppStatus ippsMahDist2_64f_D2(const Ipp64f* pSrcMean, const Ipp64f* pSrcVar,<br />
int srcStep, const Ipp64f* pSrc, int width, Ipp64f* pDst, int height);<br />
IppStatus ippsMahDist2_64f_D2L(const Ipp64f** mSrcMean, const Ipp64f**<br />
mSrcVar, const Ipp64f* pSrc, int width, Ipp64f* pDst, int height);<br />
<br />
pSrcMean<br />
pSrcVar<br />
mSrcMean<br />
mSrcVar<br />
srcStep<br />
pSrc<br />
width<br />
pDst<br />
height<br />
[height*srcStep] <br />
[height*srcStep] <br />
[height][width] <br />
[height][width] <br />
pSrc <br />
[width] <br />
pSrc <br />
[height] <br />
pDst <br />
<br />
1 <br />
<br />
8-44
<strong>IPP</strong> : 1 8<br />
D2 :<br />
pDst[ i] = pSrcVar[ i ⋅ srcStep + j] ⋅ ( pSrc[ j] – pSrcMean[ i ⋅ srcStep + j]<br />
)<br />
0≤i
<strong>IPP</strong> : 1 8<br />
pSrcDst<br />
height<br />
val<br />
[height] <br />
pSrcDst <br />
<br />
<br />
ippsLogGaussMax1 1 <br />
pSrcDst <br />
pSrcDst <br />
<br />
pSrcDst[ i] = max( pSrcDst[ i] , Vi [ ])<br />
<br />
Vi [ ] = val – 0.5 ⋅ pSrcVar[ i] ⋅ ( pSrc[ i ⋅ srcStep + j] – pSrcMean[ j]<br />
) 2<br />
0≤i≤height<br />
width – 1<br />
∑<br />
j = 0<br />
ippsLogGauss1 ippsMaxEvery_32f <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsStrideErr<br />
<br />
pSrcpSrcMeanpSrcVar<br />
pSrcDst NULL<br />
height width <br />
width > srcStep <br />
8-46
<strong>IPP</strong> : 1 8<br />
LogGaussAdd1<br />
<br />
2 <br />
( )<br />
IppStatus ippsLogGaussAdd1_32f_D2(const Ipp32f* pSrc, int srcStep,<br />
const Ipp32f* pSrcMean, const Ipp32f* pSrcVar, int width, Ipp32f* pSrcDst,<br />
int height, Ipp32f val);<br />
<br />
pSrc<br />
srcStep<br />
pSrcMean<br />
pSrcVar<br />
width<br />
pSrcDst<br />
height<br />
val<br />
[height*srcStep] <br />
<br />
pSrc <br />
[width] <br />
[width] <br />
<br />
[height] <br />
pSrcDst <br />
<br />
<br />
ippsLogGaussAdd1 1 <br />
pSrcDst <br />
pSrcDst <br />
<br />
pSrcDst[ i] = ln( e Vi [ ] + e pSrcDst[ i]<br />
),<br />
<br />
Vi [ ] = val – 0.5 ⋅ pSrcVar[ i] ⋅ ( pSrc[ i ⋅ srcStep + j] – pSrcMean[ j]<br />
) 2<br />
0≤i≤height<br />
width – 1<br />
∑<br />
j = 0<br />
8-47
<strong>IPP</strong> : 1 8<br />
ippsLogGauss1 ippsLogAdd_32f <br />
<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
ippStsStrideErr<br />
<br />
pSrcpSrcMeanpSrcVar<br />
pSrcDst NULL<br />
height width <br />
width > srcStep <br />
<br />
<br />
<br />
GaussianDist<br />
<br />
IppStatus ippsGaussianDist_32f(const Ipp32f* pSrcMean1, const Ipp32f*<br />
pSrcVar1, const Ipp32f* pSrcMean2, const Ipp32f* pSrcVar2, int srcLen,<br />
Ipp32f* pResult, Ipp32f wgt1, Ipp32f det1, Ipp32f wgt2, Ipp32f det2);<br />
<br />
pSrcMean1<br />
pSrcVar1<br />
pSrcMean2<br />
pSrcVar2<br />
srcLen<br />
pResult<br />
wgt1<br />
det1<br />
1 [srcLen] <br />
1 [srcLen] <br />
2 [srcLen] <br />
2 [srcLen] <br />
<br />
<br />
1<br />
1<br />
8-48
<strong>IPP</strong> : 1 8<br />
wgt2<br />
det2<br />
2<br />
2<br />
<br />
ippsGaussianDist <br />
<br />
result = ( wgt1 ⋅ det1) + ( wgt2 ⋅ det2) –( wgt1 + wgt2) ⋅ ( srcLen ⋅ ln( 2π) – lnV)<br />
,<br />
V<br />
=<br />
srcLen – 1<br />
∏<br />
i = 0<br />
W1[ i] + W2[ i] –( wgt1 ⋅ pSrcMean1[ i]<br />
+ wgt2 ⋅ pSrcMean2[ i]<br />
) 2<br />
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br />
( wgt1 + wgt2)<br />
,<br />
W1[ i] = wgt1 ⋅ ( pSrcVar1[ i] + ( pSrcMean1[ i]<br />
) 2 )<br />
W2[ i] = wgt2 ⋅ ( pSrcVar2[ i] + ( pSrcMean2[ i]<br />
) 2 )<br />
,<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcMean1pSrcMean2pSrcVar1<br />
pSrcVar2 pResult NULL<br />
srcLen <br />
8-49
<strong>IPP</strong> : 1 8<br />
GaussianMerge<br />
2 <br />
IppStatus ippsGaussianMerge_32f(Ipp32f* pSrcMean1, Ipp32f* pSrcVar1, Ipp32f*<br />
pSrcMean2, Ipp32f* pSrcVar2, Ipp32f* pDstMean, Ipp32f* pDstVar, int len,<br />
Ipp32f* pDstDet, Ipp32f wgt1, Ipp32f wgt2);<br />
<br />
pSrcMean1<br />
pSrcVar1<br />
pSrcMean2<br />
pSrcVar2<br />
pDstMean<br />
pDstVar<br />
len<br />
pDstDet<br />
wgt1<br />
wgt2<br />
1 [len] <br />
1 [len] <br />
2 [len] <br />
2 [len] <br />
[len] <br />
[len] <br />
<br />
<br />
1<br />
2<br />
<br />
ippsGaussianMerge 2 (PDF) <br />
<br />
⎛<br />
dstDet = len ⋅ ln( 2π)<br />
– ln⎜<br />
⎜<br />
⎝<br />
len – 1<br />
∏<br />
i = 0<br />
⎞<br />
pDstVar[ i]<br />
⎟<br />
⎟<br />
⎠<br />
,<br />
pDstMean[ i]<br />
=<br />
wgt1 ⋅ pSrcMean1[ i]<br />
+ wgt2 ⋅ pSrcMean2[ i]<br />
-----------------------------------------------------------------------------------------------------------------------------------<br />
( wgt1 + wgt2)<br />
, 0≤i
<strong>IPP</strong> : 1 8<br />
W1[ i] = wgt1 ⋅ ( pSrcVar1[ i] + ( pSrcMean1[ i]<br />
) 2 )<br />
W2[ i] = wgt2 ⋅ ( pSrcVar2[ i] + ( pSrcMean2[ i]<br />
) 2 )<br />
,<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcMean1pSrcMean2pSrcVar1<br />
pSrcVar2pDstMeanpDstVar pDstDet <br />
NULL<br />
len <br />
GaussianSplit<br />
<br />
IppStatus ippsGaussianSplit_32f(Ipp32f* pSrcMean1, Ipp32f* pSrcVar1,<br />
Ipp32f* pSrcMean2, Ipp32f* pSrcVar2, int len, Ipp32f val);<br />
<br />
pSrcMean1<br />
pSrcVar1<br />
pSrcMean2<br />
pSrcVar2<br />
len<br />
val<br />
[len] 1 <br />
[len] 1 <br />
[len] 2 <br />
[len] 2 <br />
<br />
<br />
<br />
ippsGaussianSplit PDF 2 PDF <br />
<br />
pSrcMean1[ i] = pSrcMean1[ i] + val ⋅ pSrcVar1[ i]<br />
,<br />
pSrcMean2[ i] = pSrcMean1[ i] – val ⋅ pSrcVar1[ i]<br />
, 0≤i
<strong>IPP</strong> : 1 8<br />
<br />
ippStsNoErr<br />
ippStsNullPtrErr<br />
ippStsSizeErr<br />
<br />
pSrcMean1pSrcMean2pSrcVar1<br />
pSrcVar2 NULL<br />
len <br />
8-52
[Mit93] 27 <br />
<br />
[Opp75][Opp89][Jac89] [Zie83] <br />
[Opp89] [Opp75] [Jac89] <br />
[Zie83] <br />
[Bri94]<br />
C. Brislawn Classification of Nonexpansive Symmetric Extension<br />
Transforms for Multirate Filter Banks(Los Alamos Report<br />
LA-UR-94-17471994 )<br />
[Cap78] V. CappelliniA. G. ConstantinidesP. Emilani Digital Filters and<br />
Their Applications( Academic Press 1978 )<br />
[CCITT] CCITT G.711<br />
[Cro83] R. E. CrochiereL. R. Rabiner Multirate Digital Signal Processing<br />
( <br />
1983 )<br />
[Dau92] I. Daubechies Ten Lectures on Wavelets( <br />
1992 )<br />
[Fei92]<br />
E. FeigS. Winograd Fast algorithms for DCT(IEEE Transactions on<br />
Signal Processingvol.40No.91992 )<br />
[Har78] F. Harris On the Use of Windows(IEEE vol. 66No.1IEEE<br />
1978 )<br />
[Hay91] S. Haykin Adaptive Filter Theory( <br />
1991 )<br />
[Jac89]<br />
Leland B. Jackson Digital Filters and Signal Processing<br />
(Kluwer Academic Publishers 2 1989 )<br />
-1
<strong>IPP</strong> : 1 <br />
<br />
[Lyn89] Paul A. Lynn Introductory Digital Signal Processing with Computer<br />
Applications( John Wiley&Sons, Inc. 1993 )<br />
[Mit93]<br />
Sanjit K. MitraJames F. Kaiser Handbook for Digital Signal<br />
Processing( John Wiley&Sons, Inc. 1993 )<br />
[Mit98] S. K. Mitra Digital Signal Processing( 1998 )<br />
[NIC91] Nam Ik ChoSang Uk Lee Fast algorithm and implementation of 2D<br />
DCT(IEEE Transactions on Circuits and Systemsvol. 31No.3<br />
1991 )<br />
[Opp75] Alan V. OppenheimRonald W. Schafer Digital Signal Processing<br />
( <br />
1975 )<br />
[Opp89] Alan V. OppenheimRonald W. Schafer Discrete-Time Signal<br />
Processing( <br />
1989 )<br />
[Rab78] L.R. RabinerR.W. Schafer Digital Processing of Speech Signals<br />
( <br />
1978 )<br />
[Rao90] K.R. RaoP. Yip Discrete Cosine Transform.Algorithms, Advantages<br />
and Applications( Academic Press 1990 )<br />
[Str96]<br />
G. StrangT. Nguyen Wavelet and Filter Banks(Wellesley-Cambridge<br />
Press 1996 )<br />
[Vai93]<br />
P. P. Vaidyanathan Multirate Systems and Filter Banks( <br />
)<br />
[Wid85] B. WidrowS.D. Stearns Adaptive Signal Processing( <br />
1985 )<br />
[Zie83]<br />
Rodger E. ZiemerWilliam H. TranterD. Ronald Fannin Signals and<br />
Systems:Continuous and Discrete( Macmillan Publishing<br />
Co. 1983 )<br />
-2
(adaptive filter)<br />
( )<br />
<br />
<br />
<br />
<br />
(arithmetic operation)<br />
2 <br />
<br />
BQ<br />
IIR <br />
<br />
CCS<br />
<br />
(<strong>com</strong>panding functions)<br />
<br />
<br />
<br />
<br />
(<strong>com</strong>plex conjugate-symmetric)<br />
<br />
x(-n) = x(n)* <br />
(* )<br />
(conjugate)<br />
a + bj a - bj <br />
(conjugate-symmetric)<br />
<strong>com</strong>plex conjugate-symmetric<br />
DCT<br />
Discrete Cosine Transform <br />
-1
<strong>IPP</strong> : 1 <br />
<br />
(decimation)<br />
<br />
<br />
<br />
<br />
(down-sampling)<br />
<br />
<br />
<br />
(element-wise) <br />
<br />
{x 0 , x 1 , x 2 } <br />
{y 0 , y 1 , y 2 } <br />
{x 0 , x 1 , x 2 } + {y 0 , y 1 , y 2 } = {x 0 + y 0 , x 1 + y 1 , x 2 + y 2 } <br />
<br />
FIR<br />
Finite Impulse Response FIR <br />
<br />
FIR LMS<br />
Least Mean Squares Finite Impulse Response <br />
(fixed-point data format)<br />
1 <br />
<br />
<br />
S.31 1 31<br />
S15.16 <br />
1 15 16 <br />
<br />
IIR<br />
Infinite Impulse Response <br />
(in-place)<br />
(interpolation)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
-2
<strong>IPP</strong> : 1 <br />
<br />
LMS<br />
Least Mean Square 2 <br />
LMS <br />
FIR <br />
<br />
LTI<br />
Linear Time-Invariant LTI <br />
<br />
( ) <br />
[Lyn89]<br />
MMX ® (MMX technology)<br />
<br />
® <br />
MMX 4 <br />
8 64 MMX <br />
SIMD (single instruction, multiple data) 57 <br />
<br />
MR<br />
1 <br />
<br />
(multi-rate) <br />
<br />
<br />
(not-in-place)<br />
<br />
<br />
(polyphase)<br />
CCS<br />
Pack<br />
Perm<br />
<br />
<br />
Pack <br />
Perm <br />
<br />
FFT <br />
( 2 FFT <br />
)<br />
FFT <br />
RCPerm FFT <br />
<br />
<br />
-3
<strong>IPP</strong> : 1 <br />
<br />
(saturation)<br />
<br />
<br />
7FFFh 7FFFh<br />
<br />
8000h <br />
8000h <br />
(sinusoid) <br />
SSE<br />
Streaming SIMD Extensions <br />
<br />
SSE <br />
<br />
<br />
<br />
<br />
(tone)<br />
<br />
<br />
(up-sampling)<br />
<br />
<br />
<br />
(Window)<br />
<br />
FFT <br />
-4
A<br />
Abs, 5-28<br />
Add, 5-13<br />
AddAllRowSum, 8-1<br />
AddC, 5-12<br />
AddMulCol, 8-3<br />
AddMulRow, 8-4<br />
AddNRows, 8-17<br />
ALawToLin, 5-77<br />
ALawToMuLaw, 5-80<br />
And, 5-2<br />
AndC, 5-1<br />
AutoCorr, 6-4<br />
C<br />
CartToPolar<strong>com</strong>plex, 5-68<br />
CartToPolarreal, 5-69<br />
CCS , 7-3<br />
Conj, 5-42<br />
ConjCCS, 7-8<br />
ConjFlip, 5-43<br />
ConjPack, 7-6<br />
ConjPerm, 7-4<br />
Conv, 6-1<br />
ConvCyclic, 6-3<br />
Convert, 5-40<br />
Copy, 4-1<br />
CopyCol, 8-31<br />
CplxToReal, 5-53<br />
CrossCorr, 6-6<br />
D<br />
DCTFwd, 7-43<br />
DCTFwdFree, 7-40<br />
DCTFwdGetBufSize, 7-41<br />
DCTInv, 7-43<br />
DCTInvFree, 7-40<br />
DCTInvGetBufSize, 7-41<br />
DCTInvInitAlloc, 7-39<br />
DCT , 7-39 7-44<br />
DCTFwd, 7-43<br />
DCTFwdFree, 7-40<br />
DCTFwdGetBufSize, 7-41<br />
DCTFwdInitAlloc, 7-39<br />
DCTInv, 7-43<br />
DCTInvFree, 7-40<br />
DCTInvGetBufSize, 7-41<br />
DCTInvInitAlloc, 7-39<br />
Delta, 8-33<br />
DeltaDelta, 8-35<br />
DFTFree_C, 7-26<br />
DFTFree_R, 7-26<br />
DFTFwd_CToC, 7-28<br />
DFTFwd_RToCCS, 7-31<br />
DFTFwd_RToPack, 7-31<br />
DFTFwd_RToPerm, 7-31<br />
DFTGetBufSize_C, 7-27<br />
DFTGetBufSize_R, 7-27<br />
DFTInitAlloc_C, 7-24<br />
-1
<strong>IPP</strong> : 1 <br />
<br />
DFTInitAlloc_R, 7-24<br />
DFTInv_CCSToR, 7-31<br />
DFTInv_CToC, 7-28<br />
DFTInv_PackToR, 7-31<br />
DFTInv_PermToR, 7-31<br />
DFT , 7-24 7-33<br />
DFTFree_C, 7-26<br />
DFTFree_R, 7-26<br />
DFTFwd_CToC, 7-28<br />
DFTFwd_RToCCS, 7-31<br />
DFTFwd_RToPack, 7-31<br />
DFTFwd_RToPerm, 7-31<br />
DFTGetBufSize_C, 7-27<br />
DFTGetBufSize_R, 7-27<br />
DFTInitAlloc_C, 7-24<br />
DFTInitAlloc_R, 7-24<br />
DFTInv_CCSToR, 7-31<br />
DFTInv_CToC, 7-28<br />
DFTInv_PackToR, 7-31<br />
DFTInv_PermToR, 7-31<br />
Div, 5-23, 5-24<br />
DotProd, 5-108<br />
DotProdCol, 8-5<br />
DTCFwdInitAlloc, 7-39<br />
E<br />
EvalDelta, 8-32<br />
Exp, 5-34<br />
F<br />
FFTFree_C, 7-15<br />
FFTFree_R, 7-15<br />
FFTFwd_CToC, 7-17<br />
FFTFwd_RToCCS, 7-20<br />
FFTFwd_RToPack, 7-20<br />
FFTFwd_RToPerm, 7-20<br />
FFTGetBufSize_C, 7-16<br />
FFTGetBufSize_R, 7-16<br />
FFTInitAlloc_C, 7-13<br />
FFTInitAlloc_R, 7-13<br />
FFTInv_CCSToR, 7-20<br />
FFTInv_CToC, 7-17<br />
FFTInv_PackToR, 7-20<br />
FFTInv_PermToR, 7-20<br />
FFT , 7-13 7-22<br />
FFTFree_C, 7-15<br />
FFTFree_R, 7-15<br />
FFTFwd_CToC, 7-17<br />
FFTFwd_RToCCS, 7-20<br />
FFTFwd_RToPack, 7-20<br />
FFTFwd_RToPerm, 7-20<br />
FFTGetBufSize_C, 7-16<br />
FFTGetBufSize_R, 7-16<br />
FFTInitAlloc_C, 7-13<br />
FFTInitAlloc_R, 7-13<br />
FFTInv_CCSToR, 7-20<br />
FFTInv_CToC, 7-17<br />
FFTInv_PackToR, 7-20<br />
FFTInv_PermToR, 7-20<br />
FilterMedian, 6-51<br />
FIR, 6-17<br />
FIR LMS , 6-26 6-35<br />
FIRLMS, 6-31<br />
FIRLMSFree, 6-28<br />
FIRLMSGetDlyLine, 6-34<br />
FIRLMSGetTaps, 6-33<br />
FIRLMSInitAlloc, 6-27<br />
FIRLMSOne, 6-28<br />
FIRLMSSetDlyLine, 6-34<br />
FIRFree, 6-26<br />
FIRGetDlyLine, 6-23<br />
FIRGetTaps, 6-22<br />
FIRInitAlloc, 6-10<br />
FIRLMS, 6-31<br />
FIRLMSFree, 6-28<br />
FIRLMSGetDlyLine, 6-34<br />
FIRLMSGetTaps, 6-33<br />
FIRLMSInitAlloc, 6-27<br />
FIRLMSOne, 6-28<br />
FIRLMSSetDlyLine, 6-34<br />
-2
<strong>IPP</strong> : 1 <br />
<br />
FIRMRInitAlloc, 6-10<br />
FIROne, 6-15<br />
FIRSetDlyLine, 6-23<br />
FIR , 6-9 6-26<br />
FIR, 6-17<br />
FIRFree, 6-26<br />
FIRGetDlyLine, 6-23<br />
FIRGetTaps, 6-22<br />
FIRInitAlloc, 6-10<br />
FIRMRInitAlloc, 6-10<br />
FIROne, 6-15<br />
FIRSetDlyLine, 6-23<br />
flag hint , 7-1 7-2<br />
Free, 3-5<br />
G<br />
GaussianDist, 8-48<br />
GaussianMerge, 8-50<br />
GaussianSplit, 8-51<br />
GetLibVersion, 3-1<br />
GetStatusString, 3-3<br />
Goertz, 7-35<br />
GoertzTwo, 7-38<br />
I<br />
IIR, 6-42<br />
IIRFree, 6-39<br />
IIRGetDlyLine, 6-48<br />
IIRInitAlloc, 6-35<br />
IIRInitAlloc_BiQuad, 6-35<br />
IIROne, 6-40<br />
IIRSetDlyLine, 6-48<br />
IIR , 6-35 6-50<br />
IIR, 6-42<br />
IIRFree, 6-39<br />
IIRGetDlyLine, 6-48<br />
IIRInitAlloc, 6-35<br />
IIRInitAlloc_BiQuad, 6-35<br />
IIROne, 6-40<br />
IIRSetDlyLine, 6-48<br />
Imag, 5-51<br />
Intel Performance Primitives , 1-1<br />
ippsAbs()Abs <br />
ippsAdd()Add <br />
ippsAddAllRowSum()AddAllRowSum <br />
ippsAddC()AddC <br />
ippsAddMulCol()AddMulCol <br />
ippsAddMulRow()AddMulRow <br />
ippsAddNRows()AddNRows <br />
ippsALawToLin()ALawToLin <br />
ippsALawToMuLaw()ALawToMuLaw <br />
ippsAnd()And <br />
ippsAndC()AndC <br />
ippsAutoCorr()AutoCorr <br />
ippsCartToPolar()CartToPolar<strong>com</strong>plex <br />
ippsCartToPolar()CartToPolarreal <br />
ippsConj()Conj <br />
ippsConjCCS()ConjCCS <br />
ippsConjFlip()ConjFlip <br />
ippsConjPack()ConjPack <br />
ippsConv()Conv <br />
ippsConvCyclic()ConvCyclic <br />
ippsConvert()Convert <br />
ippsCopy()Copy <br />
ippsCopyCol()CopyCol <br />
ippsCplxToReal()CplxToReal <br />
ippsCrossCorr()CrossCorr <br />
ippsDCTFwd()DCTFwd <br />
ippsDCTFwdFree()DCTFwdFree <br />
ippsDCTFwdGetBufSize()DCTFwdGetBufSize <br />
<br />
ippsDCTFwdInitAlloc()DCTFwdInitAlloc <br />
ippsDCTInv()DCTInv <br />
ippsDCTInvFree()DCTInvFree <br />
ippsDCTInvGetBufSize()DCTInvGetBufSize <br />
<br />
ippsDCTInvInitAlloc()DCTInvInitAlloc <br />
-3
<strong>IPP</strong> : 1 <br />
<br />
ippsDelta()Delta <br />
ippsDeltaDelta()DeltaDelta <br />
ippsDFTFree_C()DFTFree_C <br />
ippsDFTFree_R()DFTFree_R <br />
ippsDFTFwd_CToC()DFTFwd_CToC <br />
ippsDFTFwd_RToCCS()DFTFwd_RToCCS <br />
ippsDFTFwd_RToPack()DFTFwd_RToPack <br />
ippsDFTFwd_RToPerm()DFTFwd_RToPerm <br />
<br />
ippsDFTGetBufSize_R()DFTGetBufSize_R <br />
ippsDFTInitAlloc_C()DFTInitAlloc_C <br />
ippsDFTInitAlloc_R()DFTInitAlloc_R <br />
ippsDFTInv_CCSToR()DFTInv_CCSToR <br />
ippsDFTInv_CToC()DFTInv_CToC <br />
ippsDFTInv_PackToR()DFTInv_PackToR <br />
ippsDFTInv_PermToR()DFTInv_PermToR <br />
ippsDiv()Div <br />
ippsDivC()DivC <br />
ippsDotProd ()DotProd <br />
ippsDotProdCol()DotProdCol <br />
ippsEvalDelta()EvalDelta <br />
ippsExp()Exp <br />
ippsFFTFree_C()FFTFree_C <br />
ippsFFTFree_R()FFTFree_R <br />
ippsFFTFwd_CToC()FFTFwd_CToC <br />
ippsFFTFwd_RToCCS()FFTFwd_RToCCS <br />
ippsFFTFwd_RToPack()FFTFwd_RToPack <br />
ippsFFTFwd_RToPerm()FFTFwd_RToPerm <br />
ippsFFTGetBufSize_C()FFTGetBufSize_C <br />
ippsFFTGetBufSize_R()FFTGetBufSize_R <br />
ippsFFTInitAlloc_C()FFTInitAlloc_C <br />
ippsFFTInitAlloc_R()FFTInitAlloc_R <br />
ippsFFTInv_CCSToR()FFTInv_CCSToR <br />
ippsFFTInv_CToC()FFTInv_CToC <br />
ippsFFTInv_PackToR()FFTInv_PackToR <br />
ippsFFTInv_PermToR()FFTInv_PermToR <br />
ippsFilterMedianFilterMedian <br />
ippsFIR()FIR <br />
ippsFIRFree()FIRFree <br />
ippsFIRGetDlyLine()FIRGetDlyLine <br />
ippsFIRGetTaps()FIRGetTaps <br />
ippsFIRInitAlloc()FIRInitAlloc <br />
ippsFIRLMS()FIRLMS <br />
ippsFIRLMSFree()FIRLMSFree <br />
ippsFIRLMSGetDlyLine()FIRLMSGetDlyLine <br />
<br />
ippsFIRLMSGetTaps()FIRLMSGetTaps <br />
ippsFIRLMSInitAlloc()FIRLMSInitAlloc <br />
ippsFIRLMSOne()FIRLMSOne <br />
ippsFIRLMSSetDlyLine()FIRLMSSetDlyLine <br />
<br />
ippsFIRMRInitAlloc()FIRMRInitAlloc <br />
ippsFIROne()FIROne <br />
ippsFIRSetDlyLine()FIRSetDlyLine <br />
ippsFree()Free <br />
ippsGaussianDist()GaussianDist <br />
ippsGaussianMerge()GaussianMerge <br />
ippsGaussianSplit()GaussianSplit <br />
ippsGetBufSize_C()DFTGetBufSize_C <br />
ippsGetLibVersion()GetLibVersion <br />
ippsGetStatusString()GetStatusString <br />
ippsGoertz()Goertz <br />
ippsGoertzTwo()GoertzTwo <br />
ippsIIR()IIR <br />
ippsIIRFree()IIRFree <br />
ippsIIRGetDlyLine()IIRGetDlyLine <br />
ippsIIRInitAlloc()IIRInitAlloc <br />
ippsIIRInitAlloc_BiQuad()IIRInitAlloc_BiQuad <br />
<br />
ippsIIROne()IIROne <br />
ippsIIRSetDlyLine()IIRSetDlyLine <br />
ippsImag()Imag <br />
ippsLinToALaw()LinToALaw <br />
ippsLinToMuLaw()LinToMuLaw <br />
ippsLMThreshold()LMThreshold <br />
-4
<strong>IPP</strong> : 1 <br />
<br />
ippsLn()Ln <br />
ippsLogAdd()LogAdd <br />
ippsLogGauss1()LogGauss1 <br />
ippsLogGauss2()LogGauss2 <br />
ippsLogGaussAdd1()LogGaussAdd1 <br />
ippsLogGaussMax1()LogGaussMax1 <br />
ippsLogGaussSingle()LogGaussSingle <br />
ippsLogSub()LogSub <br />
ippsLShiftC()LShiftC <br />
ippsMagnitude()Magnitude <br />
ippsMahDist1()MahDist1 <br />
ippsMahDist2()MahDist2 <br />
ippsMahDistSingle()MahDistSingle <br />
ippsMalloc()Malloc <br />
ippsMax()Max <br />
ippsMaxIndx()MaxIndx <br />
ippsMaxOrder()MaxOrder <br />
ippsMean()Mean <br />
ippsMeanCol()MeanCol <br />
ippsMeanVarAcc()MeanVarAcc <br />
ippsMeanVarCol()MeanVarCol <br />
ippsMin()Min <br />
ippsMinIndxt()MinIndx <br />
ippsMul()Mul <br />
ippsMuLawToALaw()MuLawToALaw <br />
ippsMuLawToLin()MuLawToLin <br />
ippsMulC()MulC <br />
ippsMulCol()MulCol <br />
ippsMulPack()MulPack <br />
ippsMulPerm()MulPerm <br />
ippsNorm()Norm <br />
ippsNormalize()Normalize <br />
ippsNormalizeCol()NormalizeCol <br />
ippsNormDiff()NormDiff <br />
ippsNot()Not <br />
ippsOr()Or <br />
ippsOrC()OrC <br />
ippsPhase()Phase<strong>com</strong>plex <br />
ippsPhase()Phasereal <br />
ippsPolarToCart()PolarToCart<strong>com</strong>plex <br />
ippsPolarToCart()PolarToCartreal <br />
ippsPowerSpectr()PowerSpectr<strong>com</strong>plex <br />
ippsPowerSpectr()PowerSpectrreal <br />
ippsPreemphasize()Preemphasize <br />
ippsQRTransCol()QRTransCol <br />
ippsRandGauss()RandGauss <br />
ippsRandUniform()RandUniform <br />
ippsReal()Real <br />
ippsRealToCplx()RealToCplx <br />
ippsRecSqrt()RecSqrt <br />
ippsRShiftC()RShiftC <br />
ippsSampleDown()SampleDown <br />
ippsSampleUp()SampleUp <br />
ippsSet()Set <br />
ippsSqr()Sqr <br />
ippsSqrt()Sqrt <br />
ippsStdDev()StdDev <br />
ippsSub()Sub <br />
ippsSubC()SubC <br />
ippsSubCRev()SubCRev <br />
ippsSubRow()SubRow <br />
ippsSum()Sum <br />
ippsSumCol()SumCol <br />
ippsSumColAbs()SumColAbs <br />
ippsSumColSqr()SumColSqr <br />
ippsSumRow()SumRow <br />
ippsSumRowAbs()SumRowAbs <br />
ippsSumRowSqr()SumRowSqr <br />
ippsThreshold()Threshold <br />
ippsThreshold_GT()Threshold_GT <br />
ippsThreshold_GTVal()Threshold_GTVal <br />
ippsThreshold_LT()Threshold_LT <br />
ippsThreshold_LTInv()Threshold_LTInv <br />
ippsThreshold_LTVal()Threshold_LTVal <br />
-5
<strong>IPP</strong> : 1 <br />
<br />
ippsTone()Tone <br />
ippsTriangle()Triangle <br />
ippsVarCol()VarCol <br />
ippsVectorJaehne()VectorJaehne <br />
ippsWinBartlett()WinBartlett <br />
ippsWinBlackman()WinBlackman <br />
ippsWinHamming()WinHamming <br />
ippsWinHann()WinHann <br />
ippsWinKaiser()WinKaiser <br />
ippsWTFwd()WTFwd <br />
ippsWTFwdFree()WTFwdFree <br />
ippsWTFwdGetDlyLine()WTFwdGetDlyLine <br />
<br />
ippsWTFwdInitAlloc()WTFwdInitAlloc <br />
ippsWTFwdSetDlyLine()WTFwdSetDlyLine <br />
<br />
ippsWTHaarFwd()WTHaarFwd <br />
ippsWTHaarInv()WTHaarInv <br />
ippsWTInv()WTInv <br />
ippsWTInvFree()WTInvFree <br />
ippsWTInvGetDlyLine()WTInvGetDlyLine <br />
ippsWTInvInitAlloc()WTInvInitAlloc <br />
ippsWTInvSetDlyLine()WTInvSetDlyLine <br />
ippsXor()Xor <br />
ippsXorC()XorC <br />
ippsZero()Zero <br />
ippsZeroMean()ZeroMean <br />
<strong>IPP</strong> , 1-1<br />
L<br />
LinToALaw, 5-78<br />
LinToMuLaw, 5-76<br />
LMThreshold, 8-20<br />
Ln, 5-36<br />
LogAdd, 8-27<br />
LogGauss1, 8-39<br />
LogGauss2, 8-41<br />
LogGaussAdd1, 8-47<br />
LogGaussMax1, 8-45<br />
LogGaussSingle, 8-37<br />
LogSub, 8-28<br />
LShiftC, 5-8<br />
M<br />
Magnitude, 5-44<br />
MahDist1, 8-42<br />
MahDist2, 8-44<br />
MahDistSingle, 8-38<br />
Malloc, 3-4<br />
Max, 5-97<br />
MaxIndx, 5-97<br />
MaxOrder, 5-72<br />
Mean, 5-101<br />
MeanCol, 8-21<br />
MeanVarAcc, 8-25<br />
MeanVarCol, 8-24<br />
Min, 5-98<br />
MinIndx, 5-99<br />
MMX , 1-1<br />
Mul, 5-16<br />
MuLawToALaw, 5-79<br />
MuLawToLin, 5-75<br />
MulC, 5-15<br />
MulCol, 8-6<br />
MulPack, 7-10<br />
MulPerm, 7-10<br />
N<br />
Norm, 5-104<br />
Normalize, 5-38<br />
NormalizeCol, 8-26<br />
NormDiff, 5-106<br />
Not, 5-7<br />
-6
<strong>IPP</strong> : 1 <br />
<br />
O<br />
Or, 5-4<br />
OrC, 5-3<br />
P<br />
Pack , 7-2<br />
Perm , 7-3<br />
Phase<strong>com</strong>plex, 5-46<br />
Phasereal, 5-47<br />
PolarToCart<strong>com</strong>plex, 5-70<br />
PolarToCartreal, 5-71<br />
PowerSpectr<strong>com</strong>plex, 5-48<br />
PowerSpectrreal, 5-49<br />
Preemphasize, 5-73<br />
Q<br />
QRTransCol, 8-7<br />
R<br />
RandGauss, 4-12<br />
RandUniform, 4-11<br />
Real, 5-51<br />
RealToCplx, 5-52<br />
RecSqrt, 8-12<br />
RShiftC, 5-9<br />
S<br />
SampleDown, 5-113<br />
SampleUp, 5-111<br />
Set, 4-2<br />
SIMD , 1-1<br />
Sqr, 5-29<br />
Sqrt, 5-31<br />
StdDev, 5-102<br />
Sub, 5-21<br />
SubC, 5-18<br />
SubCRev, 5-20<br />
SubRow, 8-13<br />
Sum, 5-95<br />
SumCol, 8-8<br />
SumColAbs, 8-10<br />
SumColSqr, 8-11<br />
SumRow, 8-14<br />
SumRowAbs, 8-15<br />
SumRowSqr, 8-16<br />
T<br />
Threshold, 5-54<br />
Threshold_GT, 5-58<br />
Threshold_GTVal, 5-62<br />
Threshold_LT, 5-58<br />
Threshold_LTInv, 5-65<br />
Threshold_LTVal, 5-62<br />
Tone, 4-5<br />
Triangle, 4-9<br />
V<br />
VarCol, 8-22<br />
VectorJaehne, 4-13<br />
W<br />
WinBartlett, 5-83<br />
WinBlackman, 5-85<br />
WinHamming, 5-88<br />
WinHann, 5-90<br />
WinKaiser, 5-92<br />
WTFwd, 7-58<br />
WTFwdFree, 7-57<br />
WTFwdGetDlyLine, 7-61<br />
WTFwdInitAlloc, 7-54<br />
WTFwdSetDlyLine, 7-61<br />
WTHaarFwd, 7-49<br />
WTHaarInv, 7-49<br />
-7
<strong>IPP</strong> : 1 <br />
<br />
WTInv, 7-64<br />
WTInvFree, 7-57<br />
WTInvGetDlyLine, 7-67<br />
WTInvInitAlloc, 7-54<br />
WTInvSetDlyLine, 7-67<br />
WTInvInitAlloc, 7-54<br />
WTInvSetDlyLine, 7-67<br />
<br />
, 2-9<br />
X<br />
Xor, 5-6<br />
XorC, 5-5<br />
Z<br />
Zero, 4-4<br />
ZeroMean, 8-19<br />
<br />
, 5-74 5-80<br />
ALawToLin, 5-77<br />
bALawToMuLaw, 5-80<br />
LinToALaw, 5-78<br />
LinToMuLaw, 5-76<br />
MuLawToALaw, 5-79<br />
MuLawToLin, 5-75<br />
<br />
, 4-11<br />
RandUniform, 4-11<br />
<br />
, 7-46 7-69<br />
WTFwd, 7-58<br />
WTFwdFree, 7-57<br />
WTFwdGetDlyLine, 7-61<br />
WTFwdInitAlloc, 7-54<br />
WTFwdSetDlyLine, 7-61<br />
WTHaarFwd, 7-49<br />
WTHaarInv, 7-49<br />
WTInv, 7-64<br />
WTInvFree, 7-57<br />
WTInvGetDlyLine, 7-67<br />
<br />
, 1-3<br />
<br />
<br />
<strong>IPP</strong> , 2-6<br />
, 8-37 8-52<br />
GaussianDist, 8-48<br />
GaussianMerge, 8-50<br />
GaussianSplit, 8-51<br />
LogGauss1, 8-39<br />
LogGauss2, 8-41<br />
LogGaussAdd1, 8-47<br />
LogGaussMax1, 8-45<br />
LogGaussSingle, 8-37<br />
MahDist1, 8-42<br />
MahDist2, 8-44<br />
MahDistSingle, 8-38<br />
MeanVarAcc, 8-25<br />
, 8-48 8-52<br />
<br />
RandGauss, 4-12<br />
, 1-3<br />
, 2-2<br />
, 1-3<br />
<br />
, 8-27<br />
AddNRows, 8-17<br />
CopyCol, 8-31<br />
Delta, 8-33<br />
DeltaDelta, 8-35<br />
EvalDelta, 8-32<br />
LMThreshold, 8-20<br />
-8
<strong>IPP</strong> : 1 <br />
<br />
LogAdd, 8-27<br />
LogSub, 8-28<br />
ZeroMean, 8-19<br />
, 8-37 8-39<br />
, 8-39 8-48<br />
<br />
,<br />
7-49 7-53<br />
<br />
, 1-2<br />
, 5-11 5-37, 8-1 8-20<br />
Abs, 5-28<br />
Add, 5-13<br />
AddC, 5-12<br />
Div, 5-24<br />
DivC, 5-23<br />
Exp, 5-34<br />
Ln, 5-36<br />
Mul, 5-16<br />
MulC, 5-15<br />
Sqr, 5-29<br />
Sqrt, 5-31<br />
Sub, 5-21<br />
SubC, 5-18<br />
SubCRev, 5-20<br />
, 8-1 8-26<br />
AddAllRowSum, 8-1<br />
AddMulCol, 8-3<br />
AddMulRow, 8-4<br />
DotProdCol, 8-5<br />
MeanCol, 8-21<br />
MeanVarCol, 8-24<br />
MulCol, 8-6<br />
NormalizeCol, 8-26<br />
QRTransCol, 8-7<br />
RecSqrt, 8-12<br />
SubRow, 8-13<br />
SumCol, 8-8<br />
SumColAbs, 8-10<br />
SumColSqr, 8-11<br />
SumRow, 8-14<br />
SumRowAbs, 8-15<br />
SumRowSqr, 8-16<br />
VarCol, 8-22<br />
, 5-111 5-115<br />
SampleDown, 5-113<br />
SampleUp, 5-111<br />
, 4-5 4-14<br />
<br />
, 1-4<br />
, 5-8<br />
, 3-1 3-3<br />
GetLibVersion, 3-1<br />
GetStatusString, 3-3<br />
, 1-4<br />
<br />
SIMD , 1-1<br />
<br />
, 4-12<br />
<br />
, 8-21 8-26<br />
<br />
, 8-27 8-28<br />
, 6-1 6-8<br />
Conv, 6-1<br />
ConvCyclic, 6-3<br />
CrossCorr, 6-6<br />
<br />
, 8-29 8-36<br />
, 5-95 5-110<br />
DotProd, 5-108<br />
Max, 5-97<br />
-9
<strong>IPP</strong> : 1 <br />
<br />
MaxIndx, 5-97<br />
Mean, 5-101<br />
Min, 5-98<br />
MinIndx, 5-99<br />
Norm, 5-104<br />
Normalize, 5-38<br />
NormDiff, 5-106<br />
Phase<strong>com</strong>plex, 5-46<br />
Phasereal, 5-47<br />
PowerSpectr<strong>com</strong>plex, 5-48<br />
PowerSpectrreal, 5-49<br />
StdDev, 5-102<br />
Sum, 5-95<br />
, 4-5 4-7<br />
Tone, 4-5<br />
DFT(Goertzel) , 7-35 7-39<br />
Goertz, 7-35<br />
GoertzTwo, 7-38<br />
, 4-7 4-10<br />
Triangle, 4-9<br />
<br />
, 1-1<br />
, 7-3 7-9<br />
ConjCCS, 7-8<br />
ConjPack, 7-6<br />
ConjPerm, 7-4<br />
, 7-10 7-12<br />
MulPack, 7-10<br />
MulPerm, 7-10<br />
<br />
, 1-4<br />
, 1-4<br />
, 1-4<br />
, 1-5<br />
<br />
, 6-9 6-52<br />
, 1-5<br />
<br />
, 1-1<br />
Jaehne , 4-13 4-14<br />
VectorJaehne, 4-13<br />
, 4-1 4-4<br />
Copy, 4-1<br />
Set, 4-2<br />
Zero, 4-4<br />
<br />
AutoCorr, 6-4<br />
, 5-40 5-74<br />
CartToPolar<strong>com</strong>plex, 5-68<br />
CartToPolarreal, 5-69<br />
Conj, 5-42<br />
ConjFlip, 5-43<br />
Convert, 5-40<br />
CplxToReal, 5-53<br />
Imag, 5-51<br />
Magnitude, 5-44<br />
MaxOrder, 5-72<br />
PolarToCart<strong>com</strong>plex, 5-70<br />
PolarToCartreal, 5-71<br />
Preemphasize, 5-73<br />
Real, 5-51<br />
RealToCplx, 5-52<br />
Threshold, 5-54<br />
Threshold_GT, 5-58<br />
Threshold_GTVal, 5-62<br />
Threshold_LT, 5-58<br />
Threshold_LTInv, 5-65<br />
Threshold_LTVal, 5-62<br />
, 7-1 7-12<br />
<br />
, 1-2<br />
, 1-2<br />
, 1-3<br />
<br />
(Window) , 5-81 5-94<br />
WinBartlett, 5-83<br />
-10
<strong>IPP</strong> : 1 <br />
<br />
WinBlackman, 5-85<br />
WinHamming, 5-88<br />
WinHann, 5-90<br />
WinKaiser, 5-92<br />
(Window) , 5-81 5-82<br />
<br />
, 6-51 6-52<br />
FilterMedian, 6-51<br />
, 3-4 3-5<br />
Free, 3-5<br />
Malloc, 3-4<br />
<br />
<br />
, 7-54 7-69<br />
<br />
, 5-1 5-10<br />
And, 5-2<br />
AndC, 5-1<br />
LShiftC, 5-8<br />
Not, 5-7<br />
Or, 5-4<br />
OrC, 5-3<br />
RShiftC, 5-9<br />
Xor, 5-6<br />
XorC, 5-5<br />
-11
<strong>IPP</strong> : 1 <br />
<br />
-12