PAL 2D Arrays: Complex Operations

Initialization, copying, conjugation, arithmetic, norms, magnitude measures, submatrices, concatenation, and ring-buffer operations for two-dimensional complex arrays.

PAL 2D Arrays: Complex Operations — 28 functions

KiratPal2DComplexAbsSquaredTo2DFloat

Signature
T_INT KiratPal2DComplexAbsSquaredTo2DFloat( const T_COMPLEX** ppcSource, T_FLOAT** ppfDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates element-wise squares or complex squared magnitudes.
Mathematical operation
\(y_{ij}=(\Re z_{ij})^2+(\Im z_{ij})^2=|z_{ij}|^2\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPal2DComplexAbsSumUpTo1DFloat

Signature
void KiratPal2DComplexAbsSumUpTo1DFloat( T_COMPLEX** ppcSource, T_FLOAT* pfDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Sums array elements; variants sum values, magnitudes, powers, or Boolean true values.
Mathematical operation
\(y_j=\sum_{i=0}^{N_1-1}|z_{ij}|\) (sum of magnitudes along the first matrix dimension).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalAbsUsingFabs2DComplexToDest

Signature
void KiratPalAbsUsingFabs2DComplexToDest( T_COMPLEX** ppcSource, T_FLOAT** ppfDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates the element-wise absolute value/magnitude.
Mathematical operation
\(y_{ij}=|\Re z_{ij}|+|\Im z_{ij}|\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalAdd2DComplexTo2DComplex

Signature
void KiratPalAdd2DComplexTo2DComplex( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Adds scalar, vector, or array values element-wise; ToDest writes to a separate destination, while Acc accumulates into an existing destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow d_{\mathbf i}+s_{\mathbf i}\) (or \(+c\) for a scalar source).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalAdd2DComplexTo2DComplexToDest

Signature
void KiratPalAdd2DComplexTo2DComplexToDest( T_COMPLEX** ppcSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Adds scalar, vector, or array values element-wise; ToDest writes to a separate destination, while Acc accumulates into an existing destination.
Mathematical operation
\(d_{\mathbf i}=a_{\mathbf i}+b_{\mathbf i}\) (or source element plus scalar, according to the signature).
Supported implementations
  • ANSI C - portable reference implementation
  • Analog Devices SHARC DSP — Analog Devices SHARC-specific implementation

KiratPalConj2DComplex

Signature
void KiratPalConj2DComplex(T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates the element-wise complex conjugate.
Mathematical operation
\(y_{\mathbf i}=z_{\mathbf i}^*\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalCopy2DComplex

Signature
void KiratPalCopy2DComplex( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Copies the specified data or subrange to the destination.
Mathematical operation
\(D_{\mathbf i}\leftarrow S_{\mathbf i}\) element-wise (with type conversion where indicated by the function name).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalCopy2DComplexFromRingBuffer

Signature
void KiratPalCopy2DComplexFromRingBuffer( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iNumChannels, T_INT iStartOffset, T_INT iSamples, T_INT iRingBufferLength);
Description
Copies the specified data or subrange to the destination.
Mathematical operation
Data are copied with circular indexing: the physical buffer index is taken modulo the ring-buffer length while the logical samples remain in sequential order.
Supported implementations
  • ANSI C - portable reference implementation

KiratPalCopy2DComplexToRingBuffer

Signature
void KiratPalCopy2DComplexToRingBuffer( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iNumChannels, T_INT iStartOffset, T_INT iSamples, T_INT iRingBufferLength);
Description
Copies the specified data or subrange to the destination.
Mathematical operation
Data are copied with circular indexing: the physical buffer index is taken modulo the ring-buffer length while the logical samples remain in sequential order.
Supported implementations
  • ANSI C - portable reference implementation

KiratPalCopySubset2DComplex

Signature
void KiratPalCopySubset2DComplex( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2, T_INT* piPoints);
Description
Copies the specified data or subrange to the destination.
Mathematical operation
\(D_{\mathbf i}=S_{\mathbf i+\mathbf o}\) on the requested subset/ROI, with offsets and extents given by the function arguments.
Supported implementations
  • ANSI C - portable reference implementation

KiratPalDivide2DComplexWith2DComplexToDest

Signature
void KiratPalDivide2DComplexWith2DComplexToDest( T_COMPLEX** ppcSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Divides element-wise; some implementations add SYS_EPS or another small safeguard to avoid division by zero.
Mathematical operation
ANSI-C path: \(D_{ij}=X^{(2)}_{ij}(X^{(1)}_{ij})^*/(|X^{(1)}_{ij}|^2+10^{-10})\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWith2DComplex

Signature
void KiratPalMult2DComplexWith2DComplex( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow d_{\mathbf i}s_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWith2DComplexToDest

Signature
void KiratPalMult2DComplexWith2DComplexToDest( T_COMPLEX** ppcSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}=a_{\mathbf i}b_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWith2DFloat

Signature
void KiratPalMult2DComplexWith2DFloat( T_FLOAT** ppfSource, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow d_{\mathbf i}s_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWith2DFloatToDest

Signature
void KiratPalMult2DComplexWith2DFloatToDest( T_FLOAT** ppfource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}=a_{\mathbf i}b_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalMult2DComplexWithComplex

Signature
void KiratPalMult2DComplexWithComplex( T_COMPLEX** ppcDestination, T_COMPLEX cValue, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow c\,d_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWithFloat

Signature
void KiratPalMult2DComplexWithFloat( T_COMPLEX** ppcDestination, T_FLOAT fValue, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow c\,d_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support

KiratPalMult2DComplexWithFloatToDest

Signature
void KiratPalMult2DComplexWithFloatToDest( T_COMPLEX** ppcSource, T_COMPLEX** ppcDestination, T_FLOAT fValue, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}=c\,s_{\mathbf i}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel PC — processor-specific Intel branch

KiratPalMultAcc2DComplexWith2DComplex

Signature
void KiratPalMultAcc2DComplexWith2DComplex( T_COMPLEX** ppcSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow d_{\mathbf i}+a_{\mathbf i}b_{\mathbf i}\) (subset variants only over the selected range).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalMultAcc2DComplexWith2DFloatToDest

Signature
void KiratPalMultAcc2DComplexWith2DFloatToDest( T_FLOAT** ppfSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Multiplies scalar, vector, or array values element-wise; Acc variants add the product to the destination.
Mathematical operation
\(d_{\mathbf i}\leftarrow d_{\mathbf i}+a_{\mathbf i}b_{\mathbf i}\) (subset variants only over the selected range).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalNormOf2DComplex

Signature
void KiratPalNormOf2DComplex( T_COMPLEX** ppcSource, T_FLOAT* pfNorm, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates complex matrix norms from squared magnitudes.
Mathematical operation
\(n_j=\sqrt{\sum_{i=0}^{N_1-1}|z_{ij}|^2}\) for each column \(j\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSet2DComplexToFloat

Signature
void KiratPalSet2DComplexToFloat( T_COMPLEX** ppcDestination, T_FLOAT fValue, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Sets real components/elements from Float values; complex imaginary components are handled according to the implementation.
Mathematical operation
\(z_{\mathbf i}\leftarrow a+j0\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSet2DComplexToValue

Signature
void KiratPalSet2DComplexToValue( T_COMPLEX** ppcDestination, T_FLOAT fReal, T_FLOAT fImag, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Sets all elements of the array to a constant value.
Mathematical operation
\(d_{\mathbf i}\leftarrow c\) for every array index \(\mathbf i\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSet2DComplexToZero

Signature
void KiratPalSet2DComplexToZero(T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Sets all elements of the array to zero.
Mathematical operation
\(d_{\mathbf i}\leftarrow0\) for every array index \(\mathbf i\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSet2DComplexToZeroOrFillWithLowPowerNoise

Signature
void KiratPalSet2DComplexToZeroOrFillWithLowPowerNoise( T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Sets the array to zero or, depending on the configuration, fills it with very low-level noise to avoid numerical corner cases.
Mathematical operation
Current 1-D complex default path uses \(z_i=10^{-10}u_i+j10^{-10}v_i\) with \(u_i,v_i\approx\mathcal U[-1,1)\); higher-dimensional complex variants call this row-wise. (The 1-D local mode is currently set to noise.)
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSquaredNormOf2DComplex

Signature
void KiratPalSquaredNormOf2DComplex( T_COMPLEX** ppcSource, T_FLOAT* pfNorm, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates the sum of squared magnitudes or squared values.
Mathematical operation
\(s_j=\sum_{i=0}^{N_1-1}|z_{ij}|^2\) for each column \(j\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSquaredNormOf2DComplexRow

Signature
void KiratPalSquaredNormOf2DComplexRow( T_COMPLEX** ppcSource, T_FLOAT* pfNorm, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Calculates the sum of squared magnitudes or squared values.
Mathematical operation
\(s_i=\sum_{j=0}^{N_2-1}|z_{ij}|^2\) for each row \(i\).
Supported implementations
  • ANSI C - portable reference implementation

KiratPalSubtract2DComplexFrom2DComplexToDest

Signature
void KiratPalSubtract2DComplexFrom2DComplexToDest( T_COMPLEX** ppcSource1, T_COMPLEX** ppcSource2, T_COMPLEX** ppcDestination, T_INT iSizeDim1, T_INT iSizeDim2);
Description
Subtracts scalar, vector, or array values element-wise; “A from B” means B−A mathematically.
Mathematical operation
\(D_{ij}=X^{(1)}_{ij}-X^{(2)}_{ij}\).
Supported implementations
  • ANSI C - portable reference implementation
  • Intel/AMD processors - Intel IPP library support