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

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

Jan Adelsbach

March 8, 2026
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

[next]