21.11.2014 Views

IPP - XLsoft.com

IPP - XLsoft.com

IPP - XLsoft.com

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!