Example #1
0
        public ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2)
        {
            ComplexNumber conjugate = new ComplexNumber(n2.Real, -1 * n2.Imaginary);
            ComplexNumber numerator = Multiply(n1, conjugate);
            ComplexNumber denominator = Multiply(n2, conjugate);

            return new ComplexNumber(numerator.Real / denominator.Real, numerator.Imaginary);
        }
Example #2
0
        public ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2)
        {
            double real1 = n1.Real * n2.Real;
            double imaginary1 = n1.Real * n2.Imaginary;
            double imaginary2 = n2.Real * n1.Imaginary;
            double real2 = n1.Imaginary * n2.Imaginary * -1;

            return new ComplexNumber(real1 + real2, imaginary1 + imaginary2);
        }
Example #3
0
 public ComplexNumber Add(ComplexNumber n1, ComplexNumber n2)
 {
     return new ComplexNumberWithMagnitude(n1.Real + n2.Real, n1.Imaginary + n2.Imaginary);
 }
Example #4
0
 public ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2)
 {
     return new ComplexNumberWithMagnitude(n1.Real - n2.Real, n1.Imaginary - n2.Imaginary);
 }
Example #5
0
        static void Main()
        {
            // Create a channel
            EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
            BasicHttpBinding binding = new BasicHttpBinding();
            ChannelFactory<IDataContractCalculator> factory = new ChannelFactory<IDataContractCalculator>(binding, address);
            IDataContractCalculator channel = factory.CreateChannel();

            // Call the Add service operation
            ComplexNumber value1 = new ComplexNumber(1, 2);
            ComplexNumber value2 = new ComplexNumberWithMagnitude(3, 4);
            ComplexNumber result = channel.Add(value1, value2);
            Console.WriteLine("Add({0} + {1}i, {2} + {3}i) = {4} + {5}i",
                value1.Real, value1.Imaginary, value2.Real, value2.Imaginary, result.Real, result.Imaginary);
            if (result is ComplexNumberWithMagnitude)
            {
                Console.WriteLine("Magnitude: {0}", ((ComplexNumberWithMagnitude)result).Magnitude);
            }
            else
            {
                Console.WriteLine("No magnitude was sent from the service");
            }
            Console.WriteLine();

            // Call the Subtract service operation
            value1 = new ComplexNumber(1, 2);
            value2 = new ComplexNumber(3, 4);
            result = channel.Subtract(value1, value2);
            Console.WriteLine("Subtract({0} + {1}i, {2} + {3}i) = {4} + {5}i",
                value1.Real, value1.Imaginary, value2.Real, value2.Imaginary, result.Real, result.Imaginary);
            if (result is ComplexNumberWithMagnitude)
            {
                Console.WriteLine("Magnitude: {0}", ((ComplexNumberWithMagnitude)result).Magnitude);
            }
            else
            {
                Console.WriteLine("No magnitude was sent from the service");
            }
            Console.WriteLine();

            // Call the Multiply service operation
            value1 = new ComplexNumber(2, 3);
            value2 = new ComplexNumber(4, 7);
            result = channel.Multiply(value1, value2);
            Console.WriteLine("Multiply({0} + {1}i, {2} + {3}i) = {4} + {5}i",
                value1.Real, value1.Imaginary, value2.Real, value2.Imaginary, result.Real, result.Imaginary);
            if (result is ComplexNumberWithMagnitude)
            {
                Console.WriteLine("Magnitude: {0}", ((ComplexNumberWithMagnitude)result).Magnitude);
            }
            else
            {
                Console.WriteLine("No magnitude was sent from the service");
            }
            Console.WriteLine();

            // Call the Divide service operation
            value1 = new ComplexNumber(3, 7);
            value2 = new ComplexNumber(5, -2);
            result = channel.Divide(value1, value2);
            Console.WriteLine("Divide({0} + {1}i, {2} + {3}i) = {4} + {5}i",
                value1.Real, value1.Imaginary, value2.Real, value2.Imaginary, result.Real, result.Imaginary);
            if (result is ComplexNumberWithMagnitude)
            {
                Console.WriteLine("Magnitude: {0}", ((ComplexNumberWithMagnitude)result).Magnitude);
            }
            else
            {
                Console.WriteLine("No magnitude was sent from the service");
            }
            Console.WriteLine();

            // Call the CombineLists service operation
            List<ComplexNumber> list1 = new List<ComplexNumber>();
            List<ComplexNumber> list2 = new List<ComplexNumber>();
            list1.Add(new ComplexNumber(1, 1));
            list1.Add(new ComplexNumber(2, 2));
            list1.Add(new ComplexNumberWithMagnitude(3, 3));
            list1.Add(new ComplexNumberWithMagnitude(4, 4));
            List<ComplexNumber> listResult = channel.CombineLists(list1, list2);
            Console.WriteLine("Lists combined:");
            foreach (ComplexNumber n in listResult)
            {
                Console.WriteLine("{0} + {1}i", n.Real, n.Imaginary);
            }
            Console.WriteLine();

            // Close the channel
            ((IChannel)channel).Close();

            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }