package jscl.math.numeric;
import javax.annotation.Nonnull;
public interface INumeric<T extends INumeric<T>> {
@Nonnull
T pow(int exponent);
@Nonnull
T abs();
@Nonnull
T negate();
int signum();
@Nonnull
T sgn();
@Nonnull
T ln();
@Nonnull
T lg();
@Nonnull
T exp();
@Nonnull
T inverse();
@Nonnull
T sqrt();
@Nonnull
T nThRoot(int n);
/*
* ******************************************************************************************
* <p/>
* TRIGONOMETRIC FUNCTIONS
* <p/>
* *******************************************************************************************/
@Nonnull
T sin();
@Nonnull
T cos();
@Nonnull
T tan();
@Nonnull
T cot();
/*
* ******************************************************************************************
* <p/>
* INVERSE TRIGONOMETRIC FUNCTIONS
* <p/>
* *******************************************************************************************/
@Nonnull
T asin();
@Nonnull
T acos();
@Nonnull
T atan();
@Nonnull
T acot();
/*
* ******************************************************************************************
* <p/>
* HYPERBOLIC TRIGONOMETRIC FUNCTIONS
* <p/>
* *******************************************************************************************/
@Nonnull
T sinh();
@Nonnull
T cosh();
@Nonnull
T tanh();
@Nonnull
T coth();
/*
* ******************************************************************************************
* <p/>
* INVERSE HYPERBOLIC TRIGONOMETRIC FUNCTIONS
* <p/>
* *******************************************************************************************/
@Nonnull
T asinh();
@Nonnull
T acosh();
@Nonnull
T atanh();
@Nonnull
T acoth();
}