internal DenseDoubleMatrixImplementor(
            int numberOfRows,
            int numberOfColumns,
            double[] data,
            StorageOrder storageOrder)
        {
            Debug.Assert(numberOfRows > 0);
            Debug.Assert(numberOfColumns > 0);

            Debug.Assert(data is not null);

            Debug.Assert(
                (StorageOrder.ColumnMajor == storageOrder) ||
                (StorageOrder.RowMajor == storageOrder));

            int matrixLength = numberOfRows * numberOfColumns;

            Debug.Assert(data.Length == matrixLength);

            this.storage = new double[matrixLength];
            data.CopyTo(this.storage, 0);
            if (StorageOrder.RowMajor == storageOrder)
            {
                ImplementationServices.ConvertStorageToColMajorOrdered(
                    numberOfRows, numberOfColumns, this.storage);
            }

            this.numberOfRows    = numberOfRows;
            this.numberOfColumns = numberOfColumns;
            this.storageOrder    = StorageOrder.ColumnMajor;
            this.storageScheme   = StorageScheme.Dense;
        }
Пример #2
0
        public void Main()
        {
            // Set matrix dimensions.
            int numberOfRows    = 3;
            int numberOfColumns = 2;

            // Create the data.
            var data = new double[6] {
                1, 2, 3, 4, 5, 6
            };

            // Assume the data as RowMajor ordered.
            StorageOrder storageOrder = StorageOrder.RowMajor;

            // Create the matrix.
            var matrix = DoubleMatrix.Dense(
                numberOfRows, numberOfColumns, data, storageOrder);

            Console.WriteLine("Assuming RowMajor ordered data.");
            Console.WriteLine("The data matrix:");
            Console.WriteLine(matrix);

            // Assume the data as ColMajor ordered.
            storageOrder = StorageOrder.ColumnMajor;

            // Create the matrix.
            matrix = DoubleMatrix.Dense(
                numberOfRows, numberOfColumns, data, storageOrder);
            Console.WriteLine("Assuming ColMajor ordered data.");
            Console.WriteLine("The data matrix:");
            Console.WriteLine(matrix);
        }
        internal DenseDoubleMatrixImplementor(
            int numberOfRows,
            int numberOfColumns,
            double[] data,
            bool copyData)
        {
            Debug.Assert(numberOfRows > 0);
            Debug.Assert(numberOfColumns > 0);

            Debug.Assert(data is not null);

            int matrixLength = numberOfRows * numberOfColumns;

            Debug.Assert(data.Length == matrixLength);

            if (copyData)
            {
                this.storage = new double[matrixLength];
                data.CopyTo(this.storage, 0);
            }
            else
            {
                this.storage = data;
            }

            this.numberOfRows    = numberOfRows;
            this.numberOfColumns = numberOfColumns;
            this.storageOrder    = StorageOrder.ColumnMajor;
            this.storageScheme   = StorageScheme.Dense;
        }
        internal DenseDoubleMatrixImplementor(double[,] data)
        {
            Debug.Assert(data is not null);

            int numberOfRows    = data.GetLength(0);
            int numberOfColumns = data.GetLength(1);

            Debug.Assert(numberOfRows > 0);
            Debug.Assert(numberOfColumns > 0);

            this.numberOfRows    = numberOfRows;
            this.numberOfColumns = numberOfColumns;

            this.storageOrder  = StorageOrder.ColumnMajor;
            this.storageScheme = StorageScheme.Dense;

            this.storage = new double[data.Length];

            int offset;
            int firstDataRow = data.GetLowerBound(0);
            int dataColumn   = data.GetLowerBound(1);

            for (int j = 0; j < this.numberOfColumns; j++, dataColumn++)
            {
                offset = j * this.numberOfRows;
                int dataRow = firstDataRow;
                for (int i = 0; i < this.numberOfRows; i++, dataRow++)
                {
                    this.storage[i + offset] = (double)(data.GetValue(dataRow, dataColumn));
                }
            }
        }
Пример #5
0
        public void Main()
        {
            // Set matrix dimensions.
            int numberOfRows    = 3;
            int numberOfColumns = 2;

            // Create the data.
            var data = new Complex[6] {
                new Complex(1, -1), new Complex(5, -5),
                new Complex(2, -2), new Complex(6, -6),
                new Complex(3, -3), new Complex(7, -7)
            };

            // Assume the data as RowMajor ordered.
            StorageOrder storageOrder = StorageOrder.RowMajor;

            // Create the matrix.
            var matrix = ComplexMatrix.Dense(
                numberOfRows, numberOfColumns, data, storageOrder);

            Console.WriteLine("Assuming RowMajor ordered data.");
            Console.WriteLine("The data matrix:");
            Console.WriteLine(matrix);

            // Assume the data as ColMajor ordered.
            storageOrder = StorageOrder.ColumnMajor;

            // Create the matrix.
            matrix = ComplexMatrix.Dense(
                numberOfRows, numberOfColumns, data, storageOrder);
            Console.WriteLine("Assuming ColMajor ordered data.");
            Console.WriteLine("The data matrix:");
            Console.WriteLine(matrix);
        }
        internal DenseDoubleMatrixImplementor(int numberOfRows, int numberOfColumns)
        {
            Debug.Assert(numberOfRows > 0);
            Debug.Assert(numberOfColumns > 0);

            this.storage         = new double[numberOfRows * numberOfColumns];
            this.numberOfRows    = numberOfRows;
            this.numberOfColumns = numberOfColumns;
            this.storageOrder    = StorageOrder.ColumnMajor;
            this.storageScheme   = StorageScheme.Dense;
        }
Пример #7
0
        public void ResetOrder(int userid)
        {
            var session = HttpContext.Current.Session;

            session["CurrentOrder"] = new StorageOrder()
            {
                CurrentOrder = new OrderDto()
                {
                    UserID  = userid,
                    Message = ""
                }
            };
        }
        internal DenseDoubleMatrixImplementor(
            int numberOfRows,
            int numberOfColumns,
            IEnumerable <double> data,
            StorageOrder storageOrder)
        {
            Debug.Assert(numberOfRows > 0);
            Debug.Assert(numberOfColumns > 0);
            Debug.Assert(data is not null);
            Debug.Assert(
                (StorageOrder.ColumnMajor == storageOrder) ||
                (StorageOrder.RowMajor == storageOrder));

            int matrixLength = numberOfRows * numberOfColumns;

            Debug.Assert(data.Count() == matrixLength);

            double[] dataStorage = new double[matrixLength];

            int l = 0;

            foreach (double d in data)
            {
                dataStorage[l] = d;
                l++;
            }

            if (StorageOrder.RowMajor == storageOrder)
            {
                ImplementationServices.ConvertStorageToColMajorOrdered(
                    numberOfRows, numberOfColumns, dataStorage);
            }
            this.storage = dataStorage;


            this.numberOfRows    = numberOfRows;
            this.numberOfColumns = numberOfColumns;
            this.storageOrder    = StorageOrder.ColumnMajor;
            this.storageScheme   = StorageScheme.Dense;
        }
Пример #9
0
        public void SetOrder(StorageOrder value)
        {
            var session = HttpContext.Current.Session;

            session["CurrentOrder"] = value;
        }