Adelsbach/VSIPL
Core Programming Reference Guide
DD-00016-015
Core

This manual is preliminary and incomplete.
While our Core implementation implements all functions given in the standard we are still working on completing this documentation.

Please refer to the VSIPL standard for a complete function reference of the Core profile until we have completed work on this documentation.

Contents

0.1 About this Guide
0.1.1 Legal Information
0.1.2 Feedback and Contact
0.2 Overview
0.2.1 Introduction
0.2.2 Link Libraries
0.3 General Functions
0.3.1 vsip_cstorage_p - Complex storage type
1 Support Functions
1.1 Initialization Functions
1.1.1 vsip_init - Initialize
1.1.2 vsip_finalize - Finalize
1.2 Block Support Functions
1.2.1 vsip_dblockcreate_p - Create a block
1.2.2 vsip_blockbind_p - Create a block using existing data
1.2.3 vsip_cblockbind_p - Create a block using existing data (complex)
1.2.4 vsip_blockrebind_p - Rebind existing block
1.2.5 vsip_cblockrebind_p - Rebind existing block (complex)
1.2.6 vsip_dblockadmit_p - Admit block data
1.2.7 vsip_blockfind_p - Get user data
1.2.8 vsip_cblockfind_p - Get user data (complex)
1.2.9 vsip_blockrelease_p - Release a block
1.2.10 vsip_cblockrelease_p - Release a block (complex)
1.2.11 vsip_dblockdestroy_p - Destroy a block
1.3 Vector View Support Functions
1.3.1 vsip_dvcreate_p - Create a Vector View
1.3.2 vsip_dvbind_p - Bind a Vector View to a Data Block
1.3.3 vsip_dvcloneview_p - Clone a Vector View
1.3.4 vsip_dvget_p - Get an Element from a Vector View
1.3.5 vsip_dvput_p - Set an Element in a Vector View
1.3.6 vsip_dvsubview_p - Create a Subview of a Vector View
1.3.7 vsip_vrealview_p - Get the Real Part View of a Complex Vector View
1.3.8 vsip_vimagview_p - Get the Imaginary Part View of a Complex Vector View
1.3.9 vsip_dvgetattrib_p - Get the Attributes of a Vector View
1.3.10 vsip_dvputattrib_p - Set the Attributes of a Vector View
1.3.11 vsip_dvgetblock_p - Get the Data Block of a Vector View
1.3.12 vsip_dvgetlength_p - Get the Length of a Vector View
1.3.13 vsip_dvputlength_p - Set the Length of a Vector View
1.3.14 vsip_dvgetstride_p - Get the Stride of a Vector View
1.3.15 vsip_dvputstride_p - Set the Stride of a Vector View
1.3.16 vsip_dvgetoffset_p - Get the Offset of a Vector View
1.3.17 vsip_dvputoffset_p - Set the Offset of a Vector View
1.3.18 vsip_dvdestroy_p - Destroy a Vector View
1.3.19 vsip_dvalldestroy_p - Destroy a Vector View and Its Data Block
1.4 Matrix View Support Functions
1.4.1 vsip_dmcreate_p - Create a Matrix View
1.4.2 vsip_dmbind_p - Bind a Matrix View to a Block
1.4.3 vsip_dmcloneview_p - Clone a Matrix View
1.4.4 vsip_dmget_p - Get Matrix Element
1.4.5 vsip_dmput_p - Set Matrix Element
1.4.6 vsip_dmsubview_p - Create a Submatrix View
1.4.7 vsip_dmtransview_p - Create a Transposed Matrix View
1.4.8 vsip_dmrowview_p - Create a Row Vector View of a Matrix
1.4.9 vsip_dmcolview_p - Create a Column Vector View of a Matrix
1.4.10 vsip_dmdiagview_p - Create a Diagonal Vector View of a Matrix
1.4.11 vsip_mrealview_p - Create a Real Part Matrix View
1.4.12 vsip_mimagview_p - Create an Imaginary Part Matrix View
1.4.13 vsip_dmgetattrib_p - Get Matrix Attributes
1.4.14 vsip_dmputattrib_p - Set Matrix Attributes
1.4.15 vsip_dmgetblock_p - Get the Data Block from a Matrix View
1.4.16 vsip_dmgetcollength_p - Get Number of Columns in a Matrix View
1.4.17 vsip_dmputcollength_p - Set Number of Columns in a Matrix View
1.4.18 vsip_dmgetrowlength_p - Get Number of Rows in a Matrix View
1.4.19 vsip_dmputrowlength_p - Set Number of Rows in a Matrix View
1.4.20 vsip_dmgetcolstride_p - Get Column Stride of a Matrix View
1.4.21 vsip_dmputcolstride_p - Set Column Stride of a Matrix View
1.4.22 vsip_dmgetrowstride_p - Get Row Stride of a Matrix View
1.4.23 vsip_dmputrowstride_p - Set Row Stride of a Matrix View
1.4.24 vsip_dmgetoffset_p - Get Matrix View Offset
1.4.25 vsip_dmputoffset_p - Set Matrix View Offset
1.4.26 vsip_dmdestroy_p - Destroy a Matrix View
1.4.27 vsip_dmalldestroy_p - Destroy Matrix View and its Data Block
2 Scalar Functions
2.1 Complex Scalar Functions
2.1.1 vsip_arg_p - Compute Phase Angle of Complex Scalar
2.1.2 vsip_cmag_p - Compute Magnitude of Complex Scalar
2.1.3 vsip_cmagsq_p - Compute Magnitude Squared of Complex Scalar
2.1.4 vsip_conj_p - Compute Complex Conjugate
2.1.5 vsip_polar_p - Convert Cartesian to Polar Coordinates
2.1.6 vsip_rect_p - Convert Polar to Cartesian Coordinates
2.1.7 vsip_real_p - Complex Real part
2.1.8 vsip_imag_p - Complex Imaginary part
2.1.9 vsip_cmplx_p - Create complex number
2.1.10 vsip_cadd_p - Complex Scalar Addition
2.1.11 vsip_csub_p - Complex Scalar Subtraction
2.1.12 vsip_cmul_p - Complex Scalar Multiplication
2.1.13 vsip_cjmul_p - Complex Scalar Conjugate Multiplication
2.1.14 vsip_cdiv_p - Complex Scalar Division
2.1.15 vsip_rcadd_p - Real-Complex Scalar Addition
2.1.16 vsip_rcsub_p - Real-Complex Scalar Subtraction
2.1.17 vsip_rcmul_p - Real-Complex Scalar Multiplication
2.1.18 vsip_crsub_p - Complex-Real Scalar Subtraction
2.1.19 vsip_crdiv_p - Complex-Real Scalar Division
2.1.20 vsip_cneg_p - Complex Scalar Negation
2.1.21 vsip_crecip_p - Complex Scalar Reciprocal
2.1.22 vsip_csqrt_p - Complex Scalar Square Root
2.1.23 vsip_cexp_p - Complex Scalar Exponential
2.1.24 vsip_CONJ_p - Complex Scalar Conjugate and Store to Pointer
2.1.25 vsip_CMPLX_p - Create a Complex Scalar and Store in a Pointer
2.1.26 vsip_CADD_p - Complex Scalar Addition and Store to Pointer
2.1.27 vsip_CSUB_p - Complex Scalar Subtraction and Store to Pointer
2.1.28 vsip_CMUL_p - Complex Scalar Multiplication and Store to Pointer
2.1.29 vsip_CJMUL_p - Complex Scalar Conjugate Multiplication and Store to Pointer
2.1.30 vsip_CDIV_p - Complex Scalar Division and Store to Pointer
2.1.31 vsip_RCADD_p - Real-Complex Scalar Addition and Store to Pointer
2.1.32 vsip_RCSUB_p - Real-Complex Scalar Subtraction and Store to Pointer
2.1.33 vsip_RCMUL_p - Real-Complex Scalar Multiplication and Store to Pointer
2.1.34 vsip_CRSUB_p - Complex-Real Scalar Subtraction and Store to Pointer
2.1.35 vsip_CRDIV_p - Complex-Real Scalar Division and Store to Pointer
2.1.36 vsip_CNEG_p - Complex Scalar Negate and Store to Pointer
2.1.37 vsip_CRECIP_p - Complex Scalar Reciprocal and Store to Pointer
2.1.38 vsip_CSQRT_p - Complex Scalar Square Root and Store to Pointer
2.1.39 vsip_CEXP_p - Complex Scalar Exponential and Store to Pointer
2.2 Index Scalar Functions
2.2.1 vsip_matindex - Convert Row/Column Indices to Matrix Index
2.2.2 vsip_mrowindex - Extract Row Index from Matrix Index
2.2.3 vsip_mcolindex - Extract Column Index from Matrix Index
2.2.4 vsip_MATINDEX - Convert Row/Column Indices to Matrix Index and Store in a Pointer
3 Random Number Generation
3.1 Random Number Functions
3.1.1 vsip_randcreate - Create a Random Number Generator State
3.1.2 vsip_randdestroy - Destroy a Random Number Generator State
3.1.3 vsip_dvrandu_p - Generate Uniformly Distributed Random Numbers in a Vector View
3.1.4 vsip_dvrandn_p - Fill Vector with Normally Distributed Random Numbers
4 Vector and Elementwise Operations
4.1 Elementary Math Operations
4.1.1 vsip_vsin_p - Element-wise Sine of a Vector View
4.1.2 vsip_vasin_p - Element-wise Arcsine of a Vector View
4.1.3 vsip_vcos_p - Element-wise Cosine of a Vector View
4.1.4 vsip_vacos_p - Element-wise Arccosine of a Vector View
4.1.5 vsip_vtan_p - Element-wise Tangent of a Vector View
4.1.6 vsip_vatan_p - Element-wise Arctangent of a Vector View
4.1.7 vsip_vatan2_p - Element-wise Arctangent of Two Vector Views
4.1.8 vsip_dvexp_p - Element-wise Exponential of a Vector View
4.1.9 vsip_vexp10_p - Element-wise Base-10 Exponential of a Vector View
4.1.10 vsip_vlog_p - Element-wise Natural Logarithm of a Vector View
4.1.11 vsip_vlog10_p - Element-wise Base-10 Logarithm of a Vector View
4.1.12 vsip_dvsqrt_p - Element-wise Square Root of a Vector View
4.2 Unary Operations
4.2.1 vsip_dvneg_p - Negate Elements of a Vector View
4.2.2 vsip_vsumval_p - Compute the Sum of Elements in a Vector View
4.2.3 vsip_vsumsqval_p - Compute the Sum of Squares of Elements in a Vector View
4.2.4 vsip_dvmeanval_p - Compute Mean Value of Vector
4.2.5 vsip_dvmeansqval_p - Compute Mean of Squared Values
4.2.6 vsip_vsq_p - Square Elements of a Vector View
4.2.7 vsip_vrecip_p - Compute Reciprocal of Elements of a Vector View
4.2.8 vsip_dvmag_p - Compute Magnitude of Elements of a Vector View
4.2.9 vsip_vcmagsq_p - Element-wise Magnitude Squared of a Complex Vector View
4.2.10 vsip_cvconj_p - Element-wise Complex Conjugate of a Complex Vector View
4.2.11 vsip_veuler_p - Convert Real Vector to Complex Euler Representation
4.2.12 vsip_dvmodulate_p - Vector Modulation with Complex Carrier
4.2.13 vsip_dvrsqrt_p - Element-wise Reciprocal Square Root of a Vector View
4.3 Binary Operations
4.3.1 vsip_dvadd_p - Element-wise Addition of Two Vector Views
4.3.2 vsip_dvsub_p - Element-wise Subtraction of Two Vector Views
4.3.3 vsip_dvmul_p - Element-wise Multiplication of Two Vector Views
4.3.4 vsip_dvdiv_p - Element-wise Division of Two Vector Views
4.3.5 vsip_cvjmul_p - Element-wise Complex Conjugate Multiplication of Two Complex Vector Views
4.3.6 vsip_rcvadd_p - Element-wise Real-Complex Addition
4.3.7 vsip_rcvsub_p - Element-wise Real-Complex Subtraction
4.3.8 vsip_rcvmul_p - Element-wise Real-Complex Multiplication
4.3.9 vsip_crvsub_p - Element-wise Complex-Real Subtraction
4.3.10 vsip_dsvadd_p - Add a Scalar to a Vector View
4.3.11 vsip_dsvsub_p - Subtract a Scalar to a Vector View
4.3.12 vsip_dsvmul_p - Multiply a Scalar by a Vector View
4.3.13 vsip_dsvdiv_p - Divide a Scalar by a Vector View
4.3.14 vsip_rscvadd_p - Element-wise Real-Scalar-Complex Addition
4.3.15 vsip_rscvsub_p - Element-wise Real-Scalar-Complex Subtraction
4.3.16 vsip_rscvmul_p - Element-wise Real-Scalar-Complex Multiplication
4.3.17 vsip_dvmmul_p - Vector-Matrix Multiplication
4.3.18 vsip_rvcmmul_p - Real Vector-Complex Matrix Multiplication
4.3.19 vsip_dvexpoavg_p - Vector Exponential Average
4.3.20 vsip_vhypot_p - Vector Hypotenuse (Euclidean Norm)
4.4 Ternary Operations
4.4.1 vsip_dvam_p - Vector Add-Multiply
4.4.2 vsip_dvma_p - Vector Multiply-Add
4.4.3 vsip_dvmsb_p - Vector Multiply-Subtract
4.4.4 vsip_dvmsa_p - Vector Multiply-Scalar-Add
4.4.5 vsip_dvsam_p - Vector Vector-Add-Scalar-Multiply
4.4.6 vsip_dvsbm_p - Vector Subtract-Multiply
4.4.7 vsip_dvsma_p - Vector Vector-Scalar-Multiply-Add
4.4.8 vsip_dvsmsa_p - Vector Vector-Scalar-Multiply-Scalar-Add
4.5 Logical Operations
4.5.1 vsip_valltrue_p - Check if All Elements in Boolean Vector are True
4.5.2 vsip_vanytrue_p - Check if Any Element in Boolean Vector is True
4.5.3 vsip_vleq_p - Element-wise Equal Comparison
4.5.4 vsip_vlne_p - Element-wise Not-Equal Comparison
4.5.5 vsip_vllt_p - Element-wise Less-Than Comparison
4.5.6 vsip_vlle_p - Element-wise Lesser-Or-Equal-Than Comparison
4.5.7 vsip_vlgt_p - Element-wise Greater-Than Comparison
4.5.8 vsip_vlge_p - Element-wise Greater-Or-Equal-Than Comparison
4.6 Selection Operations
4.6.1 vsip_vclip_p - Clip Vector Elements Between Thresholds
4.6.2 vsip_vinvclip_p - Inverse Clip Vector Elements
4.6.3 vsip_vindexbool - Find Indices of True Elements in Boolean Vector
4.6.4 vsip_vmaxval_p - Find the Maximum Value in a Vector View
4.6.5 vsip_vminval_p - Find the Minimum Value in a Vector View
4.6.6 vsip_vmax_p - Element-wise Maximum of Two Vector Views
4.6.7 vsip_vmin_p - Element-wise Minimum of Two Vector Views
4.6.8 vsip_vmaxmg_p - Element-wise Maximum of Magnitudes
4.6.9 vsip_vminmg_p - Element-wise Minimum of Magnitudes
4.6.10 vsip_vmaxmgval_p - Find Maximum Magnitude Value in Vector
4.6.11 vsip_vminmgval_p - Find Minimum Magnitude Value in Vector
4.6.12 vsip_vcmaxmg_p - Element-wise Maximum of Complex Vector Magnitudes
4.6.13 vsip_vcminmg_p - Element-wise Minimum of Complex Vector Magnitudes
4.6.14 vsip_vcmaxmgsqval_p - Find Maximum Magnitude Squared Value in Complex Vector
4.6.15 vsip_vcminmgsqval_p - Find Minimum Magnitude Squared Value in Complex Vector
4.7 Bitwise and Boolean Logical Operations
4.7.1 vsip_vnot_p - Boolean Vector Logical NOT
4.7.2 vsip_vand_p - Boolean Vector Logical AND
4.7.3 vsip_vor_p - Boolean Vector Logical OR
4.7.4 vsip_vxor_p - Boolean Vector Logical XOR
4.8 Element Generation Functions
4.8.1 vsip_dvfill_p - Fill a Vector View with a Scalar Value
4.8.2 vsip_vramp_p - Fill a Vector View with a Ramp
4.9 Copying Functions
4.9.1 vsip_dvcopy_p_p - Copy Vector Views
4.9.2 vsip_dmcopy_p - Copy Matrix Views
4.10 Manipulation Operations
4.10.1 vsip_vreal_p - Extract Real Part of a Complex Vector View
4.10.2 vsip_vimag_p - Extract Imaginary Part of a Complex Vector View
4.10.3 vsip_vcmplx_p - Create a Complex Vector View from Real and Imaginary Parts
4.10.4 vsip_dvgather_p - Gather Elements from a Vector
4.10.5 vsip_dvscatter_p - Scatter Elements to a Vector
4.10.6 vsip_dvswap_p - Swap Elements Between two Vectors
4.10.7 vsip_vrect_p - Convert Cartesian Coordinates to Complex Numbers
4.10.8 vsip_vpolar_p - Convert Polar Coordinates to Cartesian
5 Signal Processing Functions
5.1 FFT Functions
5.1.1 vsip_ddfftop_create_p - Create FFT Objects (Out-of-Place)
5.1.2 vsip_ccfftip_create_p - Create FFT Object (In-Place)
5.1.3 vsip_fft_destroy_p - Destroy an FFT Object
5.1.4 vsip_fft_getattr_p - Get FFT Object Attributes
5.1.5 vsip_ddfftop_p - Perform FFT Operations (Out-of-Place)
5.1.6 vsip_ccfftip_p - Perform FFT Operations (In-Place)
5.1.7 vsip_ddffmop_create_p - Create Multiple-FFT Objects (Out-of-Place)
5.1.8 vsip_ccffmip_create_p - Create Multilpe-FFT Object (In-Place)
5.1.9 vsip_fftm_destroy_p - Destroy a Multiple-FFT Object
5.1.10 vsip_fftm_getattr_p - Get Multple-FFT Object Attributes
5.1.11 vsip_ddffmop_p - Perform Multiple-FFT Operations (Out-of-Place)
5.1.12 vsip_ccffmip_p - Perform Multiple-FFT Operations (In-Place)
5.2 Convolution and Correlation Functions
5.2.1 vsip_dconv1d_create_p - Create 1D Convolution Object
5.2.2 vsip_dconv1d_destroy_p - Destroy 1D Convolution Object
5.2.3 vsip_dconv1d_getattr_p - Get 1D Convolution Object Attributes
5.2.4 vsip_dconvolve1d_p - Perform 1D Convolution
5.2.5 vsip_dcorr1d_create_p - Create 1D Correlation Object
5.2.6 vsip_dcorr1d_destroy_p - Destroy 1D Correlation Object
5.2.7 vsip_dcorr1d_getattr_p - Get 1D Correlation Object Attributes
5.2.8 vsip_dcorrelate1d_p - Compute 1D Correlation
5.3 Window Functions
5.3.1 vsip_vcreate_blackman_p - Create a Blackman Window Vector
5.3.2 vsip_vcreate_kaiser_p - Create a Kaiser Window Vector
5.3.3 vsip_vcreate_cheby_p - Create a Chebyshev Window Vector
5.3.4 vsip_vcreate_hanning_p - Create a Hanning Window Vector
5.4 FIR
5.4.1 vsip_dfir_create_p - Create a FIR Filter
5.4.2 vsip_dfir_reset_p - Reset a FIR Filter
5.4.3 vsip_dfir_getattr_p - Get Attributes of a FIR Filter
5.4.4 vsip_dfirflt_p - Apply a FIR Filter to a Vector View
5.4.5 vsip_dfir_destroy_p - Destroy a FIR Filter
5.5 Miscellaneous Signal Processing Functions
5.5.1 vsip_vhisto_p - Compute Histogram of a Vector View
6 Linear Algebra Functions
6.1 Matrix and Vector Operations
6.1.1 vsip_dvdot_p - Compute the Dot Product of Two Vector Views
6.1.2 vsip_cvjdot_p - Compute the Conjugate Dot Product of Two Complex Vector Views
6.1.3 vsip_dvouter_p - Outer Product of Two Vectors
6.1.4 vsip_dmtrans_p - Matrix Transposition
6.1.5 vsip_cmherm_p - Matrix Hermitian
6.1.6 vsip_dgemp_p - General Matrix Product
6.1.7 vsip_dgems_p - General Matrix Scaling and Addition
6.1.8 vsip_dvmprod_p - Vector-Matrix Product
6.1.9 vsip_dmvprod_p - Matrix-Vector Product
6.1.10 vsip_dmprod_p - Matrix-Matrix Product
6.1.11 vsip_dmprodt_p - Matrix-Matrix Product with Transposition
6.1.12 vsip_cmprodh_p - Complex Matrix Product with Hermitian Transpose
6.1.13 vsip_cmprodj_p - Complex Matrix Product with Conjugate
6.2 Special Linear Solvers
6.2.1 vsip_dtoepsol_p - Solve a Toeplitz System of Equations
6.2.2 vsip_dcovsol_p - Solve a Covariance System of Equations
6.2.3 vsip_dllsqsol_p - Solve Linear Least Squares Problem
6.3 General Linear Square System Solver
6.3.1 vsip_dlud_create_p - Create LU Decomposition Object
6.3.2 vsip_dlud_destroy_p - Destroy LU Decomposition Object
6.3.3 vsip_dlud_getattr_p - Get LU Decomposition Attributes
6.3.4 vsip_dlud_p - Perform LU Decomposition
6.3.5 vsip_dlusol_p - Solve Linear System Using LU Decomposition
6.4 Symmetric Positive Definite Linear System Solver
6.4.1 vsip_dchold_create_p - Create Cholesky Decomposition Object
6.4.2 vsip_dchold_destroy_p - Destroy Cholesky Decomposition Object
6.4.3 vsip_dchold_getattr_p - Get Cholesky Decomposition Attributes
6.4.4 vsip_dchold_p - Perform Cholesky Decomposition
6.4.5 vsip_dcholsol_p - Solve Linear Systems Using Cholesky Decomposition
6.5 Over-determined Linear System Solver
6.5.1 vsip_dqrd_create_p - Create QR Decomposition Object
6.5.2 vsip_dqrd_destroy_p - Destroy QR Decomposition Object
6.5.3 vsip_dqrd_getattr_p - Get QR Decomposition Attributes
6.5.4 vsip_dqrd_p - Perform QR Decomposition
6.5.5 vsip_dqrsol_p - Solve Linear Systems Using QR Decomposition
6.5.6 vsip_dqrdsolr_p - Solve Linear Systems with Modified R Matrix
6.5.7 vsip_dqrdprodq_p - Multiply by Q Matrix from QR Decomposition
0.1 About this Guide
0.1.1 Legal Information
0.1.2 Feedback and Contact
0.2 Overview
0.2.1 Introduction
0.2.2 Link Libraries
0.3 General Functions
0.3.1 vsip_cstorage_p - Complex storage type