/* * Copyright (c) 2008, Manuel Mausz * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the copyright holders nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ /** * Complex encapsulate a complex value * * @version 1.0 * @author Manuel Mausz (manuel at mausz.at) * @author http://manuel.mausz.at/ */ final public class Complex extends CalcValue { final private double real; final private double img; /** * Constructor * * @param real real part * @param img imaginary part */ Complex(double real, double img) { addOps(); this.real = real; this.img = img; } /** * Add supported operations */ private void addOps() { addOp(new CalcOperator("+"), "add"); addOp(new CalcOperator("-"), "sub"); addOp(new CalcOperator("*"), "mul"); } /** * @return real part */ public double getReal() { return real; } /** * @return imaginary part */ public double getImg() { return img; } /** * Converts instance to string * * @return string */ public String toString() { return real + " " + img; } /** * Addition * * @param val * @return new Complex instance */ public Complex add(Complex val) { return new Complex(real + val.getReal(), img + val.getImg()); } /** * Subtraction * * @param val * @return new Complex instance */ public Complex sub(Complex val) { return new Complex(real - val.getReal(), img - val.getImg()); } /** * Multiplication * * @param val * @return new Complex instance */ public Complex mul(Complex val) { double realnew = real * val.getReal() - img * val.getImg(); double imgnew = real * val.getImg() + img * val.getReal(); return new Complex(realnew, imgnew); } }