/// <summary>
        /// Constructs a matrix from the values of the given list.
        /// The values are copiedd So subsequent changes in <i>values</i> are not reflected in the matrix, and vice-versa.
        ///
        /// <summary>
        /// <param name="values">The values to be filled into the new matrix.</param>
        /// <returns>a new matrix.</returns>
        public ObjectMatrix1D Make(Cern.Colt.List.ObjectArrayList values)
        {
            int            size   = values.Count();
            ObjectMatrix1D vector = Make(size);

            for (int i = size; --i >= 0;)
            {
                vector[i] = values[i];
            }
            return(vector);
        }
        /// <summary>
        /// Constructs a list from the given matrix.
        /// The values are copiedd So subsequent changes in <i>values</i> are not reflected in the list, and vice-versa.
        ///
        /// <summary>
        /// <param name="values">The values to be filled into the new list.</param>
        /// <returns>a new list.</returns>
        public Cern.Colt.List.ObjectArrayList ToList(ObjectMatrix1D values)
        {
            int size = values.Count();

            Cern.Colt.List.ObjectArrayList list = new Cern.Colt.List.ObjectArrayList(size);
            list.SetSize(size);
            for (int i = size; --i >= 0;)
            {
                list[i] = values[i];
            }
            return(list);
        }