All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nd4j.linalg.api.complex.IComplexNumber Maven / Gradle / Ivy

There is a newer version: 1.0.0-M2.1
Show newest version
package org.nd4j.linalg.api.complex;

/**
 * Baseline interface for a complex number with realComponent and imaginary components.
 *
 * Based off of the jblas api by mikio braun
 *
 * @author Adam Gibson
 */
public interface IComplexNumber {


    public IComplexNumber set(Number real, Number imag);

    public Number realComponent();

    public Number imaginaryComponent();
  
    public IComplexNumber dup();

    public IComplexNumber copy(IComplexNumber other);

    /** Add two complex numbers in-place */
    public IComplexNumber addi(IComplexNumber c, IComplexNumber result);

    /** Add two complex numbers in-place storing the result in this. */
    public IComplexNumber addi(IComplexNumber c);
    /** Add two complex numbers. */
    public IComplexNumber add(IComplexNumber c);

    /** Add a realComponent number to a complex number in-place. */
    public IComplexNumber addi(Number a, IComplexNumber result);

    /** Add a realComponent number to complex number in-place, storing the result in this. */
    public IComplexNumber addi(Number c);
    /** Add a realComponent number to a complex number. */
    public IComplexNumber add(Number c);
    
    /** Subtract two complex numbers, in-place */
    public IComplexNumber subi(IComplexNumber c, IComplexNumber result);

    public IComplexNumber subi(IComplexNumber c);

    /** Subtract two complex numbers */
    public IComplexNumber sub(IComplexNumber c);

    public IComplexNumber subi(Number a, IComplexNumber result);

    public IComplexNumber subi(Number a);

    public IComplexNumber sub(Number r);

    /** Multiply two complex numbers, inplace */
    public IComplexNumber muli(IComplexNumber c, IComplexNumber result);

    public IComplexNumber muli(IComplexNumber c);

    /** Multiply two complex numbers */
    public IComplexNumber mul(IComplexNumber c);

    public IComplexNumber mul(Number v);

    public IComplexNumber muli(Number v, IComplexNumber result);

    public IComplexNumber muli(Number v);

    /** Divide two complex numbers */
    public IComplexNumber div(IComplexNumber c);

    /** Divide two complex numbers, in-place */
    public IComplexNumber divi(IComplexNumber c, IComplexNumber result);

    public IComplexNumber divi(IComplexNumber c);
    public IComplexNumber divi(Number v, IComplexNumber result);

    public IComplexNumber divi(Number v);

    public IComplexNumber div(Number v);
    /** Return the absolute value */
    public Number absoluteValue();

    /** Returns the argument of a complex number. */
    public Number complexArgument();

    public IComplexNumber invi();

    public IComplexNumber inv();

    public IComplexNumber neg();

    public IComplexNumber negi();

    public IComplexNumber conji();

    public IComplexNumber conj();

    public IComplexNumber sqrt();



    public boolean eq(IComplexNumber c);

    public boolean ne(IComplexNumber c);

    public boolean isZero();

    public boolean isReal();

    public boolean isImag();

    /**
     * Convert to a float
     * @return this complex number as a float
     */
    public IComplexFloat asFloat();
    /**
     * Convert to a double
     * @return this complex number as a double
     */
    public IComplexDouble asDouble();


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy