Accelerate FWRef
Accelerate FWRef
Mathematical Computation
         2010-03-19
                                                   PowerPC and and the PowerPC logo are
Apple Inc.                                         trademarks of International Business Machines
© 2010 Apple Inc.                                  Corporation, used under license therefrom.
All rights reserved.                               Simultaneously published in the United States
                                                   and Canada.
No part of this publication may be reproduced,
                                                   Even though Apple has reviewed this document,
stored in a retrieval system, or transmitted, in   APPLE MAKES NO WARRANTY OR REPRESENTATION,
any form or by any means, mechanical,              EITHER EXPRESS OR IMPLIED, WITH RESPECT TO
                                                   THIS DOCUMENT, ITS QUALITY, ACCURACY,
electronic, photocopying, recording, or            MERCHANTABILITY, OR FITNESS FOR A PARTICULAR
otherwise, without prior written permission of     PURPOSE. AS A RESULT, THIS DOCUMENT IS
Apple Inc., with the following exceptions: Any     PROVIDED “AS IS,” AND YOU, THE READER, ARE
                                                   ASSUMING THE ENTIRE RISK AS TO ITS QUALITY
person is hereby authorized to store               AND ACCURACY.
documentation on a single computer for             IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT,
personal use only and to print copies of           INDIRECT, SPECIAL, INCIDENTAL, OR
                                                   CONSEQUENTIAL DAMAGES RESULTING FROM ANY
documentation for personal use provided that       DEFECT OR INACCURACY IN THIS DOCUMENT, even
the documentation contains Apple’s copyright       if advised of the possibility of such damages.
notice.                                            THE WARRANTY AND REMEDIES SET FORTH ABOVE
                                                   ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL
The Apple logo is a trademark of Apple Inc.        OR WRITTEN, EXPRESS OR IMPLIED. No Apple
                                                   dealer, agent, or employee is authorized to make
Use of the “keyboard” Apple logo                   any modification, extension, or addition to this
(Option-Shift-K) for commercial purposes           warranty.
without the prior written consent of Apple may     Some states do not allow the exclusion or limitation
                                                   of implied warranties or liability for incidental or
constitute trademark infringement and unfair       consequential damages, so the above limitation or
competition in violation of federal and state      exclusion may not apply to you. This warranty gives
laws.                                              you specific legal rights, and you may also have
                                                   other rights which vary from state to state.
No licenses, express or implied, are granted
with respect to any of the technology described
in this document. Apple retains all intellectual
property rights associated with the technology
described in this document. This document is
intended to assist application developers to
develop applications only for Apple-labeled
computers.
Every effort has been made to ensure that the
information in this document is accurate. Apple
is not responsible for typographical errors.
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
408-996-1010
Introduction Introduction 5
                      Overview 9
                      Functions by Task 9
                      Functions 18
                      Constants 161
                      Overview 165
                      Functions by Task 165
                      Functions 192
                      Data Types 548
                      Constants 551
                                                                  3
            2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
    CONTENTS
4
    2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
INTRODUCTION
Introduction
Framework:                         Accelerate/Accelerate.h
Declared in                        cblas.h
                                   vDSP.h
This document describes the Accelerate Framework, which contains C APIs for vector and matrix math, digital
signal processing, large number handling, and image processing.
                                                                                                         5
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
    INTRODUCTION
    Introduction
6
    2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
PART I
Other References
                                                      7
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
    PART I
    Other References
8
    2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
BLAS Reference
      Framework:                         Accelerate
      Declared in                        cblas.h
                                         vBLAS.h
Overview
The vecLib framework contains nine C header files (not counting vecLib.h which merely includes the others).
      This document describes the functions declared in the header files cblas.h and vblas.h, which contain
      the interfaces for Apple’s implementation of the Basic Linear Algebra Subprograms (BLAS) API.
Functions by Task
      General Functions
      ATLU_DestroyThreadMemory (page 18)
              Releases per-thread storage associated with BLAS.
      SetBLASParamErrorProc (page 161)
              Sets an error handler function.
      cblas_errprn (page 91)
              Prints an error message.
      cblas_xerbla (page 126)
              The default error handler for BLAS routines.
      cblas_icamax (page 91)
              Returns the index of the element with the largest absolute value in a vector (single-precision complex).
      cblas_idamax (page 92)
              Returns the index of the element with the largest absolute value in a vector (double-precision).
      Overview                                                                                                      9
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
10   Functions by Task
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Functions by Task                                                                                              11
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
12   Functions by Task
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Functions by Task                                                                                            13
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
14   Functions by Task
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Functions by Task                                                                                              15
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
16   Functions by Task
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Functions by Task                                                                                          17
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
Functions
      ATLU_DestroyThreadMemory
      Releases per-thread storage associated with BLAS.
      void ATLU_DestroyThreadMemory (
         void
      );
      Discussion
      Many BLAS functions parallelize computation to obtain performance from multiple CPU cores. These functions
      allocate thread memory. Call this function when you no longer need to call BLAS functions.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      catlas_caxpby
      Computes the product of two vectors, scaling each one separately (single-precision complex).
      void catlas_caxpby (
         const int N,
         const void *alpha,
         const void *X,
         const int incX,
         const void *beta,
         void *Y,
         const int incY
      );
      Parameters
      N
              Number of elements in the vector.
      alpha
              Scaling factor for X.
      X
              Input vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      beta
              Scaling factor for Y.
      Y
              Input vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
18    Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Discussion
On return, the contents of vector Y are replaced with the result.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
catlas_cset
Modifies a vector (single-precision complex) in place, setting each element to a given value.
void catlas_cset (
   const int N,
   const void *alpha,
   void *X,
   const int incX
);
Parameters
N
        The number of elements in the vector.
alpha
        The new value.
X
        The vector to modify.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
catlas_daxpby
Computes the product of two vectors, scaling each one separately (double-precision).
void catlas_daxpby (
   const int N,
   const double alpha,
   const double *X,
   const int incX,
   const double beta,
   double *Y,
   const int incY
);
Parameters
N
        Number of elements in the vector.
Functions                                                                                       19
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     alpha
             Scaling factor for X.
     X
             Input vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor for Y.
     Y
             Input vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     On return, the contents of vector Y are replaced with the result.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     catlas_dset
     Modifies a vector (double-precision) in place, setting each element to a given value.
     void catlas_dset (
        const int N,
        const double alpha,
        double *X,
        const int incX
     );
     Parameters
     N
             The number of elements in the vector.
     alpha
             The new value.
     X
             The vector to modify.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
20   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
catlas_saxpby
Computes the product of two vectors, scaling each one separately (single-precision).
void catlas_saxpby (
   const int N,
   const float alpha,
   const float *X,
   const int incX,
   const float beta,
   float *Y,
   const int incY
);
Parameters
N
        Number of elements in the vector.
alpha
        Scaling factor for X.
X
        Input vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor for Y.
Y
        Input vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
On return, the contents of vector Y are replaced with the result.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
catlas_sset
Modifies a vector (single-precision) in place, setting each element to a given value.
void catlas_sset (
   const int N,
   const float alpha,
   float *X,
   const int incX
);
Parameters
N
        The number of elements in the vector.
Functions                                                                               21
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     alpha
             The new value.
     X
             The vector to modify.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     catlas_zaxpby
     Computes the product of two vectors, scaling each one separately (double-precision complex).
     void catlas_zaxpby (
        const int N,
        const void *alpha,
        const void *X,
        const int incX,
        const void *beta,
        void *Y,
        const int incY
     );
     Parameters
     N
             Number of elements in the vector.
     alpha
             Scaling factor for X.
     X
             Input vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor for Y.
     Y
             Input vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     On return, the contents of vector Y are replaced with the result.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
22   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
catlas_zset
Modifies a vector (double-precision complex) in place, setting each element to a given value.
void catlas_zset (
   const int N,
   const void *alpha,
   void *X,
   const int incX
);
Parameters
N
        The number of elements in the vector.
alpha
        The new value.
X
        The vector to modify.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_caxpy
Computes a constant times a vector plus a vector (single-precision complex).
void cblas_caxpy (
   const int N,
   const void *alpha,
   const void *X,
   const int incX,
   void *Y,
   const int incY
);
Parameters
N
        Number of elements in the vectors.
alpha
        Scaling factor for the values in X.
X
        Input vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Input vector Y.
Functions                                                                                       23
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     On return, the contents of vector Y are replaced with the result. The value computed is (alpha * X[i])
     + Y[i].
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_ccopy
     Copies a vector to another vector (single-precision complex).
     void cblas_ccopy (
        const int N,
        const void *X,
        const int incX,
        void *Y,
        const int incY
     );
     Parameters
     N
             Number of elements in the vectors.
     X
             Source vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Destination vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_cdotc_sub
     Calculates the dot product of the complex conjugate of a single-precision complex vector with a second
     single-precision complex vector.
24   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_cdotc_sub (
   const int N,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *dotc
);
Parameters
N
        Number of elements in vectors X and Y.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
dotc
        The result vector.
Discussion
Computes conjg(X) * Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cdotu_sub
Computes the dot product of two single-precision complex vectors.
void cblas_cdotu_sub (
   const int N,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *dotu
);
Parameters
N
        The length of vectors X and Y.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Functions                                                                        25
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Y
             Vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     dotu
             The result vector.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_cgbmv
     Scales a general band matrix, then multiplies by a vector, then adds a vector (single-precision complex).
     void cblas_cgbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_TRANSPOSE TransA,
        const int M,
        const int N,
        const int KL,
        const int KU,
        const void *alpha,
        const void *A,
        const int lda,
        const void *X,
        const int incX,
        const void *beta,
        void *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     TransA
             Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
             A ('C' or 'c').
     M
             Number of rows in matrix A.
     N
             Number of columns in matrix A.
     KL
             Number of subdiagonals in matrix A.
     KU
             Number of superdiagonals in matrix A.
     alpha
             Scaling factor to multiply matrix A by.
26   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
A
        Matrix A.
lda
        Leading dimension of array containing matrix A. (Must be at least KL+KU+1.)
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor to multiply vector Y by.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y, alpha*A'*x + beta*y, or alpha*conjg(A')*x + beta*y depending
on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cgemm
Multiplies two matrices (single-precision complex).
void cblas_cgemm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_TRANSPOSE TransB,
   const int M,
   const int N,
   const int K,
   const void *alpha,
   const void *A,
   const int lda,
   const void *B,
   const int ldb,
   const void *beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to transpose matrix A.
Functions                                                                             27
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     TransB
             Specifies whether to transpose matrix B.
     M
             Number of rows in matrices A and C.
     N
             Number of columns in matrices B and C.
     K
             Number of columns in matrix A; number of rows in matrix B.
     alpha
             Scaling factor for the product of matrices A and B.
     A
             Matrix A.
     lda
             The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
             m.
     B
             Matrix B.
     ldb
             The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
             m.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
             m.
     Discussion
     This function multiplies A * B and multiplies the resulting matrix by alpha. It then multiplies matrix C by
     beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
28   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_cgemv
Multiplies a matrix by a vector (single-precision complex).
void cblas_cgemv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const int M,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   const void *X,
   const int incX,
   const void *beta,
   void *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to transpose matrix A.
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
alpha
        Scaling factor for the product of matrix A and vector X.
A
        Matrix A.
lda
        The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
        m.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor for vector Y.
Y
        Vector Y
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
This function multiplies A * X (after transposing A, if needed) and multiplies the resulting matrix by alpha.
It then multiplies vector Y by beta. It stores the sum of these two products in vector Y.
Functions                                                                                                 29
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
Y←αAX + Y
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_cgerc
     Multiplies vector X by the conjugate transform of vector Y, then adds matrix A (single-precision complex).
     void cblas_cgerc (
        const enum CBLAS_ORDER Order,
        const int M,
        const int N,
        const void *alpha,
        const void *X,
        const int incX,
        const void *Y,
        const int incY,
        void *A,
        const int lda
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     M
             Number of rows in matrix A.
     N
             Number of columns in matrix A.
     alpha
             Scaling factor for vector X.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A.
     Discussion
     Computes alpha*x*conjg(y') + A.
30   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cgeru
Multiplies vector X by the transform of vector Y, then adds matrix A (single-precision complex).
void cblas_cgeru (
   const enum CBLAS_ORDER Order,
   const int M,
   const int N,
   const void *alpha,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
alpha
        Scaling factor for vector X.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
Discussion
Computes alpha*x*y' + A.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                          31
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Declared In
     cblas.h
     cblas_chbmv
     Scales a Hermitian band matrix, then multiplies by a vector, then adds a vector (single-precision complex).
     void cblas_chbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const int K,
        const void *alpha,
        const void *A,
        const int lda,
        const void *X,
        const int incX,
        const void *beta,
        void *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             The order of matrix A.
     K
             Half-bandwidth of matrix A.
     alpha
             Scaling value to multiply matrix A by.
     A
             Matrix A.
     lda
             The leading dimension of array containing matrix A.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor that vector Y is multiplied by.
     Y
             Vector Y. Replaced by results on return.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
32   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Discussion
Computes alpha*A*x + beta*y and returns the results in vector Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_chemm
Multiplies two Hermitian matrices (single-precision complex), then adds a third (with scaling).
void cblas_chemm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_SIDE Side,
   const enum CBLAS_UPLO Uplo,
   const int M,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   const void *B,
   const int ldb,
   const void *beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Side
        Determines the order in which the matrices should be multiplied.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
M
        The number of rows in matrices A and C.
N
        The number of columns in matrices B and C.
alpha
        Scaling factor for the product of matrices A and B.
A
        Matrix A.
lda
        The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
        m.
B
        Matrix B.
Functions                                                                                                    33
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     ldb
             The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
             m.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
             m.
     Discussion
     This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
     by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
where
A = AH
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_chemv
     Scales and multiplies a Hermitian matrix by a vector, then adds a second (scaled) vector.
     void cblas_chemv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const void *alpha,
        const void *A,
        const int lda,
        const void *X,
        const int incX,
        const void *beta,
        void *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
34   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        The order of matrix A.
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of matrix A.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor for vector X.
Y
        Vector Y. Overwritten by results on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Calculates Y←αAX +  Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cher
Hermitian rank 1 update: adds the product of a scaling factor, vector X, and the conjugate transpose of X to
matrix A.
void cblas_cher (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const float alpha,
   const void *X,
   const int incX,
   void *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Functions                                                                                                35
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             The order of matrix A.
     alpha
             The scaling factor for vector X.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     A
             Matrix A.
     lda
             Leading dimension of matrix A.
     Discussion
     Computes A←αX*conjg(X') +  A.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_cher2
     Hermitian rank 2 update: adds the product of a scaling factor, vector X, and the conjugate transpose of vector
     Y to the product of the conjugate of the scaling factor, vector Y, and the conjugate transpose of vector X,
     and adds the result to matrix A.
     void cblas_cher2 (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const void *alpha,
        const void *X,
        const int incX,
        const void *Y,
        const int incY,
        void *A,
        const int lda
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             The order of matrix A.
36   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
alpha
        The scaling factor α.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        The leading dimension of matrix A.
Discussion
Computes A←αX*conjg(Y') + conjg(α)*Y*conjg(X') + A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cher2k
Performs a rank-2k update of a complex Hermitian matrix (single-precision complex).
void cblas_cher2k (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const void *alpha,
   const void *A,
   const int lda,
   const void *B,
   const int ldb,
   const float beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Functions                                                                                                    37
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Trans
             Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
             A ('C' or 'c').
     N
             Order of matrix C.
     K
             Specifies the number of columns in matrices A and B if trans='N'.
             Specifies the number of rows if trans='C' or trans='T').
     alpha
             Scaling factor for matrix A.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A.
     B
             Matrix B.
     ldb
             Leading dimension of array containing matrix B.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             Leading dimension of array containing matrix C.
     Discussion
     Computes alpha*A*BH + alpha*B*AH +beta*C
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_cherk
     Rank-k update—multiplies a Hermitian matrix by its transpose and adds a second matrix (single precision).
38   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_cherk (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const float alpha,
   const void *A,
   const int lda,
   const float beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Trans
        Specifies whether to use matrix A ('N' or 'n') or the conjugate transpose of A ('C' or 'c').
N
        Order of matrix C.
K
        Number of columns in matrix A (or number of rows if matrix A is transposed).
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Calculates alpha*A*AH + beta*C; if transposed, calculates alpha*AH*A + beta*C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_chpmv
Scales a packed hermitian matrix, multiplies it by a vector, and adds a scaled vector.
Functions                                                                                                39
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_chpmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const void *alpha,
        const void *Ap,
        const void *X,
        const int incX,
        const void *beta,
        void *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             Order of matrix A and the number of elements in vectors x and y.
     alpha
             Scaling factor that matrix A is multiplied by.
     Ap
             Matrix A.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor that vector y is multiplied by.
     Y
             Vector y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     Computes alpha*A*x + beta*y and stores the results in Y.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_chpr
     Scales and multiplies a vector times its conjugate transpose, then adds a matrix.
40   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_chpr (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const float alpha,
   const void *X,
   const int incX,
   void *A
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A and the number of elements in vector x.
alpha
        Scaling factor that vector x is multiplied by.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
A
        Matrix A. Overwritten by results on return.
Discussion
Calculates alpha*x*conjg(x') + A and stores the result in A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_chpr2
Multiplies a vector times the conjugate transpose of a second vector and vice-versa, sums the results, and
adds a matrix.
Functions                                                                                                    41
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_chpr2 (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const void *alpha,
        const void *X,
        const int incX,
        const void *Y,
        const int incY,
        void *Ap
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             Order of matrix A and the number of elements in vectors x and y.
     alpha
             Scaling factor that vector x is multiplied by.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Ap
             Matrix A in packed storage format. Overwritten by the results on return.
     Discussion
     Calcuates alpha*x*conjg(y') + conjg(alpha)*y*conjg(x') + A, and stores the result in A.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_crotg
     Constructs a complex Givens rotation.
42   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_crotg (
   void *a,
   void *b,
   void *c,
   void *s
);
Parameters
a
        Complex value a. Overwritten on output.
b
        Complex value a.
c
        Real value c. Unused on entry. Overwritten on return with the value cos( ).
s
        Complex value s. Unused on entry. Overwritten on return with the value sin( ).
Discussion
Given a vertical matrix containing a and b, computes the values of cos   and sin   that zero the lower
value (b). Returns the value of sin   in s, the value of cos   in c, and the upper value (r) in a.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cscal
Multiplies each element of a vector by a constant (single-precision complex).
void cblas_cscal (
   const int N,
   const void *alpha,
   void *X,
   const int incX
);
Parameters
N
        The number of elements in the vector.
alpha
        The constant scaling factor.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                            43
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Declared In
     cblas.h
     cblas_csrot
     Applies a Givens rotation matrix to a pair of complex vectors.
     void cblas_csrot (
        const int N,
        void *X,
        const int incX,
        void *Y,
        const int incY,
        const float c,
        const float s
     );
     Parameters
     N
             The number of elements in vectors X and Y.
     X
             Vector X. Modified on return.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector Y. Modified on return.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     c
             The value cos( ) in the Givens rotation matrix.
     s
             The value sin( ) in the Givens rotation matrix.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_csscal
     Multiplies each element of a vector by a constant (single-precision complex).
44   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_csscal (
   const int N,
   const float alpha,
   void *X,
   const int incX
);
Parameters
N
        The number of elements in vector x.
alpha
        The constant scaling factor.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_cswap
Exchanges the elements of two vectors (single-precision complex).
void cblas_cswap (
   const int N,
   void *X,
   const int incX,
   void *Y,
   const int incY
);
Parameters
N
        Number of elements in vectors
X
        Vector x. On return, contains elements copied from vector y.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector y. On return, contains elements copied from vector x.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                        45
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_csymm
     Multiplies a matrix by a symmetric matrix (single-precision complex).
     void cblas_csymm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_SIDE Side,
        const enum CBLAS_UPLO Uplo,
        const int M,
        const int N,
        const void *alpha,
        const void *A,
        const int lda,
        const void *B,
        const int ldb,
        const void *beta,
        void *C,
        const int ldc
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Side
             Determines the order in which the matrices should be multiplied.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     M
             Number of rows in matrices A and C.
     N
             Number of columns in matrices B and C.
     alpha
             Scaling factor for the product of matrices A and B.
     A
             Matrix A.
     lda
             The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
             m.
     B
             Matrix B.
     ldb
             The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
             m.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
             m.
46   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Discussion
This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
where
A = AT
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_csyr2k
Performs a rank-2k update of a symmetric matrix (single-precision complex).
void cblas_csyr2k (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const void *alpha,
   const void *A,
   const int lda,
   const void *B,
   const int ldb,
   const void *beta,
   void *C,
   const int ldc
);
Parameters
Order
         Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
         Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Trans
         Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
         A ('C' or 'c').
N
         Order of matrix C.
Functions                                                                                                 47
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     K
             Specifies the number of columns in matrices A and B if trans='N'.
             Specifies the number of rows if trans='C' or trans='T').
     alpha
             Scaling factor for matrix A.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A.
     B
             Matrix B.
     ldb
             Leading dimension of array containing matrix B.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             Leading dimension of array containing matrix C.
     Discussion
     Computes alpha*A*BT + alpha*B*AT +beta*C
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_csyrk
     Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (single-precision
     complex).
48   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_csyrk (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const void *alpha,
   const void *A,
   const int lda,
   const void *beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Trans
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T' or 't').
N
        Order of matrix C.
K
        Number of columns in matrix A (or number of rows if matrix A is transposed).
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Calculates alpha*A*AT + beta*C; if transposed, calculates alpha*AT*A + beta*C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ctbmv
Scales a triangular band matrix, then multiplies by a vector (single-precision compex).
Functions                                                                                                49
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_ctbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int N,
        const int K,
        const void *A,
        const int lda,
        void *X,
        const int incX
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     N
             The order of matrix A.
     K
             Half-bandwidth of matrix A.
     A
             Matrix A.
     lda
             The leading dimension of array containing matrix A.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Discussion
     Computes A*x and stores the results in x.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_ctbsv
     Solves a triangular banded system of equations.
50   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_ctbsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const int K,
   const void *A,
   const int lda,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
K
        Number of superdiagonals or subdiagonals of matrix A (depending on the value of Uplo).
A
        Matrix A.
lda
        The leading dimension of matrix A.
X
        Contains vector B on entry. Overwritten with vector X on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ctpmv
Multiplies a triangular matrix by a vector, then adds a vector (single-precision complex).
Functions                                                                                                    51
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_ctpmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int N,
        const void *Ap,
        void *X,
        const int incX
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
             A ('C' or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     N
             Order of matrix A and the number of elements in vectors x and y.
     Ap
             Matrix A.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Discussion
     Computes A*x, AT*x, or conjg(AT)*x and stores the results in X.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_ctpsv
     Solves a packed triangular system of equations.
52   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_ctpsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const void *Ap,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
Ap
        Matrix A (in packed storage format).
X
        Contains vector B on entry. Overwritten with vector X on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ctrmm
Scales a triangular matrix and multiplies it by a matrix.
Functions                                                                                                    53
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_ctrmm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_SIDE Side,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int M,
        const int N,
        const void *alpha,
        const void *A,
        const int lda,
        void *B,
        const int ldb
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Side
             Determines the order in which the matrices should be multiplied.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     M
             Number of rows in matrix B.
     N
             Number of columns in matrix B.
     alpha
             Scaling factor for matrix A.
     A
             Matrix A.
     lda
             Leading dimension of matrix A.
     B
             Matrix B. Overwritten by results on return.
     ldb
             Leading dimension of matrix B.
     Discussion
     If Side is 'L', multiplies alpha*A*B or alpha*A'*B, depending on TransA.
     Availability
     Available in iPhone OS 4.0 and later.
54   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Declared In
cblas.h
cblas_ctrmv
Multiplies a triangular matrix by a vector.
void cblas_ctrmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const void *A,
   const int lda,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
A
        Matrix A.
lda
        Leading dimension of matrix A.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Multiplies A*X or A'*X, depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                                                    55
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_ctrsm
     Solves a triangular system of equations with multiple values for the right side.
     void cblas_ctrsm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_SIDE Side,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int M,
        const int N,
        const void *alpha,
        const void *A,
        const int lda,
        void *B,
        const int ldb
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Side
             Determines the order in which the matrix and vector should be multiplied.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     M
             The number of rows in matrix B.
     N
             The number of columns in matrix B.
     alpha
             Scaling factor for matrix A.
     A
             Triangular matrix A.
     lda
             The leading dimension of matrix B.
     B
             On entry, matrix B. Overwritten on return by matrix X.
     ldb
             The leading dimension of matrix B.
     Discussion
     If Side is 'L', solves A*X=alpha*B or A'*X=alpha*B, depending on TransA.
56   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ctrsv
Solves a triangular system of equations with a single value for the right side.
void cblas_ctrsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const void *A,
   const int lda,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        The order of matrix A.
A
        Triangular matrix A.
lda
        The leading dimension of matrix B.
X
        The vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves A*x=b or A'*x=b where x and b are elements in X and B.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                    57
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Declared In
     cblas.h
     cblas_dasum
     Computes the sum of the absolute values of elements in a vector (double-precision).
     double cblas_dasum (
        const int N,
        const double *X,
        const int incX
     );
     Parameters
     N
             The number of elements in vector x.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Return Value
     Returns the sum.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_daxpy
     Computes a constant times a vector plus a vector (double-precision).
     void cblas_daxpy (
        const int N,
        const double alpha,
        const double *X,
        const int incX,
        double *Y,
        const int incY
     );
     Parameters
     N
             Number of elements in the vectors.
     alpha
             Scaling factor for the values in X.
     X
             Input vector X.
58   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Input vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
On return, the contents of vector Y are replaced with the result. The value computed is (alpha * X[i])
+ Y[i].
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dcopy
Copies a vector to another vector (double-precision).
void cblas_dcopy (
   const int N,
   const double *X,
   const int incX,
   double *Y,
   const int incY
);
Parameters
N
        Number of elements in the vectors.
X
        Source vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Destination vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ddot
Computes the dot product of two vectors (double-precision).
Functions                                                                                           59
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     double cblas_ddot (
        const int N,
        const double *X,
        const int incX,
        const double *Y,
        const int incY
     );
     Parameters
     N
             The number of elements in the vectors.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dgbmv
     Scales a general band matrix, then multiplies by a vector, then adds a vector (double precision).
     void cblas_dgbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_TRANSPOSE TransA,
        const int M,
        const int N,
        const int KL,
        const int KU,
        const double alpha,
        const double *A,
        const int lda,
        const double *X,
        const int incX,
        const double beta,
        double *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
60   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
KL
        Number of subdiagonals in matrix A.
KU
        Number of superdiagonals in matrix A.
alpha
        Scaling factor to multiply matrix A by.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A. (Must be at least KL+KU+1.)
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor to multiply vector Y by.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y or alpha*A'*x + beta*y depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dgemm
Multiplies two matrices (double-precision).
Functions                                                                              61
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_dgemm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_TRANSPOSE TransB,
        const int M,
        const int N,
        const int K,
        const double alpha,
        const double *A,
        const int lda,
        const double *B,
        const int ldb,
        const double beta,
        double *C,
        const int ldc
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     TransA
             Specifies whether to transpose matrix A.
     TransB
             Specifies whether to transpose matrix B.
     M
             Number of rows in matrices A and C.
     N
             Number of columns in matrices B and C.
     K
             Number of columns in matrix A; number of rows in matrix B.
     alpha
             Scaling factor for the product of matrices A and B.
     A
             Matrix A.
     lda
             The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
             m.
     B
             Matrix B.
     ldb
             The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
             m.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
             m.
62   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Discussion
This function multiplies A * B and multiplies the resulting matrix by alpha. It then multiplies matrix C by
beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dgemv
Multiplies a matrix by a vector (double precision).
void cblas_dgemv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const int M,
   const int N,
   const double alpha,
   const double *A,
   const int lda,
   const double *X,
   const int incX,
   const double beta,
   double *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to transpose matrix A.
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
alpha
        Scaling factor for the product of matrix A and vector X.
A
        Matrix A.
Functions                                                                                                63
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     lda
             The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
             m.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor for vector Y.
     Y
             Vector Y
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     This function multiplies A * X (after transposing A, if needed) and multiplies the resulting matrix by alpha.
     It then multiplies vector Y by beta. It stores the sum of these two products in vector Y.
Y←αAX + Y
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dger
     Multiplies vector X by the transform of vector Y, then adds matrix A (double precison).
     void cblas_dger (
        const enum CBLAS_ORDER Order,
        const int M,
        const int N,
        const double alpha,
        const double *X,
        const int incX,
        const double *Y,
        const int incY,
        double *A,
        const int lda
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     M
             Number of rows in matrix A.
64   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
N
        Number of columns in matrix A.
alpha
        Scaling factor for vector X.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
Discussion
Computes alpha*x*y' + A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dnrm2
Computes the L2 norm (Euclidian length) of a vector (double precision).
double cblas_dnrm2 (
   const int N,
   const double *X,
   const int incX
);
Parameters
N
        Length of vector X.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                        65
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_drot
     Applies a Givens rotation matrix to a pair of vectors.
     void cblas_drot (
        const int N,
        double *X,
        const int incX,
        double *Y,
        const int incY,
        const double c,
        const double s
     );
     Parameters
     N
             The number of elements in vectors X and Y.
     X
             Vector X. Modified on return.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector Y. Modified on return.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     c
             The value cos( ) in the Givens rotation matrix.
     s
             The value sin( ) in the Givens rotation matrix.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_drotg
     Constructs a Givens rotation matrix.
     void cblas_drotg (
        double *a,
        double *b,
        double *c,
        double *s
     );
     Parameters
     a
             Double-precision value a. Overwritten on return with result r.
     b
             Double-precision value b. Overwritten on return with result z (zero).
66   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
c
        Unused on entry. Overwritten on return with the value cos( ).
s
        Unused on entry. Overwritten on return with the value sin( ).
Discussion
Given a vertical matrix containing a and b, computes the values of cos   and sin   that zero the lower
value (b). Returns the value of sin   in s, the value of cos   in c, and the upper value (r) in a.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_drotm
Applies a modified Givens transformation (single precision).
void cblas_drotm (
   const int N,
   double *X,
   const int incX,
   double *Y,
   const int incY,
   const double *P
);
Parameters
N
        Number of elements in vectors.
X
        Vector X. Modified on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y. Modified on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Functions                                                                                            67
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     P
             A 5-element vector:
             P[0]
                     Flag value that defines the form of matrix H.
                     -2.0: matrix H contains the identity matrix.
                     -1.0: matrix H is identical to matrix SH (defined by the remaining values in the vector).
                     0.0: H[1,2] and H[2,1] are obtained from matrix SH. The remaining values are both 1.0.
                     1.0: H[1,1] and H[2,2] are obtained from matrix SH. H[1,2] is 1.0. H[2,1] is -1.0.
             P[1]
                     Contains SH[1,1].
             P[2]
                     Contains SH[2,1].
             P[3]
                     Contains SH[1,2].
             P[4]
                     Contains SH[2,2].
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_drotmg
     Generates a modified Givens rotation matrix.
     void cblas_drotmg (
        double *d1,
        double *d2,
        double *b1,
        const double b2,
        double *P
     );
     Parameters
     d1
             Scaling factor D1.
     d2
             Scaling factor D2.
     b1
             Scaling factor B1.
     b2
             Scaling factor B2.
68   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
P
        A 5-element vector:
        P[0]
                Flag value that defines the form of matrix H.
                -2.0: matrix H contains the identity matrix.
                -1.0: matrix H is identical to matrix SH (defined by the remaining values in the vector).
                0.0: H[1,2] and H[2,1] are obtained from matrix SH. The remaining values are both 1.0.
                1.0: H[1,1] and H[2,2] are obtained from matrix SH. H[1,2] is 1.0. H[2,1] is -1.0.
        P[1]
                Contains SH[1,1].
        P[2]
                Contains SH[2,1].
        P[3]
                Contains SH[1,2].
        P[4]
                Contains SH[2,2].
Discussion
The resulting matrix zeroes the second component of the vector (sqrt(D1)*B1, sqrt(SD2)*B2)T.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dsbmv
Scales a symmetric band matrix, then multiplies by a vector, then adds a vector (double precision).
void cblas_dsbmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const int K,
   const double alpha,
   const double *A,
   const int lda,
   const double *X,
   const int incX,
   const double beta,
   double *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Functions                                                                                                   69
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             The order of matrix A.
     K
             Half-bandwidth of matrix A.
     alpha
             Scaling value to multiply matrix A by.
     A
             Matrix A.
     lda
             The leading dimension of array containing matrix A.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor that vector Y is multiplied by.
     Y
             Vector Y. Replaced by results on return.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     Computes alpha*A*x + beta*y and returns the results in vector Y.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dscal
     Multiplies each element of a vector by a constant (double-precision).
     void cblas_dscal (
        const int N,
        const double alpha,
        double *X,
        const int incX
     );
     Parameters
     N
             The number of elements in vector x.
     alpha
             The constant scaling factor to multiply by.
70   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dsdot
Computes the double-precision dot product of a pair of single-precision vectors.
double cblas_dsdot (
   const int N,
   const float *X,
   const int incX,
   const float *Y,
   const int incY
);
Parameters
N
        The number of elements in the vectors.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dspmv
Scales a packed symmetric matrix, then multiplies by a vector, then scales and adds another vector (double
precision).
Functions                                                                                              71
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_dspmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const double alpha,
        const double *Ap,
        const double *X,
        const int incX,
        const double beta,
        double *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             Order of matrix A and the number of elements in vectors x and y.
     alpha
             Scaling factor that matrix A is multiplied by.
     Ap
             Matrix A (in packed storage format).
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     beta
             Scaling factor that vector y is multiplied by.
     Y
             Vector y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Discussion
     Computes alpha*A*x + beta*y and stores the results in Y.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dspr
     Rank one update: adds a packed symmetric matrix to the product of a scaling factor, a vector, and its transpose
     (double precision).
72   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_dspr (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const double alpha,
   const double *X,
   const int incX,
   double *Ap
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A; number of elements in vector x.
alpha
        Scaling factor to multiply x by.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Ap
        Matrix A (in packed storage format).
Discussion
Calculates A + alpha*x*xT and stores the result in A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dspr2
Rank two update of a packed symmetric matrix using two vectors (single precision).
Functions                                                                                                73
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_dspr2 (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const double alpha,
        const double *X,
        const int incX,
        const double *Y,
        const int incY,
        double *A
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             Order of matrix A; number of elements in vector x.
     alpha
             Scaling factor to multiply x by.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Vector y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     A
             Matrix A (in packed storage format).
     Discussion
     Calculates A + alpha*x*yT + alpha*y*xT.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dswap
     Exchanges the elements of two vectors (double precision).
74   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_dswap (
   const int N,
   double *X,
   const int incX,
   double *Y,
   const int incY
);
Parameters
N
        Number of elements in vectors
X
        Vector x. On return, contains elements copied from vector y.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector y. On return, contains elements copied from vector x.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dsymm
Multiplies a matrix by a symmetric matrix (double-precision).
void cblas_dsymm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_SIDE Side,
   const enum CBLAS_UPLO Uplo,
   const int M,
   const int N,
   const double alpha,
   const double *A,
   const int lda,
   const double *B,
   const int ldb,
   const double beta,
   double *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Side
        Determines the order in which the matrices should be multiplied.
Functions                                                                        75
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     M
              Number of rows in matrices A and C.
     N
              Number of columns in matrices B and C.
     alpha
              Scaling factor for the product of matrices A and B.
     A
              Matrix A.
     lda
              The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
              m.
     B
              Matrix B.
     ldb
              The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
              m.
     beta
              Scaling factor for matrix C.
     C
              Matrix C.
     ldc
              The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
              m.
     Discussion
     This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
     by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
where
A = AT
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
76   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_dsymv
Scales a symmetric matrix, multiplies by a vector, then scales and adds another vector (single precision).
void cblas_dsymv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const double alpha,
   const double *A,
   const int lda,
   const double *X,
   const int incX,
   const double beta,
   double *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A; length of vectors.
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor for vector y.
Y
        Vector y. Contains results on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y and stores the results in Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                                                    77
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_dsyr
     Rank one update: adds a symmetric matrix to the product of a scaling factor, a vector, and its transpose
     (double precision).
     void cblas_dsyr (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const int N,
        const double alpha,
        const double *X,
        const int incX,
        double *A,
        const int lda
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     N
             Order of matrix A; number of elements in vector x.
     alpha
             Scaling factor to multiply x by.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A.
     Discussion
     Calculates A + alpha*x*xT and stores the result in A.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dsyr2
     Rank two update of a symmetric matrix using two vectors (single precision).
78   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_dsyr2 (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const double alpha,
   const double *X,
   const int incX,
   const double *Y,
   const int incY,
   double *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A; number of elements in vector x.
alpha
        Scaling factor to multiply x by.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
Discussion
Calculates A + alpha*x*yT + alpha*y*xT.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dsyr2k
Performs a rank-2k update of a symmetric matrix (double precision).
Functions                                                                                                79
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_dsyr2k (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE Trans,
        const int N,
        const int K,
        const double alpha,
        const double *A,
        const int lda,
        const double *B,
        const int ldb,
        const double beta,
        double *C,
        const int ldc
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     Trans
             Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
             A ('C' or 'c').
     N
             Order of matrix C.
     K
             Specifies the number of columns in matrices A and B if trans='N'.
             Specifies the number of rows if trans='C' or trans='T').
     alpha
             Scaling factor for matrix A.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A.
     B
             Matrix B.
     ldb
             Leading dimension of array containing matrix B.
     beta
             Scaling factor for matrix C.
     C
             Matrix C.
     ldc
             Leading dimension of array containing matrix C.
     Discussion
     Computes alpha*A*BT + alpha*B*AT +beta*C
80   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dsyrk
Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (double precision).
void cblas_dsyrk (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const double alpha,
   const double *A,
   const int lda,
   const double beta,
   double *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Trans
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
N
        Order of matrix C.
K
        Number of columns in matrix A (or number of rows if matrix A is transposed).
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Calculates alpha*A*AT + beta*C; if transposed, calculates alpha*AT*A + beta*C.
Functions                                                                                                    81
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dtbmv
     Scales a triangular band matrix, then multiplies by a vector (double precision).
     void cblas_dtbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int N,
        const int K,
        const double *A,
        const int lda,
        double *X,
        const int incX
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     N
             The order of matrix A.
     K
             Half-bandwidth of matrix A.
     A
             Matrix A.
     lda
             The leading dimension of array containing matrix A.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Discussion
     Computes A*x and stores the results in x.
82   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dtbsv
Solves a triangular banded system of equations.
void cblas_dtbsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const int K,
   const double *A,
   const int lda,
   double *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
K
        Number of superdiagonals or subdiagonals of matrix A (depending on the value of Uplo).
A
        Matrix A.
lda
        The leading dimension of matrix A.
X
        Contains vector B on entry. Overwritten with vector X on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
Functions                                                                                                    83
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dtpmv
     Multiplies a triangular matrix by a vector, then adds a vector (double precision).
     void cblas_dtpmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int N,
        const double *Ap,
        double *X,
        const int incX
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
             A ('C' or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     N
             Order of matrix A and the number of elements in vectors x and y.
     Ap
             Matrix A.
     X
             Vector x.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Discussion
     Computes A*x, AT*x, or conjg(AT)*x and stores the results in X.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
84   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_dtpsv
Solves a packed triangular system of equations.
void cblas_dtpsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const double *Ap,
   double *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
Ap
        Matrix A (in packed storage format).
X
        Contains vector B on entry. Overwritten with vector X on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dtrmm
Scales a triangular matrix and multiplies it by a matrix.
Functions                                                                                                    85
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     void cblas_dtrmm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_SIDE Side,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int M,
        const int N,
        const double alpha,
        const double *A,
        const int lda,
        double *B,
        const int ldb
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Side
             Determines the order in which the matrices should be multiplied.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     M
             Number of rows in matrix B.
     N
             Number of columns in matrix B.
     alpha
             Scaling factor for matrix A.
     A
             Matrix A.
     lda
             Leading dimension of matrix A.
     B
             Matrix B. Overwritten by results on return.
     ldb
             Leading dimension of matrix B.
     Discussion
     If Side is 'L', multiplies alpha*A*B or alpha*A'*B, depending on TransA.
     Availability
     Available in iPhone OS 4.0 and later.
86   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Declared In
cblas.h
cblas_dtrmv
Multiplies a triangular matrix by a vector.
void cblas_dtrmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const double *A,
   const int lda,
   double *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
A
        Triangular matrix A.
lda
        Leading dimension of matrix A.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Multiplies A*X or A'*X, depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                                                   87
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_dtrsm
     Solves a triangular system of equations with multiple values for the right side.
     void cblas_dtrsm (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_SIDE Side,
        const enum CBLAS_UPLO Uplo,
        const enum CBLAS_TRANSPOSE TransA,
        const enum CBLAS_DIAG Diag,
        const int M,
        const int N,
        const double alpha,
        const double *A,
        const int lda,
        double *B,
        const int ldb
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     Side
             Determines the order in which the matrix and vector should be multiplied.
     Uplo
             Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     Diag
             Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
             unit triangular).
     M
             The number of rows in matrix B.
     N
             The number of columns in matrix B.
     alpha
             Scaling factor for matrix A.
     A
             Triangular matrix A.
     lda
             The leading dimension of matrix B.
     B
             On entry, matrix B. Overwritten on return by matrix X.
     ldb
             The leading dimension of matrix B.
     Discussion
     If Side is 'L', solves A*X=alpha*B or A'*X=alpha*B, depending on TransA.
88   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_dtrsv
Solves a triangular system of equations with a single value for the right side.
void cblas_dtrsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const double *A,
   const int lda,
   double *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        The order of matrix A.
A
        Triangular matrix A.
lda
        The leading dimension of matrix B.
X
        The vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves A*x=b or A'*x=b where x and b are elements in X and B.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                   89
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     Declared In
     cblas.h
     cblas_dzasum
     Computes the sum of the absolute values of real and imaginary parts of elements in a vector (single-precision
     complex).
     double cblas_dzasum (
        const int N,
        const void *X,
        const int incX
     );
     Parameters
     N
             Number of elements in the vector.
     X
             Source vector
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Return Value
     The return value is a single floating point value that contains the sum of the absolute values of both the real
     and imaginary parts of the vector.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_dznrm2
     Computes the unitary norm of a vector (double-precision complex).
     double cblas_dznrm2 (
        const int N,
        const void *X,
        const int incX
     );
     Parameters
     N
             Length of vector X.
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
90   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Declared In
cblas.h
cblas_errprn
Prints an error message.
int cblas_errprn (
   int ierr,
   int info,
   char *form,
   ...
);
Parameters
ierr
        Error code number.
info
        Exit status returned by the function call. Negative values generally indicate the index of the offending
        parameter. Positive numbers generally indicate that an algorithm did not converge. Zero indicates
        success.
form
        A printf-style format string.
...
        Arguments for the format string.
Return Value
Returns the minimum of ierr or info.
Discussion
This is commonly called by cblas_xerbla (page 126).
Availability
Available in iPhone OS 4.0 and later.
See Also
cblas_xerbla (page 126)
SetBLASParamErrorProc (page 161)
Declared In
cblas.h
cblas_icamax
Returns the index of the element with the largest absolute value in a vector (single-precision complex).
Functions                                                                                                    91
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     int cblas_icamax (
        const int N,
        const void *X,
        const int incX
     );
     Parameters
     N
             Number of elements in the vector.
     X
             The vector.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Return Value
     Returns an index in the range 0..N-1 corresponding with the element with the largest absolute value.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_idamax
     Returns the index of the element with the largest absolute value in a vector (double-precision).
     int cblas_idamax (
        const int N,
        const double *X,
        const int incX
     );
     Parameters
     N
             Number of elements in the vector.
     X
             The vector.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Return Value
     Returns an index in the range 0..N-1 corresponding with the element with the largest absolute value.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
92   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_isamax
Returns the index of the element with the largest absolute value in a vector (single-precision).
int cblas_isamax (
   const int N,
   const float *X,
   const int incX
);
Parameters
N
        Number of elements in the vector.
X
        The vector.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Return Value
Returns an index in the range 0..N-1 corresponding with the element with the largest absolute value.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_izamax
Returns the index of the element with the largest absolute value in a vector (double-precision complex).
int cblas_izamax (
   const int N,
   const void *X,
   const int incX
);
Parameters
N
        Number of elements in the vector.
X
        The vector.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Return Value
Returns an index in the range 0..N-1 corresponding with the element with the largest absolute value.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                                                  93
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     cblas_sasum
     Computes the sum of the absolute values of elements in a vector (single-precision).
     float cblas_sasum (
        const int N,
        const float *X,
        const int incX
     );
     Parameters
     N
             Number of elements in the vector.
     X
             Source vector
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_saxpy
     Computes a constant times a vector plus a vector (single-precision).
     void cblas_saxpy (
        const int N,
        const float alpha,
        const float *X,
        const int incX,
        float *Y,
        const int incY
     );
     Parameters
     N
             Number of elements in the vectors.
     alpha
             Scaling factor for the values in X.
     X
             Input vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Input vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
94   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Discussion
On return, the contents of vector Y are replaced with the result. The value computed is (alpha * X[i])
+ Y[i].
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_scasum
Computes the sum of the absolute values of real and imaginary parts of elements in a vector (single-precision
complex).
float cblas_scasum (
   const int N,
   const void *X,
   const int incX
);
Parameters
N
        Number of elements in the vector.
X
        Source vector
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Return Value
The return value is a single floating point value that contains the sum of the absolute values of both the real
and imaginary parts of the vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_scnrm2
Computes the unitary norm of a vector (single-precision complex).
float cblas_scnrm2 (
   const int N,
   const void *X,
   const int incX
);
Parameters
N
        Length of vector X.
Functions                                                                                                   95
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     X
             Vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_scopy
     Copies a vector to another vector (single-precision).
     void cblas_scopy (
        const int N,
        const float *X,
        const int incX,
        float *Y,
        const int incY
     );
     Parameters
     N
             Number of elements in the vectors.
     X
             Source vector X.
     incX
             Stride within X. For example, if incX is 7, every 7th element is used.
     Y
             Destination vector Y.
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_sdot
     Computes the dot product of two vectors (single-precision).
96   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
float cblas_sdot (
   const int N,
   const float *X,
   const int incX,
   const float *Y,
   const int incY
);
Parameters
N
        The number of elements in the vectors.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_sdsdot
Computes the dot product of two single-precision vectors plus an initial single-precision value.
float cblas_sdsdot (
   const int N,
   const float alpha,
   const float *X,
   const int incX,
   const float *Y,
   const int incY
);
Parameters
N
        The number of elements in the vectors.
alpha
        The initial value to add to the dot product.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
Functions                                                                                          97
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
     CHAPTER 1
     BLAS Reference
     incY
             Stride within Y. For example, if incY is 7, every 7th element is used.
     Availability
     Available in iPhone OS 4.0 and later.
     Declared In
     cblas.h
     cblas_sgbmv
     Scales a general band matrix, then multiplies by a vector, then adds a vector (single precision).
     void cblas_sgbmv (
        const enum CBLAS_ORDER Order,
        const enum CBLAS_TRANSPOSE TransA,
        const int M,
        const int N,
        const int KL,
        const int KU,
        const float alpha,
        const float *A,
        const int lda,
        const float *X,
        const int incX,
        const float beta,
        float *Y,
        const int incY
     );
     Parameters
     Order
             Specifies row-major (C) or column-major (Fortran) data ordering.
     TransA
             Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
     M
             Number of rows in matrix A.
     N
             Number of columns in matrix A.
     KL
             Number of subdiagonals in matrix A.
     KU
             Number of superdiagonals in matrix A.
     alpha
             Scaling factor to multiply matrix A by.
     A
             Matrix A.
     lda
             Leading dimension of array containing matrix A. (Must be at least KL+KU+1.)
98   Functions
     2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor to multiply vector Y by.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y or alpha*A'*x + beta*y depending on the value of TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_sgemm
Multiplies two matrices (single-precision).
void cblas_sgemm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_TRANSPOSE TransB,
   const int M,
   const int N,
   const int K,
   const float alpha,
   const float *A,
   const int lda,
   const float *B,
   const int ldb,
   const float beta,
   float *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to transpose matrix A.
TransB
        Specifies whether to transpose matrix B.
M
        Number of rows in matrices A and C.
Functions                                                                              99
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      N
              Number of columns in matrices B and C.
      K
              Number of columns in matrix A; number of rows in matrix B.
      alpha
              Scaling factor for the product of matrices A and B.
      A
              Matrix A.
      lda
              The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
              m.
      B
              Matrix B.
      ldb
              The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
              m.
      beta
              Scaling factor for matrix C.
      C
              Matrix C.
      ldc
              The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
              m.
      Discussion
      This function multiplies A * B and multiplies the resulting matrix by alpha. It then multiplies matrix C by
      beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_sgemv
      Multiplies a matrix by a vector (single precision).
100   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_sgemv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const int M,
   const int N,
   const float alpha,
   const float *A,
   const int lda,
   const float *X,
   const int incX,
   const float beta,
   float *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to transpose matrix A.
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
alpha
        Scaling factor for the product of matrix A and vector X.
A
        Matrix A.
lda
        The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
        m.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor for vector Y.
Y
        Vector Y
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
This function multiplies A * X (after transposing A, if needed) and multiplies the resulting matrix by alpha.
It then multiplies vector Y by beta. It stores the sum of these two products in vector Y.
Y←αAX + Y
Functions                                                                                                101
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_sger
      Multiplies vector X by the transform of vector Y, then adds matrix A (single precison).
      void cblas_sger (
         const enum CBLAS_ORDER Order,
         const int M,
         const int N,
         const float alpha,
         const float *X,
         const int incX,
         const float *Y,
         const int incY,
         float *A,
         const int lda
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      M
              Number of rows in matrix A.
      N
              Number of columns in matrix A.
      alpha
              Scaling factor for vector X.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      A
              Matrix A.
      lda
              Leading dimension of array containing matrix A.
      Discussion
      Computes alpha*x*y' + A.
      Availability
      Available in iPhone OS 4.0 and later.
102   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Declared In
cblas.h
cblas_snrm2
Computes the L2 norm (Euclidian length) of a vector (single precision).
float cblas_snrm2 (
   const int N,
   const float *X,
   const int incX
);
Parameters
N
        Length of vector X.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_srot
Applies a Givens rotation matrix to a pair of vectors.
void cblas_srot (
   const int N,
   float *X,
   const int incX,
   float *Y,
   const int incY,
   const float c,
   const float s
);
Parameters
N
        The number of elements in vectors X and Y.
X
        Vector X. Modified on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y. Modified on return.
Functions                                                                        103
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      c
              The value cos( ) in the Givens rotation matrix.
      s
              The value sin( ) in the Givens rotation matrix.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_srotg
      Constructs a Givens rotation matrix.
      void cblas_srotg (
         float *a,
         float *b,
         float *c,
         float *s
      );
      Parameters
      a
              Single-precision value a. Overwritten on return with result r.
      b
              Single-precision value b. Overwritten on return with result z (zero).
      c
              Unused on entry. Overwritten on return with the value cos( ).
      s
              Unused on entry. Overwritten on return with the value sin( ).
      Discussion
      Given a vertical matrix containing a and b, computes the values of cos   and sin   that zero the lower
      value (b). Returns the value of sin   in s, the value of cos   in c, and the upper value (r) in a.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_srotm
      Applies a modified Givens transformation (single precision).
104   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_srotm (
   const int N,
   float *X,
   const int incX,
   float *Y,
   const int incY,
   const float *P
);
Parameters
N
        Number of elements in vectors.
X
        Vector X. Modified on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y. Modified on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
P
        A 5-element vector:
        P[0]
                Flag value that defines the form of matrix H.
                -2.0: matrix H contains the identity matrix.
                -1.0: matrix H is identical to matrix SH (defined by the remaining values in the vector).
                0.0: H[1,2] and H[2,1] are obtained from matrix SH. The remaining values are both 1.0.
                1.0: H[1,1] and H[2,2] are obtained from matrix SH. H[1,2] is 1.0. H[2,1] is -1.0.
        P[1]
                Contains SH[1,1].
        P[2]
                Contains SH[2,1].
        P[3]
                Contains SH[1,2].
        P[4]
                Contains SH[2,2].
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
Functions                                                                                                   105
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      cblas_srotmg
      Generates a modified Givens rotation matrix.
      void cblas_srotmg (
         float *d1,
         float *d2,
         float *b1,
         const float b2,
         float *P
      );
      Parameters
      d1
              Scaling factor D1.
      d2
              Scaling factor D2.
      b1
              Scaling factor B1.
      b2
              Scaling factor B2.
      P
              A 5-element vector:
              P[0]
                      Flag value that defines the form of matrix H.
                      -2.0: matrix H contains the identity matrix.
                      -1.0: matrix H is identical to matrix SH (defined by the remaining values in the vector).
                      0.0: H[1,2] and H[2,1] are obtained from matrix SH. The remaining values are both 1.0.
                      1.0: H[1,1] and H[2,2] are obtained from matrix SH. H[1,2] is 1.0. H[2,1] is -1.0.
              P[1]
                      Contains SH[1,1].
              P[2]
                      Contains SH[2,1].
              P[3]
                      Contains SH[1,2].
              P[4]
                      Contains SH[2,2].
      Discussion
      The resulting matrix zeroes the second component of the vector (sqrt(D1)*B1, sqrt(SD2)*B2)T.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
106   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_ssbmv
Scales a symmetric band matrix, then multiplies by a vector, then adds a vector (single-precision).
void cblas_ssbmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const int K,
   const float alpha,
   const float *A,
   const int lda,
   const float *X,
   const int incX,
   const float beta,
   float *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        The order of matrix A.
K
        Half-bandwidth of matrix A.
alpha
        Scaling value to multiply matrix A by.
A
        Matrix A.
lda
        The leading dimension of array containing matrix A.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor that vector Y is multiplied by.
Y
        Vector Y. Replaced by results on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y and returns the results in vector Y.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                               107
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Declared In
      cblas.h
      cblas_sscal
      Multiplies each element of a vector by a constant (single-precision).
      void cblas_sscal (
         const int N,
         const float alpha,
         float *X,
         const int incX
      );
      Parameters
      N
              Number of elements to scale.
      alpha
              The constant to multiply by.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is multiplied by alpha.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_sspmv
      Scales a packed symmetric matrix, then multiplies by a vector, then scales and adds another vector (single
      precision).
      void cblas_sspmv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const float alpha,
         const float *Ap,
         const float *X,
         const int incX,
         const float beta,
         float *Y,
         const int incY
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
108   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A and the number of elements in vectors x and y.
alpha
        Scaling factor that matrix A is multiplied by.
Ap
        Matrix A (in packed storage format).
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor that vector y is multiplied by.
Y
        Vector y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y and stores the results in Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_sspr
Rank one update: adds a packed symmetric matrix to the product of a scaling factor, a vector, and its transpose
(single precision).
void cblas_sspr (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const float alpha,
   const float *X,
   const int incX,
   float *Ap
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A; number of elements in vector x.
Functions                                                                                                 109
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      alpha
              Scaling factor to multiply x by.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Ap
              Matrix A (in packed storage format).
      Discussion
      Calculates A + alpha*x*xT and stores the result in A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_sspr2
      Rank two update of a packed symmetric matrix using two vectors (single precision).
      void cblas_sspr2 (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const float alpha,
         const float *X,
         const int incX,
         const float *Y,
         const int incY,
         float *A
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      N
              Order of matrix A; number of elements in vector x.
      alpha
              Scaling factor to multiply x by.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector y.
110   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A (in packed storage format).
Discussion
Calculates A + alpha*x*yT + alpha*y*xT.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_sswap
Exchanges the elements of two vectors (single precision).
void cblas_sswap (
   const int N,
   float *X,
   const int incX,
   float *Y,
   const int incY
);
Parameters
N
        Number of elements in vectors
X
        Vector x. On return, contains elements copied from vector y.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector y. On return, contains elements copied from vector x.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ssymm
Multiplies a matrix by a symmetric matrix (single-precision).
Functions                                                                        111
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_ssymm (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_SIDE Side,
         const enum CBLAS_UPLO Uplo,
         const int M,
         const int N,
         const float alpha,
         const float *A,
         const int lda,
         const float *B,
         const int ldb,
         const float beta,
         float *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Side
              Determines the order in which the matrices should be multiplied.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      M
              Number of rows in matrices A and C.
      N
              Number of columns in matrices B and C.
      alpha
              Scaling factor for the product of matrices A and B.
      A
              Matrix A.
      lda
              The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
              m.
      B
              Matrix B.
      ldb
              The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
              m.
      beta
              Scaling factor for matrix C.
      C
              Matrix C.
      ldc
              The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
              m.
      Discussion
      This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
      by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
112   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
C←αAB + C
or
C←αBA + C
where
A = AT
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ssymv
Scales a symmetric matrix, multiplies by a vector, then scales and adds another vector (single precision).
void cblas_ssymv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const float alpha,
   const float *A,
   const int lda,
   const float *X,
   const int incX,
   const float beta,
   float *Y,
   const int incY
);
Parameters
Order
         Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
         Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
         Order of matrix A; length of vectors.
alpha
         Scaling factor for matrix A.
A
         Matrix A.
lda
         Leading dimension of array containing matrix A.
X
         Vector x.
Functions                                                                                                 113
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      beta
              Scaling factor for vector y.
      Y
              Vector y. Contains results on return.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      Discussion
      Computes alpha*A*x + beta*y and stores the results in Y.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ssyr
      Rank one update: adds a symmetric matrix to the product of a scaling factor, a vector, and its transpose
      (single precision).
      void cblas_ssyr (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const float alpha,
         const float *X,
         const int incX,
         float *A,
         const int lda
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      N
              Order of matrix A; number of elements in vector x.
      alpha
              Scaling factor to multiply x by.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      A
              Matrix A.
114   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
lda
        Leading dimension of array containing matrix A.
Discussion
Calculates A + alpha*x*xT and stores the result in A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ssyr2
Rank two update of a symmetric matrix using two vectors (single precision).
void cblas_ssyr2 (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const float alpha,
   const float *X,
   const int incX,
   const float *Y,
   const int incY,
   float *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A; number of elements in vector x.
alpha
        Scaling factor to multiply x by.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
Functions                                                                                                115
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Discussion
      Calculates A + alpha*x*yT + alpha*y*xT.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ssyr2k
      Performs a rank-2k update of a symmetric matrix (single precision).
      void cblas_ssyr2k (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE Trans,
         const int N,
         const int K,
         const float alpha,
         const float *A,
         const int lda,
         const float *B,
         const int ldb,
         const float beta,
         float *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      Trans
              Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
              A ('C' or 'c').
      N
              Order of matrix C.
      K
              Specifies the number of columns in matrices A and B if trans='N'.
              Specifies the number of rows if trans='C' or trans='T').
      alpha
              Scaling factor for matrix A.
      A
              Matrix A.
      lda
              Leading dimension of matrix A.
      B
              Matrix B.
116   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
ldb
        Leading dimension of array containing matrix B.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Computes alpha*A*BT + alpha*B*AT +beta*C
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ssyrk
Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (single precision).
void cblas_ssyrk (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const float alpha,
   const float *A,
   const int lda,
   const float beta,
   float *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Trans
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
N
        Order of matrix C.
K
        Number of columns in matrix A (or number of rows if matrix A is transposed).
alpha
        Scaling factor for matrix A.
Functions                                                                                                117
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      A
              Matrix A.
      lda
              Leading dimension of array containing matrix A.
      beta
              Scaling factor for matrix C.
      C
              Matrix C.
      ldc
              Leading dimension of array containing matrix C.
      Discussion
      Calculates alpha*A*AT + beta*C; if transposed, calculates alpha*AT*A + beta*C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_stbmv
      Scales a triangular band matrix, then multiplies by a vector (single precision).
      void cblas_stbmv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const int K,
         const float *A,
         const int lda,
         float *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              The order of matrix A.
118   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
K
        Half-bandwidth of matrix A.
A
        Triangular matrix A.
lda
        The leading dimension of array containing matrix A.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Computes A*x and stores the results in x.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_stbsv
Solves a triangular banded system of equations.
void cblas_stbsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const int K,
   const float *A,
   const int lda,
   float *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
Functions                                                                                                   119
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      K
              Number of superdiagonals or subdiagonals of matrix A (depending on the value of Uplo).
      A
              Triangular matrix A.
      lda
              The leading dimension of matrix A.
      X
              Contains vector B on entry. Overwritten with vector X on return.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_stpmv
      Multiplies a triangular matrix by a vector, then adds a vector (single precision).
      void cblas_stpmv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const float *Ap,
         float *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
              A ('C' or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              Order of matrix A and the number of elements in vectors x and y.
      Ap
              Triangular matrix A.
120   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Computes A*x, AT*x, or conjg(AT)*x and stores the results in X.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_stpsv
Solves a packed triangular system of equations.
void cblas_stpsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const float *Ap,
   float *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
Ap
        Triangular matrix A (in packed storage format).
X
        Contains vector B on entry. Overwritten with vector X on return.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
Functions                                                                                                   121
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_strmm
      Scales a triangular matrix and multiplies it by a matrix.
      void cblas_strmm (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_SIDE Side,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int M,
         const int N,
         const float alpha,
         const float *A,
         const int lda,
         float *B,
         const int ldb
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Side
              Determines the order in which the matrices should be multiplied.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      M
              Number of rows in matrix B.
      N
              Number of columns in matrix B.
      alpha
              Scaling factor for matrix A.
      A
              Triangular matrix A.
      lda
              Leading dimension of matrix A.
      B
              Matrix B. Overwritten by results on return.
122   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
ldb
        Leading dimension of matrix B.
Discussion
If Side is 'L', multiplies alpha*A*B or alpha*A'*B, depending on TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_strmv
Multiplies a triangular matrix by a vector.
void cblas_strmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const float *A,
   const int lda,
   float *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A.
A
        Triangular matrix A.
lda
        Leading dimension of matrix A.
X
        Vector X.
Functions                                                                                                  123
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Multiplies A*X or A'*X, depending on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_strsm
      Solves a triangular system of equations with multiple values for the right side.
      void cblas_strsm (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_SIDE Side,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int M,
         const int N,
         const float alpha,
         const float *A,
         const int lda,
         float *B,
         const int ldb
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Side
              Determines the order in which the matrix and vector should be multiplied.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      M
              The number of rows in matrix B.
      N
              The number of columns in matrix B.
      alpha
              Scaling factor for matrix A.
      A
              Triangular matrix A.
124   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
lda
        The leading dimension of matrix B.
B
        On entry, matrix B. Overwritten on return by matrix X.
ldb
        The leading dimension of matrix B.
Discussion
If Side is 'L', solves A*X=alpha*B or A'*X=alpha*B, depending on TransA.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_strsv
Solves a triangular system of equations with a single value for the right side.
void cblas_strsv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const float *A,
   const int lda,
   float *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        The order of matrix A.
A
        Triangular matrix A.
Functions                                                                                                  125
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      lda
              The leading dimension of matrix B.
      X
              The vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Solves A*x=b or A'*x=b where x and b are elements in X and B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_xerbla
      The default error handler for BLAS routines.
      void cblas_xerbla (
         int p,
         char *rout,
         char *form,
         ...
      );
      Parameters
      p
              The position of the invalid parameter
      rout
              The name of the routine that generated this error.
      form
              A format string describing the error.
      ...
              Additional parameters for the format string.
      Discussion
      This is the default error handler for BLAS functions. You can replace it with another function by calling
      SetBLASParamErrorProc (page 161).
      Availability
      Available in iPhone OS 4.0 and later.
      See Also
      cblas_errprn (page 91)
      SetBLASParamErrorProc (page 161)
      Declared In
      cblas.h
126   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_zaxpy
Computes a constant times a vector plus a vector (double-precision complex).
void cblas_zaxpy (
   const int N,
   const void *alpha,
   const void *X,
   const int incX,
   void *Y,
   const int incY
);
Parameters
N
        Number of elements in the vectors.
alpha
        Scaling factor for the values in X.
X
        Input vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Input vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
On return, the contents of vector Y are replaced with the result. The value computed is (alpha * X[i])
+ Y[i].
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zcopy
Copies a vector to another vector (double-precision complex).
void cblas_zcopy (
   const int N,
   const void *X,
   const int incX,
   void *Y,
   const int incY
);
Parameters
N
        Number of elements in the vectors.
Functions                                                                                          127
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      X
              Source vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Destination vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zdotc_sub
      Calculates the dot product of the complex conjugate of a double-precision complex vector with a second
      double-precision complex vector.
      void cblas_zdotc_sub (
         const int N,
         const void *X,
         const int incX,
         const void *Y,
         const int incY,
         void *dotc
      );
      Parameters
      N
              Number of elements in vectors X and Y.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      dotc
              The result vector.
      Discussion
      Computes conjg(X) * Y.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
128   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_zdotu_sub
Computes the dot product of two double-precision complex vectors.
void cblas_zdotu_sub (
   const int N,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *dotu
);
Parameters
N
        The length of vectors X and Y.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
dotu
        The result vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zdrot
Applies a Givens rotation matrix to a pair of complex vectors.
void cblas_zdrot (
   const int N,
   void *X,
   const int incX,
   void *Y,
   const int incY,
   const double c,
   const double s
);
Parameters
N
        The number of elements in vectors X and Y.
X
        Vector X. Modified on return.
Functions                                                                        129
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector Y. Modified on return.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      c
              The value cos( ) in the Givens rotation matrix.
      s
              The value sin( ) in the Givens rotation matrix.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zdscal
      Multiplies each element of a vector by a constant (double-precision complex).
      void cblas_zdscal (
         const int N,
         const double alpha,
         void *X,
         const int incX
      );
      Parameters
      N
              The number of elements in the vector.
      alpha
              The constant scaling factor.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zgbmv
      Scales a general band matrix, then multiplies by a vector, then adds a vector (double-precision complex).
130   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_zgbmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_TRANSPOSE TransA,
   const int M,
   const int N,
   const int KL,
   const int KU,
   const void *alpha,
   const void *A,
   const int lda,
   const void *X,
   const int incX,
   const void *beta,
   void *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
TransA
        Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
        A ('C' or 'c').
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
KL
        Number of subdiagonals in matrix A.
KU
        Number of superdiagonals in matrix A.
alpha
        Scaling factor to multiply matrix A by.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A. (Must be at least KL+KU+1.)
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor to multiply vector Y by.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Functions                                                                                               131
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Discussion
      Computes alpha*A*x + beta*y, alpha*A'*x + beta*y, or alpha*conjg(A')*x + beta*y depending
      on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zgemm
      Multiplies two matrices (double-precision complex).
      void cblas_zgemm (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_TRANSPOSE TransB,
         const int M,
         const int N,
         const int K,
         const void *alpha,
         const void *A,
         const int lda,
         const void *B,
         const int ldb,
         const void *beta,
         void *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      TransA
              Specifies whether to transpose matrix A.
      TransB
              Specifies whether to transpose matrix B.
      M
              Number of rows in matrices A and C.
      N
              Number of columns in matrices B and C.
      K
              Number of columns in matrix A; number of rows in matrix B.
      alpha
              Scaling factor for the product of matrices A and B.
      A
              Matrix A.
132   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
lda
        The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
        m.
B
        Matrix B.
ldb
        The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
        m.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
        m.
Discussion
This function multiplies A * B and multiplies the resulting matrix by alpha. It then multiplies matrix C by
beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zgemv
Multiplies a matrix by a vector (double-precision complex).
Functions                                                                                                133
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_zgemv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_TRANSPOSE TransA,
         const int M,
         const int N,
         const void *alpha,
         const void *A,
         const int lda,
         const void *X,
         const int incX,
         const void *beta,
         void *Y,
         const int incY
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      TransA
              Specifies whether to transpose matrix A.
      M
              Number of rows in matrix A.
      N
              Number of columns in matrix A.
      alpha
              Scaling factor for the product of matrix A and vector X.
      A
              Matrix A.
      lda
              The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
              m.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      beta
              Scaling factor for vector Y.
      Y
              Vector Y
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      Discussion
      This function multiplies A * X (after transposing A, if needed) and multiplies the resulting matrix by alpha.
      It then multiplies vector Y by beta. It stores the sum of these two products in vector Y.
Y←αAX + Y
134   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zgerc
Multiplies vector X by the conjugate transform of vector Y, then adds matrix A (double-precision complex).
void cblas_zgerc (
   const enum CBLAS_ORDER Order,
   const int M,
   const int N,
   const void *alpha,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
M
        Number of rows in matrix A.
N
        Number of columns in matrix A.
alpha
        Scaling factor for vector X.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Y
        Vector Y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
Discussion
Computes alpha*x*conjg(y') + A.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                             135
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Declared In
      cblas.h
      cblas_zgeru
      Multiplies vector X by the transform of vector Y, then adds matrix A (double-precision complex).
      void cblas_zgeru (
         const enum CBLAS_ORDER Order,
         const int M,
         const int N,
         const void *alpha,
         const void *X,
         const int incX,
         const void *Y,
         const int incY,
         void *A,
         const int lda
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      M
              Number of rows in matrix A.
      N
              Number of columns in matrix A.
      alpha
              Scaling factor for vector X.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      A
              Matrix A.
      lda
              Leading dimension of array containing matrix A.
      Discussion
      Computes alpha*x*y' + A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
136   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_zhbmv
Scales a Hermitian band matrix, then multiplies by a vector, then adds a vector (double-precision complex).
void cblas_zhbmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const int K,
   const void *alpha,
   const void *A,
   const int lda,
   const void *X,
   const int incX,
   const void *beta,
   void *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        The order of matrix A.
K
        Half-bandwidth of matrix A.
alpha
        Scaling value to multiply matrix A by.
A
        Matrix A.
lda
        The leading dimension of array containing matrix A.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor that vector Y is multiplied by.
Y
        Vector Y. Replaced by results on return.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y and returns the results in vector Y.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                               137
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Declared In
      cblas.h
      cblas_zhemm
      Multiplies two Hermitian matrices (double-precision complex).
      void cblas_zhemm (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_SIDE Side,
         const enum CBLAS_UPLO Uplo,
         const int M,
         const int N,
         const void *alpha,
         const void *A,
         const int lda,
         const void *B,
         const int ldb,
         const void *beta,
         void *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Side
              Determines the order in which the matrices should be multiplied.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      M
              The number of rows in matrices A and C.
      N
              The number of columns in matrices B and C.
      alpha
              Scaling factor for the product of matrices A and B.
      A
              Matrix A.
      lda
              The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
              m.
      B
              Matrix B.
      ldb
              The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
              m.
      beta
              Scaling factor for matrix C.
138   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
C
        Matrix C.
ldc
        The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
        m.
Discussion
This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
where
A = AH
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zhemv
Scales and multiplies a Hermitian matrix by a vector, then adds a second (scaled) vector.
void cblas_zhemv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   const void *X,
   const int incX,
   const void *beta,
   void *Y,
   const int incY
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        The order of matrix A.
Functions                                                                                                139
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      alpha
              Scaling factor for matrix A.
      A
              Matrix A.
      lda
              Leading dimension of matrix A.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      beta
              Scaling factor for vector X.
      Y
              Vector Y. Overwritten by results on return.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      Discussion
      Calculates Y←αAX +  Y.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zher
      Adds the product of a scaling factor, vector X, and the conjugate transpose of X to matrix A.
      void cblas_zher (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const double alpha,
         const void *X,
         const int incX,
         void *A,
         const int lda
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      N
              The order of matrix A.
      alpha
              The scaling factor for vector X.
140   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
A
        Matrix A.
lda
        Leading dimension of matrix A.
Discussion
Computes A←αX*conjg(X') +  A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zher2
Hermitian rank 2 update: adds the product of a scaling factor, vector X, and the conjugate transpose of vector
Y to the product of the conjugate of the scaling factor, vector Y, and the conjugate transpose of vector X,
and adds the result to matrix A.
void cblas_zher2 (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const void *alpha,
   const void *X,
   const int incX,
   const void *Y,
   const int incY,
   void *A,
   const int lda
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        The order of matrix A.
alpha
        The scaling factor α.
X
        Vector X.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Functions                                                                                                 141
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Y
              Vector Y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      A
              Matrix A.
      lda
              The leading dimension of matrix A.
      Discussion
      Computes A←αX*conjg(Y') + conjg(α)*Y*conjg(X') + A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zher2k
      Performs a rank-2k update of a complex Hermitian matrix (double-precision complex).
      void cblas_zher2k (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE Trans,
         const int N,
         const int K,
         const void *alpha,
         const void *A,
         const int lda,
         const void *B,
         const int ldb,
         const double beta,
         void *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      Trans
              Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
              A ('C' or 'c').
      N
              Order of matrix C.
      K
              Specifies the number of columns in matrices A and B if trans='N'.
              Specifies the number of rows if trans='C' or trans='T').
142   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
B
        Matrix B.
ldb
        Leading dimension of array containing matrix B.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Computes alpha*A*BH + alpha*B*AH +beta*C
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zherk
Rank-k update—multiplies a Hermitian matrix by its transpose and adds a second matrix (single precision).
void cblas_zherk (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE Trans,
   const int N,
   const int K,
   const double alpha,
   const void *A,
   const int lda,
   const double beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
Functions                                                                                               143
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Trans
              Specifies whether to use matrix A ('N' or 'n') or the conjugate transpose of A ('C' or 'c').
      N
              Order of matrix C.
      K
              Number of columns in matrix A (or number of rows if matrix A is transposed).
      alpha
              Scaling factor for matrix A.
      A
              Matrix A.
      lda
              Leading dimension of array containing matrix A.
      beta
              Scaling factor for matrix C.
      C
              Matrix C.
      ldc
              Leading dimension of array containing matrix C.
      Discussion
      Calculates alpha*A*AH + beta*C; if transposed, calculates alpha*AH*A + beta*C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zhpmv
      Scales a packed hermitian matrix, multiplies it by a vector, and adds a scaled vector.
      void cblas_zhpmv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const void *alpha,
         const void *Ap,
         const void *X,
         const int incX,
         const void *beta,
         void *Y,
         const int incY
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
144   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
N
        Order of matrix A and the number of elements in vectors x and y.
alpha
        Scaling factor that matrix A is multiplied by.
Ap
        Matrix A.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
beta
        Scaling factor that vector y is multiplied by.
Y
        Vector y.
incY
        Stride within Y. For example, if incY is 7, every 7th element is used.
Discussion
Computes alpha*A*x + beta*y and stores the results in Y.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zhpr
Scales and multiplies a vector times its conjugate transpose, then adds a matrix.
void cblas_zhpr (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const int N,
   const double alpha,
   const void *X,
   const int incX,
   void *A
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
N
        Order of matrix A and the number of elements in vector x.
alpha
        Scaling factor that vector x is multiplied by.
Functions                                                                                               145
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      A
              Matrix A. Overwritten by results on return.
      Discussion
      Calculates alpha*x*conjg(x') + A and stores the result in A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zhpr2
      Multiplies a vector times the conjugate transpose of a second vector and vice-versa, sums the results, and
      adds a matrix.
      void cblas_zhpr2 (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const int N,
         const void *alpha,
         const void *X,
         const int incX,
         const void *Y,
         const int incY,
         void *Ap
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      N
              Order of matrix A and the number of elements in vectors x and y.
      alpha
              Scaling factor that vector x is multiplied by.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector y.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
146   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
Ap
        Matrix A in packed storage format. Overwritten by the results on return.
Discussion
Calcuates alpha*x*conjg(y') + conjg(alpha)*y*conjg(x') + A, and stores the result in A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zrotg
Constructs a complex Givens rotation.
void cblas_zrotg (
   void *a,
   void *b,
   void *c,
   void *s
);
Parameters
a
        Complex value a. Overwritten on return with result r.
b
        Complex value a. Overwritten on return with result z (zero).
c
        Real value c. Unused on entry. Overwritten on return with the value cos( ).
s
        Complex value s. Unused on entry. Overwritten on return with the value sin( ).
Discussion
Given a vertical matrix containing a and b, computes the values of cos   and sin   that zero the lower
value (b). Returns the value of sin   in s, the value of cos   in c, and the upper value (r) in a.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zscal
Multiplies each element of a vector by a constant (double-precision complex).
Functions                                                                                           147
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_zscal (
         const int N,
         const void *alpha,
         void *X,
         const int incX
      );
      Parameters
      N
              The number of elements in the vector.
      alpha
              The constant scaling factor.
      X
              Vector x.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zswap
      Exchanges the elements of two vectors (double-precision complex).
      void cblas_zswap (
         const int N,
         void *X,
         const int incX,
         void *Y,
         const int incY
      );
      Parameters
      N
              Number of elements in vectors
      X
              Vector x. On return, contains elements copied from vector y.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Y
              Vector y. On return, contains elements copied from vector x.
      incY
              Stride within Y. For example, if incY is 7, every 7th element is used.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
148   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_zsymm
Multiplies a matrix by a symmetric matrix (double-precision complex).
void cblas_zsymm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_SIDE Side,
   const enum CBLAS_UPLO Uplo,
   const int M,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   const void *B,
   const int ldb,
   const void *beta,
   void *C,
   const int ldc
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Side
        Determines the order in which the matrices should be multiplied.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
M
        Number of rows in matrices A and C.
N
        Number of columns in matrices B and C.
alpha
        Scaling factor for the product of matrices A and B.
A
        Matrix A.
lda
        The size of the first dimention of matrix A; if you are passing a matrix A[m][n], the value should be
        m.
B
        Matrix B.
ldb
        The size of the first dimention of matrix B; if you are passing a matrix B[m][n], the value should be
        m.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        The size of the first dimention of matrix C; if you are passing a matrix C[m][n], the value should be
        m.
Functions                                                                                                149
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Discussion
      This function multiplies A * B or B * A (depending on the value of Side) and multiplies the resulting matrix
      by alpha. It then multiplies matrix C by beta. It stores the sum of these two products in matrix C.
C←αAB + C
or
C←αBA + C
where
A = AT
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_zsyr2k
      Performs a rank-2k update of a symmetric matrix (double-precision complex).
      void cblas_zsyr2k (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE Trans,
         const int N,
         const int K,
         const void *alpha,
         const void *A,
         const int lda,
         const void *B,
         const int ldb,
         const void *beta,
         void *C,
         const int ldc
      );
      Parameters
      Order
               Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
               Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      Trans
               Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
               A ('C' or 'c').
      N
               Order of matrix C.
150   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
K
        Specifies the number of columns in matrices A and B if trans='N'.
        Specifies the number of rows if trans='C' or trans='T').
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of array containing matrix A.
B
        Matrix B.
ldb
        Leading dimension of array containing matrix B.
beta
        Scaling factor for matrix C.
C
        Matrix C.
ldc
        Leading dimension of array containing matrix C.
Discussion
Computes alpha*A*BT + alpha*B*AT +beta*C
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_zsyrk
Rank-k update—multiplies a symmetric matrix by its transpose and adds a second matrix (double-precision
complex).
Functions                                                                                          151
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_zsyrk (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE Trans,
         const int N,
         const int K,
         const void *alpha,
         const void *A,
         const int lda,
         const void *beta,
         void *C,
         const int ldc
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      Trans
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T' or 't').
      N
              Order of matrix C.
      K
              Number of columns in matrix A (or number of rows if matrix A is transposed).
      alpha
              Scaling factor for matrix A.
      A
              Matrix A.
      lda
              Leading dimension of array containing matrix A.
      beta
              Scaling factor for matrix C.
      C
              Matrix C.
      ldc
              Leading dimension of array containing matrix C.
      Discussion
      Calculates alpha*A*AT + beta*C; if transposed, calculates alpha*AT*A + beta*C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ztbmv
      Scales a triangular band matrix, then multiplies by a vector (double-precision complex).
152   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_ztbmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const int K,
   const void *A,
   const int lda,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        The order of matrix A.
K
        Half-bandwidth of matrix A.
A
        Matrix A.
lda
        The leading dimension of array containing matrix A.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Computes A*x and stores the results in x.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ztbsv
Solves a triangular banded system of equations.
Functions                                                                                                  153
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_ztbsv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const int K,
         const void *A,
         const int lda,
         void *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              Order of matrix A.
      K
              Number of superdiagonals or subdiagonals of matrix A (depending on the value of Uplo).
      A
              Matrix A.
      lda
              The leading dimension of matrix A.
      X
              Contains vector B on entry. Overwritten with vector X on return.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ztpmv
      Multiplies a triangular matrix by a vector, then adds a vector (double-precision compex).
154   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_ztpmv (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int N,
   const void *Ap,
   void *X,
   const int incX
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n'), the transpose of A ('T' or 't'), or the conjugate of
        A ('C' or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
N
        Order of matrix A and the number of elements in vectors x and y.
Ap
        Matrix A.
X
        Vector x.
incX
        Stride within X. For example, if incX is 7, every 7th element is used.
Discussion
Computes A*x, AT*x, or conjg(AT)*x and stores the results in X.
Availability
Available in iPhone OS 4.0 and later.
Declared In
cblas.h
cblas_ztpsv
Solves a packed triangular system of equations.
Functions                                                                                                  155
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      void cblas_ztpsv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const void *Ap,
         void *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              Order of matrix A.
      Ap
              Matrix A (in packed storage format).
      X
              Contains vector B on entry. Overwritten with vector X on return.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Solves the system of equations A*X=B or A'*X=B, depending on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ztrmm
      Scales a triangular matrix and multiplies it by a matrix.
156   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
void cblas_ztrmm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_SIDE Side,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int M,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   void *B,
   const int ldb
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Side
        Determines the order in which the matrices should be multiplied.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
M
        Number of rows in matrix B.
N
        Number of columns in matrix B.
alpha
        Scaling factor for matrix A.
A
        Matrix A.
lda
        Leading dimension of matrix A.
B
        Matrix B. Overwritten by results on return.
ldb
        Leading dimension of matrix B.
Discussion
If Side is 'L', multiplies alpha*A*B or alpha*A'*B, depending on TransA.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                  157
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Declared In
      cblas.h
      cblas_ztrmv
      Multiplies a triangular matrix by a vector.
      void cblas_ztrmv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const void *A,
         const int lda,
         void *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              Order of matrix A.
      A
              Matrix A.
      lda
              Leading dimension of matrix A.
      X
              Vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Multiplies A*X or A'*X, depending on the value of TransA.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
158   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
cblas_ztrsm
Solves a triangular system of equations with multiple values for the right side.
void cblas_ztrsm (
   const enum CBLAS_ORDER Order,
   const enum CBLAS_SIDE Side,
   const enum CBLAS_UPLO Uplo,
   const enum CBLAS_TRANSPOSE TransA,
   const enum CBLAS_DIAG Diag,
   const int M,
   const int N,
   const void *alpha,
   const void *A,
   const int lda,
   void *B,
   const int ldb
);
Parameters
Order
        Specifies row-major (C) or column-major (Fortran) data ordering.
Side
        Determines the order in which the matrix and vector should be multiplied.
Uplo
        Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
TransA
        Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
Diag
        Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
        unit triangular).
M
        The number of rows in matrix B.
N
        The number of columns in matrix B.
alpha
        Scaling factor for matrix A.
A
        Triangular matrix A.
lda
        The leading dimension of matrix B.
B
        On entry, matrix B. Overwritten on return by matrix X.
ldb
        The leading dimension of matrix B.
Discussion
If Side is 'L', solves A*X=alpha*B or A'*X=alpha*B, depending on TransA.
Functions                                                                                                  159
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      cblas.h
      cblas_ztrsv
      Solves a triangular system of equations with a single value for the right side.
      void cblas_ztrsv (
         const enum CBLAS_ORDER Order,
         const enum CBLAS_UPLO Uplo,
         const enum CBLAS_TRANSPOSE TransA,
         const enum CBLAS_DIAG Diag,
         const int N,
         const void *A,
         const int lda,
         void *X,
         const int incX
      );
      Parameters
      Order
              Specifies row-major (C) or column-major (Fortran) data ordering.
      Uplo
              Specifies whether to use the upper or lower triangle from the matrix. Valid values are 'U' or 'L'.
      TransA
              Specifies whether to use matrix A ('N' or 'n') or the transpose of A ('T', 't', 'C', or 'c').
      Diag
              Specifies whether the matrix is unit triangular. Possible values are 'U' (unit triangular) or 'N' (not
              unit triangular).
      N
              The order of matrix A.
      A
              Triangular matrix A.
      lda
              The leading dimension of matrix B.
      X
              The vector X.
      incX
              Stride within X. For example, if incX is 7, every 7th element is used.
      Discussion
      Solves A*x=b or A'*x=b where x and b are elements in X and B.
      Availability
      Available in iPhone OS 4.0 and later.
160   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      Declared In
      cblas.h
      SetBLASParamErrorProc
      Sets an error handler function.
      void SetBLASParamErrorProc (
         BLASParamErrorProc ErrorProc
      );
      Parameters
      ErrorProc
              The handler function BLAS should call when an error occurs (because of an invalid input, for example).
      Availability
      Available in iPhone OS 4.0 and later.
      See Also
      cblas_errprn (page 91)
      cblas_xerbla (page 126)
      Declared In
      cblas.h
Constants
      Note: The types given here are valid for C or C++ and for either PowerPC or Intel processors. The typedefs
      shown are for C++ and PowerPC processors; for other, conditionally compiled typedefs, see the header files.
      CBLAS_ORDER
      Indicates whether a matrix is in row-major or column-major order.
      enum CBLAS_ORDER {
          CblasRowMajor=101,
          CblasColMajor=102
      };
      typedef enum CBLAS_ORDER CBLAS_ORDER;
      Constants
      CblasRowMajor
              Row-major order.
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      Constants                                                                                                 161
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      CblasColMajor
              Column-major order.
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      CBLAS_TRANSPOSE
      Indiates transpose operation to perform on a matrix.
      enum CBLAS_TRANSPOSE {
          CblasNoTrans=111,
          CblasTrans=112,
          CblasConjTrans=113,
          AtlasConj=114
      };
      typedef enum CBLAS_TRANSPOSE CBLAS_TRANSPOSE;
      Constants
      CblasNoTrans
              No transposition.
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      CblasTrans
              For matrix X, use X(T).
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      CblasConjTrans
            For matrix X, use X(H) (conjugate or Hermitian transposition).
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      AtlasConj
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      CBLAS_UPLO
      Indicates which part of a symmetric matrix to use.
162   Constants
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 1
BLAS Reference
enum CBLAS_UPLO {
    CblasUpper=121,
    CblasLower=122
};
typedef enum CBLAS_UPLO CBLAS_UPLO;
Constants
CblasUpper
        Use the upper triangle of the matrix.
        Available in iPhone OS 4.0 and later.
        Declared in cblas.h.
CblasLower
        Use the lower triangle of the matrix.
        Available in iPhone OS 4.0 and later.
        Declared in cblas.h.
CBLAS_DIAG
Indicates whether a triangular matrix is unit-diagonal (diagonal elements are all equal to 1).
enum CBLAS_DIAG {
    CblasNonUnit=131,
    CblasUnit=132
};
typedef enum CBLAS_DIAG CBLAS_DIAG;
Constants
CblasNonUnit
        The triangular matrix is not unit-diagonal.
        Available in iPhone OS 4.0 and later.
        Declared in cblas.h.
CblasUnit
        The triangular matrix is unit-diagonal.
        Available in iPhone OS 4.0 and later.
        Declared in cblas.h.
CBLAS_SIDE
Indicates the order of a matrix multiplication.
Constants                                                                                        163
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 1
      BLAS Reference
      enum CBLAS_SIDE {
          CblasLeft=141,
          CblasRight=142
      };
      typedef enum CBLAS_SIDE CBLAS_SIDE;
      Constants
      CblasLeft
              Multiply A*B.
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
      CblasRight
              Multiply B*A.
              Available in iPhone OS 4.0 and later.
              Declared in cblas.h.
164   Constants
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
vDSP Reference
      Framework:                         Accelerate/vecLib
      Declared in                        vDSP.h
Overview
Functions by Task
      Single-Vector Negation
      The functions in this group negates each element in a vector.
      Overview                                                                              165
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Single-Vector Generation
      The functions in this group build vectors with specific generator functions.
Single-Vector Squaring
The functions in this group computes the square of each element in a vector or the square of the magnitude
of each element in a complex vector.
      Single-Vector Compression
      The functions in this group compress the values of a vector.
      Single-Vector Gathering
      The functions in this group use either indices or pointers stored within one source vector to generate a new
      vector containing the chosen elements from either a second source vector or from memory.
      Single-Vector Reversing
      The functions in this group reverse the order of the elements in a vector.
      Single-Vector Copying
      The functions in this group copy one vector to another vector.
Single-Vector Integration
The functions in this group perform integration on the values in a vector.
      Single-Vector Sorting
      The functions in this group find sort the values in a vector.
Vector-Scalar Addition
These functions add a scalar to each element of a vector.
Vector-Scalar Division
These functions divide each element of a vector by a scalar.
Vector-Scalar Multiplication
These functions multiply a scalar by each element of a vector.
Vector-to-Vector Interpolation
vDSP_vintb (page 400)
        Vector linear interpolation between vectors; single precision.
vDSP_vintbD (page 401)
        Vector linear interpolation between vectors; double precision.
      Vector-to-Vector Merging
      vDSP_vtmerg (page 490)
              Tapered merge of two vectors; single precision.
      vDSP_vtmergD (page 491)
              Tapered merge of two vectors; double precision.
      Finding Maximums
      vDSP_maxv (page 297)
              Vector maximum value; single precision.
      vDSP_maxvD (page 298)
              Vector maximum value; double precision.
      vDSP_maxvi (page 298)
              Vector maximum value with index; single precision.
      vDSP_maxviD (page 299)
              Vector maximum value with index; double precision.
      vDSP_maxmgv (page 294)
              Vector maximum magnitude; single precision.
      vDSP_maxmgvD (page 294)
              Vector maximum magnitude; double precision.
      vDSP_maxmgvi (page 295)
              Vector maximum magnitude with index; single precision.
Finding Minimums
vDSP_minv (page 308)
        Vector minimum value.
vDSP_minvD (page 308)
        Vector minimum value; double precision.
vDSP_minvi (page 309)
        Vector minimum value with index; single precision.
vDSP_minviD (page 310)
        Vector minimum value with index; double precision.
vDSP_minmgv (page 304)
        Vector minimum magnitude; single precision.
vDSP_minmgvD (page 305)
        Vector minimum magnitude; double precision.
vDSP_minmgvi (page 306)
        Vector minimum magnitude with index; single precision.
vDSP_minmgviD (page 307)
        Vector minimum magnitude with index; double precision.
Calculating Means
vDSP_meanv (page 302)
        Vector mean value; single precision.
vDSP_meanvD (page 302)
        Vector mean value; double precision.
vDSP_meamgv (page 300)
        Vector mean magnitude; single precision.
vDSP_meamgvD (page 301)
        Vector mean magnitude; double precision.
vDSP_measqv (page 303)
        Vector mean square value; single precision.
vDSP_measqvD (page 304)
        Vector mean square value; double precision.
vDSP_mvessq (page 315)
        Vector mean of signed squares; single precision.
vDSP_mvessqD (page 316)
        Vector mean of signed squares; double precision.
vDSP_rmsqv (page 322)
        Vector root-mean-square; single precision.
      Summing Vectors
      vDSP_sve (page 326)
              Vector sum; single precision.
      vDSP_sveD (page 326)
              Vector sum; double precision.
      vDSP_svemg (page 327)
              Vector sum of magnitudes; single precision.
      vDSP_svemgD (page 328)
              Vector sum of magnitudes; double precision.
      vDSP_svesq (page 328)
              Vector sum of squares; single precision.
      vDSP_svesqD (page 329)
              Vector sum of squares; double precision.
      vDSP_svs (page 330)
              Vector sum of signed squares; single precision.
      vDSP_svsD (page 331)
              Vector sum of signed squares; double precision.
Matrix Transposition
vDSP_mtrans (page 314)
        Creates a transposed matrix C from a source matrix A; single precision.
vDSP_mtransD (page 315)
        Creates a transposed matrix C from a source matrix A; double precision.
Functions
      vDSP_blkman_window
      Creates a single-precision Blackman window.
      void vDSP_blkman_window (
         float *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_FLAG
      );
      Discussion
      Represented in pseudo-code, this function does the following:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_blkman_windowD
      Creates a double-precision Blackman window.
      void vDSP_blkman_windowD (
         double *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_FLAG
      );
      Discussion
      Represented in pseudo-code, this function does the following:
192   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_blkman_windowD (page 192) creates a double-precision Blackman window function C, which can be
multiplied by a vector using vDSP_vmulD . Specify the vDSP_HALF_WINDOW (page 553) flag to create only
the first (n+1)/2 points, or 0 (zero) for a full-size window.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_conv
Performs either correlation or convolution on two vectors; single precision.
void vDSP_conv (
   const float __vDSP_signal[],
   vDSP_Stride __vDSP_signalStride,
   const float __vDSP_filter[],
   vDSP_Stride __vDSP_strideFilter,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_lenResult,
   vDSP_Length __vDSP_lenFilter
);
Discussion
The value of lenFilter must be less than or equal to 2044. The length of vector signal must satisfy two
criteria: it must be
Functions                                                                                                193
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
If any of these criteria is not satisfied, the function invokes scalar code.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_convD
      Performs either correlation or convolution on two vectors; double precision.
      void vDSP_convD (
         const double __vDSP_signal[],
         vDSP_Stride __vDSP_signalStride,
         const double __vDSP_filter[],
         vDSP_Stride __vDSP_strideFilter,
         double __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_lenResult,
         vDSP_Length __vDSP_lenFilter
      );
Discussion
      The value of lenFilter must be less than or equal to 2044. The length of vector signal must satisfy two
      criteria: it must be
No Altivec support for double precision. On a PowerPC processor, this function always invokes scalar code.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
194   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_create_fftsetup
Builds a data structure that contains precalculated data for use by single-precision FFT functions.
FFTSetup vDSP_create_fftsetup (
   vDSP_Length __vDSP_log2n,
   FFTRadix __vDSP_radix
);
Parameters
log2n
        A base 2 exponent that represents the number of divisions of the complex unit circle and thus specifies
        the largest power of two that can be processed by a subsequent frequency-domain function. Parameter
        log2n must equal or exceed the largest power of 2 that any subsequent function processes using
        the weights array.
radix
        Specifies radix options. Radix 2, radix 3, and radix 5 functions are supported.
Return Value
Returns an FFTSetup (page 550) structure for use with one-dimensional FFT functions. Returns 0 on error.
Discussion
This function returns a filled-in FFTSetup (page 550) data structure for use by FFT functions that operate on
double-precision vectors. Once prepared, the setup structure can be used repeatedly by FFT functions (which
read the data in the structure and do not alter it) for any (power of two) length up to that specified when
you created the structure.
If an application performs FFTs with diverse lengths, the calls with different lengths can share a single setup
structure (created for the longest length), and this saves space over having multiple structures. However, in
some cases, notably single-precision FFTs on 32-bit PowerPC, an FFT routine may perform faster if it is passed
a setup structure that was created specifically for the length of the transform.
Parameter log2n is a base-two exponent and specifies that the largest transform length that can processed
using the resulting setup structure is 2**log2n (or 3*2**log2n or 5*2**log2n if the appropriate flags are
passed, as discussed below). That is, the log2n parameter must equal or exceed the value passed to any
subsequent FFT routine using the setup structure returned by this routine.
Parameter radix specifies radix options. Its value may be the bitwise OR of any combination of
kFFTRadix2 (page 552), kFFTRadix3 (page 552), or kFFTRadix5 (page 553). The resulting setup structure
may be used with any of the routines for which the respective flag was used. (The radix-3 and radix-5 FFT
routines have "fft3" and "fft5" in their names. The radix-2 FFT routines have plain "fft" in their names.)
Use vDSP_create_fftsetup during initialization. It is relatively slow compared to the routines that actually
perform FFTs. Never use it in a part of an application that needs to be high performance.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                 195
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_create_fftsetupD
      Builds a data structure that contains precalculated data for use by double-precision FFT functions.
      FFTSetupD vDSP_create_fftsetupD (
         vDSP_Length __vDSP_log2n,
         FFTRadix __vDSP_radix
      );
      Parameters
      log2n
              A base 2 exponent that represents the number of divisions of the complex unit circle and thus specifies
              the largest power of two that can be processed by a subsequent frequency-domain function. Parameter
              log2n must equal or exceed the largest power of 2 that any subsequent function processes using
              the weights array.
      radix
              Specifies radix options. Radix 2, radix 3, and radix 5 functions are supported.
      Return Value
      Returns an FFTSetupD (page 550) structure for use with FFT functions, or 0 if there was an error.
      Discussion
      This function returns a filled-in FFTSetupD (page 550) data structure for use by FFT functions that operate
      on double-precision vectors. Once prepared, the setup structure can be used repeatedly by FFT functions
      (which read the data in the structure and do not alter it) for any (power of two) length up to that specified
      when you created the structure.
      If an application performs FFTs with diverse lengths, the calls with different lengths can share a single setup
      structure (created for the longest length), and this saves space over having multiple structures. However, in
      some cases, notably single-precision FFTs on 32-bit PowerPC, an FFT routine may perform faster if it is passed
      a setup structure that was created specifically for the length of the transform.
      Parameter log2n is a base-two exponent and specifies that the largest transform length that can processed
      using the resulting setup structure is 2**log2n (or 3*2**log2n or 5*2**log2n if the appropriate flags are
      passed, as discussed below). That is, the log2n parameter must equal or exceed the value passed to any
      subsequent FFT routine using the setup structure returned by this routine.
      Parameter radix specifies radix options. Its value may be the bitwise OR of any combination of
      kFFTRadix2 (page 552), kFFTRadix3 (page 552), or kFFTRadix5 (page 553). The resulting setup structure
      may be used with any of the routines for which the respective flag was used. (The radix-3 and radix-5 FFT
      routines have fft3 and fft5 in their names. The radix-2 FFT routines have plain fft in their names.)
      Use vDSP_create_fftsetupD during initialization. It is relatively slow compared to the routines that actually
      perform FFTs. Never use it in a part of an application that needs to be high performance.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
196   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_ctoz
Copies the contents of an interleaved complex vector C to a split complex vector Z; single precision.
void vDSP_ctoz (
   const DSPComplex __vDSP_C[],
   vDSP_Stride __vDSP_strideC,
   DSPSplitComplex *__vDSP_Z,
   vDSP_Stride __vDSP_strideZ,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
The strideC parameter contains an address stride through C. strideZ is an address stride through Z. The
value of strideC must be a multiple of 2.
For best performance, C.realp, C.imagp, Z.realp, and Z.imagp should be 16-byte aligned.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_ctozD
Copies the contents of an interleaved complex vector C to a split complex vector Z; double precision.
void vDSP_ctozD (
   const DSPDoubleComplex __vDSP_C[],
   vDSP_Stride __vDSP_strideC,
   DSPDoubleSplitComplex *__vDSP_Z,
   vDSP_Stride __vDSP_strideZ,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
The strideC parameter contains an address stride through C. strideZ is an address stride through Z. The
value of strideC must be a multiple of 2.
For best performance, C.realp, C.imagp, Z.realp, and Z.imagp should be 16-byte aligned.
See also functions vDSP_ztoc (page 521) and vDSP_ztocD (page 522).
Functions                                                                                               197
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_deq22
      Difference equation, 2 poles, 2 zeros; single precision.
      void vDSP_deq22 (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector; must have at least N+2 elements
      I
              Stride for A
      B
              5 single-precision inputs, filter coefficients
      C
              Single-precision real output vector; must have at least N+2 elements
      K
              Stride for C
      N
              Number of new output elements to produce
      Discussion
      Performs two-pole two-zero recursive filtering on real input vector A. Since the computation is recursive, the
      first two elements in vector C must be initialized prior to calling vDSP_deq22. vDSP_deq22 creates N new
      values for vector C beginning with its third element and requires at least N+2 input values from vector A. This
      function can only be done out of place.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
198   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_deq22D
Difference equation, 2 poles, 2 zeros; double precision.
void vDSP_deq22D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector; must have at least N+2 elements
I
        Stride for A
B
        5 double-precision inputs, filter coefficients
C
        Double-precision real output vector; must have at least N+2 elements
K
        Stride for C
N
        Number of new output elements to produce
Discussion
Performs two-pole two-zero recursive filtering on real input vector A. Since the computation is recursive, the
first two elements in vector C must be initialized prior to calling vDSP_deq22D. vDSP_deq22D creates N new
values for vector C beginning with its third element and requires at least N+2 input values from vector A. This
function can only be done out of place.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_desamp
Convolution with decimation; single precision.
Functions                                                                                                 199
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_desamp (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         float *__vDSP_C,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Single-precision real input vector, 8-byte aligned; length of A >= 12
      I
              Desampling factor
      B
              Single-precision input filter coefficients
      C
              Single-precision real output vector
      N
              Output count
      M
              Filter coefficient count
      Discussion
      Performs finite impulse response (FIR) filtering at selected positions of vector A. desampx can run in place,
      but C cannot be in place with B. Length of A must be >=(N-1)*I+(nearest multiple of 4 >=M).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_desampD
      Convolution with decimation; double precision.
200   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_desampD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_M
);
Parameters
A
        Double-precision real input vector, 8-byte aligned; length of A >= 12
I
        Desampling factor
B
        Double-precision input filter coefficients
C
        Double-precision real output vector
N
        Output count
M
        Filter coefficient count
Discussion
Performs finite impulse response (FIR) filtering at selected positions of vector A. desampx can run in place,
but C cannot be in place with B. Length of A must be >=(N-1)*I+(nearest multiple of 4 >=M).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_destroy_fftsetup
Frees an existing single-precision FFT data structure.
void vDSP_destroy_fftsetup (
   FFTSetup __vDSP_setup
);
Parameters
setup
        Identifies the weights array, and must point to a data structure previously created by
        vDSP_create_fftsetup (page 195).
Functions                                                                                                 201
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Discussion
      vDSP_destroy_fftsetup frees an existing weights array. Any memory allocated for the array is released.
      After the vDSP_destroy_fftsetup function returns, the structure should not be used in any other functions.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_destroy_fftsetupD
      Frees an existing double-precision FFT data structure.
      void vDSP_destroy_fftsetupD (
         FFTSetupD __vDSP_setup
      );
      Parameters
      setup
              Identifies the weights array, and must point to a data structure previously created by
              vDSP_create_fftsetupD (page 196).
      Discussion
      vDSP_destroy_fftsetupD frees an existing weights array. Any memory allocated for the array is released.
      After the vDSP_destroy_fftsetupD function returns, the structure should not be used in any other
      functions.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_DFT_CreateSetup
      Old name for vDSP_DFT_zop_CreateSetup (page 205).
      vDSP_DFT_Setup vDSP_DFT_CreateSetup (
         vDSP_DFT_Setup __vDSP_Previous,
         vDSP_Length __vDSP_Length
      );
      Discussion
      Call vDSP_DFT_zop_CreateSetup (page 205) instead.
      Concurrency Note: This function is not thread-safe. You must not call this function concurrently with any
      other DFT call.
      Availability
      Available in iPhone OS 4.0 and later.
202   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_DFT_DestroySetup
Releases a setup object.
void vDSP_DFT_DestroySetup (
   vDSP_DFT_Setup __vDSP_Setup
);
Parameters
__vDSP_Setup
        The setup object to destroy (as returned by vDSP_DFT_CreateSetup (page 202),
        vDSP_DFT_zop_CreateSetup (page 205), or vDSP_DFT_zrop_CreateSetup (page 206).
Discussion
If this setup object shares memory with other setup objects, that memory is not released until the last object
is destroyed.
Concurrency Note: This function is not thread-safe. You must not call this function concurrently with any
other DFT call.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_DFT_Execute
Calculates the discrete fourier transform for a vector using vDSP_DFT_zop (page 204) or vDSP_DFT_zrop (page
206).
void vDSP_DFT_Execute (
    const struct vDSP_DFT_SetupStruct *__vDSP_Setup,
    const float *__vDSP_Ir,
    const float *__vDSP_Ii,
    float *__vDSP_Or,
    float *__vDSP_Oi
);
Parameters
__vDSP_Setup
        A DFT setup object returned by a call to vDSP_DFT_zop_CreateSetup (page 205).
__vDSP_Ir
        A vector containing the real part of the input values.
__vDSP_Ii
        A vector containing the imaginary part of the input values.
__vDSP_Or
        A vector where the real part of the results is stored on return.
Functions                                                                                                203
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      __vDSP_Oi
              A vector where the imaginary part of the results is stored on return.
      Discussion
      This function calculates either a real or complex discrete fourier transform, depending on whether the setup
      object was created with a call to vDSP_DFT_zrop_CreateSetup (page 206) or
      vDSP_DFT_zop_CreateSetup (page 205).
      Note: If the setup was created with vDSP_DFT_zop_CreateSetup (page 205), each vector should contain
      length elements. If it was created with vDSP_DFT_zrop_CreateSetup (page 206), each vector should
      contain length/2 elements.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_DFT_zop
      Calculates the discrete fourier transform for a vector (single-precision complex).
      void vDSP_DFT_zop (
         const struct vDSP_DFT_SetupStruct *__vDSP_Setup,
         const float *__vDSP_Ir,
         const float *__vDSP_Ii,
         vDSP_Stride __vDSP_Is,
         float *__vDSP_Or,
         float *__vDSP_Oi,
         vDSP_Stride __vDSP_Os,
         vDSP_DFT_Direction __vDSP_Direction
      );
      Parameters
      __vDSP_Setup
              A DFT setup object returned by a call to vDSP_DFT_zop_CreateSetup (page 205).
      __vDSP_InputRe
              A vector containing the real part of the input values.
      __vDSP_InputIm
              A vector containing the imaginary part of the input values.
      __vDSP_InputStride
              Stride length within the input vector. For example, passing 2 would cause every second value to be
              used.
      __vDSP_OutputRe
              A vector where the real part of the results is stored on return.
      __vDSP_OutputIm
              A vector where the imaginary part of the results is stored on return.
      __vDSP_OutputStride
              Stride length within the input vector. For example, passing 2 would cause every second value to be
              overwritten.
204   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_Direction
      vDSP_DFT_FORWARD (page 551) or vDSP_DFT_INVERSE (page 552), indicating whether to perform a
        forward or inverse transform.
Discussion
The input and output vectors may not overlap, with one exception: if the real and imaginary input vectors
are both the same as the corresponding output vector, an in-place algorithm is used.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_DFT_zop_CreateSetup
Creates data structures for use with vDSP_DFT_zop (page 204).
vDSP_DFT_Setup vDSP_DFT_zop_CreateSetup (
   vDSP_DFT_Setup __vDSP_Previous,
   vDSP_Length __vDSP_Length,
   vDSP_DFT_Direction __vDSP_Direction
);
Parameters
__vDSP_Previous
        An previous result from this function or NULL.
__vDSP_Length
        The length of DFT computations with this object.
Return Value
Returns a DFT setup object.
Discussion
This function is designed to share memory between data structures where possible. You should initially
create a setup object with the largest length you expect to use, then pass that object as __vDSP_Previous.
By doing so, this setup object can share the underlying data storage with that object, thus reducing the time
needed to construct the tables.
Concurrency Note: This function is not thread-safe. You must not call this function concurrently with any
other DFT call.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                               205
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_DFT_zrop
      Calculates the discrete fourier transform for a vector (single-precision real).
      void vDSP_DFT_zrop (
          vDSP_DFT_Setup __vDSP_Setup,
          const float *__vDSP_InputRe,
          const float *__vDSP_InputIm,
          vDSP_Stride __vDSP_InputStride,
          float *__vDSP_OutputRe,
          float *__vDSP_OutputIm,
          vDSP_Stride __vDSP_OutputStride,
          vDSP_DFT_Direction __vDSP_Direction
      );
      Parameters
      __vDSP_Setup
              A DFT setup object returned by a call to vDSP_DFT_zrop_CreateSetup (page 206).
      __vDSP_InputRe
              A vector containing the real part of the input values.
      __vDSP_InputIm
              A vector containing the imaginary part of the input values.
      __vDSP_InputStride
              Stride length within the input vector. For example, passing 2 would cause every second value to be
              used.
      __vDSP_OutputRe
              A vector where the real part of the results is stored on return.
      __vDSP_OutputIm
              A vector where the imaginary part of the results is stored on return.
      __vDSP_OutputStride
              Stride length within the input vector. For example, passing 2 would cause every second value to be
              overwritten.
      __vDSP_Direction
            vDSP_DFT_FORWARD (page 551) or vDSP_DFT_INVERSE (page 552), indicating whether to perform a
              forward or inverse transform.
      Discussion
      The input and output vectors may not overlap unless they are equal, in which case an in-place algorithm is
      used.
      vDSP_DFT_zrop_CreateSetup
      Creates data structures for use with vDSP_DFT_zrop (page 206).
206   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_DFT_Setup vDSP_DFT_zrop_CreateSetup (
   vDSP_DFT_Setup __vDSP_Previous,
   vDSP_Length __vDSP_Length,
   vDSP_DFT_Direction __vDSP_Direction
);
Parameters
__vDSP_Previous
        An previous result from this function or NULL.
__vDSP_Length
        The length of DFT computations with this object.
Return Value
Returns a DFT setup object.
Discussion
This function is designed to share memory between data structures where possible. You should initially
create a setup object with the largest length you expect to use, then pass that object as __vDSP_Previous.
By doing so, this setup object can share the underlying data storage with that object, thus reducing the time
needed to construct the tables.
Concurrency Note: This function is not thread-safe. You must not call this function concurrently with any
other DFT call.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_dotpr
Computes the dot or scalar product of vectors A and B and leaves the result in scalar *C; single precision.
void vDSP_dotpr (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   float *__vDSP_result,
   vDSP_Length __vDSP_size
);
Parameters
__vDSP_input1
        Input vector A.
__vDSP_stride1
        The stride within vector A. For example if stride is 2, every second element is used.
__vDSP_input2
        Input vector B.
__vDSP_stride2
        The stride within vector B. For example if stride is 2, every second element is used.
Functions                                                                                                207
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      __vDSP_result
              The dot product (on return).
      __vDSP_size
              The number of elements (N).
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_dotpr2
      Stereo variant of vDSP_dotpr (page 207).
      void vDSP_dotpr2 (
         const float *__vDSP_A0,
         vDSP_Stride __vDSP_A0Stride,
         const float *__vDSP_A1,
         vDSP_Stride __vDSP_A1Stride,
         const float *__vDSP_B,
         vDSP_Stride __vDSP_BStride,
         float *__vDSP_C0,
         float *__vDSP_C1,
         vDSP_Length __vDSP_Length
      );
      Parameters
      __vDSP_A0
              Input vector A0.
      __vDSP_A0Stride
              The stride within vector A0. For example if stride is 2, every second element is used.
      __vDSP_A1
              Input vector A1.
      __vDSP_A1Stride
              The stride within vector A1. For example if stride is 2, every second element is used.
      __vDSP_B
              Input vector B.
      __vDSP_BStride
              The stride within vector B. For example if stride is 2, every second element is used.
      __vDSP_C0
              The dot product of A0 and B (on return).
208   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_C1
        The dot product of A1 and B (on return).
__vDSP_Length
        The number of elements.
Discussion
Calculates the dot product of A0 with B, then calculates the dot product of A1 with B. The equation for a
single dot product is:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_dotpr2_s1_15
Vector fixed-point 1.15 format version of vDSP_dotpr2 (page 208).
void vDSP_dotpr2_s1_15 (
   const short int *__vDSP_A0,
   vDSP_Stride __vDSP_A0Stride,
   const short int *__vDSP_A1,
   vDSP_Stride __vDSP_A1Stride,
   const short int *__vDSP_B,
   vDSP_Stride __vDSP_BStride,
   short int *__vDSP_C0,
   short int *__vDSP_C1,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_A0
        Input vector A0.
__vDSP_A0Stride
        The stride within vector A0. For example if stride is 2, every second element is used.
__vDSP_A1
        Input vector A1.
__vDSP_A1Stride
        The stride within vector A1. For example if stride is 2, every second element is used.
__vDSP_B
        Input vector B.
__vDSP_BStride
        The stride within vector B. For example if stride is 2, every second element is used.
__vDSP_C0
        The dot product of A0 and B (on return).
Functions                                                                                              209
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      __vDSP_C1
              The dot product of A1 and B (on return).
      __vDSP_Length
              The number of elements.
      Discussion
      Calculates the dot product of A0 with B, then calculates the dot product of A1 with B. The equation for a
      single dot product is:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_dotpr2_s8_24
      Vector fixed-point 8.24 format version of vDSP_dotpr2 (page 208).
      void vDSP_dotpr2_s8_24 (
         const int *__vDSP_A0,
         vDSP_Stride __vDSP_A0Stride,
         const int *__vDSP_A1,
         vDSP_Stride __vDSP_A1Stride,
         const int *__vDSP_B,
         vDSP_Stride __vDSP_BStride,
         int *__vDSP_C0,
         int *__vDSP_C1,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_A0
              Input vector A0.
      __vDSP_A0Stride
              The stride within vector A0. For example if stride is 2, every second element is used.
      __vDSP_A1
              Input vector A1.
      __vDSP_A1Stride
              The stride within vector A1. For example if stride is 2, every second element is used.
      __vDSP_B
              Input vector B.
      __vDSP_BStride
              The stride within vector B. For example if stride is 2, every second element is used.
210   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_C0
        The dot product of A0 and B (on return).
__vDSP_C1
        The dot product of A1 and B (on return).
__vDSP_Length
        The number of elements.
Discussion
Calculates the dot product of A0 with B, then calculates the dot product of A1 with B. The equation for a
single dot product is:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_dotprD
Computes the dot or scalar product of vectors A and B and leaves the result in scalar *C; double precision.
void vDSP_dotprD (
   const double __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const double __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   double *__vDSP_result,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                               211
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_dotpr_s1_15
      Vector fixed-point 1.15 format version of vDSP_dotpr (page 207).
      void vDSP_dotpr_s1_15 (
         const short int *__vDSP_A,
         vDSP_Stride __vDSP_AStride,
         const short int *__vDSP_B,
         vDSP_Stride __vDSP_BStride,
         short int *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_A
              Input vector A.
      __vDSP_AStride
              The stride within vector A. For example if stride is 2, every second element is used.
      __vDSP_B
              Input vector B.
      __vDSP_BStride
              The stride within vector B. For example if stride is 2, every second element is used.
      __vDSP_C
              The dot product (on return).
      __vDSP_N
              The number of elements.
      Discussion
      This performs the following operation:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_dotpr_s8_24
      Vector fixed-point 8.24 format version of vDSP_dotpr (page 207).
212   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_dotpr_s8_24 (
   const int *__vDSP_A,
   vDSP_Stride __vDSP_AStride,
   const int *__vDSP_B,
   vDSP_Stride __vDSP_BStride,
   int *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_A
        Input vector A.
__vDSP_AStride
        The stride within vector A. For example if stride is 2, every second element is used.
__vDSP_B
        Input vector B.
__vDSP_BStride
        The stride within vector B. For example if stride is 2, every second element is used.
__vDSP_C
        The dot product (on return).
__vDSP_N
        The number of elements.
Discussion
This performs the following operation:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_f3x3
Filters an image by performing a two-dimensional convolution with a 3x3 kernel; single precision.
Functions                                                                                               213
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_f3x3 (
         float *__vDSP_signal,
         vDSP_Length __vDSP_rows,
         vDSP_Length __vDSP_cols,
         float *__vDSP_filter,
         float *__vDSP_result
      );
      Discussion
      This function filters an image by performing a two-dimensional convolution with a 3x3 kernel (B) on the
      input matrix A and storing the resulting image in the output matrix C.
The function pads the perimeter of the output image with a border of zeros of width 1.
      B is the 3x3 kernel. M and N are the number of rows and columns, respectively, of the two-dimensional input
      matrix A. M must be greater than or equal to 3. N must be even and greater than or equal to 4.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_f3x3D
      Filters an image by performing a two-dimensional convolution with a 3x3 kernel; double precision.
      void vDSP_f3x3D (
         double *__vDSP_signal,
         vDSP_Length __vDSP_rows,
         vDSP_Length __vDSP_cols,
         double *__vDSP_filter,
         double *__vDSP_result
      );
      Discussion
      This function filters an image by performing a two-dimensional convolution with a 3x3 kernel on the input
      matrix A and storing the resulting image in the output matrix C.
The function pads the perimeter of the output image with a border of zeros of width 1.
214   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
B is the 3x3 kernel. M and N are the number of rows and columns, respectively, of the two-dimensional input
matrix A. M must be greater than or equal to 3. N must be even and greater than or equal to 4.
If any of these criteria is not satisfied, the function invokes scalar code.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_f5x5
Filters an image by performing a two-dimensional convolution with a 5x5 kernel; single precision.
void vDSP_f5x5 (
   float *__vDSP_signal,
   vDSP_Length __vDSP_rows,
   vDSP_Length __vDSP_cols,
   float *__vDSP_filter,
   float *__vDSP_result
);
Discussion
This function filters an image by performing a two-dimensional convolution with a 5x5 kernel (B) on the
input matrix A and storing the resulting image in the output matrix C.
The function pads the perimeter of the output image with a border of zeros of width 2.
B is the 5x5 kernel. M and N are the number of rows and columns, respectively, of the two-dimensional input
matrix A. M must be greater than or equal to 5. N must be even and greater than or equal to 6.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_f5x5D
Filters an image by performing a two-dimensional convolution with a 5x5 kernel; double precision.
Functions                                                                                              215
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_f5x5D (
         double *__vDSP_signal,
         vDSP_Length __vDSP_rows,
         vDSP_Length __vDSP_cols,
         double *__vDSP_filter,
         double *__vDSP_result
      );
      Discussion
      This function filters an image by performing a two-dimensional convolution with a 5x5 kernel (B) on the
      input matrix A and storing the resulting image in the output matrix C.
The function pads the perimeter of the output image with a border of zeros of width 2.
      B is the 5x5 kernel. M and N are the number of rows and columns, respectively, of the two-dimensional input
      matrix A. M must be greater than or equal to 5. N must be even and greater than or equal to 6.
If any of these criteria is not satisfied, the function invokes scalar code.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_FFT16_copv
      Performs a 16-element FFT on interleaved complex data.
      void vDSP_FFT16_copv (
         float *__vDSP_Output,
         const float *__vDSP_Input,
         FFTDirection __vDSP_Direction
      );
      Parameters
      __vDSP_Output
              A vector-block-aligned output array.
      __vDSP_Input
              A vector-block-aligned input array.
216   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_Direction
      kFFTDirection_Forward (page 552) or kFFTDirection_Inverse (page 552), indicating whether
        to perform a forward or inverse transform.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_FFT16_zopv
Performs a 16-element FFT on split complex data.
void vDSP_FFT16_zopv (
   float *__vDSP_Or,
   float *__vDSP_Oi,
   const float *__vDSP_Ir,
   const float *__vDSP_Ii,
   FFTDirection __vDSP_Direction
);
Parameters
__vDSP_Or
        Output vector for real parts.
__vDSP_Oi
        Output vector for imaginary parts.
__vDSP_Ir
        Input vector for real parts.
__vDSP_Ii
        Input vector for imaginary parts.
__vDSP_Direction
      kFFTDirection_Forward (page 552) or kFFTDirection_Inverse (page 552), indicating whether
        to perform a forward or inverse transform.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zip
Computes an in-place single-precision complex discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse).
Functions                                                                                              217
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fft2d_zip (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_strideInRow,
         vDSP_Stride __vDSP_strideInCol,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
              transform function.
      ioData
              A complex vector input.
      strideInRow
              Specifies a stride across each row of the matrix signal. Specifying 1 for strideInRow processes
              every element across each row, specifying 2 processes every other element across each row, and so
              forth.
      strideInCol
              Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
              is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
              equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
              is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
              is 0, every other element of each row is processed.
              If not 0, parameter strideInCol represents the distance between each row of the matrix. If parameter
              strideInCol is 1024, for instance, complex element 512 of the matrix equates to element (1,0),
              element 1024 equates to element (2,0), and so forth.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for parameter log2nInCol and 6 for parameter log2nInRow. log2nInRow must
              be between 2 and 10, inclusive.
      direction
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of direction.
      Discussion
      This performs the following operation:
218   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zipD
Computes an in-place double-precision complex discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse).
void vDSP_fft2d_zipD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_strideInRow,
   vDSP_Stride __vDSP_strideInCol,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
        transform function.
ioData
        A complex vector input.
strideInRow
        Specifies a stride across each row of the matrix signal. Specifying 1 for strideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
Functions                                                                                              219
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      strideInCol
              Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
              is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
              equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
              is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
              is 0, every other element of each row is processed.
              If not 0, parameter strideInCol represents the distance between each row of the matrix. If parameter
              strideInCol is 1024, for instance, complex element 512 of the matrix equates to element (1,0),
              element 1024 equates to element (2,0), and so forth.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for parameter log2nInCol and 6 for parameter log2nInRow. log2nInRow must
              be between 2 and 10, inclusive.
      direction
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of direction.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zipt
      Computes an in-place single-precision complex discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
      intermediate results.
220   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft2d_zipt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_strideInRow,
   vDSP_Stride __vDSP_strideInCol,
   DSPSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
        transform function.
ioData
        A complex vector input.
strideInRow
        Specifies a stride across each row of the matrix signal. Specifying 1 for strideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
strideInCol
        Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
        is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
        equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
        is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
        is 0, every other element of each row is processed.
        If not 0, parameter strideInCol represents the distance between each row of the matrix. If parameter
        strideInCol is 1024, for instance, complex element 512 of the matrix equates to element (1,0),
        element 1024 equates to element (2,0), and so forth.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 16 KB or 4*n, where log2n = log2nInCol + log2nInRow.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        2 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for parameter log2nInCol and 6 for parameter log2nInRow. log2nInRow must
        be between 2 and 10, inclusive.
direction
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of direction.
Discussion
This performs the following operation:
Functions                                                                                                221
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_ziptD
      Computes an in-place double-precision complex discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
      intermediate results.
      void vDSP_fft2d_ziptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_strideInRow,
         vDSP_Stride __vDSP_strideInCol,
         DSPDoubleSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
              transform function.
      ioData
              A complex vector input.
      strideInRow
              Specifies a stride across each row of the matrix signal. Specifying 1 for strideInRow processes
              every element across each row, specifying 2 processes every other element across each row, and so
              forth.
222   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
strideInCol
        Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
        is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
        equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
        is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
        is 0, every other element of each row is processed.
        If not 0, parameter strideInCol represents the distance between each row of the matrix. If parameter
        strideInCol is 1024, for instance, complex element 512 of the matrix equates to element (1,0),
        element 1024 equates to element (2,0), and so forth.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 16 KB or 4*n, where log2n = log2nInCol + log2nInRow.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        2 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for parameter log2nInCol and 6 for parameter log2nInRow. log2nInRow must
        be between 2 and 10, inclusive.
direction
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of direction.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                223
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_fft2d_zop
      Computes an out-of-place single-precision complex discrete FFT, either from the spatial domain to the
      frequency domain (forward) or from the frequency domain to the spatial domain (inverse).
      void vDSP_fft2d_zop (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStrideInRow,
         vDSP_Stride __vDSP_signalStrideInCol,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResultInRow,
         vDSP_Stride __vDSP_strideResultInCol,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
              transform function.
      signal
              A complex vector signal input.
      signalStrideInRow
              Specifies a stride across each row of matrix a. Specifying 1 for signalStrideInRow processes every
              element across each row, specifying 2 processes every other element across each row, and so forth.
      signalStrideInCol
              If not 0, this parameter represents the distance between each row of the input /output matrix.
      result
              The complex vector signal output.
      strideResultInRow
              Specifies a row stride for output matrix result in the same way that signalStrideInRow specifies
              a stride for input the input /output matrix.
      strideResultInCol
              Specifies a column stride for output matrix result in the same way that signalStrideInCol
              specifies a stride for input the input /output matrix.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
              inclusive.
      flag
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of flag.
224   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zopD
Computes an out-of-place double-precision complex discrete FFT, either from the spatial domain to the
frequency domain (forward) or from the frequency domain to the spatial domain (inverse).
void vDSP_fft2d_zopD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStrideInRow,
   vDSP_Stride __vDSP_signalStrideInCol,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResultInRow,
   vDSP_Stride __vDSP_strideResultInCol,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
        transform function.
signal
        A complex vector signal input.
signalStrideInRow
        Specifies a stride across each row of matrix a. Specifying 1 for signalStrideInRow processes every
        element across each row, specifying 2 processes every other element across each row, and so forth.
signalStrideInCol
        If not 0, this parameter represents the distance between each row of the input /output matrix.
result
        The complex vector signal output.
Functions                                                                                                225
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      strideResultInRow
              Specifies a row stride for output matrix result in the same way that signalStrideInRow specifies
              a stride for input the input /output matrix.
      strideResultInCol
              Specifies a column stride for output matrix result in the same way that signalStrideInCol
              specifies a stride for input the input /output matrix.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
              inclusive.
      flag
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of flag.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zopt
      Computes an out-of-place single-precision complex discrete FFT, either from the spatial domain to the
      frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used
      for intermediate results.
226   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft2d_zopt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStrideInRow,
   vDSP_Stride __vDSP_signalStrideInCol,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResultInRow,
   vDSP_Stride __vDSP_strideResultInCol,
   DSPSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
        transform function.
signal
        A complex vector signal input.
signalStrideInRow
        Specifies a stride across each row of matrix a. Specifying 1 for signalStrideInRow processes every
        element across each row, specifying 2 processes every other element across each row, and so forth.
signalStrideInCol
        If not 0, this parameter represents the distance between each row of the input /output matrix. If
        parameter signalStrideInCol is 1024, for instance, element 512 equates to element (1,0) of matrix a,
        element 1024 equates to element (2,0), and so forth.
result
        The complex vector signal output.
strideResultInRow
        Specifies a row stride for output matrix result in the same way that signalStrideInRow specifies
        a stride for input the input /output matrix.
strideResultInCol
        Specifies a column stride for output matrix result in the same way that signalStrideInCol
        specifies a stride for input the input /output matrix.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 16 KiB or 4*n, where log2n = log2nInCol + log2nInRow.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        2 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
        inclusive.
Functions                                                                                                227
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      flag
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of flag.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zoptD
      Computes an out-of-place double-precision complex discrete FFT, either from the spatial domain to the
      frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used
      for intermediate results.
      void vDSP_fft2d_zoptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStrideInRow,
         vDSP_Stride __vDSP_signalStrideInCol,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResultInRow,
         vDSP_Stride __vDSP_strideResultInCol,
         DSPDoubleSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the
              transform function.
      signal
              A complex vector signal input.
228   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
signalStrideInRow
        Specifies a stride across each row of matrix a. Specifying 1 for signalStrideInRow processes every
        element across each row, specifying 2 processes every other element across each row, and so forth.
signalStrideInCol
        If not 0, this parameter represents the distance between each row of the input /output matrix. If
        parameter signalStrideInCol is 1024, for instance, element 512 equates to element (1,0) of matrix a,
        element 1024 equates to element (2,0), and so forth.
result
        The complex vector signal output.
strideResultInRow
        Specifies a row stride for output matrix result in the same way that signalStrideInRow specifies
        a stride for input the input /output matrix.
strideResultInCol
        Specifies a column stride for output matrix result in the same way that signalStrideInCol
        specifies a stride for input the input /output matrix.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 16 KB or 4*n, where log2n = log2nInCol + log2nInRow.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        2 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
        inclusive.
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                229
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_fft2d_zrip
      Computes an in-place single-precision real discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse).
      void vDSP_fft2d_zrip (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_strideInRow,
         vDSP_Stride __vDSP_strideInCol,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the transform
              function.
      ioData
              A complex vector input.
      strideInRow
              Specifies a stride across each row of the input matrix signal. Specifying 1 for strideInRow processes
              every element across each row, specifying 2 processes every other element across each row, and so
              forth.
      strideInCol
              Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
              is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
              equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
              is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
              is 0, every other element of each row is processed.
              If not 0, strideInCol represents the distance between each row of the matrix. If strideInCol is
              1024, for instance, complex element 512 of the matrix equates to element (1,0), element 1024 equates
              to element (2,0), and so forth.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
              inclusive.
      direction
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of direction.
      Discussion
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
      equivalent frequency-domain data have the same storage requirements.
230   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
form and even reals in stored on the real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zripD
Computes an in-place double-precision real discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse).
void vDSP_fft2d_zripD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_strideInRow,
   vDSP_Stride __vDSP_strideInCol,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the transform
        function.
signal
        A complex vector signal input.
strideInRow
        Specifies a stride across each row of the input matrix signal. Specifying 1 for strideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
Functions                                                                                               231
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      strideInCol
              Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
              is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
              equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
              is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
              is 0, every other element of each row is processed.
              If not 0, strideInCol represents the distance between each row of the matrix. If strideInCol is
              1024, for instance, complex element 512 of the matrix equates to element (1,0), element 1024 equates
              to element (2,0), and so forth.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              2 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 2 and 10,
              inclusive.
      flag
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of flag.
      Discussion
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
      equivalent frequency-domain data have the same storage requirements.
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
No Altivec/SSE support for double precision. The function always invokes scalar code.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
232   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_fft2d_zript
Computes an in-place single-precision real discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
intermediate results.
void vDSP_fft2d_zript (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_strideInRow,
   vDSP_Stride __vDSP_strideInCol,
   DSPSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the transform
        function.
ioData
        A complex vector input.
strideInRow
        Specifies a stride across each row of the input matrix signal. Specifying 1 for strideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
strideInCol
        Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
        is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
        equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
        is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
        is 0, every other element of each row is processed.
        If not 0, strideInCol represents the distance between each row of the matrix. If strideInCol is
        1024, for instance, complex element 512 of the matrix equates to element (1,0), element 1024 equates
        to element (2,0), and so forth.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory required is discussed
        below.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        3 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 3 and 10,
        inclusive.
Functions                                                                                                 233
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      direction
              A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
              Results are undefined for other values of direction.
      Discussion
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
      equivalent frequency-domain data have the same storage requirements.
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
      The space needed in bufferTemp is at most max(9*nr, nc/2) elements in each of realp and imagp. Here is
      an example of how to allocate the space:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zriptD
      Computes an in-place double-precision real discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
      intermediate results.
234   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft2d_zriptD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_strideInRow,
   vDSP_Stride __vDSP_strideInCol,
   DSPDoubleSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the values supplied as parameters log2nInCol and log2nInRow of the transform
        function.
signal
        A complex vector signal input.
strideInRow
        Specifies a stride across each row of the input matrix signal. Specifying 1 for strideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
strideInCol
        Specifies a column stride for the matrix, and should generally be allowed to default unless the matrix
        is a submatrix. Parameter strideInCol can be defaulted by specifying 0. The default column stride
        equals the row stride multiplied by the column count. Thus, if strideInRow is 1 and strideInCol
        is 0, every element of the input /output matrix is processed. If strideInRow is 2 and strideInCol
        is 0, every other element of each row is processed.
        If not 0, strideInCol represents the distance between each row of the matrix. If strideInCol is
        1024, for instance, complex element 512 of the matrix equates to element (1,0), element 1024 equates
        to element (2,0), and so forth.
bufferTemp
        A temporary matrix used for storing interim results. The size of temporary memory required is discussed
        below.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        3 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 3 and 10,
        inclusive.
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Discussion
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
equivalent frequency-domain data have the same storage requirements.
Functions                                                                                                 235
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
      The space needed in bufferTemp is at most max(9*nr, nc/2) elements in each of realp and imagp. Here is
      an example of how to allocate the space:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zrop
      Computes an out-of-place single-precision real discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse).
236   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft2d_zrop (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStrideInRow,
   vDSP_Stride __vDSP_signalStrideInCol,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResultInRow,
   vDSP_Stride __vDSP_strideResultInCol,
   vDSP_Length __vDSP_log2nInCol,
   vDSP_Length __vDSP_log2nInRow,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n or log2m, whichever is larger, of the
        transform function.
signal
        A complex vector signal input.
signalStrideInRow
        Specifies a stride across each row of matrix signal. Specifying 1 for signalStrideInRow processes
        every element across each row, specifying 2 processes every other element across each row, and so
        forth.
signalStrideInCol
        If not 0, represents the distance between each row of the input /output matrix. If parameter
        signalStrideInCol is 1024, for instance, element 512 equates to element (1,0) of matrix a, element 1024
        equates to element (2,0), and so forth.
result
        The complex vector signal output.
strideResultInRow
        Specifies a row stride for output matrix c in the same way that signalStrideInRow specifies strides
        for input the matrix.
strideResultInCol
        Specifies a column stride for output matrix c in the same way that signalStrideInCol specify
        strides for input the matrix.
log2nInCol
        The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
        3 and 10, inclusive.
log2nInRow
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 3 and 10,
        inclusive.
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Functions                                                                                                 237
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Discussion
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
      equivalent frequency-domain data have the same storage requirements.
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft2d_zropD
      Computes an out-of-place double-precision real discrete FFT, either from the spatial domain to the frequency
      domain (forward) or from the frequency domain to the spatial domain (inverse).
      void vDSP_fft2d_zropD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_Kr,
         vDSP_Stride __vDSP_Kc,
         DSPDoubleSplitComplex *__vDSP_ioData2,
         vDSP_Stride __vDSP_Ir,
         vDSP_Stride __vDSP_Ic,
         vDSP_Length __vDSP_log2nc,
         vDSP_Length __vDSP_log2nr,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n or log2m, whichever is larger, of the
              transform function.
      ioData
              A complex vector input.
      Kr
              Specifies a stride across each row of matrix signal. Specifying 1 for Kr processes every element across
              each row, specifying 2 processes every other element across each row, and so forth.
      Kc
              If not 0, represents the distance between each row of the input /output matrix. If parameter Kc is
              1024, for instance, element 512 equates to element (1,0) of matrix a, element 1024 equates to element
              (2,0), and so forth.
      ioData2
              The complex vector result.
238   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Ir
        Specifies a row stride for output matrix ioData2 in the same way that Kr specifies strides for input
        the matrix.
Ic
        Specifies a column stride for output matrix ioData2 in the same way that Kc specify strides for input
        matrix ioData.
log2nc
        The base 2 exponent of the number of columns to process for each row. log2nc must be between
        3 and 10, inclusive.
log2nr
        The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
        columns, specify 7 for log2nc and 6 for log2nr. log2nr must be between 3 and 10, inclusive.
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Discussion
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
equivalent frequency-domain data have the same storage requirements.
Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
form and even reals in stored on the real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zropt
Computes an out-of-place single-precision real discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
intermediate results.
Functions                                                                                               239
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fft2d_zropt (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStrideInRow,
         vDSP_Stride __vDSP_signalStrideInCol,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResultInRow,
         vDSP_Stride __vDSP_strideResultInCol,
         DSPSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2nInCol,
         vDSP_Length __vDSP_log2nInRow,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n or log2m, whichever is larger, of the
              transform function.
      signal
              A complex vector signal input.
      signalStrideInRow
              Specifies a stride across each row of matrix signal. Specifying 1 for signalStrideInRow processes
              every element across each row, specifying 2 processes every other element across each row, and so
              forth.
      signalStrideInCol
              If not 0, represents the distance between each row of matrix signal. If parameter
              signalStrideInCol is 1024, for instance, element 512 equates to element (1,0) of matrix signal,
              element 1024 equates to element (2,0), and so forth.
      result
              The complex vector signal output.
      strideResultInRow
              Specifies a row stride for output matrix result in the same way that signalStrideInRow specifies
              strides for input matrix result.
      strideResultInCol
              Specifies a column stride for output matrix c in the same way that signalStrideInCol specify
              strides for input matrix result.
      bufferTemp
              A temporary matrix used for storing interim results. The size of temporary memory for each part (real
              and imaginary) can be calculated using the algorithm shown below.
      log2nInCol
              The base 2 exponent of the number of columns to process for each row. log2nInCol must be between
              3 and 10, inclusive.
      log2nInRow
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nInCol and 6 for log2nInRow. log2nInRow must be between 3 and 10,
              inclusive.
240   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Discussion
Here is the bufferTemp size algorithm:
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
equivalent frequency-domain data have the same storage requirements.
Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
form and even reals in stored on the real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft2d_zroptD
Computes an out-of-place double-precision real discrete FFT, either from the spatial domain to the frequency
domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for
intermediate results.
Functions                                                                                               241
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fft2d_zroptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_Kr,
         vDSP_Stride __vDSP_Kc,
         DSPDoubleSplitComplex *__vDSP_ioData2,
         vDSP_Stride __vDSP_Ir,
         vDSP_Stride __vDSP_Ic,
         DSPDoubleSplitComplex *__vDSP_temp,
         vDSP_Length __vDSP_log2nc,
         vDSP_Length __vDSP_log2nr,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n or log2m, whichever is larger, of the
              transform function.
      ioData
              A complex vector input.
      Kr
              Specifies a stride across each row of matrix signal. Specifying 1 for signalStrideInRow processes
              every element across each row, specifying 2 processes every other element across each row, and so
              forth.
      Kc
              If not 0, represents the distance between each row of the input /output matrix. If parameter
              signalStrideInCol is 1024, for instance, element 512 equates to element (1,0) of matrix a, element 1024
              equates to element (2,0), and so forth.
      ioData2
              The complex vector result.
      Ir
              Specifies a row stride for output matrix ioData2 in the same way that Kr specifies strides for input
              the matrix.
      Ic
              Specifies a column stride for output matrix ioData2 in the same way that Kc specify strides for input
              matrix ioData.
      temp
              A temporary matrix used for storing interim results. The size of temporary memory for each part (real
              and imaginary) is the lower value of 16 KB or 4*n, where log2n = log2nInCol + log2nInRow.
      log2nc
              The base 2 exponent of the number of columns to process for each row. log2nc must be between
              3 and 10, inclusive.
      log2nr
              The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128
              columns, specify 7 for log2nc and 6 for log2nr. log2nr must be between 3 and 10, inclusive.
242   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
flag
        A forward/inverse directional flag, and must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
        Results are undefined for other values of flag.
Discussion
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its
equivalent frequency-domain data have the same storage requirements.
Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
form and even reals in stored on the real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_FFT32_copv
Performs a 32-element FFT on interleaved complex data.
void vDSP_FFT32_copv (
   float *__vDSP_Output,
   const float *__vDSP_Input,
   FFTDirection __vDSP_Direction
);
Parameters
__vDSP_Output
        A vector-block-aligned output array.
__vDSP_Input
        A vector-block-aligned input array.
__vDSP_Direction
      kFFTDirection_Forward (page 552) or kFFTDirection_Inverse (page 552), indicating whether
        to perform a forward or inverse transform.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_FFT32_zopv
Performs a 32-element FFT on split complex data.
Functions                                                                                               243
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_FFT32_zopv (
         float *__vDSP_Or,
         float *__vDSP_Oi,
         const float *__vDSP_Ir,
         const float *__vDSP_Ii,
         FFTDirection __vDSP_Direction
      );
      Parameters
      __vDSP_Or
              Output vector for real parts.
      __vDSP_Oi
              Output vector for imaginary parts.
      __vDSP_Ir
              Input vector for real parts.
      __vDSP_Ii
              Input vector for imaginary parts.
      __vDSP_Direction
            kFFTDirection_Forward (page 552) or kFFTDirection_Inverse (page 552), indicating whether
              to perform a forward or inverse transform.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft3_zop
      Computes an out-of-place radix-3 complex Fourier transform, either forward or inverse. The number of input
      and output values processed equals 3 times the power of 2 specified by parameter log2n; single precision.
      void vDSP_fft3_zop (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_resultStride,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Use vDSP_create_fftsetup (page 195), to initialize this function. kFFTRadix3 (page 552) must be
              specified in the call to vDSP_create_fftsetup. setup is preserved for reuse.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through the input vector signal. To process every element of the vector,
              specify 1 for parameter signalStride; to process every other element, specify 2. The value of
              signalStride should be 1 for best performance.
244   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
result
           The complex vector signal output.
resultStride
           Specifies an address stride for the result. The value of resultStride should be 1 for best performance.
log2n
           The base 2 exponent of the number of elements to process in a single input signal. log2n must be
           between 3 and 15, inclusive.
flag
           A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
           forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
                    N   1                                                 N   1
                                                                     -1
    FDFT(Xm) =      ∑       Xn   e ( -j2 π nm ) / N       IDFT(Xm) =
                                                                     N    ∑       Xn e
                                                                                       ( -j2 π nm ) / N
n=0 n=0
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft3_zopD
Computes an out-of-place radix-3 complex Fourier transform, either forward or inverse. The number of input
and output values processed equals 3 times the power of 2 specified by parameter log2n; double precision.
void vDSP_fft3_zopD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_K,
   DSPDoubleSplitComplex *__vDSP_ioData2,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_flag
);
Parameters
setup
           Use vDSP_create_fftsetupD (page 196), to initialize this function. kFFTRadix3 (page 552) must
           be specified in the call to vDSP_create_fftsetupD. setup is preserved for reuse.
Functions                                                                                                    245
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      signal
                 A complex vector input.
      K
                 Specifies an address stride through the input vector signal. To process every element of the vector,
                 specify 1 for parameter K; to process every other element, specify 2. The value of K should be 1 for
                 best performance.
      result
                 The complex vector result.
      L
                 Specifies an address stride for the result. The value of L should be 1 for best performance.
      log2n
                 The base 2 exponent of the number of elements to process in a single input signal. log2n must be
                 between 3 and 15, inclusive.
      flag
                 A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
                 forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
                          N   1                                                 N   1
                                                                           -1
          FDFT(Xm) =      ∑       Xn   e ( -j2 π nm ) / N       IDFT(Xm) =
                                                                           N    ∑       Xn e
                                                                                             ( -j2 π nm ) / N
n=0 n=0
      See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft5_zop
      Computes an out-of-place radix-5 complex Fourier transform, either forward or inverse. The number of input
      and output values processed equals 5 times the power of 2 specified by parameter log2n; single precision.
246   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft5_zop (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_resultStride,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_flag
);
Parameters
setup
           Use vDSP_create_fftsetup (page 195), to initialize this function. kFFTRadix5 (page 553) must be
           specified in the call to vDSP_create_fftsetup. setup is preserved for reuse.
signal
           A complex vector signal input.
signalStride
           Specifies an address stride through the input vector signal. To process every element of the vector,
           specify 1 for parameter signalStride; to process every other element, specify 2. The value of
           signalStride should be 1 for best performance.
result
           The complex vector signal output.
resultStride
           Specifies an address stride for the result. The value of resultStride should be 1 for best performance.
log2n
           The base 2 exponent of the number of elements to process in a single input signal. log2n must be
           between 3 and 15, inclusive.
flag
           A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
           forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
                    N   1                                                 N   1
                                                                     -1
    FDFT(Xm) =      ∑       Xn   e ( -j2 π nm ) / N       IDFT(Xm) =
                                                                     N    ∑       Xn e
                                                                                       ( -j2 π nm ) / N
n=0 n=0
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                    247
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_fft5_zopD
      Computes an out-of-place radix-5 complex Fourier transform, either forward or inverse. The number of input
      and output values processed equals 5 times the power of 2 specified by parameter log2n; double precision.
      void vDSP_fft5_zopD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_K,
         DSPDoubleSplitComplex *__vDSP_ioData2,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
                 Use vDSP_create_fftsetupD (page 196), to initialize this function. kFFTRadix5 (page 553) must
                 be specified in the call to vDSP_create_fftsetupD. setup is preserved for reuse.
      signal
                 A complex vector input.
      K
                 Specifies an address stride through the input vector signal. To process every element of the vector,
                 specify 1 for parameter K; to process every other element, specify 2.
      result
                 The complex vector result.
      L
                 Specifies an address stride for the result.
      log2n
                 The base 2 exponent of the number of elements to process in a single input signal.
      flag
                 A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
                 forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
                          N   1                                                 N   1
                                                                           -1
          FDFT(Xm) =       ∑      Xn   e ( -j2 π nm ) / N       IDFT(Xm) =
                                                                           N    ∑       Xn e
                                                                                             ( -j2 π nm ) / N
n=0 n=0
      See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
248   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_fftm_zip
Performs the same operation as vDSP_fft_zip (page 270) on multiple signals with a single call.
void vDSP_fftm_zip (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector that stores the input and output signal.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n.
numFFT
        The number of signals.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This function allows you to perform Discrete Fourier Transforms on multiple input signals using a single call.
They will work for input signals of 4 points or greater. Each of the input signals processed by a given call
must have the same length and address stride.
The functions compute in-place complex discrete Fourier transforms of the input signals, either from the
time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Functions                                                                                                 249
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_zipD
      Performs the same operation as vDSP_fft_zipD (page 271) on multiple signals with a single call.
      void vDSP_fftm_zipD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector that stores the input and output signal.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
      log2n
              The base 2 exponent of the number of elements to process in a single input signal. For example, to
              process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
              12, inclusive.
      numFFT
              The number of signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This function allows you to perform Discrete Fourier Transforms on multiple signals at once, using a single
      call. It will work for input signals of 4 points or greater. Each of the input signals processed by a given call
      must have the same length and address stride.
      The function computes in-place complex discrete Fourier transforms of the input signals, either from the
      time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
250   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zipt
Performs the same operation as vDSP_fft_zipt (page 272) on multiple signals with a single call.
void vDSP_fftm_zipt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPSplitComplex *__vDSP_temp,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector that stores the input and output signal.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
        be 1 for best performance.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
        12, inclusive.
numFFT
        The number of different input signals.
Functions                                                                                                   251
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The function allows you to perform Fourier transforms on a number of different input signals at once, using
      a single call. It can be used for efficient processing of small input signals (less than 512 points). It will work
      for input signals of 4 points or greater. Each of the input signals processed by a given call must have the
      same length and address stride. The input signals are concatenated into a single input/output vector, the
      parameter signal.
      The function computes in-place complex discrete Fourier transforms of the input signals, either from the
      time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_ziptD
      Performs the same operation as vDSP_fft_ziptD (page 273) on multiple signals with a single call.
      void vDSP_fftm_ziptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPDoubleSplitComplex *__vDSP_temp,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector that stores the input and output signal.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
              be 1 for best performance.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
252   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
        12, inclusive.
numFFT
        The number of different input signals.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
The function allows you to perform Fourier transforms on a number of different input signals at once, using
a single call. It can be used for efficient processing of small input signals (less than 512 points). It will work
for input signals of 4 points or greater. Each of the input signals processed by a given call must have the
same length and address stride. The input signals are concatenated into a single input/output vector, the
parameter signal.
The function computes in-place complex discrete Fourier transforms of the input signals, either from the
time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zop
Performs the same operation as vDSP_fft_zop (page 274) on multiple signals with a single call.
Functions                                                                                                    253
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fftm_zop (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_resultStride,
         vDSP_Stride __vDSP_rfftStride,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector that stores the input signal.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
              be 1 for best performance.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
      result
              The complex vector signal output.
      resultStride
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
              best performance.
      rfftStride
              The number of elements between the first element of one result vector and the next in the output
              vector result.
      log2n
              The base 2 exponent of the number of elements to process in a single input signal. For example, to
              process 512 elements, specify 9 for parameter log2n.
      numFFT
              The number of input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
254   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Discussion
The function allows you to perform Discrete Fourier transforms on a number of different input signals at
once, using a single call. It can be used for efficient processing of small input signals (less than 512 points).
It will work for input signals of 4 points or greater. Each of the input signals processed by a given call must
have the same length and address stride. The input signals are concatenated into a single input vector,
signal, and single output vector, result.
The function computes out-of-place complex discrete Fourier transforms of the input signals, either from
the time domain to the frequency domain (forward) or from the frequency domain to the time domain
(inverse).
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zopD
Performs the same operation as vDSP_fft_zopD (page 276) on multiple signals with a single call.
void vDSP_fftm_zopD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_resultStride,
   vDSP_Stride __vDSP_rfftStride,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195) or vDSP_create_fftsetupD (page 196). The value supplied
        as parameter log2n of the earlier call to the setup function must equal or exceed the value supplied
        as parameter log2n of this transform function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
        be 1 for best performance.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
Functions                                                                                                    255
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      result
              The complex vector signal output.
      resultStride
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
              best performance.
      rfftStride
              The number of elements between the first element of one result vector and the next in the output
              vector result.
      log2n
              The base 2 exponent of the number of elements to process in a single input signal. For example, to
              process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
              12, inclusive.
      numFFT
              The number of different input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The function allows you to perform Fourier transforms on a number of different input signals at once, using
      a single call. It can be used for efficient processing of small input signals (less than 512 points). It will work
      for input signals of 4 points or greater. Each of the input signals processed by a given call must have the
      same length and address stride. The input signals are concatenated into a single input/output vector, the
      parameter signal.
      The function computes out-of-place complex discrete Fourier transforms of the input signals, either from
      the time domain to the frequency domain (forward) or from the frequency domain to the time domain
      (inverse).
      See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_zopt
      Performs the same operation as vDSP_fft_zopt (page 277) on multiple signals with a single call.
256   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fftm_zopt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_resultStride,
   vDSP_Stride __vDSP_rfftStride,
   DSPSplitComplex *__vDSP_temp,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
        be 1 for best performance.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
result
        The complex vector signal output.
resultStride
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
        best performance.
rfftStride
        The number of elements between the first element of one result vector and the next in the output
        vector result.
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
        12, inclusive.
numFFT
        The number of different input signals.
Functions                                                                                                   257
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The function allows you to perform Fourier transforms on a number of different input signals at once, using
      a single call. It can be used for efficient processing of small input signals (less than 512 points). It will work
      for input signals of 4 points or greater. Each of the input signals processed by a given call must have the
      same length and address stride. The input signals are concatenated into a single input/output vector, the
      parameter signal.
      The function computes out-of-place complex discrete Fourier transforms of the input signals, either from
      the time domain to the frequency domain (forward) or from the frequency domain to the time domain
      (inverse).
      See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_zoptD
      Performs the same operation as vDSP_fft_zoptD (page 278) on multiple signals with a single call.
      void vDSP_fftm_zoptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_resultStride,
         vDSP_Stride __vDSP_rfftStride,
         DSPDoubleSplitComplex *__vDSP_temp,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2. The value of signalStride should
              be 1 for best performance.
258   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
result
        The complex vector signal output.
resultStride
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2.
rfftStride
        The number of elements between the first element of one result vector and the next in the output
        vector result.
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n. The value of log2n must be between 2 and
        12, inclusive.
numFFT
        The number of different input signals.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
The function allows you to perform Fourier transforms on a number of different input signals at once, using
a single call. It can be used for efficient processing of small input signals (less than 512 points). It will work
for input signals of 4 points or greater. Each of the input signals processed by a given call must have the
same length and address stride. The input signals are concatenated into a single input/output vector, the
parameter signal.
The function computes out-of-place complex discrete Fourier transforms of the input signals, either from
the time domain to the frequency domain (forward) or from the frequency domain to the time domain
(inverse).
See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zrip
Performs the same operation as vDSP_fft_zrip (page 279) on multiple signals with a single call.
Functions                                                                                                    259
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fftm_zrip (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
      log2n
              The base 2 exponent of the number of elements to process in a single input signal. For example, to
              process 512 elements, specify 9 for parameter log2n.
      numFFT
              The number of input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The function allows you to perform Discrete Fourier Transforms on multiple signals using a single call. They
      will work for input signals of 4 points or greater. Each of the input signals processed by a given call must
      have the same length and address stride.
      The functions compute in-place real Discrete Fourier Transforms of the input signals, either from the time
      domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
260   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_fftm_zripD
Performs the same operation as vDSP_fft_zripD (page 281) on multiple signals with a single call.
void vDSP_fftm_zripD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n.
numFFT
        The number of input signals.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
The functions allow you to perform Fourier transforms on a number of different input signals at once, using
a single call. They can be used for efficient processing of small input signals (less than 512 points). They will
work for input signals of 4 points or greater. Each of the input signals processed by a given call must have
the same length and address stride.
The functions compute in-place real discrete Fourier transforms of the input signals, either from the time
domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                   261
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_fftm_zript
      Performs the same operation as vDSP_fft_zript (page 282) on multiple signals with a single call.
      void vDSP_fftm_zript (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPSplitComplex *__vDSP_temp,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through the input signals. To process every element of each signal, specify
              1 for parameter signalStride; to process every other element, specify 2.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
      temp
              A temporary vector used for storing interim results. The size of temporary memory for each part (real
              and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
              buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
              should be 32-byte aligned for best performance.
      log2n
              The base 2 exponent of the number of elements to process in a single input signal. For example, to
              process 512 elements, specify 9 for parameter log2n.
      numFFT
              The number of different input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The functions allow you to perform Fourier transforms on a number of different input signals at once, using
      a single call. They can be used for efficient processing of small input signals (less than 512 points). They will
      work for input signals of 4 points or greater. Each of the input signals processed by a given call must have
      the same length and address stride.
262   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
The functions compute in-place real Discrete Fourier Transforms of the input signals, either from the time
domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zriptD
Performs the same operation as vDSP_fft_zriptD (page 283) on multiple signals with a single call.
void vDSP_fftm_zriptD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPDoubleSplitComplex *__vDSP_temp,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through the input signals. To process every element of each signal, specify
        1 for parameter signalStride; to process every other element, specify 2.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process in a single input signal. For example, to
        process 512 elements, specify 9 for parameter log2n.
numFFT
        The number of input signals.
Functions                                                                                                 263
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The functions allow you to perform Fourier transforms on a number of different input signals at once, using
      a single call. They can be used for efficient processing of small input signals (less than 512 points). They will
      work for input signals of 4 points or greater. Each of the input signals processed by a given call must have
      the same length and address stride.
      The functions compute in-place real Discrete Fourier Transforms of the input signals, either from the time
      domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_zrop
      Performs the same operation as vDSP_fft_zrop (page 284) on multiple signals with a single call.
      void vDSP_fftm_zrop (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_resultStride,
         vDSP_Stride __vDSP_rfftStride,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through input signals. To process every element of each signal, specify a
              stride of 1; to process every other element, specify 2.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
264   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
result
        The complex vector signal output.
resultStride
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2.
rfftStride
        The number of elements between the first element of one result vector and the next in the output
        vector result.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
numFFT
        The number of input signals.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This function allows you to perform Discrete Fourier Transforms on multiple input signals using a single call.
They can be used for efficient processing of small input signals (less than 512 points). They will work for input
signals of 4 points or greater. Each of the input signals processed by a given call must have the same length
and address stride. The input signals are concatenated into a single input vector, signal, and a single output
vector, result.
The functions compute out-of-place real Discrete Fourier Transforms of the input signals, either from the
time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zropD
Performs the same operation as VDSP_fft_zropD on multiple signals with a single call.
Functions                                                                                                   265
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fftm_zropD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         vDSP_Stride __vDSP_fftStride,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_resultStride,
         vDSP_Stride __vDSP_rfftStride,
         vDSP_Length __vDSP_log2n,
         vDSP_Length __vDSP_numFFT,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through input signals. To process every element of each signal, specify a
              stride of 1; to process every other element, specify 2. The value of signalStride should be 1 for
              best performance.
      fftStride
              The number of elements between the first element of one input signal and the first element of the
              next (which is also to length of each input signal, measured in elements).
      result
              The complex vector signal output.
      resultStride
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
              best performance.
      rfftStride
              The number of elements between the first element of one result vector and the next in the output
              vector result.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      numFFT
              The number of input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This function allows you to perform Discrete Fourier Transforms on multiple input signals using a single call.
      They can be used for efficient processing of small input signals (less than 512 points). They will work for input
      signals of 4 points or greater. Each of the input signals processed by a given call must have the same length
      and address stride. The input signals are concatenated into a single input vector, the parameter signal.
266   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
The functions compute out-of-place real Discrete Fourier Transforms of the input signals, either from the
time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
Transforms”.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fftm_zropt
Performs the same operation as VDSP_fft_zropt on multiple signals with a single call.
void vDSP_fftm_zropt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_resultStride,
   vDSP_Stride __vDSP_rfftStride,
   DSPSplitComplex *__vDSP_temp,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through input signals. To process every element of each signal, specify a
        stride of 1; to process every other element, specify 2. The value of signalStride should be 1 for
        best performance.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
result
        The complex vector signal output.
resultStride
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
        best performance.
Functions                                                                                                267
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      rfftStride
              The number of elements between the first element of one result vector and the next in the output
              vector result.
      temp
              A temporary vector used for storing interim results. The size of temporary memory for each part (real
              and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
              buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
              should be 32-byte aligned for best performance.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      numFFT
              The number of input signals.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The functions allow you to perform Fourier transforms on a number of different input signals at once, using
      a single call. They can be used for efficient processing of small input signals (less than 512 points). They will
      work for input signals of 4 points or greater. Each of the input signals processed by a given call must have
      the same length and address stride. The input signals are concatenated into a single input vector, the
      parameter signal.
      The functions compute out-of-place real discrete Fourier transforms of the input signals, either from the time
      domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      See also functions vDSP_create_fftsetup (page 195), vDSP_destroy_fftsetup (page 201), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fftm_zroptD
      Performs the same operation as VDSP_fft_zroptD on multiple signals with a single call.
268   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fftm_zroptD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   vDSP_Stride __vDSP_fftStride,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_resultStride,
   vDSP_Stride __vDSP_rfftStride,
   DSPDoubleSplitComplex *__vDSP_temp,
   vDSP_Length __vDSP_log2n,
   vDSP_Length __vDSP_numFFT,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through input signals. To process every element of each signal, specify a
        stride of 1; to process every other element, specify 2. The value of signalStride should be 1 for
        best performance.
fftStride
        The number of elements between the first element of one input signal and the first element of the
        next (which is also to length of each input signal, measured in elements).
result
        The complex vector signal output.
resultStride
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2. The value of resultStride should be 1 for
        best performance.
rfftStride
        The number of elements between the first element of one result vector and the next in the output
        vector result.
temp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, temp.realp and temp.imagp
        should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
numFFT
        The number of different input signals.
Functions                                                                                                269
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      The functions allow you to perform Fourier transforms on a number of different input signals at once, using
      a single call. They can be used for efficient processing of small input signals (less than 512 points). They will
      work for input signals of 4 points or greater. Each of the input signals processed by a given call must have
      the same length and address stride. The input signals are concatenated into a single input vector, the
      parameter signal.
      The functions compute out-of-place real discrete Fourier transforms of the input signals, either from the time
      domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      See also functions vDSP_create_fftsetupD (page 196), vDSP_destroy_fftsetupD (page 202), and “Using Fourier
      Transforms”.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zip
      Computes an in-place single-precision complex discrete Fourier transform of the input/output vector signal,
      either from the time domain to the frequency domain (forward) or from the frequency domain to the time
      domain (inverse).
      void vDSP_fft_zip (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_stride,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector that stores the input and output signal.
      stride
              Specifies an address stride through the input/output vector signal. To process every element of the
              vector, specify 1 for parameter stride; to process every other element, specify 2.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
270   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_zipD
Computes an in-place double-precision complex discrete Fourier transform of the input/output vector signal,
either from the time domain to the frequency domain (forward) or from the frequency domain to the time
domain (inverse).
void vDSP_fft_zipD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_stride,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
signal
        A complex vector that stores the input and output signal.
stride
        Specifies an address stride through the input/output vector signal. To process every element of the
        vector, specify 1 for parameter stride; to process every other element, specify 2. The value of stride
        should be 1 for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
Functions                                                                                                271
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      direction
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zipt
      Computes an in-place single-precision complex discrete Fourier transform of the input/output vector signal,
      either from the time domain to the frequency domain (forward) or from the frequency domain to the time
      domain (inverse). A buffer is used for intermediate results.
      void vDSP_fft_zipt (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_stride,
         DSPSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the earlier call to
              the setup function must equal or exceed the value supplied as parameter log2n of this transform
              function.
      signal
              A complex vector that stores the input and output signal.
      stride
              Specifies an address stride through the input/output vector signal. To process every element of the
              vector, specify 1 for parameter stride; to process every other element, specify 2.
272   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, bufferTemp.realp and
        bufferTemp.imagp should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_ziptD
Computes an in-place double-precision complex discrete Fourier transform of the input/output vector signal,
either from the time domain to the frequency domain (forward) or from the frequency domain to the time
domain (inverse). A buffer is used for intermediate results.
void vDSP_fft_ziptD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_stride,
   DSPDoubleSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the earlier call to
        the setup function must equal or exceed the value supplied as parameter log2n of this transform
        function.
Functions                                                                                               273
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      signal
              A complex vector that stores the input and output signal.
      stride
              Specifies an address stride through the input/output vector signal. To process every element of the
              vector, specify 1 for parameter stride; to process every other element, specify 2.
      bufferTemp
              A temporary vector used for storing interim results. The size of temporary memory for each part (real
              and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
              buffer of size 2^(log2n) for each part (real and imaginary). If possible, bufferTemp.realp and
              bufferTemp.imagp should be 32-byte aligned for best performance.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      direction
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zop
      Computes an out-of-place single-precision complex discrete Fourier transform of the input vector, either
      from the time domain to the frequency domain (forward) or from the frequency domain to the time domain
      (inverse).
274   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft_zop (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
signal
        A complex vector that stores the input and output signal.
signalStride
        Specifies an address stride through input vector signal. Parameter strideResult specifies an address
        stride through output vector result. Thus, to process every element, specify a signalStride of 1; to
        process every other element, specify 2.
result
        The complex vector signal output.
strideResult
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                275
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_fft_zopD
      Computes an out-of-place double-precision complex discrete Fourier transform of the input vector, either
      from the time domain to the frequency domain (forward) or from the frequency domain to the time domain
      (inverse).
      void vDSP_fft_zopD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195) or vDSP_create_fftsetupD (page 196). The value supplied
              as parameter log2n of the setup function must equal or exceed the value supplied as parameter
              log2n of this transform function.
      signal
              A complex vector that stores the input signal.
      signalStride
              Specifies an address stride through input vector signal. Parameter strideResult specifies an address
              stride through output vector result. Thus, to process every element, specify a signalStride of 1; to
              process every other element, specify 2. The values of signalStride and strideResult should be
              1 for best performance.
      result
              The complex vector signal output.
      strideResult
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of strideResult should be 1 for
              best performance.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      direction
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
276   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_zopt
Computes an out-of-place single-precision complex discrete Fourier transform of the input vector, either
from the time domain to the frequency domain (forward) or from the frequency domain to the time domain
(inverse).
void vDSP_fft_zopt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   DSPSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
signal
        A complex vector that stores the input and output signal.
signalStride
        Specifies an address stride through input vector signal. Parameter strideResult specifies an address
        stride through output vector result. Thus, to process every element, specify a signalStride of 1; to
        process every other element, specify 2. The values of signalStride and strideResult should be 1
        for best performance.
result
        The complex vector signal output.
strideResult
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2.
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k. Or you can simply pass the buffer of size 2^(log2n)
        for each part (real and imaginary). If possible, tempBuffer.realp and tempBuffer.imagp should be
        32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
Functions                                                                                                277
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      direction
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zoptD
      Computes an out-of-place double-precision complex discrete Fourier transform of the input vector, either
      from the time domain to the frequency domain (forward) or from the frequency domain to the time domain
      (inverse).
      void vDSP_fft_zoptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         DSPDoubleSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n of this transform function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through input vector signal. Parameter strideResult specifies an address
              stride through output vector result. Thus, to process every element, specify a signalStride of 1; to
              process every other element, specify 2. The values of signalStride and strideResult should be 1
              for best performance.
278   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
result
        The complex vector signal output.
strideResult
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2.
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k. Or you can simply pass the buffer of size 2^(log2n)
        for each part (real and imaginary). If possible, tempBuffer.realp and tempBuffer.imagp should be
        32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_zrip
Computes an in-place single-precision real discrete Fourier transform, either from the time domain to the
frequency domain (forward) or from the frequency domain to the time domain (inverse).
Functions                                                                                                279
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_fft_zrip (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_stride,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n of this transform function.
      C
              A complex input/output vector.
      K
              Specifies an address stride through the input/output vector. To process every element of the vector,
              specify 1 for parameter signalStride; to process every other element, specify 2.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      F
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      Forward transforms read real input and write packed complex output. You can find more details on the
      packing format in vDSP Programming Guide. Inverse transforms read packed complex input and write real
      output. As a result of packing the frequency-domain data, time-domain data and its equivalent
      frequency-domain data have the same storage requirements.
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
280   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_fft_zripD
Computes an in-place double-precision real discrete Fourier transform, either from the time domain to the
frequency domain (forward) or from the frequency domain to the time domain (inverse).
void vDSP_fft_zripD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_stride,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
C
        A complex vector input.
K
        Specifies an address stride through the input/output vector. To process every element of the vector,
        specify 1 for parameter stride; to process every other element, specify 2.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
F
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, time-domain data and its
equivalent frequency-domain data have the same storage requirements.
Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
form and even reals in stored on the real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                               281
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_fft_zript
      Computes an in-place single-precision real discrete Fourier transform, either from the time domain to the
      frequency domain (forward) or from the frequency domain to the time domain (inverse).
      void vDSP_fft_zript (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_ioData,
         vDSP_Stride __vDSP_stride,
         DSPSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n of this transform function.
      C
              A complex vector input.
      K
              Specifies an address stride through the input/output vector. To process every element of the vector,
              specify 1 for parameter signalStride; to process every other element, specify 2.
      bufferTemp
              A temporary vector used for storing interim results. The size of temporary memory for each part (real
              and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
              buffer of size 2^(log2n) for each part (real and imaginary). If possible, tempBuffer.realp and
              tempBuffer.imagp should be 32-byte aligned for best performance.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      F
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, time-domain data and its
      equivalent frequency-domain data have the same storage requirements.
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
282   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_zriptD
Computes an in-place double-precision real discrete Fourier transform, either from the time domain to the
frequency domain (forward) or from the frequency domain to the time domain (inverse).
void vDSP_fft_zriptD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_ioData,
   vDSP_Stride __vDSP_stride,
   DSPDoubleSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
C
        A complex vector input.
K
        Specifies an address stride through the input/output vector. To process every element of the vector,
        specify 1 for parameter signalStride; to process every other element, specify 2.
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, tempBuffer.realp and
        tempBuffer.imagp should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
F
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, time-domain data and its
equivalent frequency-domain data have the same storage requirements.
Functions                                                                                               283
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex
      form and even reals in stored on the real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zrop
      Computes an out-of-place single-precision real discrete Fourier transform, either from the time domain to
      the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      void vDSP_fft_zrop (
         FFTSetup __vDSP_setup,
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_direction
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n of this transform function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through input vector signal. Thus, to process every element, specify a stride
              of 1; to process every other element, specify 2. The value of signalStride should be 1 for best
              performance.
      result
              The complex vector signal output.
      strideResult
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2.
284   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
Forward transforms read real input and write packed complex output (see vDSP Programming Guide for details
on the packing format). Inverse transforms read packed complex input and write real output. As a result of
packing the frequency-domain data, time-domain data and its equivalent frequency-domain data have the
same storage requirements.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_fft_zropD
Computes an out-of-place double-precision real discrete Fourier transform, either from the time domain to
the frequency domain (forward) or from the frequency domain to the time domain (inverse).
void vDSP_fft_zropD (
   FFTSetupD __vDSP_setup,
   DSPDoubleSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_flag
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
signal
        A complex vector signal input.
Functions                                                                                            285
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      signalStride
              Specifies an address stride through input vector signal. Thus, to process every element, specify a stride
              of 1; to process every other element, specify 2. The value of signalStride should be 1 for best
              performance.
      result
              The complex vector signal output.
      strideResult
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of strideResult should be 1 for
              best performance.
      log2n
              The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
              specify 10 for parameter log2n.
      flag
              A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
              forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
      Discussion
      This performs the following operation:
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, time-domain data and its
      equivalent frequency-domain data have the same storage requirements. Real data is stored in split complex
      form, with odd reals stored on the imaginary side of the split complex form and even reals in stored on the
      real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zropt
      Computes an out-of-place single-precision real discrete Fourier transform, either from the time domain to
      the frequency domain (forward) or from the frequency domain to the time domain (inverse).
286   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_fft_zropt (
   FFTSetup __vDSP_setup,
   DSPSplitComplex *__vDSP_signal,
   vDSP_Stride __vDSP_signalStride,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   DSPSplitComplex *__vDSP_bufferTemp,
   vDSP_Length __vDSP_log2n,
   FFTDirection __vDSP_direction
);
Parameters
setup
        Points to a structure initialized by a prior call to the FFT weights array function,
        vDSP_create_fftsetup (page 195). The value supplied as parameter log2n of the setup function
        must equal or exceed the value supplied as parameter log2n of this transform function.
signal
        A complex vector signal input.
signalStride
        Specifies an address stride through input vector signal. Thus, to process every element, specify a stride
        of 1; to process every other element, specify 2. The value of signalStride should be 1 for best
        performance.
result
        The complex vector signal output.
strideResult
        Specifies an address stride through output vector result. Thus, to process every element, specify a
        stride of 1; to process every other element, specify 2. The value of strideResult should be 1 for
        best performance.
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, tempBuffer.realp and
        tempBuffer.imagp should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
direction
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
Functions                                                                                                   287
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
      input and write real output. As a result of packing the frequency-domain data, time-domain data and its
      equivalent frequency-domain data have the same storage requirements. Real data is stored in split complex
      form, with odd reals stored on the imaginary side of the split complex form and even reals in stored on the
      real side.
See also functions vDSP_create_fftsetup (page 195) and vDSP_destroy_fftsetup (page 201).
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_fft_zroptD
      Computes an out-of-place double-precision real discrete Fourier transform, either from the time domain to
      the frequency domain (forward) or from the frequency domain to the time domain (inverse).
      void vDSP_fft_zroptD (
         FFTSetupD __vDSP_setup,
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         DSPDoubleSplitComplex *__vDSP_bufferTemp,
         vDSP_Length __vDSP_log2n,
         FFTDirection __vDSP_flag
      );
      Parameters
      setup
              Points to a structure initialized by a prior call to the FFT weights array function,
              vDSP_create_fftsetupD (page 196). The value supplied as parameter log2n of the setup function
              must equal or exceed the value supplied as parameter log2n of this transform function.
      signal
              A complex vector signal input.
      signalStride
              Specifies an address stride through input vector signal. Thus, to process every element, specify a stride
              of 1; to process every other element, specify 2. The value of signalStride should be 1 for best
              performance.
      result
              The complex vector signal output.
      strideResult
              Specifies an address stride through output vector result. Thus, to process every element, specify a
              stride of 1; to process every other element, specify 2. The value of strideResult should be 1 for
              best performance.
288   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
bufferTemp
        A temporary vector used for storing interim results. The size of temporary memory for each part (real
        and imaginary) is the lower value of 4*n or 16k for best performance. Or you can simply pass the
        buffer of size 2^(log2n) for each part (real and imaginary). If possible, tempBuffer.realp and
        tempBuffer.imagp should be 32-byte aligned for best performance.
log2n
        The base 2 exponent of the number of elements to process. For example, to process 1024 elements,
        specify 10 for parameter log2n.
flag
        A forward/inverse directional flag, which must specify kFFTDirection_Forward (page 552) for a
        forward transform or kFFTDirection_Inverse (page 552) for an inverse transform.
Discussion
This performs the following operation:
Forward transforms read real input and write packed complex output. Inverse transforms read packed complex
input and write real output. As a result of packing the frequency-domain data, time-domain data and its
equivalent frequency-domain data have the same storage requirements. Real data is stored in split complex
form, with odd reals stored on the imaginary side of the split complex form and even reals in stored on the
real side.
See also functions vDSP_create_fftsetupD (page 196) and vDSP_destroy_fftsetupD (page 202).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_hamm_window
Creates a single-precision Hamming window.
void vDSP_hamm_window (
   float *__vDSP_C,
   vDSP_Length __vDSP_N,
   int __vDSP_FLAG
);
Discussion
Functions                                                                                               289
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_hamm_windowD
      Creates a double-precision Hamming window.
      void vDSP_hamm_windowD (
         double *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_FLAG
      );
Discussion
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_hann_window
      Creates a single-precision Hanning window.
      void vDSP_hann_window (
         float *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_FLAG
      );
Discussion
290   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_HALF_WINDOW can be ORed with any of the other values (i.e., using the C operator |).
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_hann_windowD
Creates a double-precision Hanning window.
void vDSP_hann_windowD (
   double *__vDSP_C,
   vDSP_Length __vDSP_N,
   int __vDSP_FLAG
);
Discussion
vDSP_HALF_WINDOW can ORed with any of the other values (i.e., using the C operator |).
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                       291
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_imgfir
      Filters an image by performing a two-dimensional convolution with a kernel; single precision.
      void vDSP_imgfir (
         float *__vDSP_signal,
         vDSP_Length __vDSP_numRow,
         vDSP_Length __vDSP_numCol,
         float *__vDSP_filter,
         float *__vDSP_result,
         vDSP_Length __vDSP_fnumRow,
         vDSP_Length __vDSP_fnumCol
      );
      Parameters
      A
              A real matrix signal input.
      M
              Number of rows in A.
      N
              Number of columns in A.
      B
              A two-dimensional real matrix containing the filter.
      C
              Stores real output matrix.
      P
              Number of rows in B.
      Q
              Number of columns in B.
      Discussion
      The image is given by the input matrix A. It has M rows and N columns.
      The filtered image is placed in the output matrix C. The function pads the perimeter of the output image
      with a border of (P-1)/2 rows of zeros on the top and bottom and (Q-1)/2 columns of zeros on the left and
      right.
      Availability
      Available in iPhone OS 4.0 and later.
292   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_imgfirD
Filters an image by performing a two-dimensional convolution with a kernel; double precision.
void vDSP_imgfirD (
   double *__vDSP_signal,
   vDSP_Length __vDSP_numRow,
   vDSP_Length __vDSP_numCol,
   double *__vDSP_filter,
   double *__vDSP_result,
   vDSP_Length __vDSP_fnumRow,
   vDSP_Length __vDSP_fnumCol
);
Parameters
A
        A complex vector signal input.
M
        Number of rows in input matrix.
N
        Number of columns in input matrix.
B
        A two-dimensional real matrix containing the filter.
C
        Stores real output matrix.
P
        Number of rows in B.
Q
        Number of columns in B.
Discussion
The image is given by the input matrix A. It has M rows and N columns.
B is the filter kernel. It has P rows and Q columns. For best performance, ensure Q >= P.
The filtered image is placed in the output matrix C. The functions pad the perimeter of the output image
with a border of (P-1)/2 rows of zeros on the top and bottom and (Q-1)/2 columns of zeros on the left and
right.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                             293
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_maxmgv
      Vector maximum magnitude; single precision.
      void vDSP_maxmgv (
         const float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      *C = 0;
      for (n = 0; n < N; ++n)
          if (*C < abs(A[n*I]))
              *C = abs(A[n*I]);
Finds the element with the greatest magnitude in vector A and copies this value to scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_maxmgvD
      Vector maximum magnitude; double precision.
      void vDSP_maxmgvD (
         const double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector.
294   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
*C = 0;
for (n = 0; n < N; ++n)
    if (*C < abs(A[n*I]))
        *C = abs(A[n*I]);
Finds the element with the greatest magnitude in vector A and copies this value to scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_maxmgvi
Vector maximum magnitude with index; single precision.
void vDSP_maxmgvi (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A.
C
        Output scalar.
IC
        Output scalar index.
N
        Count of values in A.
Discussion
This performs the following operation:
*C = 0;
Functions                                                                                       295
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Copies the element with the greatest magnitude from real vector A to real scalar *C, and writes its zero-based
      index to integer scalar *IC. The index is the actual array index, not the pre-stride index.If vector A contains
      more than one instance of the maximum magnitude, *IC contains the index of the first instance.
If N is zero (0), this function returns a value of 0 in *C, and the value in *IC is undefined.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_maxmgviD
      Vector maximum magnitude with index; double precision.
      void vDSP_maxmgviD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length *__vDSP_IC,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      IC
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      *C = 0;
      for (n = 0; n < N; ++n)
      {
          if (*C < abs(A[n*I]))
          {
              *C = abs(A[n*I]);
296   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
            *IC = n*I;
     }
}
Copies the element with the greatest magnitude from real vector A to real scalar *C, and writes its zero-based
index to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains
more than one instance of the maximum magnitude, *IC contains the index of the first instance.
If N is zero (0), this function returns a value of 0 in *C, and the value in *IC is undefined.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_maxv
Vector maximum value; single precision.
void vDSP_maxv (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
         Single-precision real input vector.
I
         Stride for A
C
         Output scalar
N
         Count
Discussion
This performs the following operation:
*C = -INFINITY;
for (n = 0; n < N; ++n)
    if (*C < A[n*I])
        *C = A[n*I];
Finds the element with the greatest value in vector A and copies this value to scalar *C. If N is zero (0), this
function returns -INFINITY in *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                    297
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_maxvD
      Vector maximum value; double precision.
      void vDSP_maxvD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      *C = -INFINITY;
      for (n = 0; n < N; ++n)
          if (*C < A[n*I])
              *C = A[n*I];
      Finds the element with the greatest value in vector A and copies this value to scalar *C. If N is zero (0), this
      function returns -INFINITY in *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_maxvi
      Vector maximum value with index; single precision.
      void vDSP_maxvi (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length *__vDSP_IC,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
298   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
I
        Stride for A
C
        Output scalar
IC
        Output scalar index
N
        Count
Discussion
This performs the following operation:
*C = -INFINITY;
for (n = 0; n < N; ++n)
{
    if (*C < A[n * I])
    {
        *C = A[n * I];
        *IC = n * I;
    }
}
Copies the element with the greatest value from real vector A to real scalar *C, and writes its zero-based
index to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains
more than one instance of the maximum value, *IC contains the index of the first instance. If N is zero (0),
this function returns a value of -INFINITY in *C and *IC is undetermined.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_maxviD
Vector maximum value with index; double precision.
void vDSP_maxviD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Output scalar
Functions                                                                                                  299
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      IC
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      *C = -INFINITY;
      for (n = 0; n < N; ++n)
      {
          if (*C < A[n * I])
          {
              *C = A[n * I];
              *IC = n * I;
          }
      }
      Copies the element with the greatest value from real vector A to real scalar *C, and writes its zero-based
      index to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains
      more than one instance of the maximum value, *IC contains the index of the first instance. If N is zero (0),
      this function returns a value of -INFINITY in *C and the value in *IC is undefined.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_meamgv
      Vector mean magnitude; single precision.
      void vDSP_meamgv (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
300   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Finds the mean of the magnitudes of elements of vector A and stores this value in scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_meamgvD
Vector mean magnitude; double precision.
void vDSP_meamgvD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Finds the mean of the magnitudes of elements of vector A and stores this value in scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                      301
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_meanv
      Vector mean value; single precision.
      void vDSP_meanv (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
Finds the mean value of the elements of vector A and stores this value in scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_meanvD
      Vector mean value; double precision.
      void vDSP_meanvD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
302   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Finds the mean value of the elements of vector A and stores this value in scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_measqv
Vector mean square value; single precision.
void vDSP_measqv (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Functions                                                                              303
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
Finds the mean value of the squares of the elements of vector A and stores this value in scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_measqvD
      Vector mean square value; double precision.
      void vDSP_measqvD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
Finds the mean value of the squares of the elements of vector A and stores this value in scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_minmgv
      Vector minimum magnitude; single precision.
304   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_minmgv (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Finds the element with the least magnitude in vector A and copies this value to scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_minmgvD
Vector minimum magnitude; double precision.
void vDSP_minmgvD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Output scalar
Functions                                                                                    305
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      N
              Count
      Discussion
      This performs the following operation:
Finds the element with the least magnitude in vector A and copies this value to scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_minmgvi
      Vector minimum magnitude with index; single precision.
      void vDSP_minmgvi (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length *__vDSP_IC,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      IC
              Output scalar index
      N
              Count
      Discussion
      This performs the following operation:
      Copies the element with the least magnitude from real vector A to real scalar *C, and writes its zero-based
      index to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains
      more than one instance of the least magnitude, *IC contains the index of the first instance.
306   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
If N is zero (0), this function returns a value of +INF in *C and the value in *IC is undefined.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_minmgviD
Vector minimum magnitude with index; double precision.
void vDSP_minmgviD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Output scalar
IC
        Output scalar
N
        Count
Discussion
This performs the following operation:
Copies the element with the least magnitude from real vector A to real scalar *C, and writes its zero-based
index to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains
more than one instance of the least magnitude, *IC contains the index of the first instance.
If N is zero (0), this function returns a value of +INF in *C and the value in *IC is undefined.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                  307
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_minv
      Vector minimum value.
      void vDSP_minv (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
Finds the element with the least value in vector A and copies this value to scalar *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_minvD
      Vector minimum value; double precision.
      void vDSP_minvD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector.
      I
              Stride for A
308   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Finds the element with the least value in vector A and copies this value to scalar *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_minvi
Vector minimum value with index; single precision.
void vDSP_minvi (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Output scalar
IC
        Output scalar index
N
        Count
Discussion
This performs the following operation:
Functions                                                                                309
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Copies the element with the least value from real vector A to real scalar *C, and writes its zero-based index
      to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains more
      than one instance of the least value, *IC contains the index of the first instance.
If N is zero (0), this function returns a value of +INF in *C, and the value in *IC is undefined.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_minviD
      Vector minimum value with index; double precision.
      void vDSP_minviD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length *__vDSP_IC,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector.
      I
              Stride for A
      C
              Output scalar
      IC
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      Copies the element with the least value from real vector A to real scalar *C, and writes its zero-based index
      to integer scalar *IC. The index is the actual array index, not the pre-stride index. If vector A contains more
      than one instance of the least value, *IC contains the index of the first instance.
If N is zero (0), this function returns a value of +INF in *C, and the value in *IC is undefined.
      Availability
      Available in iPhone OS 4.0 and later.
310   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_mmov
Copies the contents of a submatrix to another submatrix.
void vDSP_mmov (
   float *__vDSP_A,
   float *__vDSP_C,
   vDSP_Length __vDSP_NC,
   vDSP_Length __vDSP_NR,
   vDSP_Length __vDSP_TCA,
   vDSP_Length __vDSP_TCC
);
Parameters
A
        Single-precision real input submatrix
C
        Single-precision real output submatrix
NC
        Number of columns in A and C
NR
        Number of rows in A and C
TCA
        Number of columns in the matrix of which A is a submatrix
TCC
        Number of columns in the matrix of which C is a submatrix
Discussion
The matrices are assumed to be stored in row-major order. Thus elements A[i][j] and A[i][j+1] are
adjacent. Elements A[i][j] and A[i+1][j] are TCA elements apart.
This function may be used to move a subarray beginning at any point in a larger embedding array by passing
for A the address of the first element of the subarray. For example, to move a subarray starting at A[3][4],
pass &A[3][4]. Similarly, the address of the first destination element is passed for C
NC may equal TCA, and it may equal TCC. To copy all of an array to all of another array, pass the number of
rows in NR and the number of columns in NC, TCA, and TCC.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_mmovD
Copies the contents of a submatrix to another submatrix.
Functions                                                                                               311
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_mmovD (
         double *__vDSP_A,
         double *__vDSP_C,
         vDSP_Length __vDSP_NC,
         vDSP_Length __vDSP_NR,
         vDSP_Length __vDSP_TCA,
         vDSP_Length __vDSP_TCC
      );
      Parameters
      A
              Double-precision real input submatrix
      C
              Double-precision real output submatrix
      NC
              Number of columns in A and C
      NR
              Number of rows in A and C
      TCA
              Number of columns in the matrix of which A is a submatrix
      TCC
              Number of columns in the matrix of which C is a submatrix
      Discussion
      The matrices are assumed to be stored in row-major order. Thus elements A[i][j] and A[i][j+1] are
      adjacent. Elements A[i][j] and A[i+1][j] are TCA elements apart.
      This function may be used to move a subarray beginning at any point in a larger embedding array by passing
      for A the address of the first element of the subarray. For example, to move a subarray starting at A[3][4],
      pass &A[3][4]. Similarly, the address of the first destination element is passed for C
      NC may equal TCA, and it may equal TCC. To copy all of an array to all of another array, pass the number of
      rows in NR and the number of columns in NC, TCA, and TCC.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_mmul
      Performs an out-of-place multiplication of two matrices; single precision.
312   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_mmul (
   float *__vDSP_a,
   vDSP_Stride __vDSP_aStride,
   float *__vDSP_b,
   vDSP_Stride __vDSP_bStride,
   float *__vDSP_c,
   vDSP_Stride __vDSP_cStride,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function multiplies an M-by-P matrix (A) by a P-by-N matrix (B) and stores the results in an M-by-N matrix
(C).
Parameters A and B are the matrixes to be multiplied. I is an address stride through A. J is an address stride
through B.
Parameter M is the row count for both A and C. Parameter N is the column count for both B and C. Parameter
P is the column count for A and the row count for B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_mmulD
Performs an out-of-place multiplication of two matrices; double precision.
void vDSP_mmulD (
   double *__vDSP_a,
   vDSP_Stride __vDSP_aStride,
   double *__vDSP_b,
   vDSP_Stride __vDSP_bStride,
   double *__vDSP_c,
   vDSP_Stride __vDSP_cStride,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function multiplies an M-by-P matrix (A) by a P-by-N matrix (B) and stores the results in an M-by-N matrix
(C).
Functions                                                                                                  313
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Parameters A and B are the matrixes to be multiplied. I is an address stride through A. J is an address stride
      through B.
      Parameter M is the row count for both A and C. Parameter N is the column count for both B and C. Parameter
      P is the column count for A and the row count for B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_mtrans
      Creates a transposed matrix C from a source matrix A; single precision.
      void vDSP_mtrans (
         float *__vDSP_a,
         vDSP_Stride __vDSP_aStride,
         float *__vDSP_c,
         vDSP_Stride __vDSP_cStride,
         vDSP_Length __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Discussion
      This performs the following operation:
Parameter A is the source matrix. I is an address stride through the source matrix.
Parameter C is the resulting transposed matrix. K is an address stride through the result matrix.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
314   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_mtransD
Creates a transposed matrix C from a source matrix A; double precision.
void vDSP_mtransD (
   double *__vDSP_a,
   vDSP_Stride __vDSP_aStride,
   double *__vDSP_c,
   vDSP_Stride __vDSP_cStride,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N
);
Discussion
This performs the following operation:
Parameter A is the source matrix. I is an address stride through the source matrix.
Parameter C is the resulting transposed matrix. K is an address stride through the result matrix.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_mvessq
Vector mean of signed squares; single precision.
void vDSP_mvessq (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Output scalar
N
        Count
Discussion
This performs the following operation:
Functions                                                                                           315
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Finds the mean value of the signed squares of the elements of vector A and stores this value in *C. If N is zero
      (0), this function returns a NaN in *C. .
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_mvessqD
      Vector mean of signed squares; double precision.
      void vDSP_mvessqD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      C
              Output scalar
      N
              Count
      Discussion
      This performs the following operation:
      Finds the mean value of the signed squares of the elements of vector A and stores this value in *C. If N is zero
      (0), this function returns a NaN in *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
316   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_nzcros
Find zero crossings; single precision.
void vDSP_nzcros (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   vDSP_Length __vDSP_B,
   vDSP_Length *__vDSP_C,
   vDSP_Length *__vDSP_D,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Maximum number of crossings to find
C
        Index of last crossing found
D
        Total number of zero crossings found
N
        Count of elements in A
Discussion
This performs the following operation:
The "function" sign(x) above has the value -1 if the sign bit of x is 1 (x is negative or -0), and +1 if the sign bit
is 0 (x is positive or +0).
Scans vector A to locate transitions from positive to negative values and from negative to positive values.
The scan terminates when the number of crossings specified by B is found, or the end of the vector is reached.
The zero-based index of the last crossing is returned in C. C is the actual array index, not the pre-stride index.
If the zero crossing that B specifies is not found, zero is returned in C. The total number of zero crossings
found is returned in D.
Functions                                                                                                       317
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_nzcrosD
      Find zero crossings; double precision.
      void vDSP_nzcrosD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         vDSP_Length __vDSP_B,
         vDSP_Length *__vDSP_C,
         vDSP_Length *__vDSP_D,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Maximum number of crossings to find
      C
              Index of last crossing found
      D
              Total number of zero crossings found
      N
              Count of elements in A
      Discussion
      This performs the following operation:
      The "function" sign(x) above has the value -1 if the sign bit of x is 1 (x is negative or -0), and +1 if the sign bit
      is 0 (x is positive or +0).
318   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Scans vector A to locate transitions from positive to negative values and from negative to positive values.
The scan terminates when the number of crossings specified by B is found, or the end of the vector is reached.
The zero-based index of the last crossing is returned in C. C is the actual array index, not the pre-stride index.
If the zero crossing that B specifies is not found, zero is returned in C. The total number of zero crossings
found is returned in D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_polar
Rectangular to polar conversion; single precision.
void vDSP_polar (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A, must be even
C
        Single-precision output vector
K
        Stride for C, must be even
N
        Number of ordered pairs processed
Discussion
This performs the following operation:
Converts rectangular coordinates to polar coordinates. Cartesian (x,y) pairs are read from vector A. Polar (rho,
theta) pairs, where rho is the radius and theta is the angle in the range [-pi, pi] are written to vector C. N
specifies the number of coordinate pairs in A and C.
Coordinate pairs are adjacent elements in the array, regardless of stride; stride is the distance from one
coordinate pair to the next.
This function performs the inverse operation of vDSP_rect, which converts polar to rectangular coordinates.
Functions                                                                                                     319
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_polarD
      Rectangular to polar conversion; double precision.
      void vDSP_polarD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A, must be even
      C
              Double-precision output vector
      K
              Stride for C, must be even
      N
              Number of ordered pairs processed
      Discussion
      This performs the following operation:
      Converts rectangular coordinates to polar coordinates. Cartesian (x,y) pairs are read from vector A. Polar (rho,
      theta) pairs, where rho is the radius and theta is the angle in the range [-pi, pi] are written to vector C. N
      specifies the number of coordinate pairs in A and C.
      Coordinate pairs are adjacent elements in the array, regardless of stride; stride is the distance from one
      coordinate pair to the next.
This function performs the inverse operation of vDSP_rectD, which converts polar to rectangular coordinates.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
320   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_rect
Polar to rectangular conversion; single precision.
void vDSP_rect (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A, must be even
C
        Single-precision real output vector
K
        Stride for C, must be even
N
        Number of ordered pairs processed
Discussion
This performs the following operation:
Converts polar coordinates to rectangular coordinates. Polar (rho, theta) pairs, where rho is the radius and
theta is the angle in the range [-pi, pi] are read from vector A. Cartesian (x,y) pairs are written to vector C. N
specifies the number of coordinate pairs in A and C.
Coordinate pairs are adjacent elements in the array, regardless of stride; stride is the distance from one
coordinate pair to the next.
This function performs the inverse operation of vDSP_polar, which converts rectangular to polar coordinates.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_rectD
Polar to rectangular conversion; double precision.
Functions                                                                                                     321
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_rectD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A, must be even
      C
              Double-precision real output vector
      K
              Stride for C, must be even
      N
              Number of ordered pairs processed
      Discussion
      This performs the following operation:
      Converts polar coordinates to rectangular coordinates. Polar (rho, theta) pairs, where rho is the radius and
      theta is the angle in the range [-pi, pi] are read from vector A. Cartesian (x,y) pairs are written to vector C. N
      specifies the number of coordinate pairs in A and C.
      Coordinate pairs are adjacent elements in the array, regardless of stride; stride is the distance from one
      coordinate pair to the next.
This function performs the inverse operation of vDSP_polarD, which converts rectangular to polar coordinates.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_rmsqv
      Vector root-mean-square; single precision.
322   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_rmsqv (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Single-precision real output scalar
N
        Count
Discussion
This performs the following operation:
Calculates the root mean square of the elements of A and stores the result in *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_rmsqvD
Vector root-mean-square; double precision.
void vDSP_rmsqvD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector.
I
        Stride for A
Functions                                                                           323
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Double-precision real output scalar
      N
              Count
      Discussion
      This performs the following operation:
Calculates the root mean square of the elements of A and stores the result in *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_svdiv
      Divide scalar by vector; single precision.
      void vDSP_svdiv (
         float *__vDSP_A,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input scalar
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
324   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_svdivD
Divide scalar by vector; double precision.
void vDSP_svdivD (
   double *__vDSP_A,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input scalar
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                        325
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_sve
      Vector sum; single precision.
      void vDSP_sve (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Single-precision real output scalar
      N
              Count
      Discussion
      This performs the following operation:
Writes the sum of the elements of A into *C. If N is zero (0), this function returns 0 in *C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_sveD
      Vector sum; double precision.
      void vDSP_sveD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
326   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
C
        Double-precision real output scalar
N
        Count
Discussion
This performs the following operation:
Writes the sum of the elements of A into *C. If N is zero (0), this function returns 0 in *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_svemg
Vector sum of magnitudes; single precision.
void vDSP_svemg (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Single-precision real output scalar
N
        Count
Discussion
This performs the following operation:
Functions                                                                                       327
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_svemgD
      Vector sum of magnitudes; double precision.
      void vDSP_svemgD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector.
      I
              Stride for A
      C
              Double-precision real output scalar
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_svesq
      Vector sum of squares; single precision.
328   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_svesq (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector.
I
        Stride for A
C
        Single-precision real output scalar
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_svesqD
Vector sum of squares; double precision.
void vDSP_svesqD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector.
I
        Stride for A
Functions                                                     329
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Double-precision real output scalar
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_svs
      Vector sum of signed squares; single precision.
      void vDSP_svs (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector.
      I
              Stride for A
      C
              Single-precision real output scalar
      N
              Count
      Discussion
      This performs the following operation:
Writes the sum of the signed squares of the elements of A into *C.
330   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_svsD
Vector sum of signed squares; double precision.
void vDSP_svsD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector.
I
        Stride for A
C
        Double-precision real output scalar
N
        Count
Discussion
This performs the following operation:
Writes the sum of the signed squares of the elements of A into *C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vaam
Vector add, add, and multiply; single precision.
Functions                                                            331
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vaam (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         float *__vDSP_D,
         vDSP_Stride __vDSP_L,
         float *__vDSP_E,
         vDSP_Stride __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real input vector
      K
              Stride for C
      D
              Single-precision real input vector
      L
              Stride for D
      E
              Single-precision real output vector
      M
              Stride for E
      N
              Count ; each vector must have at least N elements
      Discussion
      This performs the following operation:
Multiplies the sum of vectors A and B by the sum of vectors C and D. Results are stored in vector E.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
332   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vaamD
Vector add, add, and multiply; double precision.
void vDSP_vaamD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   double *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real input vector
K
        Stride for C
D
        Double-precision real input vector
L
        Stride for D
E
        Double-precision real output vector
M
        Stride for E
N
        Count ; each vector must have at least N elements
Discussion
This performs the following operation:
Multiplies the sum of vectors A and B by the sum of vectors C and D. Results are stored in vector E.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                              333
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vabs
      Vector absolute values; single precision.
      void vDSP_vabs (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vabsD
      Vector absolute values; double precision.
334   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vabsD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vabsi
Integer vector absolute values.
void vDSP_vabsi (
   int *__vDSP_A,
   vDSP_Stride __vDSP_I,
   int *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Integer input vector
I
        Stride for A
Functions                                                                           335
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Integer output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vadd
      Adds vector A to vector B and leaves the result in vector C; single precision.
      void vDSP_vadd (
         const float __vDSP_input1[],
         vDSP_Stride __vDSP_stride1,
         const float __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         float __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vaddD
      Adds vector A to vector B and leaves the result in vector C; double precision.
336   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vaddD (
   const double __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const double __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   double __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vam
Adds vectors A and B, multiplies the sum by vector C, and leaves the result in vector D; single precision.
void vDSP_vam (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   const float __vDSP_input3[],
   vDSP_Stride __vDSP_stride3,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vamD
Adds vectors A and B, multiplies the sum by vector C, and leaves the result in vector D; double precision.
Functions                                                                                                337
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vamD (
         const double __vDSP_input1[],
         vDSP_Stride __vDSP_stride1,
         const double __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         const double __vDSP_input3[],
         vDSP_Stride __vDSP_stride3,
         double __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vasbm
      Vector add, subtract, and multiply; single precision.
      void vDSP_vasbm (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         float *__vDSP_D,
         vDSP_Stride __vDSP_L,
         float *__vDSP_E,
         vDSP_Stride __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real input vector
338   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
K
        Stride for C
D
        Single-precision real input vector
L
        Stride for D
E
        Single-precision real output vector
M
        Stride for E
N
        Count ; each vector must have at least N elements
Discussion
This performs the following operation:
Multiplies the sum of vectors A and B by the result of subtracting vector D from vector C. Results are stored
in vector E.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vasbmD
Vector add, subtract, and multiply; double precision.
void vDSP_vasbmD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   double *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
Functions                                                                                                339
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real input vector
      L
              Stride for D
      E
              Double-precision real output vector
      M
              Stride for E
      N
              Count ; each vector must have at least N elements
      Discussion
      This performs the following operation:
      Multiplies the sum of vectors A and B by the result of subtracting vector D from vector C. Results are stored
      in vector E.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vasm
      Vector add and scalar multiply; single precision.
340   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vasm (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input scalar
D
        Single-precision real output vector
L
        Stride for D
N
        Count ; each vector must have at least N elements
Discussion
This performs the following operation:
Multiplies the sum of vectors A and B by scalar C. Results are stored in vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vasmD
Vector add and scalar multiply; double precision.
Functions                                                                            341
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vasmD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input scalar
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count ; each vector must have at least N elements
      Discussion
      This performs the following operation:
Multiplies the sum of vectors A and B by scalar C. Results are stored in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vavlin
      Vector linear average; single precision.
342   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vavlin (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real input-output vector
K
        Stride for C
N
        Count ; each vector must have at least N elements
Discussion
This performs the following operation:
Recalculates the linear average of input-output vector C to include input vector A. Input scalar B specifies
the number of vectors included in the current average.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vavlinD
Vector linear average; double precision.
Functions                                                                                                 343
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vavlinD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real input-output vector
      K
              Stride for C
      N
              Count ; each vector must have at least N elements
      Discussion
      This performs the following operation:
      Recalculates the linear average of input-output vector C to include input vector A. Input scalar B specifies
      the number of vectors included in the current average.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vclip
      Vector clip; single precision.
344   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vclip (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: low clipping threshold
C
        Single-precision real input scalar: high clipping threshold
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Elements of A are copied to D while clipping elements that are outside the interval [B, C] to the endpoints.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vclipc
Vector clip and count; single precision.
Functions                                                                                                345
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vclipc (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         float *__vDSP_C,
         float *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N,
         vDSP_Length *__vDSP_NLOW,
         vDSP_Length *__vDSP_NHI
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input scalar: low clipping threshold
      C
              Single-precision real input scalar: high clipping threshold
      D
              Single-precision real output vector
      L
              Stride for D
      N
              Count of elements in A and D
      NLOW
              Number of elements that were clipped to B
      NHI
              Number of elements that were clipped to C
      Discussion
      This performs the following operation:
Elements of A are copied to D while clipping elements that are outside the interval [B, C] to the endpoints.
      The count of elements clipped to B is returned in *NLOW, and the count of elements clipped to C is returned
      in *NHI
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
346   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vclipcD
Vector clip and count; double precision.
void vDSP_vclipcD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   double *__vDSP_C,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N,
   vDSP_Length *__vDSP_NLOW,
   vDSP_Length *__vDSP_NHI
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input scalar: low clipping threshold
C
        Double-precision real input scalar: high clipping threshold
D
        Double-precision real output vector
L
        Stride for D
N
        Count of elements in A and D
NLOW
        Number of elements that were clipped to B
NHI
        Number of elements that were clipped to C
Discussion
This performs the following operation:
Elements of A are copied to D while clipping elements that are outside the interval [B, C] to the endpoints.
The count of elements clipped to B is returned in *NLOW, and the count of elements clipped to C is returned
in *NHI
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                347
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vclipD
      Vector clip; double precision.
      void vDSP_vclipD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: low clipping threshold
      C
              Double-precision real input scalar: high clipping threshold
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
Elements of A are copied to D while clipping elements that are outside the interval [B, C] to the endpoints.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
348   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vclr
Vector clear; single precision.
void vDSP_vclr (
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
All elements of vector C are set to zeros.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vclrD
Vector clear; double precision.
void vDSP_vclrD (
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
All elements of vector C are set to zeros.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                             349
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_vcmprs
      Vector compress; single precision.
      void vDSP_vcmprs (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Compresses vector A based on the nonzero values of gating vector B. For nonzero elements of B, corresponding
      elements of A are sequentially copied to output vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vcmprsD
      Vector compress; double precision.
350   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vcmprsD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Compresses vector A based on the nonzero values of gating vector B. For nonzero elements of B, corresponding
elements of A are sequentially copied to output vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vdbcon
Vector convert power or amplitude to decibels; single precision.
Functions                                                                                               351
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vdbcon (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         unsigned int __vDSP_F
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input scalar: zero reference
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      F
              Power (0) or amplitude (1) flag
      Discussion
      Performs the following operation. is 20 if F is 1, or 10 if F is 0.
      Converts inputs from vector A to their decibel equivalents, calculated in terms of power or amplitude according
      to flag F. As a relative reference point, the value of input scalar B is considered to be zero decibels.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vdbconD
      Vector convert power or amplitude to decibels; double precision.
352   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vdbconD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N,
   unsigned int __vDSP_F
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input scalar: zero reference
C
        Double-precision real output vector
K
        Stride for C
N
        Count
F
        Power (0) or amplitude (1) flag
Discussion
Performs the following operation:
Converts inputs from vector A to their decibel equivalents, calculated in terms of power or amplitude according
to flag F. As a relative reference point, the value of input scalar B is considered to be zero decibels.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vdist
Vector distance; single precision.
Functions                                                                                                 353
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vdist (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Computes the square root of the sum of the squares of corresponding elements of vectors A and B, and
      stores the result in the corresponding element of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vdistD
      Vector distance; double precision.
354   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vdistD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Computes the square root of the sum of the squares of corresponding elements of vectors A and B, and
stores the result in the corresponding element of vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vdiv
Vector divide; single precision.
Functions                                                                                          355
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vdiv (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
              BnJ
      CnK =            n = {0, N-1}
              AnI
      Divides elements of vector B by corresponding elements of vector A, and stores the results in corresponding
      elements of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vdivD
      Vector divide; double precision.
356   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vdivD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
        BnJ
CnK =            n = {0, N-1}
        AnI
Divides elements of vector B by corresponding elements of vector A, and stores the results in corresponding
elements of vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vdivi
Vector divide; integer.
Functions                                                                                             357
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vdivi (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_B,
         vDSP_Stride __vDSP_J,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Integer input vector
      I
              Stride for A
      B
              Integer input vector
      J
              Stride for B
      C
              Integer output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
              BnJ
      CnK =            n = {0, N-1}
              AnI
      Divides elements of vector A by corresponding elements of vector B, and stores the results in corresponding
      elements of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vdpsp
      Vector convert double-precision to single-precision.
358   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vdpsp (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_venvlp
Vector envelope; single precision.
void vDSP_venvlp (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector: high envelope
Functions                                                                                359
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      I
              Stride for A
      B
              Single-precision real input vector: low envelope
      J
              Stride for B
      C
              Single-precision real input vector
      K
              Stride for C
      D
              Single-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
      Finds the extrema of vector C. For each element of C, the corresponding element of A provides an
      upper-threshold value, and the corresponding element of B provides a lower-threshold value. If the value of
      an element of C falls outside the range defined by these thresholds, it is copied to the corresponding element
      of vector D. If its value is within the range, the corresponding element of vector D is set to zero.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_venvlpD
      Vector envelope; double precision.
360   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_venvlpD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector: high envelope
I
        Stride for A
B
        Double-precision real input vector: low envelope
J
        Stride for B
C
        Double-precision real input vector
K
        Stride for C
D
        Double-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Finds the extrema of vector C. For each element of C, the corresponding element of A provides an
upper-threshold value, and the corresponding element of B provides a lower-threshold value. If the value of
an element of C falls outside the range defined by these thresholds, it is copied to the corresponding element
of vector D. If its value is within the range, the corresponding element of vector D is set to zero.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                361
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_veqvi
      Vector equivalence, 32-bit logical.
      void vDSP_veqvi (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_B,
         vDSP_Stride __vDSP_J,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Integer input vector
      I
              Stride for A
      B
              Integer input vector
      J
              Stride for B
      C
              Integer output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Outputs the bitwise logical equivalence, exclusive NOR, of the integers of vectors A and B. For each pair of
      input values, bits in each position are compared. A bit in the output value is set if both input bits are set, or
      both are clear; otherwise it is cleared.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfill
      Vector fill; single precision.
362   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfill (
   float *__vDSP_A,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input scalar
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfillD
Vector fill; double precision.
void vDSP_vfillD (
   double *__vDSP_A,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input scalar
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Functions                                             363
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Discussion
      Performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfilli
      Integer vector fill.
      void vDSP_vfilli (
         int *__vDSP_A,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Integer input scalar
      C
              Integer output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
364   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vfix16
Converts an array of single-precision floating-point values to signed 16-bit integer values, rounding towards
zero.
void vDSP_vfix16 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfix16D
Converts an array of double-precision floating-point values to signed 16-bit integer values, rounding towards
zero.
void vDSP_vfix16D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
Functions                                                                                               365
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfix32
      Converts an array of single-precision floating-point values to signed 32-bit integer values, rounding towards
      zero.
      void vDSP_vfix32 (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfix32D
      Converts an array of double-precision floating-point values to signed 16-bit integer values, rounding towards
      zero.
366   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfix32D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   int *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfix8
Converts an array of single-precision floating-point values to signed 8-bit integer values, rounding towards
zero.
void vDSP_vfix8 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   char *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                               367
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfix8D
      Converts an array of double-precision floating-point values to signed 8-bit integer values, rounding towards
      zero.
      void vDSP_vfix8D (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         char *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixr16
      Converts an array of single-precision floating-point values to signed 16-bit integer values, rounding towards
      nearest integer.
368   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixr16 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixr16D
Converts an array of double-precision floating-point values to signed 16-bit integer values, rounding towards
nearest integer.
void vDSP_vfixr16D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                               369
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixr32
      Converts an array of single-precision floating-point values to signed 32-bit integer values, rounding towards
      nearest integer.
      void vDSP_vfixr32 (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixr32D
      Converts an array of double-precision floating-point values to signed 32-bit integer values, rounding towards
      nearest integer.
370   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixr32D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   int *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixr8
Converts an array of single-precision floating-point values to signed 8-bit integer values, rounding towards
nearest integer.
void vDSP_vfixr8 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   char *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                               371
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixr8D
      Converts an array of double-precision floating-point values to signed 8-bit integer values, rounding towards
      nearest integer.
      void vDSP_vfixr8D (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         char *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixru16
      Converts an array of single-precision floating-point values to unsigned 16-bit integer values, rounding towards
      nearest integer.
372   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixru16 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixru16D
Converts an array of double-precision floating-point values to unsigned 16-bit integer values, rounding
towards nearest integer.
void vDSP_vfixru16D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                                 373
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixru32
      Converts an array of single-precision floating-point values to unsigned 32-bit integer values, rounding towards
      nearest integer.
      void vDSP_vfixru32 (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         unsigned int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixru32D
      Converts an array of double-precision floating-point values to unsigned 32-bit integer values, rounding
      towards nearest integer.
374   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixru32D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned int *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixru8
Converts an array of single-precision floating-point values to unsigned 8-bit integer values, rounding towards
nearest integer.
void vDSP_vfixru8 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned char *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                                375
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixru8D
      Converts an array of double-precision floating-point values to unsigned 8-bit integer values, rounding towards
      nearest integer.
      void vDSP_vfixru8D (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         unsigned char *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixu16
      Converts an array of single-precision floating-point values to unsigned 16-bit integer values, rounding towards
      zero.
376   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixu16 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixu16D
Converts an array of double-precision floating-point values to unsigned 16-bit integer values, rounding
towards zero.
void vDSP_vfixu16D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned short *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                                 377
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixu32
      Converts an array of single-precision floating-point values to unsigned 32-bit integer values, rounding towards
      zero.
      void vDSP_vfixu32 (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         unsigned int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixu32D
      Converts an array of double-precision floating-point values to unsigned 32-bit integer values, rounding
      towards zero.
378   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfixu32D (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned int *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfixu8
Converts an array of single-precision floating-point values to unsigned 8-bit integer values, rounding towards
zero.
void vDSP_vfixu8 (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   unsigned char *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Functions                                                                                                379
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfixu8D
      Converts an array of double-precision floating-point values to unsigned 8-bit integer values, rounding towards
      zero.
      void vDSP_vfixu8D (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         unsigned char *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vflt16
      Converts an array of signed 16-bit integers to single-precision floating-point values.
      void vDSP_vflt16 (
         short *A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
380   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vflt16D
Converts an array of signed 16-bit integers to double-precision floating-point values.
void vDSP_vflt16D (
   short *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vflt32
Converts an array of signed 32-bit integers to single-precision floating-point values.
Functions                                                                                381
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vflt32 (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vflt32D
      Converts an array of signed 32-bit integers to double-precision floating-point values.
      void vDSP_vflt32D (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
382   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_vflt8
Converts an array of signed 8-bit integers to single-precision floating-point values.
void vDSP_vflt8 (
   char *A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vflt8D
Converts an array of signed 8-bit integers to double-precision floating-point values.
void vDSP_vflt8D (
   char *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
Functions                                                                               383
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfltu16
      Converts an array of unsigned 16-bit integers to single-precision floating-point values.
      void vDSP_vfltu16 (
         unsigned short *A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfltu16D
      Converts an array of unsigned 16-bit integers to double-precision floating-point values.
384   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vfltu16D (
   unsigned short *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfltu32
Converts an array of unsigned 32-bit integers to single-precision floating-point values.
void vDSP_vfltu32 (
   unsigned int *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                  385
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vfltu32D
      Converts an array of unsigned 32-bit integers to double-precision floating-point values.
      void vDSP_vfltu32D (
         unsigned int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
      __vDSP_C
              Destination vector.
      __vDSP_K
              Destination vector stride length.
      __vDSP_N
              Number of elements in vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfltu8
      Converts an array of unsigned 8-bit integers to single-precision floating-point values.
      void vDSP_vfltu8 (
         unsigned char *A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Source vector.
      __vDSP_I
              Source vector stride length.
386   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfltu8D
Converts an array of unsigned 8-bit integers to double-precision floating-point values.
void vDSP_vfltu8D (
   unsigned char *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Source vector.
__vDSP_I
        Source vector stride length.
__vDSP_C
        Destination vector.
__vDSP_K
        Destination vector stride length.
__vDSP_N
        Number of elements in vector.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vfrac
Vector truncate to fraction; single precision.
Functions                                                                                 387
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vfrac (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      The "function" truncate(x) is the integer farthest from 0 but not farther than x. Thus, for example,
      vDSP_vFrac(-3.25) produces the result -0.25.
Sets each element of vector C to the signed fractional part of the corresponding element of A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vfracD
      Vector truncate to fraction; double precision.
      void vDSP_vfracD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
388   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
The "function" truncate(x) is the integer farthest from 0 but not farther than x. Thus, for example,
vDSP_vFrac(-3.25) produces the result -0.25.
Sets each element of vector C to the signed fractional part of the corresponding element of A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vgathr
Vector gather; single precision.
void vDSP_vgathr (
   float *__vDSP_A,
   vDSP_Length *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
B
        Integer vector containing indices
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
Functions                                                                                              389
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      N
              Count
      Discussion
      Performs the following operation:
      Uses elements of vector B as indices to copy selected elements of vector A to sequential locations in vector
      C. Note that 1, not zero, is treated as the first location in the input vector when evaluating indices. This
      function can only be done out of place.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vgathra
      Vector gather, absolute pointers; single precision.
      void vDSP_vgathra (
         float **A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Pointer input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Uses elements of vector A as pointers to copy selected single-precision values from memory to sequential
      locations in vector C. This function can only be done out of place.
390   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vgathraD
Vector gather, absolute pointers; double precision.
void vDSP_vgathraD (
   double **A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Pointer input vector
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Uses elements of vector A as pointers to copy selected double-precision values from memory to sequential
locations in vector C. This function can only be done out of place.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vgathrD
Vector gather; double precision.
Functions                                                                                           391
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vgathrD (
         double *__vDSP_A,
         vDSP_Length *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      B
              Integer vector containing indices
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Uses elements of vector B as indices to copy selected elements of vector A to sequential locations in vector
      C. Note that 1, not zero, is treated as the first location in the input vector when evaluating indices. This
      function can only be done out of place.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vgen
      Vector tapered ramp; single precision.
392   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vgen (
   float *__vDSP_A,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input scalar: base value
B
        Single-precision real input scalar: end value
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Creates ramped vector C with element zero equal to scalar A and element N-1 equal to scalar B. Output values
between element zero and element N-1 are evenly spaced and increase or decrease monotonically.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vgenD
Vector tapered ramp; double precision.
void vDSP_vgenD (
   double *__vDSP_A,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input scalar: base value
B
        Double-precision real input scalar: end value
Functions                                                                                              393
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Creates ramped vector C with element zero equal to scalar A and element N-1 equal to scalar B. Output values
      between element zero and element N-1 are evenly spaced and increase or decrease monotonically.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vgenp
      Vector generate by extrapolation and interpolation; single precision.
      void vDSP_vgenp (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
394   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
N
        Count for C
M
        Count for A and B
Discussion
Performs the following operation:
Generates vector C by extrapolation and linear interpolation from the ordered pairs (A,B) provided by
corresponding elements in vectors A and B. Vector B provides index values and should increase monotonically.
Vector A provides intensities, magnitudes, or some other measurable quantities, one value associated with
each value of B. This function can only be done out of place.
Output values are generated for integral indices in the range zero through N - 1, deriving output values by
interpolating and extrapolating from vectors A and B. For example, if vectors A and B define velocity and
time pairs (v, t), vDSP_vgenp writes one velocity to vector C for every integral unit of time from zero to N -
1.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vgenpD
Vector generate by extrapolation and interpolation; double precision.
Functions                                                                                                   395
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vgenpD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count for C
      M
              Count for A and B
      Discussion
      Performs the following operation:
      Generates vector C by extrapolation and linear interpolation from the ordered pairs (A,B) provided by
      corresponding elements in vectors A and B. Vector B provides index values and should increase monotonically.
      Vector A provides intensities, magnitudes, or some other measurable quantities, one value associated with
      each value of B. This function can only be done out of place.
396   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
■    In each interval (trunc(B[m*J]), trunc(B[(m+1)*J])], the function is the line passing through the two points
     (B[m*J], A[m*I]) and (B[(m+1)*J], A[(m+1)*I]). (This is for each integer m, 0 <= m < M-1.)
■    In the interval (B[(M-1)*J], infinity], the function is the constant A[(M-1)*I].
■    For 0 <= n < N, C[n*K] = f(n).
Output values are generated for integral indices in the range zero through N - 1, deriving output values by
interpolating and extrapolating from vectors A and B. For example, if vectors A and B define velocity and
time pairs (v, t), vDSP_vgenp writes one velocity to vector C for every integral unit of time from zero to N -
1.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_viclip
Vector inverted clip; single precision.
void vDSP_viclip (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: lower threshold
C
        Single-precision real input scalar: upper threshold
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Functions                                                                                                   397
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
Performs an inverted clip of vector A using lower-threshold and upper-threshold input scalars B and C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_viclipD
      Vector inverted clip; double precision.
      void vDSP_viclipD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: lower threshold
      C
              Double-precision real input scalar: upper threshold
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Performs the following operation:
398   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Performs an inverted clip of vector A using lower-threshold and upper-threshold input scalars B and C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vindex
Vector index; single precision.
void vDSP_vindex (
   float *__vDSP_A,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
B
        Single-precision real input vector: indices
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Uses vector B as zero-based subscripts to copy selected elements of vector A to vector C. Fractional parts of
vector B are ignored.
Functions                                                                                                399
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vindexD
      Vector index; double precision.
      void vDSP_vindexD (
         double *__vDSP_A,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      B
              Double-precision real input vector: indices
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Uses vector B as zero-based subscripts to copy selected elements of vector A to vector C. Fractional parts of
      vector B are ignored.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vintb
      Vector linear interpolation between vectors; single precision.
400   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vintb (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input scalar: interpolation constant
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vintbD
Vector linear interpolation between vectors; double precision.
Functions                                                            401
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vintbD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input scalar: interpolation constant
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vlim
      Vector test limit; single precision.
402   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vlim (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: limit
C
        Single-precision real input scalar
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Compares values from vector A to limit scalar B. For inputs greater than or equal to B, scalar C is written to
D . For inputs less than B, the negated value of scalar C is written to vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vlimD
Vector test limit; double precision.
Functions                                                                                                  403
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vlimD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: limit
      C
              Double-precision real input scalar
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Compares values from vector A to limit scalar B. For inputs greater than or equal to B, scalar C is written to
      D . For inputs less than B, the negated value of scalar C is written to vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vlint
      Vector linear interpolation between neighboring elements; single precision.
404   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vlint (
   float *__vDSP_A,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_M
);
Parameters
A
        Single-precision real input vector
B
        Single-precision real input vector: integer parts are indices into A and fractional parts are interpolation
        constants
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count for C
M
        Length of A
Discussion
Performs the following operation:
Generates vector C by interpolating between neighboring values of vector A as controlled by vector B. The
integer portion of each element in B is the zero-based index of the first element of a pair of adjacent values
in vector A.
The value of the corresponding element of C is derived from these two values by linear interpolation, using
the fractional part of the value in B.
Argument M is not used in the calculation. However, the integer parts of the values in B must be greater than
or equal to zero and less than or equal to M - 2.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                     405
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_vlintD
      Vector linear interpolation between neighboring elements; double precision.
      void vDSP_vlintD (
         double *__vDSP_A,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Double-precision real input vector
      B
              Double-precision real input vector: integer parts are indices into A and fractional parts are interpolation
              constants
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count for C
      M
              Length of A
      Discussion
      Performs the following operation:
      Generates vector C by interpolating between neighboring values of vector A as controlled by vector B. The
      integer portion of each element in B is the zero-based index of the first element of a pair of adjacent values
      in vector A.
      The value of the corresponding element of C is derived from these two values by linear interpolation, using
      the fractional part of the value in B.
      Argument M is not used in the calculation. However, the integer parts of the values in B must be greater than
      or equal to zero and less than or equal to M - 2.
      Availability
      Available in iPhone OS 4.0 and later.
406   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_vma
Vector multiply and add; single precision.
void vDSP_vma (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Multiplies corresponding elements of vectors A and B, add the corresponding elements of vector C, and
stores the results in vector D.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                           407
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vmaD
      Vector multiply and add; double precision.
      void vDSP_vmaD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
      Multiplies corresponding elements of vectors A and B, add the corresponding elements of vector C, and
      stores the results in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
408   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_vmax
Vector maxima; single precision.
void vDSP_vmax (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Each element of output vector C is the greater of the corresponding values from input vectors A and B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmaxD
Vector maxima; double precision.
Functions                                                                                                409
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vmaxD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
Each element of output vector C is the greater of the corresponding values from input vectors A and B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmaxmg
      Vector maximum magnitudes; single precision.
410   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vmaxmg (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Each element of output vector C is the larger of the magnitudes of corresponding values from input vectors
A and B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmaxmgD
Vector maximum magnitudes; double precision.
Functions                                                                                             411
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vmaxmgD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Each element of output vector C is the larger of the magnitudes of corresponding values from input vectors
      A and B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmin
      Vector minima; single precision.
412   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vmin (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Each element of output vector C is the lesser of the corresponding values from input vectors A and B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vminD
Vector minima; double precision.
Functions                                                                                               413
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vminD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
Each element of output vector C is the lesser of the corresponding values from input vectors A and B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vminmg
      Vector minimum magnitudes; single precision.
414   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vminmg (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Each element of output vector C is the smaller of the magnitudes of corresponding values from input vectors
A and B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vminmgD
Vector minimum magnitudes; double precision.
Functions                                                                                              415
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vminmgD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Each element of output vector C is the smaller of the magnitudes of corresponding values from input vectors
      A and B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmma
      Vector multiply, multiply, and add; single precision.
416   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vmma (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   float *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real input vector
L
        Stride for D
E
        Single-precision real output vector
M
        Stride for E
N
        Count
Discussion
This performs the following operation:
Corresponding elements of A and B are multiplied, corresponding values of C and D are multiplied, and these
products are added together and stored in E.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                              417
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vmmaD
      Vector multiply, multiply, and add; double precision.
      void vDSP_vmmaD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         double *__vDSP_E,
         vDSP_Stride __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real input vector
      L
              Stride for D
      E
              Double-precision real output vector
      M
              Stride for E
      N
              Count
      Discussion
      This performs the following operation:
418   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Corresponding elements of A and B are multiplied, corresponding values of C and D are multiplied, and these
products are added together and stored in E.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmmsb
Vector multiply, multiply, and subtract; single precision.
void vDSP_vmmsb (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   float *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real input vector
L
        Stride for D
E
        Single-precision real output vector
M
        Stride for E
Functions                                                                                              419
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      N
              Count
      Discussion
      This performs the following operation:
      Corresponding elements of A and B are multiplied, corresponding values of C and D are multiplied, and the
      second product is subtracted from the first. The result is stored in E.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmmsbD
      Vector multiply, multiply, and subtract; double precision.
      void vDSP_vmmsbD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         double *__vDSP_E,
         vDSP_Stride __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real input vector
420   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
L
        Stride for D
E
        Double-precision real output vector
M
        Stride for E
N
        Count
Discussion
This performs the following operation:
Corresponding elements of A and B are multiplied, corresponding values of C and D are multiplied, and the
second product is subtracted from the first. The result is stored in E.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmsa
Vector multiply and scalar add; single precision.
void vDSP_vmsa (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input scalar
Functions                                                                                            421
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      D
              Single-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
Corresponding elements of A and B are multiplied and the scalar C is added. The result is stored in D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmsaD
      Vector multiply and scalar add; double precision.
      void vDSP_vmsaD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input scalar
      D
              Double-precision real output vector
      L
              Stride for D
422   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
N
        Count
Discussion
This performs the following operation:
Corresponding elements of A and B are multiplied and the scalar C is added. The result is stored in D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmsb
Vector multiply and subtract, single precision.
void vDSP_vmsb (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real output vector
L
        Stride for D
Functions                                                                                                423
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      N
              Count
      Discussion
      This performs the following operation:
      Corresponding elements of A and B are multiplied and the corresponding value of C is subtracted. The result
      is stored in D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmsbD
      Vector multiply and subtract; double precision.
      void vDSP_vmsbD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real output vector
      L
              Stride for D
424   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
N
        Count
Discussion
This performs the following operation:
Corresponding elements of A and B are multiplied and the corresponding value of C is subtracted. The result
is stored in D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vmul
Multiplies vector A by vector B and leaves the result in vector C; single precision.
void vDSP_vmul (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
I
        Address stride for A
B
        Input vector
J
        Address stride for B
C
        Output vector
K
        Address stride for C
N
        Complex output count
Discussion
This performs the following operation:
Functions                                                                                             425
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vmulD
      Multiplies vector A by vector B and leaves the result in vector C; double precision.
      void vDSP_vmulD (
         const double __vDSP_input1[],
         vDSP_Stride __vDSP_stride1,
         const double __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         double __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Parameters
      A
              Input vector
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex output count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vnabs
      Vector negative absolute values; single precision.
426   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vnabs (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vnabsD
Vector negative absolute values; double precision.
void vDSP_vnabsD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
Functions                                                                          427
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vneg
      Vector negative values; single precision.
      void vDSP_vneg (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Each value in C is the negated value of the corresponding element in A.
      Availability
      Available in iPhone OS 4.0 and later.
428   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_vnegD
Vector negative values; double precision.
void vDSP_vnegD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Each value in C is the negated value of the corresponding element in A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vpoly
Vector polynomial evaluation; single precision.
Functions                                                                 429
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vpoly (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_P
      );
      Parameters
      A
              Single-precision real input vector: coefficients
      I
              Stride for A
      B
              Single-precision real input vector: variable values
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      P
              Degree of polynomial
      Discussion
      This performs the following operation:
      Evaluates polynomials using vector B as independent variables and vector A as coefficients. A polynomial of
      degree p requires p+1 coefficients, so vector A should contain P+1 values.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vpolyD
      Vector polynomial evaluation; double precision.
430   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vpolyD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Parameters
A
        Double-precision real input vector: coefficients
I
        Stride for A
B
        Double-precision real input vector: variable values
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count
P
        Degree of polynomial
Discussion
This performs the following operation:
Evaluates polynomials using vector B as independent variables and vector A as coefficients. A polynomial of
degree p requires p+1 coefficients, so vector A should contain P+1 values.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vpythg
Vector Pythagoras; single precision.
Functions                                                                                             431
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vpythg (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         float *__vDSP_D,
         vDSP_Stride __vDSP_L,
         float *__vDSP_E,
         vDSP_Stride __vDSP_M,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real input vector
      K
              Stride for C
      D
              Single-precision real input vector
      L
              Stride for D
      E
              Single-precision real output vector
      M
              Stride for E
      N
              Count
      Discussion
      This performs the following operation:
      Subtracts vector C from A and squares the differences, subtracts vector D from B and squares the differences,
      adds the two sets of squared differences, and then writes the square roots of the sums to vector E.
      Availability
      Available in iPhone OS 4.0 and later.
432   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_vpythgD
Vector Pythagoras; double precision.
void vDSP_vpythgD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   double *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real input vector
K
        Stride for C
D
        Double-precision real input vector
L
        Stride for D
E
        Double-precision real output vector
M
        Stride for E
N
        Count
Discussion
This performs the following operation:
Functions                                             433
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Subtracts vector C from A and squares the differences, subtracts vector D from B and squares the differences,
      adds the two sets of squared differences, and then writes the square roots of the sums to vector E.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vqint
      Vector quadratic interpolation; single precision.
      void vDSP_vqint (
         float *__vDSP_A,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Single-precision real input vector
      B
              Single-precision real input vector: integer parts are indices into A and fractional parts are interpolation
              constants
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count for C
      M
              Length of A: must be greater than or equal to 3
      Discussion
      This performs the following operation:
434   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Generates vector C by interpolating between neighboring values of vector A as controlled by vector B. The
integer portion of each element in B is the zero-based index of the first element of a triple of adjacent values
in vector A.
The value of the corresponding element of C is derived from these three values by quadratic interpolation,
using the fractional part of the value in B.
Argument M is not used in the calculation. However, the integer parts of the values in B must be less than or
equal to M - 2.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vqintD
Vector quadratic interpolation; double precision.
void vDSP_vqintD (
   double *__vDSP_A,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_M
);
Parameters
A
        Double-precision real input vector
B
        Double-precision real input vector: integer parts are indices into A and fractional parts are interpolation
        constants
J
        Stride for B
C
        Double-precision real output vector
K
        Stride for C
N
        Count for C
M
        Length of A: must be greater than or equal to 3
Discussion
This performs the following operation:
Functions                                                                                                     435
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Generates vector C by interpolating between neighboring values of vector A as controlled by vector B. The
      integer portion of each element in B is the zero-based index of the first element of a triple of adjacent values
      in vector A.
      The value of the corresponding element of C is derived from these three values by quadratic interpolation,
      using the fractional part of the value in B.
      Argument M is not used in the calculation. However, the integer parts of the values in B must be less than or
      equal to M - 2.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vramp
      Build ramped vector; single precision.
      void vDSP_vramp (
         float *__vDSP_A,
         float *__vDSP_B,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input scalar: initial value
      B
              Single-precision real input scalar: increment or decrement
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
436   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Creates a monotonically incrementing or decrementing vector. Scalar A is the initial value written to vector
C. Scalar B is the increment or decrement for each succeeding element.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrampD
Build ramped vector; double precision.
void vDSP_vrampD (
   double *__vDSP_A,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input scalar: initial value
B
        Double-precision real input scalar: increment or decrement
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Creates a monotonically incrementing or decrementing vector. Scalar A is the initial value written to vector
C. Scalar B is the increment or decrement for each succeeding element.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrampmul
Builds a ramped vector and multiplies by a source vector.
Functions                                                                                               437
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vrampmul (
         const float *__vDSP_I,
         vDSP_Stride __vDSP_IS,
         float *__vDSP_Start,
         const float *__vDSP_Step,
         float *__vDSP_O,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I
              Input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O
              The output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This routine calculates the following:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vrampmul2
      Stereo version of vDSP_vrampmul (page 437).
438   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vrampmul2 (
   const float *__vDSP_I0,
   const float *__vDSP_I1,
   vDSP_Stride __vDSP_IS,
   float *__vDSP_Start,
   const float *__vDSP_Step,
   float *__vDSP_O0,
   float *__vDSP_O1,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I0
        First input vector, multiplied by the ramp function.
__vDSP_I1
        Second input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O0
        First output vector.
__vDSP_O1
        Second output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This function calculates the following:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrampmul2_s1_15
Vector fixed-point 1.15 format version of vDSP_vrampmul2 (page 438).
Functions                                                                                               439
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vrampmul2_s1_15 (
         const short int *__vDSP_I0,
         const short int *__vDSP_I1,
         vDSP_Stride __vDSP_IS,
         short int *__vDSP_Start,
         const short int *__vDSP_Step,
         short int *__vDSP_O0,
         short int *__vDSP_O1,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I0
              First input vector, multiplied by the ramp function.
      __vDSP_I1
              Second input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O0
              First output vector.
      __vDSP_O1
              Second output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This function calculates the following:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
440   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vrampmul2_s8_24
Vector fixed-point 8.24 format version of vDSP_vrampmul2 (page 438).
void vDSP_vrampmul2_s8_24 (
   const int *__vDSP_I0,
   const int *__vDSP_I1,
   vDSP_Stride __vDSP_IS,
   int *__vDSP_Start,
   const int *__vDSP_Step,
   int *__vDSP_O0,
   int *__vDSP_O1,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I0
        First input vector, multiplied by the ramp function.
__vDSP_I1
        Second input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O0
        First output vector.
__vDSP_O1
        Second output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This function calculates the following:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                               441
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vrampmuladd
      Builds a ramped vector, multiplies it by a source vector, and adds the result to the output vector.
      void vDSP_vrampmuladd (
         const float *__vDSP_I,
         vDSP_Stride __vDSP_IS,
         float *__vDSP_Start,
         const float *__vDSP_Step,
         float *__vDSP_O,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I
              Input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O
              The output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This routine calculates the following:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vrampmuladd2
      Stereo version of vDSP_vrampmuladd (page 442).
442   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vrampmuladd2 (
   const float *__vDSP_I0,
   const float *__vDSP_I1,
   vDSP_Stride __vDSP_IS,
   float *__vDSP_Start,
   const float *__vDSP_Step,
   float *__vDSP_O0,
   float *__vDSP_O1,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I0
        First input vector, multiplied by the ramp function.
__vDSP_I1
        Second input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O0
        First output vector.
__vDSP_O1
        Second output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This function calculates the following:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrampmuladd2_s1_15
Vector fixed-point 1.15 format version of vDSP_vrampmuladd2 (page 442).
Functions                                                                                               443
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vrampmuladd2_s1_15 (
         const short int *__vDSP_I0,
         const short int *__vDSP_I1,
         vDSP_Stride __vDSP_IS,
         short int *__vDSP_Start,
         const short int *__vDSP_Step,
         short int *__vDSP_O0,
         short int *__vDSP_O1,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I0
              First input vector, multiplied by the ramp function.
      __vDSP_I1
              Second input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O0
              First output vector.
      __vDSP_O1
              Second output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This function calculates the following:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
444   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vrampmuladd2_s8_24
Vector fixed-point 8.24 format version of vDSP_vrampmuladd2 (page 442).
void vDSP_vrampmuladd2_s8_24 (
   const int *__vDSP_I0,
   const int *__vDSP_I1,
   vDSP_Stride __vDSP_IS,
   int *__vDSP_Start,
   const int *__vDSP_Step,
   int *__vDSP_O0,
   int *__vDSP_O1,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I0
        First input vector, multiplied by the ramp function.
__vDSP_I1
        Second input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vectors. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O0
        First output vector.
__vDSP_O1
        Second output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This function calculates the following:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                               445
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vrampmuladd_s1_15
      Vector fixed-point 1.15 format version of vDSP_vrampmuladd (page 442).
      void vDSP_vrampmuladd_s1_15 (
         const short int *__vDSP_I,
         vDSP_Stride __vDSP_IS,
         short int *__vDSP_Start,
         const short int *__vDSP_Step,
         short int *__vDSP_O,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I
              Input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O
              The output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This routine calculates the following:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
446   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vrampmuladd_s8_24
Vector fixed-point 8.24 format version of vDSP_vrampmuladd (page 442).
void vDSP_vrampmuladd_s8_24 (
   const int *__vDSP_I,
   vDSP_Stride __vDSP_IS,
   int *__vDSP_Start,
   const int *__vDSP_Step,
   int *__vDSP_O,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I
        Input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O
        The output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This routine calculates the following:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrampmul_s1_15
Vector fixed-point 1.15 format version of vDSP_vrampmul (page 437).
Functions                                                                                               447
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vrampmul_s1_15 (
         const short int *__vDSP_I,
         vDSP_Stride __vDSP_IS,
         short int *__vDSP_Start,
         const short int *__vDSP_Step,
         short int *__vDSP_O,
         vDSP_Stride __vDSP_OS,
         vDSP_Length __vDSP_N
      );
      Parameters
      __vDSP_I
              Input vector, multiplied by the ramp function.
      __vDSP_IS
              Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
      __vDSP_Start
              The initial value for the ramp function. Modified on return to hold the next value (including
              accumulated errors) so that the ramp function can be continued smoothly.
      __vDSP_Step
              The value to increment each subsequent value of the ramp function by.
      __vDSP_O
              The output vector.
      __vDSP_OS
              Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
      __vDSP_N
              The number of elements to modify.
      Discussion
      This routine calculates the following:
      The elements are fixed-point numbers, each with one sign bit and 15 fraction bits. A value in this representation
      can be converted to floating-point by dividing it by 32768.0.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vrampmul_s8_24
      Vector fixed-point 8.24 format version of vDSP_vrampmul (page 437).
448   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vrampmul_s8_24 (
   const int *__vDSP_I,
   vDSP_Stride __vDSP_IS,
   int *__vDSP_Start,
   const int *__vDSP_Step,
   int *__vDSP_O,
   vDSP_Stride __vDSP_OS,
   vDSP_Length __vDSP_N
);
Parameters
__vDSP_I
        Input vector, multiplied by the ramp function.
__vDSP_IS
        Stride length in input vector. For example, if __vDSP_IS is 2, every second element is used.
__vDSP_Start
        The initial value for the ramp function. Modified on return to hold the next value (including
        accumulated errors) so that the ramp function can be continued smoothly.
__vDSP_Step
        The value to increment each subsequent value of the ramp function by.
__vDSP_O
        The output vector.
__vDSP_OS
        Stride length in output vector. For example, if __vDSP_IS is 2, every second element is modified.
__vDSP_N
        The number of elements to modify.
Discussion
This routine calculates the following:
The elements are fixed-point numbers, each with eight integer bits (including the sign bit) and 24 fraction
bits. A value in this representation can be converted to floating-point by dividing it by 16777216.0.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrsum
Vector running sum integration; single precision.
Functions                                                                                               449
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vrsum (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_S,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      S
              Single-precision real input scalar: weighting factor
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Integrates vector A using a running sum from vector C. Vector A is weighted by scalar S and added to the
      previous output point. The first element from vector A is not used in the sum.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vrsumD
      Vector running sum integration; double precision.
450   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vrsumD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_S,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
S
        Double-precision real input scalar: weighting factor
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Integrates vector A using a running sum from vector C. Vector A is weighted by scalar S and added to the
previous output point. The first element from vector A is not used in the sum.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vrvrs
Vector reverse order, in place; single precision.
void vDSP_vrvrs (
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
C
        Single-precision real input-output vector
Functions                                                                                             451
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vrvrsD
      Vector reverse order, in place; double precision.
      void vDSP_vrvrsD (
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      C
              Double-precision real input-output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
452   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vsadd
Vector scalar add; single precision.
void vDSP_vsadd (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Adds scalar B to each element of vector A and stores the result in the corresponding element of vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsaddD
Vector scalar add; double precision.
Functions                                                                                              453
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsaddD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
Adds scalar B to each element of vector A and stores the result in the corresponding element of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsaddi
      Integer vector scalar add.
      void vDSP_vsaddi (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_B,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Integer input vector
454   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
I
        Stride for A
B
        Integer input scalar
C
        Integer output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Adds scalar B to each element of vector A and stores the result in the corresponding element of vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsbm
Vector subtract and multiply; single precision.
void vDSP_vsbm (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
Functions                                                                                              455
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      C
              Single-precision real input vector
      K
              Stride for C
      D
              Single-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
      Subtracts vector B from vector A and then multiplies the differences by vector C. Results are stored in vector
      D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsbmD
      Vector subtract and multiply; double precision.
      void vDSP_vsbmD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Double for B
456   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
C
        Double-precision real input vector
K
        Stride for C
D
        Double-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Subtracts vector B from vector A and then multiplies the differences by vector C. Results are stored in vector
D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsbsbm
Vector subtract, subtract, and multiply; single precision.
void vDSP_vsbsbm (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   float *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
Functions                                                                                                457
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      J
              Stride for B
      C
              Single-precision real input vector
      K
              Stride for C
      D
              Single-precision real input vector
      L
              Stride for D
      E
              Single-precision real output vector
      M
              Stride for E
      N
              Count
      Discussion
      This performs the following operation:
      Subtracts vector B from A, subtracts vector D from C, and multiplies the differences. Results are stored in
      vector E.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsbsbmD
      Vector subtract, subtract, and multiply; double precision.
458   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsbsbmD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   double *__vDSP_E,
   vDSP_Stride __vDSP_M,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real input vector
K
        Stride for C
D
        Double-precision real input vector
L
        Stride for D
E
        Double-precision real output vector
M
        Stride for E
N
        Count
Discussion
This performs the following operation:
Subtracts vector B from A, subtracts vector D from C, and multiplies the differences. Results are stored in
vector E.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                 459
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_vsbsm
      Vector subtract and scalar multiply; single precision.
      void vDSP_vsbsm (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         float *__vDSP_C,
         float *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real input scalar
      D
              Single-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      This performs the following operation:
      Subtracts vector B from vector A and then multiplies each difference by scalar C. Results are stored in vector
      D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
460   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vsbsmD
Vector subtract and scalar multiply; double precision.
void vDSP_vsbsmD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   double *__vDSP_C,
   double *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input vector
J
        Stride for B
C
        Double-precision real input scalar
D
        Double-precision real output vector
L
        Stride for D
N
        Count
Discussion
This performs the following operation:
Subtracts vector B from vector A and then multiplies each difference by scalar C. Results are stored in vector
D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsdiv
Vector scalar divide; single precision.
Functions                                                                                                461
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsdiv (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      B
              Single-precision real input scalar
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
Divides each element of vector A by scalar B and stores the result in the corresponding element of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsdivD
      Vector scalar divide; double precision.
462   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsdivD (
   double *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
I
        Stride for A
B
        Double-precision real input scalar
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Divides each element of vector A by scalar B and stores the result in the corresponding element of vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsdivi
Integer vector scalar divide.
Functions                                                                                              463
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsdivi (
         int *__vDSP_A,
         vDSP_Stride __vDSP_I,
         int *__vDSP_B,
         int *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Integer input vector
      I
              Stride for A
      B
              Integer input scalar
      C
              Integer output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
Divides each element of vector A by scalar B and stores the result in the corresponding element of vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsimps
      Simpson integration; single precision.
464   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsimps (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Integrates vector A using Simpson integration, storing results in vector C. Scalar B specifies the integration
step size. This function can only be done out of place.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsimpsD
Simpson integration; double precision.
Functions                                                                                                 465
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsimpsD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Integrates vector A using Simpson integration, storing results in vector C. Scalar B specifies the integration
      step size. This function can only be done out of place.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsma
      Vector scalar multiply and vector add; single precision.
466   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsma (
   const float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   const float *__vDSP_B,
   const float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Multiplies vector A by scalar B and then adds the products to vector C. Results are stored in vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsmaD
Vector scalar multiply and vector add; double precision.
Functions                                                                                                 467
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsmaD (
         const double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         const double *__vDSP_B,
         const double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Performs the following operation:
Multiplies vector A by scalar B and then adds the products to vector C. Results are stored in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsmsa
      Vector scalar multiply and scalar add; single precision.
468   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsmsa (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real input scalar
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Multiplies vector A by scalar B and then adds scalar C to each product. Results are stored in vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsmsaD
Vector scalar multiply and scalar add; double precision.
Functions                                                                                                 469
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsmsaD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real input scalar
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Performs the following operation:
Multiplies vector A by scalar B and then adds scalar C to each product. Results are stored in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsmsb
      Vector scalar multiply and vector subtract; single precision.
470   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsmsb (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Multiplies vector A by scalar B and then subtracts vector C from the products. Results are stored in vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsmsbD
Vector scalar multiply and vector subtract; double precision.
Functions                                                                                                471
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsmsbD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Performs the following operation:
Multiplies vector A by scalar B and then subtracts vector C from the products. Results are stored in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsmul
      Multiplies vector signal1 by scalar signal2 and leaves the result in vector result; single precision.
472   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsmul (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float *__vDSP_input2,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsmulD
Multiplies vector signal1 by scalar signal2 and leaves the result in vector result; double precision.
void vDSP_vsmulD (
   const double __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const double *__vDSP_input2,
   double __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsort
Vector in-place sort; single precision.
Functions                                                                                               473
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vsort (
         float *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_OFLAG
      );
      Parameters
      C
              Single-precision real input-output vector
      N
              Count
      OFLAG
              Flag for sort order: 1 for ascending, -1 for descending
      Discussion
      Performs an in-place sort of vector C in the order specified by parameter OFLAG.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsortD
      Vector in-place sort; double precision.
      void vDSP_vsortD (
         double *__vDSP_C,
         vDSP_Length __vDSP_N,
         int __vDSP_OFLAG
      );
      Parameters
      C
              Double-precision real input-output vector
      N
              Count
      OFLAG
              Flag for sort order: 1 for ascending, -1 for descending
      Discussion
      Performs an in-place sort of vector C in the order specified by parameter OFLAG.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
474   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_vsorti
Vector index in-place sort; single precision.
void vDSP_vsorti (
   float *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length *__vDSP_List_addr,
   vDSP_Length __vDSP_N,
   int __vDSP_OFLAG
);
Parameters
C
        Single-precision real input vector
IC
        Integer output vector. Must be initialized with the indices of vector C, from 0 to N-1.
List_addr
        Temporary vector. This is currently not used and NULL should be passed.
N
        Count
OFLAG
        Flag for sort order: 1 for ascending, -1 for descending
Discussion
Leaves input vector C unchanged and performs an in-place sort of the indices in vector IC according to the
values in C. The sort order is specified by parameter OFLAG.
The values in C can then be obtained in sorted order, by taking indices in sequence from IC.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsortiD
Vector index in-place sort; double precision.
void vDSP_vsortiD (
   double *__vDSP_C,
   vDSP_Length *__vDSP_IC,
   vDSP_Length *__vDSP_List_addr,
   vDSP_Length __vDSP_N,
   int __vDSP_OFLAG
);
Parameters
C
        Double-precision real input vector
IC
        Integer output vector. Must be initialized with the indices of vector C, from 0 to N-1.
Functions                                                                                            475
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      List_addr
              Temporary vector. This is currently not used and NULL should be passed.
      N
              Count
      OFLAG
              Flag for sort order: 1 for ascending, -1 for descending
      Discussion
      Leaves input vector C unchanged and performs an in-place sort of the indices in vector IC according to the
      values in C. The sort order is specified by parameter OFLAG.
The values in C can then be obtained in sorted order, by taking indices in sequence from IC.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vspdp
      Vector convert single-precision to double-precision.
      void vDSP_vspdp (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input vector
      I
              Stride for A
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Creates double-precision vector C by converting single-precision inputs from vector A. This function can only
      be done out of place.
476   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsq
Computes the squared values of vector input and leaves the result in vector result; single precision.
void vDSP_vsq (
   const float __vDSP_input[],
   vDSP_Stride __vDSP_strideInput,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsqD
Computes the squared values of vector signal1 and leaves the result in vector result; double precision.
void vDSP_vsqD (
   const double __vDSP_input[],
   vDSP_Stride __vDSP_strideInput,
   double __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                               477
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_vssq
      Computes the signed squares of vector signal1 and leaves the result in vector result; single precision.
      void vDSP_vssq (
         const float __vDSP_input[],
         vDSP_Stride __vDSP_strideInput,
         float __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vssqD
      Computes the signed squares of vector signal1 and leaves the result in vector result; double precision.
      void vDSP_vssqD (
         const double __vDSP_input[],
         vDSP_Stride __vDSP_strideInput,
         double __vDSP_result[],
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vsub
      Subtracts vector signal1 from vector signal2 and leaves the result in vector result; single precision.
478   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vsub (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vsubD
Subtracts vector signal1 from vector signal2 and leaves the result in vector result; double precision.
void vDSP_vsubD (
   const double __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const double __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   double __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vswap
Vector swap; single precision.
Functions                                                                                          479
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vswap (
         float *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         vDSP_Stride __vDSP_J,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision real input-output vector
      I
              Stride for A
      B
              Single-precision real input-output vector
      J
              Stride for B
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vswapD
      Vector swap; double precision.
      void vDSP_vswapD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input-output vector
      I
              Stride for A
480   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
B
        Double-precision real input-output vector
J
        Stride for B
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vswsum
Vector sliding window sum; single precision.
void vDSP_vswsum (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
C
        Single-precision real output vector
K
        Stride for C
N
        Count of output points
P
        Length of window
Discussion
Performs the following operation:
Functions                                             481
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Writes the sliding window sum of P consecutive elements of vector A to vector C, for each of N possible
      starting positions of the P-element window in vector A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vswsumD
      Vector sliding window sum; double precision.
      void vDSP_vswsumD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_P
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count of output points
      P
              Length of window
      Discussion
      Performs the following operation:
      Writes the sliding window sum of P consecutive elements of vector A to vector C, for each of N possible
      starting positions of the P-element window in vector A.
482   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vtabi
Vector interpolation, table lookup; single precision.
void vDSP_vtabi (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_S1,
   float *__vDSP_S2,
   float *__vDSP_C,
   vDSP_Length __vDSP_M,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
S1
        Single-precision real input scalar: scale factor
S2
        Single-precision real input scalar: base offset
C
        Single-precision real input vector: lookup table
M
        Lookup table size
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Functions                                                                                                 483
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Evaluates elements of vector A for use as offsets into vector C. Vector C is a zero-based lookup table supplied
      by the caller that generates output values for vector D. Linear interpolation is used to compute output values
      when offsets do not evaluate integrally. Scale factor S1 and base offset S2 map the anticipated range of
      input values to the range of the lookup table and are typically assigned values such that:
      Input values that evaluate to zero or less derive their output values from table location zero. Values that
      evaluate beyond the table, greater than M-1, derive their output values from the last table location. For inputs
      that evaluate integrally, the table location indexed by the integral is copied as the output value. All other
      inputs derive their output values by interpolation between the two table values surrounding the evaluated
      input.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vtabiD
      Vector interpolation, table lookup; double precision.
      void vDSP_vtabiD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_S1,
         double *__vDSP_S2,
         double *__vDSP_C,
         vDSP_Length __vDSP_M,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      S1
              Double-precision real input scalar: scale factor
      S2
              Double-precision real input scalar: base offset
      C
              Double-precision real input vector: lookup table
      M
              Lookup table size
      D
              Double-precision real output vector
484   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Evaluates elements of vector A for use as offsets into vector C. Vector C is a zero-based lookup table supplied
by the caller that generates output values for vector D. Linear interpolation is used to compute output values
when offsets do not evaluate integrally. Scale factor S1 and base offset S2 map the anticipated range of
input values to the range of the lookup table and are typically assigned values such that:
Input values that evaluate to zero or less derive their output values from table location zero. Values that
evaluate beyond the table, greater than M-1, derive their output values from the last table location. For inputs
that evaluate integrally, the table location indexed by the integral is copied as the output value. All other
inputs derive their output values by interpolation between the two table values surrounding the evaluated
input.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vthr
Vector threshold; single precision.
void vDSP_vthr (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: lower threshold
C
        Single-precision real output vector
Functions                                                                                                  485
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Creates vector C by comparing each input from vector A with scalar B. If an input value is less than B, B is
      copied to C; otherwise, the input value from A is copied to C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vthrD
      Vector threshold; double precision.
      void vDSP_vthrD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: lower threshold
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
486   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Creates vector C by comparing each input from vector A with scalar B. If an input value is less than B, B is
copied to C; otherwise, the input value from A is copied to C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vthres
Vector threshold with zero fill; single precision.
void vDSP_vthres (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: lower threshold
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Creates vector C by comparing each input from vector A with scalar B. If an input value is less than B, zero is
written to C; otherwise, the input value from A is copied to C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                                 487
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_vthresD
      Vector threshold with zero fill; double precision.
      void vDSP_vthresD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: lower threshold
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Creates vector C by comparing each input from vector A with scalar B. If an input value is less than B, zero is
      written to C; otherwise, the input value from A is copied to C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vthrsc
      Vector threshold with signed constant; single precision.
488   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vthrsc (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   float *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: lower threshold
C
        Single-precision real input scalar
D
        Single-precision real output vector
L
        Stride for D
N
        Count
Discussion
Performs the following operation:
Creates vector D using the plus or minus value of scalar C. The sign of the output element is determined by
comparing input from vector A with threshold scalar B. For input values less than B, the negated value of C
is written to vector D. For input values greater than or equal to B, C is copied to vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vthrscD
Vector threshold with signed constant; double precision.
Functions                                                                                              489
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vthrscD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         double *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: lower threshold
      C
              Double-precision real input scalar
      D
              Double-precision real output vector
      L
              Stride for D
      N
              Count
      Discussion
      Performs the following operation:
      Creates vector D using the plus or minus value of scalar C. The sign of the output element is determined by
      comparing input from vector A with threshold scalar B. For input values less than B, the negotiated value of
      C is written to vector D. For input values greater than or equal to B, C is copied to vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vtmerg
      Tapered merge of two vectors; single precision.
490   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vtmerg (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input vector
J
        Stride for B
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Performs a tapered merge of vectors A and B. Values written to vector C range from element zero of vector
A to element N-1 of vector B. Output values between these endpoints reflect varying amounts of their
corresponding inputs from vectors A and B, with the percentage of vector A decreasing and the percentage
of vector B increasing as the index increases.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vtmergD
Tapered merge of two vectors; double precision.
Functions                                                                                           491
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vtmergD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Performs a tapered merge of vectors A and B. Values written to vector C range from element zero of vector
      A to element N-1 of vector B. Output values between these endpoints reflect varying amounts of their
      corresponding inputs from vectors A and B, with the percentage of vector A decreasing and the percentage
      of vector B increasing as the index increases.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_vtrapz
      Vector trapezoidal integration; single precision.
492   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_vtrapz (
   float *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
I
        Stride for A
B
        Single-precision real input scalar: step size
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Performs the following operation:
Estimates the integral of vector A using the trapezoidal rule. Scalar B specifies the integration step size. This
function can only be done out of place.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_vtrapzD
Vector trapezoidal integration; double precision.
Functions                                                                                                   493
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_vtrapzD (
         double *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision real input vector
      I
              Stride for A
      B
              Double-precision real input scalar: step size
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Performs the following operation:
      Estimates the integral of vector A using the trapezoidal rule. Scalar B specifies the integration step size. This
      function can only be done out of place.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_wiener
      Wiener-Levinson general convolution; single precision.
494   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_wiener (
   vDSP_Length __vDSP_L,
   float *__vDSP_A,
   float *__vDSP_C,
   float *__vDSP_F,
   float *__vDSP_P,
   int __vDSP_IFLG,
   int *__vDSP_IERR
);
Parameters
L
        Input filter length
A
        Single-precision real input vector: coefficients
C
        Single-precision real input vector: input coefficients
F
        Single-precision real output vector: filter coefficients
P
        Single-precision real output vector: error prediction operators
IFLG
        Not currently used, pass zero
IERR
        Error flag
Discussion
Performs the following operation:
where matrix A contains elements of the symmetric Toeplitz matrix shown below. This function can only be
done out of place.
vDSP_wiener solves this set of simultaneous equations using a recursive method described by Levinson.
See Robinson, E.A., Multichannel Time Series Analysis with Digital Computer Programs. San Francisco: Holden-Day,
1967, pp. 43-46.
Functions                                                                                                  495
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Typical methods for solving N equations in N unknowns have execution times proportional to N3, and memory
      requirements proportional to N2. By taking advantage of duplicate elements, the recursion method executes
      in a time proportional to N2 and requires memory proportional to N. The Wiener-Levinson algorithm recursively
      builds a solution by computing the m+1 matrix solution from the m matrix solution.
      With successful completion, vDSP_wiener returns zero in error flag IERR. If vDSP_wiener fails, IERR
      indicates in which pass the failure occurred.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_wienerD
      Wiener-Levinson general convolution; double precision.
      void vDSP_wienerD (
         vDSP_Length __vDSP_L,
         double *__vDSP_A,
         double *__vDSP_C,
         double *__vDSP_F,
         double *__vDSP_P,
         int __vDSP_IFLG,
         int *__vDSP_IERR
      );
      Parameters
      L
              Input filter length
      A
              Double-precision real input vector: coefficients
      C
              Double-precision real input vector: input coefficients
      F
              Double-precision real output vector: filter coefficients
      P
              Double-precision real output vector: error prediction operators
      IFLG
              Not currently used, pass zero
      IERR
              Error flag
      Discussion
      Performs the following operation:
496   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
where matrix A contains elements of the symmetric Toeplitz matrix shown below. This function can only be
done out of place.
vDSP_wiener solves this set of simultaneous equations using a recursive method described by Levinson.
See Robinson, E.A., Multichannel Time Series Analysis with Digital Computer Programs. San Francisco: Holden-Day,
1967, pp. 43-46.
Typical methods for solving N equations in N unknowns have execution times proportional to N3, and memory
requirements proportional to N2. By taking advantage of duplicate elements, the recursion method executes
in a time proportional to N2 and requires memory proportional to N. The Wiener-Levinson algorithm recursively
builds a solution by computing the m+1 matrix solution from the m matrix solution.
With successful completion, vDSP_wiener returns zero in error flag IERR. If vDSP_wiener fails, IERR
indicates in which pass the failure occurred.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zaspec
Computes an accumulating autospectrum; single precision.
void vDSP_zaspec (
   DSPSplitComplex *__vDSP_A,
   float *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Input vector
C
        Input-output vector
N
        Real output count
Functions                                                                                                  497
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Discussion
      vDSP_zaspec multiplies single-precision complex vector A by its complex conjugates, yielding the sums of
      the squares of the complex and real parts: (x + iy) (x - iy) = (x*x + y*y). The results are added to real
      single-precision input-output vector C. Vector C must contain valid data from previous processing or should
      be initialized according to your needs before calling vDSP_zaspec.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zaspecD
      Computes an accumulating autospectrum; double precision.
      void vDSP_zaspecD (
         DSPDoubleSplitComplex *A,
         double *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Input vector
      C
              Input-output vector
      N
              Real output count
      Discussion
      vDSP_zaspecD multiplies double-precision complex vector A by its complex conjugates, yielding the sums
      of the squares of the complex and real parts: (x + iy) (x - iy) = (x*x + y*y). The results are added
      to real double-precision input-output vector C. Vector C must contain valid data from previous processing
      or should be initialized according to your needs before calling vDSP_zaspec.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zcoher
      Coherence function of two signals; single precision.
498   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zcoher (
   float *__vDSP_A,
   float *__vDSP_B,
   DSPSplitComplex *__vDSP_C,
   float *__vDSP_D,
   vDSP_Length __vDSP_N
);
Discussion
Computes the single-precision coherence function D of two signals. The inputs are the signals' autospectra,
real single-precision vectors A and B, and their cross-spectrum, single-precision complex vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zcoherD
Coherence function of two signals; double precision.
void vDSP_zcoherD (
   double *__vDSP_A,
   double *__vDSP_B,
   DSPDoubleSplitComplex *__vDSP_C,
   double *__vDSP_D,
   vDSP_Length __vDSP_N
);
Discussion
Computes the double-precision coherence function D of two signals. The inputs are the signals' autospectra,
real double-precision vectors A and B, and their cross-spectrum, double-precision complex vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zconv
Performs either correlation or convolution on two complex vectors; single precision.
Functions                                                                                             499
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zconv (
         DSPSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPSplitComplex *__vDSP_filter,
         vDSP_Stride __vDSP_strideFilter,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_lenResult,
         vDSP_Length __vDSP_lenFilter
      );
      Discussion
      A is the input vector, with stride I, and C is the output vector, with stride K and length N.
      B is a filter vector, with stride I and length P. If Jis positive,the function performs correlation. If Jis negative,
      it performs convolution and Bmust point to the last element in the filter vector. The function can run in place,
      but Ccannot be in place with B.
      ■    Both the real parts and the imaginary parts of vectors A and C must be relatively aligned.
      ■    The values of I and K must be 1.
If any of these criteria is not satisfied, the function invokes scalar code.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zconvD
      Performs either correlation or convolution on two complex vectors; double precision.
      void vDSP_zconvD (
         DSPDoubleSplitComplex *__vDSP_signal,
         vDSP_Stride __vDSP_signalStride,
         DSPDoubleSplitComplex *__vDSP_filter,
         vDSP_Stride __vDSP_strideFilter,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_lenResult,
         vDSP_Length __vDSP_lenFilter
      );
      Discussion
      A is the input vector, with stride I, and C is the output vector, with stride K and length N.
500   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
B is a filter vector, with stride I and length P. If J is positive, the function performs correlation. If J is
negative, it performs convolution and B must point to the last element in the filter vector. The function can
run in place, but C cannot be in place with B.
No Altivec support for double precision. On a PowerPC processor, this function always invokes scalar code.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zcspec
Accumulating cross-spectrum on two complex vectors; single precision.
void vDSP_zcspec (
   DSPSplitComplex *__vDSP_A,
   DSPSplitComplex *__vDSP_B,
   DSPSplitComplex *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
B
        Single-precision complex input vector
C
        Single-precision complex input-output vector
N
        Count
Discussion
Computes the cross-spectrum of complex vectors A and B and then adds the results to complex input-output
vector C. Vector C should contain valid data from previous processing or should be initialized with zeros
before calling vDSP_zcspec.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                501
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_zcspecD
      Accumulating cross-spectrum on two complex vectors; double precision.
      void vDSP_zcspecD (
         DSPDoubleSplitComplex *A,
         DSPDoubleSplitComplex *__vDSP_B,
         DSPDoubleSplitComplex *__vDSP_C,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      B
              Double-precision complex input vector
      C
              Double-precision complex input-output vector
      N
              Count
      Discussion
      Computes the cross-spectrum of complex vectors A and B and then adds the results to complex input-output
      vector C. Vector C should contain valid data from previous processing or should be initialized with zeros
      before calling vDSP_zcspecD.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zdotpr
      Calculates the complex dot product of complex vectors A and B and leaves the result in complex vector C;
      single precision.
502   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zdotpr (
   DSPSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPSplitComplex *__vDSP_result,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zdotprD
Calculates the complex dot product of complex vectors A and B and leaves the result in complex vector C;
double precision.
void vDSP_zdotprD (
   DSPDoubleSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPDoubleSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                            503
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_zidotpr
      Calculates the conjugate dot product (or inner dot product) of complex vectors A and B and leave the result
      in complex vector C; single precision.
      void vDSP_zidotpr (
         DSPSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         DSPSplitComplex *__vDSP_input2,
         vDSP_Stride __vDSP_stride2,
         DSPSplitComplex *__vDSP_result,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zidotprD
      Calculates the conjugate dot product (or inner dot product) of complex vectors A and B and leave the result
      in complex vector C; double precision.
      void vDSP_zidotprD (
         DSPDoubleSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         DSPDoubleSplitComplex *__vDSP_input2,
         vDSP_Stride __vDSP_stride2,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
504   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_zmma
Multiplies two complex matrices, then adds a third complex matrix; out-of-place; single precision.
void vDSP_zmma (
   DSPSplitComplex *__vDSP_a,
   vDSP_Stride __vDSP_i,
   DSPSplitComplex *__vDSP_b,
   vDSP_Stride __vDSP_j,
   DSPSplitComplex *__vDSP_c,
   vDSP_Stride __vDSP_k,
   DSPSplitComplex *__vDSP_d,
   vDSP_Stride __vDSP_l,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B,
adds the product to M-by-N matrix C, and stores the result in M-by-N matrix D; single precision.
Parameters A and C are the matrixes to be multiplied, and C the matrix to be added. I is an address stride
through A. J is an address stride through B. K is an address stride through C. L is an address stride through
D.
Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
the column count of A and the row count of B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zmmaD
Multiplies two complex matrices, then adds a third complex matrix; out-of-place; double precision.
Functions                                                                                                505
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zmmaD (
         DSPDoubleSplitComplex              *__vDSP_a,
         vDSP_Stride __vDSP_i,
         DSPDoubleSplitComplex              *__vDSP_b,
         vDSP_Stride __vDSP_j,
         DSPDoubleSplitComplex              *__vDSP_c,
         vDSP_Stride __vDSP_k,
         DSPDoubleSplitComplex              *__vDSP_d,
         vDSP_Stride __vDSP_l,
         vDSP_Length __vDSP_M,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_P
      );
      Discussion
      This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B,
      adds the product to M-by-N matrix C, and stores the result in M-by-N matrix D; double precision.
      Parameters A and C are the matrixes to be multiplied, and C the matrix to be added. I is an address stride
      through A. J is an address stride through B. K is an address stride through C. L is an address stride through
      D.
      Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
      the column count of A and the row count of B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zmms
      Multiplies two complex matrices, then subtracts a third complex matrix; out-of-place; single precision.
506   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zmms (
   DSPSplitComplex *__vDSP_a,
   vDSP_Stride __vDSP_i,
   DSPSplitComplex *__vDSP_b,
   vDSP_Stride __vDSP_j,
   DSPSplitComplex *__vDSP_c,
   vDSP_Stride __vDSP_k,
   DSPSplitComplex *__vDSP_d,
   vDSP_Stride __vDSP_l,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B ,
subtracts M-by-N matrix C from the product, and stores the result in M-by-N matrix D.
Parameters A and B are the matrixes to be multiplied, and C the matrix to be subtracted. I is an address stride
through A. J is an address stride through B. K is an address stride through C. L is an address stride through
D.
Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
the column count of A and the row count of B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zmmsD
Multiplies two complex matrices, then subtracts a third complex matrix; out-of-place; double precision.
Functions                                                                                                 507
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zmmsD (
         DSPDoubleSplitComplex              *__vDSP_a,
         vDSP_Stride __vDSP_i,
         DSPDoubleSplitComplex              *__vDSP_b,
         vDSP_Stride __vDSP_j,
         DSPDoubleSplitComplex              *__vDSP_c,
         vDSP_Stride __vDSP_k,
         DSPDoubleSplitComplex              *__vDSP_d,
         vDSP_Stride __vDSP_l,
         vDSP_Length __vDSP_M,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_P
      );
      Discussion
      This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B,
      subtracts M-by-N matrix C from the product, and stores the result in M-by-N matrix D.
      Parameters A and B are the matrixes to be multiplied, and C the matrix to be subtracted. I is an address stride
      through A. J is an address stride through B. K is an address stride through C. L is an address stride through
      D.
      Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
      the column count of A and the row count of B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zmmul
      Multiplies two matrices of complex numbers; out-of-place; single precision.
508   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zmmul (
   DSPSplitComplex *__vDSP_a,
   vDSP_Stride __vDSP_i,
   DSPSplitComplex *__vDSP_b,
   vDSP_Stride __vDSP_j,
   DSPSplitComplex *__vDSP_c,
   vDSP_Stride __vDSP_k,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B
and stores the results in an M-by-N matrix C.
Parameters A and B are the matrixes to be multiplied. I is an address stride through A. J is an address stride
through B.
Parameter M is the row count for both A and C. Parameter N is the column count for both B and C. Parameter
P is the column count for A and the row count for B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zmmulD
Multiplies two matrices of complex numbers; out-of-place; double precision.
void vDSP_zmmulD (
   DSPDoubleSplitComplex *__vDSP_a,
   vDSP_Stride __vDSP_i,
   DSPDoubleSplitComplex *__vDSP_b,
   vDSP_Stride __vDSP_j,
   DSPDoubleSplitComplex *__vDSP_c,
   vDSP_Stride __vDSP_k,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B
and stores the results in an M-by-N matrix C.
Functions                                                                                                509
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Parameters A and B are the matrixes to be multiplied. I is an address stride through A. J is an address stride
      through B.
      Parameter M is the row count for both A and C. Parameter N is the column count for both B and C. Parameter
      P is the column count for A and the row count for B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zmsm
      Subtracts the product of two complex matrices from a third complex matrix; out-of-place; single precision.
      void vDSP_zmsm (
         DSPSplitComplex *__vDSP_a,
         vDSP_Stride __vDSP_i,
         DSPSplitComplex *__vDSP_b,
         vDSP_Stride __vDSP_j,
         DSPSplitComplex *__vDSP_c,
         vDSP_Stride __vDSP_k,
         DSPSplitComplex *__vDSP_d,
         vDSP_Stride __vDSP_l,
         vDSP_Length __vDSP_M,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_P
      );
      Discussion
      This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B,
      subtracts the product from M-by-P matrix C, and stores the result in M-by-P matrix D.
      Parameters A and B are the matrixes to be multiplied, and C is the matrix from which the product is to be
      subtracted. aStride is an address stride through A. bStride is an address stride through B. cStride is an
      address stride through C. dStride is an address stride through D.
510   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
the column count of A and the row count of B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zmsmD
Subtracts the product of two complex matrices from a third complex matrix; out-of-place; double precision.
void vDSP_zmsmD (
   DSPDoubleSplitComplex              *__vDSP_a,
   vDSP_Stride __vDSP_i,
   DSPDoubleSplitComplex              *__vDSP_b,
   vDSP_Stride __vDSP_j,
   DSPDoubleSplitComplex              *__vDSP_c,
   vDSP_Stride __vDSP_k,
   DSPDoubleSplitComplex              *__vDSP_d,
   vDSP_Stride __vDSP_l,
   vDSP_Length __vDSP_M,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_P
);
Discussion
This function performs an out-of-place complex multiplication of an M-by-P matrix A by a P-by-N matrix B,
subtracts the product from M-by-P matrix C, and stores the result in M-by-P matrix D.
Parameters A and B are the matrixes to be multiplied, and parameter C is the matrix from which the product
is to be subtracted. aStride is an address stride through A. bStride is an address stride through B. cStride
is an address stride through C. dStride is an address stride through D.
Parameter M is the row count for A, C and D. Parameter N is the column count of B, C, and D. Parameter P is
the column count of A and the row count of B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                               511
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_zrdesamp
      Complex/real downsample with anti-aliasing; single precision.
      void vDSP_zrdesamp (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_B,
         DSPSplitComplex *__vDSP_C,
         vDSP_Length __vDSP_N,
         vDSP_Length __vDSP_M
      );
      Parameters
      A
              Single-precision complex input vector.
      I
              Complex decimation factor.
      B
              Filter coefficient vector.
      C
              Single-precision complex output vector.
      N
              Length of output vector.
      M
              Length of real filter vector.
      Discussion
      Performs finite impulse response (FIR) filtering at selected positions of input vector A.
Length of A must be at least (N+M-1)*i. This function can run in place, but C cannot be in place with B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrdesampD
      Complex/real downsample with anti-aliasing; double precision.
512   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zrdesampD (
   DSPDoubleSplitComplex *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Length __vDSP_N,
   vDSP_Length __vDSP_M
);
Parameters
A
        Double-precision complex input vector.
I
        Complex decimation factor.
B
        Filter coefficient vector.
C
        Double-precision complex output vector.
N
        Length of output vector.
M
        Length of real filter vector.
Discussion
Performs finite impulse response (FIR) filtering at selected positions of input vector A.
Length of A must be at least (N+M-1)*i. This function can run in place, but C cannot be in place with B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zrdotpr
Calculates the complex dot product of complex vector A and real vector B and leaves the result in complex
vector C; single precision.
Functions                                                                                                  513
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zrdotpr (
         DSPSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const float __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         DSPSplitComplex *__vDSP_result,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrdotprD
      Calculates the complex dot product of complex vector A and real vector B and leaves the result in complex
      vector C; double precision.
      void vDSP_zrdotprD (
         DSPDoubleSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const double __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrvadd
      Adds real vector B to complex vector A and leaves the result in complex vector C; single precision.
514   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zrvadd (
   DSPSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
I
        Address stride for A
B
        Input vector
J
        Address stride for B
C
        Output vector
K
        Address stride for C
N
        Complex output count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zrvaddD
Adds real vector B to complex vector A and leaves the result in complex vector C; double precision.
Functions                                                                                             515
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zrvaddD (
         DSPDoubleSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const double __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Parameters
      A
              Input vector
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex output count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrvdiv
      Divides complex vector A by real vector B and leaves the result in vector C; single precision.
516   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zrvdiv (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zrvdivD
Divides complex vector A by real vector B and leaves the result in vector C; double precision.
void vDSP_zrvdivD (
   DSPDoubleSplitComplex *A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_B,
   vDSP_Stride __vDSP_J,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zrvmul
Multiplies complex vector A by real vector B and leaves the result in vector C; single precision.
Functions                                                                                           517
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zrvmul (
         DSPSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const float __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Parameters
      A
              Input vector
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex output count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrvmulD
      Multiplies complex vector A by real vector B and leaves the result in vector C; double precision.
518   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zrvmulD (
   DSPDoubleSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   const double __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
I
        Address stride for A
B
        Input vector
J
        Address stride for B
C
        Output vector
K
        Address stride for C
N
        Complex output count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zrvsub
Subtracts real vector B from complex vector A and leaves the result in complex vector C; single precision.
Functions                                                                                               519
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zrvsub (
         DSPSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const float __vDSP_input2[],
         vDSP_Stride __vDSP_stride2,
         DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Parameters
      A
              Input vector
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex output count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zrvsubD
      Subtracts real vector B from complex vector A and leaves the result in complex vector C; double precision.
520   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zrvsubD (
   DSPDoubleSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   const double __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
I
        Address stride for A
B
        Input vector
J
        Address stride for B
C
        Output vector
K
        Address stride for C
N
        Complex output count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_ztoc
Copies the contents of a split complex vector A to an interleaved complex vector C; single precision.
void vDSP_ztoc (
   const DSPSplitComplex *__vDSP_Z,
   vDSP_Stride __vDSP_strideZ,
   DSPComplex __vDSP_C[],
   vDSP_Stride __vDSP_strideC,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation;
Functions                                                                                               521
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
The strideC parameter contains an address stride through C. strideZ is an address stride through Z.
For best performance, C->realp, C->imagp, A->realp, and A->imagp should be 16-byte aligned.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_ztocD
      Copies the contents of a split complex vector A to an interleaved complex vector C; double precision.
      void vDSP_ztocD (
         const DSPDoubleSplitComplex *__vDSP_Z,
         vDSP_Stride __vDSP_strideZ,
         DSPDoubleComplex __vDSP_C[],
         vDSP_Stride __vDSP_strideC,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
The strideC parameter contains an address stride through C. strideZ is an address stride through Z.
For best performance, C->realp, C->imagp, A->realp, and A->imagp should be 16-byte aligned.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_ztrans
      Transfer function; single precision.
522   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_ztrans (
   float *__vDSP_A,
   DSPSplitComplex *__vDSP_B,
   DSPSplitComplex *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision real input vector
B
        Single-precision complex input vector
C
        Single-precision complex output vector
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_ztransD
Transfer function; double precision.
void vDSP_ztransD (
   double *__vDSP_A,
   DSPDoubleSplitComplex *__vDSP_B,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision real input vector
B
        Double-precision complex input vector
C
        Double-precision complex output vector
N
        Count
Functions                                             523
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvabs
      Complex vector absolute values; single precision.
      void vDSP_zvabs (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision complex input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
524   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_zvabsD
Complex vector absolute values; double precision.
void vDSP_zvabsD (
   DSPDoubleSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision complex input vector
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvadd
Adds complex vectors A and B and leaves the result in complex vector C; single precision.
void vDSP_zvadd (
   DSPSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
Functions                                                                                   525
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex output count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvaddD
      Adds complex vectors A and B and leaves the result in complex vector C; double precision.
      void vDSP_zvaddD (
         DSPDoubleSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         DSPDoubleSplitComplex *__vDSP_input2,
         vDSP_Stride __vDSP_stride2,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
526   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_zvcma
Multiplies complex vector B by the complex conjugates of complex vector A, adds the products to complex
vector C, and stores the results in complex vector D; single precision.
void vDSP_zvcma (
   const DSPSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   const DSPSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   const DSPSplitComplex *__vDSP_input3,
   vDSP_Stride __vDSP_stride3,
   const DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvcmaD
Multiplies complex vector B by the complex conjugates of complex vector A, adds the products to complex
vector C, and stores the results in complex vector D; double precision.
void vDSP_zvcmaD (
   DSPDoubleSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPDoubleSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPDoubleSplitComplex *__vDSP_input3,
   vDSP_Stride __vDSP_stride3,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                          527
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_zvcmul
      Complex vector conjugate and multiply; single precision.
      void vDSP_zvcmul (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPSplitComplex *__vDSP_B,
         vDSP_Stride __vDSP_J,
         DSPSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision complex input vector
      I
              Stride for A
      B
              Single-precision complex input vector
      J
              Stride for B
      B
              Single-precision complex output vector
      K
              Stride for B
      N
              Count
      Discussion
      Multiplies vector B by the complex conjugates of vector A and stores the results in vector B.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvcmulD
      Complex vector conjugate and multiply; double precision.
528   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zvcmulD (
   DSPDoubleSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPDoubleSplitComplex *__vDSP_B,
   vDSP_Stride __vDSP_J,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision complex input vector
I
        Stride for A
B
        Double-precision complex input vector
J
        Stride for B
B
        Double-precision complex output vector
K
        Stride for B
N
        Count
Discussion
Multiplies vector B by the complex conjugates of vector A and stores the results in vector B.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvconj
Complex vector conjugate; single precision.
Functions                                                                                       529
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zvconj (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision complex input vector
      I
              Stride for A
      C
              Single-precision complex output vector
      K
              Stride for C
      N
              Count
      Discussion
      Conjugates vector A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvconjD
      Complex vector conjugate; double precision.
      void vDSP_zvconjD (
         DSPDoubleSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPDoubleSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      C
              Double-precision complex output vector
530   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
K
        Stride for C
N
        Count
Discussion
Conjugates vector A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvdiv
Complex vector divide; single precision.
void vDSP_zvdiv (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPSplitComplex *__vDSP_B,
   vDSP_Stride __vDSP_J,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
I
        Stride for A
B
        Single-precision complex input vector
J
        Stride for B
C
        Single-precision complex output vector
K
        Stride for C
N
        Count
Discussion
Divides vector B by vector A.
Functions                                             531
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvdivD
      Complex vector divide; double precision.
      void vDSP_zvdivD (
         DSPDoubleSplitComplex *A,
         vDSP_Stride __vDSP_I,
         DSPDoubleSplitComplex *__vDSP_B,
         vDSP_Stride __vDSP_J,
         DSPDoubleSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      B
              Double-precision complex input vector
      J
              Stride for B
      C
              Double-precision complex output vector
      K
              Stride for C
      N
              Count
      Discussion
      Divides vector B by vector A.
      Availability
      Available in iPhone OS 4.0 and later.
532   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Declared In
vDSP.h
vDSP_zvfill
Complex vector fill; single precision.
void vDSP_zvfill (
   DSPSplitComplex *__vDSP_A,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input scalar
C
        Single-precision complex output vector
K
        Stride for C
N
        Count
Discussion
Sets each element in complex vector C to complex scalar A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvfillD
Complex vector fill; double precision.
void vDSP_zvfillD (
   DSPDoubleSplitComplex *__vDSP_A,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision complex input scalar
C
        Double-precision complex output vector
Functions                                                    533
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      K
              Stride for C
      N
              Count
      Discussion
      Sets each element in complex vector C to complex scalar A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvmags
      Complex vector magnitudes squared; single precision.
      void vDSP_zvmags (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         float *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision complex input vector
      I
              Stride for A
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Calculates the squared magnitudes of complex vector A.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
534   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
vDSP_zvmagsD
Complex vector magnitudes squared; double precision.
void vDSP_zvmagsD (
   DSPDoubleSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   double *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision complex input vector
I
        Stride for A
C
        Double-precision real output vector
K
        Stride for C
N
        Count
Discussion
Calculates the squared magnitudes of complex vector A.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvmgsa
Complex vector magnitudes square and add; single precision.
void vDSP_zvmgsa (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_B,
   vDSP_Stride __vDSP_J,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
Functions                                                     535
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      I
              Stride for A
      B
              Single-precision real input vector
      J
              Stride for B
      C
              Single-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Adds the squared magnitudes of complex vector A to real vector B and store the results in real vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvmgsaD
      Complex vector magnitudes square and add; double precision.
      void vDSP_zvmgsaD (
         DSPDoubleSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_B,
         vDSP_Stride __vDSP_J,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      B
              Double-precision real input vector
      J
              Stride for B
      C
              Double-precision real output vector
536   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
K
        Stride for C
N
        Count
Discussion
Adds the squared magnitudes of complex vector A to real vector B and store the results in real vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvmov
Complex vector copy; single precision.
void vDSP_zvmov (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
I
        Stride for A
C
        Single-precision complex output vector
K
        Stride for C
N
        Count
Discussion
Copies complex vector A to complex vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
Functions                                                                                              537
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_zvmovD
      Complex vector copy; double precision.
      void vDSP_zvmovD (
         DSPDoubleSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPDoubleSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      C
              Double-precision complex output vector
      K
              Stride for C
      N
              Count
      Discussion
      Copies complex vector A to complex vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvmul
      Multiplies complex vectors A and B and leaves the result in complex vector C; single precision.
      void vDSP_zvmul (
         const DSPSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         const DSPSplitComplex *__vDSP_input2,
         vDSP_Stride __vDSP_stride2,
         const DSPSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size,
         int __vDSP_conjugate
      );
      Discussion
      Pass 1 or -1 for F, for normal or conjugate multiplication, respectively. Results are undefined for other values
      of F.
538   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvmulD
Multiplies complex vectors A and B and leaves the result in complex vector C; double precision.
void vDSP_zvmulD (
   DSPDoubleSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPDoubleSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPDoubleSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size,
   int __vDSP_conjugate
);
Discussion
Pass 1 or -1 for F, for normal or conjugate multiplication, respectively. Results are undefined for other values
of F.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvneg
Complex vector negate; single precision.
Functions                                                                                                  539
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zvneg (
         DSPSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Single-precision complex input vector
      I
              Stride for A
      C
              Single-precision complex output vector
      K
              Stride for C
      N
              Count
      Discussion
      Computes the negatives of the values of complex vector A and puts them into complex vector C.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvnegD
      Complex vector negate; double precision.
      void vDSP_zvnegD (
         DSPDoubleSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPDoubleSplitComplex *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      C
              Double-precision complex output vector
540   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
K
        Stride for C
N
        Count
Discussion
Computes the negatives of the values of complex vector A and puts them into complex vector C.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvphas
Complex vector phase; single precision.
void vDSP_zvphas (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   float *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
I
        Stride for A
C
        Single-precision real output vector
K
        Stride for C
N
        Count
Discussion
Finds the phase values, in radians, of complex vector A and store the results in real vector C. The results are
between -pi and +pi. The sign of the result is the sign of the second coordinate in the input vector.
Availability
Available in iPhone OS 4.0 and later.
Functions                                                                                                  541
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      Declared In
      vDSP.h
      vDSP_zvphasD
      Complex vector phase; double precision.
      void vDSP_zvphasD (
         DSPDoubleSplitComplex *__vDSP_A,
         vDSP_Stride __vDSP_I,
         double *__vDSP_C,
         vDSP_Stride __vDSP_K,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      C
              Double-precision real output vector
      K
              Stride for C
      N
              Count
      Discussion
      Finds the phase values, in radians, of complex vector A and store the results in real vector C. The results are
      between -pi and +pi. The sign of the result is the sign of the second coordinate in the input vector.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvsma
      Complex vector scalar multiply and add; single precision.
542   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zvsma (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPSplitComplex *__vDSP_B,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   DSPSplitComplex *__vDSP_D,
   vDSP_Stride __vDSP_L,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
I
        Stride for A
B
        Single-precision complex input scalar
C
        Single-precision real input vector
K
        Stride for C
D
        Single-precision real output vector
L
        Stride for C
N
        Count
Discussion
Multiplies vector A by scalar B and add the products to vector C. The result is stored in vector D.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvsmaD
Complex vector scalar multiply and add; double precision.
Functions                                                                                             543
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zvsmaD (
         DSPDoubleSplitComplex              *__vDSP_A,
         vDSP_Stride __vDSP_I,
         DSPDoubleSplitComplex              *__vDSP_B,
         DSPDoubleSplitComplex              *__vDSP_C,
         vDSP_Stride __vDSP_K,
         DSPDoubleSplitComplex              *__vDSP_D,
         vDSP_Stride __vDSP_L,
         vDSP_Length __vDSP_N
      );
      Parameters
      A
              Double-precision complex input vector
      I
              Stride for A
      B
              Double-precision complex input scalar
      C
              Double-precision real input vector
      K
              Stride for C
      D
              Double-precision real output vector
      L
              Stride for C
      N
              Count
      Discussion
      Multiplies vector A by scalar B and add the products to vector C. The result is stored in vector D.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvsub
      Subtracts complex vector B from complex vector A and leaves the result in complex vector C; single precision.
544   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zvsub (
   DSPSplitComplex *__vDSP_input1,
   vDSP_Stride __vDSP_stride1,
   DSPSplitComplex *__vDSP_input2,
   vDSP_Stride __vDSP_stride2,
   DSPSplitComplex *__vDSP_result,
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
Parameters
A
        Input vector
I
        Address stride for A
B
        Input vector
J
        Address stride for B
C
        Output vector
K
        Address stride for C
N
        Complex element count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvsubD
Subtracts complex vector B from complex vector A and leaves the result in complex vector C; double precision.
Functions                                                                                               545
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      void vDSP_zvsubD (
         DSPDoubleSplitComplex *__vDSP_input1,
         vDSP_Stride __vDSP_stride1,
         DSPDoubleSplitComplex *__vDSP_input2,
         vDSP_Stride __vDSP_stride2,
         DSPDoubleSplitComplex *__vDSP_result,
         vDSP_Stride __vDSP_strideResult,
         vDSP_Length __vDSP_size
      );
      Parameters
      A
              Input vector
      I
              Address stride for A
      B
              Input vector
      J
              Address stride for B
      C
              Output vector
      K
              Address stride for C
      N
              Complex element count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_zvzsml
      Complex vector multiply by complex scalar; single precision.
546   Functions
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
void vDSP_zvzsml (
   DSPSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPSplitComplex *__vDSP_B,
   DSPSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Single-precision complex input vector
I
        Stride for A
B
        Single-precision complex input scalar
C
        Single-precision complex output vector
K
        Stride for C
N
        Count
Discussion
This performs the following operation:
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
vDSP_zvzsmlD
Complex vector multiply by complex scalar; double precision.
void vDSP_zvzsmlD (
   DSPDoubleSplitComplex *__vDSP_A,
   vDSP_Stride __vDSP_I,
   DSPDoubleSplitComplex *__vDSP_B,
   DSPDoubleSplitComplex *__vDSP_C,
   vDSP_Stride __vDSP_K,
   vDSP_Length __vDSP_N
);
Parameters
A
        Double-precision complex input vector
Functions                                                      547
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      I
              Stride for A
      B
              Double-precision complex input scalar
      C
              Double-precision complex output vector
      K
              Stride for C
      N
              Count
      Discussion
      This performs the following operation:
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
Data Types
This document describes the data types used by the vDSP portion of the Accelerate framework.
      vDSP_Length
      Used for numbers of elements in arrays and indices of elements in arrays. It is also used for the base-two
      logarithm of numbers of elements.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      vDSP_Stride
      Used to hold differences between indices of elements, including the lengths of strides.
      Availability
      Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
DSPComplex
Used to hold a complex value.
struct DSPComplex {
    float real;
    float imag;
};
Discussion
Complex data are stored as ordered pairs of floating-point numbers. Because they are stored as ordered
pairs, complex vectors require address strides that are multiples of two.
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
DSPSplitComplex
Used to represent a complex number when the real and imaginary parts are stored in separate arrays.
struct DSPSplitComplex {
    float *realp;
    float *imagp;
};
Availability
Available in iPhone OS 4.0 and later.
Declared In
vDSP.h
DSPDoubleComplex
Used to hold a double-precision complex value.
struct DSPDoubleComplex {
    double real;
    double imag;
};
      Discussion
      Double complex data are stored as ordered pairs of doiuble-precision floating-point numbers. Because they
      are stored as ordered pairs, complex vectors require address strides that are multiples of two.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      DSPDoubleSplitComplex
      Used to represent a double-precision complex number when the real and imaginary parts are stored in
      separate arrays.
      struct DSPDoubleSplitComplex {
         double *realp;
         double *imagp;
      };
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      FFTSetup
      An opaque type that contains setup information for a given FFT transform.
      Discussion
      A setup object can be allocated with vDSP_create_fftsetup (page 195) and destroyed with
      vDSP_destroy_fftsetup (page 201). The setup object includes, among other things, precomputed tables
      used in computing an FFT of the specified size.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
      FFTSetupD
      An opaque type that contains setup information for a given double-precision FFT transform.
      Discussion
      A setup object can be allocated with vDSP_create_fftsetupD (page 196) and destroyed with
      vDSP_destroy_fftsetupD (page 202). The setup object includes, among other things, precomputed tables
      used in computing an FFT of the specified size.
      Availability
      Available in iPhone OS 4.0 and later.
      Declared In
      vDSP.h
Constants
      Constants
      vDSP_Version0
              The vDSP major version.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      vDSP_Version1
              The vDSP minor version.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      vDSP_DFT_Direction
      Specifies whether to perform a forward or inverse DFT.
      typedef enum {
          vDSP_DFT_FORWARD = +1,
          vDSP_DFT_INVERSE = -1
      } vDSP_DFT_Direction;
      Constants
      vDSP_DFT_FORWARD
              Specifies a forward transform.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      Constants                                                                                       551
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
      vDSP_DFT_INVERSE
              Specifies an inverse transform.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      FFTDirection
      Specifies whether to perform a forward or inverse FFT.
      enum {
          kFFTDirection_Forward                             = 1,
          kFFTDirection_Inverse                             = -1
      };
      typedef int FFTDirection;
      Constants
      kFFTDirection_Forward
              Specifies a forward transform.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      kFFTDirection_Inverse
              Specifies an inverse transform.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      FFTRadix
      The size of the FFT decomposition.
      enum {
          kFFTRadix2                                        = 0,
          kFFTRadix3                                        = 1,
          kFFTRadix5                                        = 2
      };
      typedef int FFTRadix;
      Constants
      kFFTRadix2
              Specifies a radix of 2.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
      kFFTRadix3
              Specifies a radix of 3.
              Available in iPhone OS 4.0 and later.
              Declared in vDSP.h.
552   Constants
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
CHAPTER 2
vDSP Reference
kFFTRadix5
        Specifies a radix of 5.
        Available in iPhone OS 4.0 and later.
        Declared in vDSP.h.
Discussion
An FFTRadix value is passed as an argument to vDSP_create_fftsetup (page 195) or
vDSP_create_fftsetupD (page 196).
FFTWindow
Specifies the windowing mode for data values in an FFT or reverse FFT.
enum {
    vDSP_HALF_WINDOW                                  = 1,
    vDSP_HANN_DENORM                                  = 0,
    vDSP_HANN_NORM                                    = 2
};
Constants
vDSP_HALF_WINDOW
        Specifies that the window should only contain the bottom half of the values (0 to (N+1)/2).
        Available in iPhone OS 4.0 and later.
        Declared in vDSP.h.
vDSP_HANN_DENORM
        Specifies a denormalized Hann window.
        Available in iPhone OS 4.0 and later.
        Declared in vDSP.h.
vDSP_HANN_NORM
        Specifies a normalized Hann window
        Available in iPhone OS 4.0 and later.
        Declared in vDSP.h.
Discussion
Passed as a flag to vDSP_blkman_window (page 192) or vDSP_blkman_windowD (page 192) to specify the
desired type of window..
Constants                                                                                             553
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      CHAPTER 2
      vDSP Reference
554   Constants
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
REVISION HISTORY
Date Notes
 2010-01-19                     New document that describes the Accelerate framework, a C-based API for
                                performing matrix math, digital signal processing, and image manipulation.
                                                                                                         555
2010-03-19 | © 2010 Apple Inc. All Rights Reserved.
      REVISION HISTORY
      Document Revision History
556
      2010-03-19 | © 2010 Apple Inc. All Rights Reserved.