/// <summary>
        /// Calculates the dyad product.
        /// </summary>
        /// <param name="point1">The point1.</param>
        /// <param name="point2">The point2.</param>
        /// <returns>The result of dyad product operation.</returns>
        public static BaseDyadCoordinate <Complex, ComplexCalculator> DyadProduct(ref CartesianCoordinate point1, ref CartesianCoordinate point2)
        {
            if (point1.Equals(point2))
            {
                return(new SymmetricDyadCoordinate <Complex, ComplexCalculator>(
                           point1.X * point2.X,
                           point1.X * point2.Y,
                           point1.X * point2.Z,
                           point1.Y * point2.Y,
                           point1.Y * point2.Z,
                           point1.Z * point2.Z));
            }

            return(new DyadCoordinate <Complex, ComplexCalculator>(
                       point1.X * point2.X,
                       point1.X * point2.Y,
                       point1.X * point2.Z,
                       point1.Y * point2.X,
                       point1.Y * point2.Y,
                       point1.Y * point2.Z,
                       point1.Z * point2.X,
                       point1.Z * point2.Y,
                       point1.Z * point2.Z));
        }