2021-11-29 19:16:37 +08:00

163 lines
3.6 KiB
Java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.meteoinfo.ndarray;
/**
*
* @author Yaqiang Wang
*/
public class Complex extends org.apache.commons.math3.complex.Complex {
public Complex(double real) {
super(real);
}
public Complex(double real, double imag){
super(real, imag);
}
public Complex(org.apache.commons.math3.complex.Complex c){
this(c.getReal(), c.getImaginary());
}
@Override
public Complex add(org.apache.commons.math3.complex.Complex addend){
return new Complex(super.add(addend));
}
@Override
public Complex add(double addend) {
return new Complex(super.add(addend));
}
@Override
public Complex subtract(org.apache.commons.math3.complex.Complex v){
return new Complex(super.subtract(v));
}
@Override
public Complex subtract(double v) {
return new Complex(super.subtract(v));
}
public Complex rSubtract(double v) {
return new Complex(v - this.getReal(), -this.getImaginary());
}
@Override
public Complex multiply(org.apache.commons.math3.complex.Complex v){
return new Complex(super.multiply(v));
}
@Override
public Complex multiply(double v) {
return new Complex(super.multiply(v));
}
@Override
public Complex divide(org.apache.commons.math3.complex.Complex v){
return new Complex(super.divide(v));
}
@Override
public Complex divide(double v) {
return new Complex(super.divide(v));
}
public Complex rDivide(double v) {
return new Complex(v, 0).divide(this);
}
@Override
public Complex acos(){
return new Complex(super.acos());
}
@Override
public Complex asin(){
return new Complex(super.asin());
}
@Override
public Complex atan(){
return new Complex(super.atan());
}
@Override
public Complex cos(){
return new Complex(super.cos());
}
@Override
public Complex cosh() {
return new Complex(super.cosh());
}
@Override
public Complex log(){
return new Complex(super.log());
}
@Override
public Complex pow(org.apache.commons.math3.complex.Complex v) {
return new Complex(super.pow(v));
}
@Override
public Complex pow(double v){
return new Complex(super.pow(v));
}
public Complex rPow(double v){
return new Complex(v, 0).pow(this);
}
@Override
public Complex exp() {
return new Complex(super.exp());
}
@Override
public Complex sin(){
return new Complex(super.sin());
}
@Override
public Complex sinh() {
return new Complex(super.sinh());
}
@Override
public Complex sqrt(){
return new Complex(super.sqrt());
}
@Override
public Complex tan(){
return new Complex(super.tan());
}
@Override
public Complex tanh() {
return new Complex(super.tanh());
}
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append(this.getReal());
if (this.getImaginary() > 0)
sb.append("+");
else if (this.getImaginary() == 0){
if (!String.valueOf(this.getImaginary()).startsWith("-"))
sb.append("+");
}
sb.append(this.getImaginary());
sb.append("j");
return sb.toString();
}
}