Example #1
0
        public unsafe static MatrixC operator /(Complex val, MatrixC mat)
        {
            var      result  = new MatrixC(mat.NumRows, mat.NumCols);
            Complex *pResult = result.Data;
            Complex *pMat    = mat.Data;

            for (int i = 0; i < result.TotalSize; i++)
            {
                pResult[i] = val / pMat[i];
            }
            return(result);
        }
Example #2
0
        private unsafe static MatrixC MultiplyByValue(MatrixC mat, Complex val)
        {
            var      result  = new MatrixC(mat.NumRows, mat.NumCols);
            Complex *pResult = result.Data;
            Complex *pMat    = mat.Data;

            for (int i = 0; i < result.TotalSize; i++)
            {
                pResult[i] = pMat[i] * val;
            }
            return(result);
        }
Example #3
0
        public unsafe static MatrixC operator /(MatrixC mat1, MatrixC mat2)
        {
            var      result  = new MatrixC(mat1.NumRows, mat1.NumCols);
            Complex *pResult = result.Data;
            Complex *pMat1   = mat1.Data;
            Complex *pMat2   = mat2.Data;

            for (int i = 0; i < result.TotalSize; i++)
            {
                pResult[i] = pMat1[i] / pMat2[i];
            }
            return(result);
        }
Example #4
0
        /// <summary>
        /// Computes the product of the current matrix and another matrix.
        /// </summary>
        /// <param name="mat">A matrix by which to multiply the current matrix.</param>
        /// <returns>A matrix that is the product of the input matrix and the other matrix.</returns>
        public unsafe MatrixC Dot(MatrixC mat)
        {
            var      result  = new MatrixC(this.NumRows, mat.NumCols);
            Complex *pResult = result.Data;
            Complex *pThis   = this.Data;
            Complex *pMat    = mat.Data;

            for (int y = 0; y < this.NumRows; y++)
            {
                int i = y * this.NumCols;
                for (int x = 0; x < mat.NumCols; x++)
                {
                    int j   = x;
                    var sum = new Complex();
                    for (int z = 0; z < this.NumCols; z++, j += mat.NumCols)
                    {
                        sum += pThis[i + z] * pMat[j];
                    }
                    pResult[y * mat.NumCols + x] = sum;
                }
            }
            return(result);
        }