/// <summary>
        /// Formats a <see cref="RealMatrix"/> object to produce a string.
        /// </summary>
        /// <param name="matrix">the object to format.</param>
        /// <param name="toAppendTo">where the text is to be appended</param>
        /// <returns>the value passed in as toAppendTo.</returns>
        public StringBuilder format(RealMatrix matrix, StringBuilder toAppendTo)
        {
            // format prefix
            toAppendTo.Append(prefix);

            // format rows
            int rows = matrix.getRowDimension();

            for (int i = 0; i < rows; ++i)
            {
                toAppendTo.Append(rowPrefix);
                for (int j = 0; j < matrix.getColumnDimension(); ++j)
                {
                    if (j > 0)
                    {
                        toAppendTo.Append(columnSeparator);
                    }
                    CompositeFormat.formatDouble(matrix.getEntry(i, j), CultureInfo.CurrentCulture, toAppendTo);
                }
                toAppendTo.Append(rowSuffix);
                if (i < rows - 1)
                {
                    toAppendTo.Append(rowSeparator);
                }
            }

            // format suffix
            toAppendTo.Append(suffix);

            return(toAppendTo);
        }
        /// <summary>
        /// Formats a <see cref="Complex"/> object to produce a string.
        /// </summary>
        /// <param name="complex">the object to format.</param>
        /// <param name="toAppendTo">where the text is to be appended</param>
        /// <returns>the value passed in as toAppendTo.</returns>
        public StringBuilder format(Complex complex, StringBuilder toAppendTo)
        {
            CultureInfo Real = CultureInfo.CurrentCulture;

            Real.NumberFormat = getRealFormat();
            // format real
            double re = complex.getReal();

            CompositeFormat.formatDouble(re, Real, toAppendTo);

            // format sign and imaginary
            double        im = complex.getImaginary();
            StringBuilder imAppendTo;

            if (im < 0.0)
            {
                toAppendTo.Append(" - ");
                imAppendTo = formatImaginary(-im, new StringBuilder());
                toAppendTo.Append(imAppendTo);
                toAppendTo.Append(getImaginaryCharacter());
            }
            else if (im > 0.0 || Double.IsNaN(im))
            {
                toAppendTo.Append(" + ");
                imAppendTo = formatImaginary(im, new StringBuilder());
                toAppendTo.Append(imAppendTo);
                toAppendTo.Append(getImaginaryCharacter());
            }
            return(toAppendTo);
        }
        /// <summary>
        /// Format the absolute value of the imaginary part.
        /// </summary>
        /// <param name="absIm">Absolute value of the imaginary part of a complex number.</param>
        /// <param name="toAppendTo">where the text is to be appended.</param>
        /// <returns>the value passed in as toAppendTo.</returns>
        private StringBuilder formatImaginary(double absIm, StringBuilder toAppendTo)
        {
            CultureInfo Imag = CultureInfo.CurrentCulture;

            Imag.NumberFormat = getRealFormat();
            CompositeFormat.formatDouble(absIm, Imag, toAppendTo);
            if (toAppendTo.ToString().Equals("1"))
            {
                // Remove the character "1" if it is the only one.
                toAppendTo.Length = 0;
            }
            return(toAppendTo);
        }
        /// <summary>
        /// Formats a <see cref="RealVector"/> object to produce a string.
        /// </summary>
        /// <param name="vector">the object to format.</param>
        /// <param name="toAppendTo">where the text is to be appended</param>
        /// <returns>the value passed in as toAppendTo.</returns>
        public StringBuilder format(RealVector vector, StringBuilder toAppendTo)
        {
            // format prefix
            toAppendTo.Append(prefix);

            // format components
            for (int i = 0; i < vector.getDimension(); ++i)
            {
                if (i > 0)
                {
                    toAppendTo.Append(separator);
                }
                CompositeFormat.formatDouble(vector.getEntry(i), CultureInfo.CurrentCulture, toAppendTo);
            }

            // format suffix
            toAppendTo.Append(suffix);

            return(toAppendTo);
        }