PsyMultiplicative.java
- package coneforest.psylla.core;
- import coneforest.psylla.runtime.*;
- /**
- * The representation of {@code multiplicative}, a type of object that is an operand of
- * multiplicative operation. This interface declares methods for multiplication, division.
- *
- * @param <T> a type of the second operand at binary operation.
- */
- @Type("multiplicative")
- public interface PsyMultiplicative<T extends PsyMultiplicative<T>>
- extends PsyObject
- {
- /**
- * Context action of the {@code div} operator.
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- @OperatorType("div")
- public static final ContextAction PSY_DIV
- =ContextAction.<PsyMultiplicative, PsyMultiplicative>ofBiFunction(PsyMultiplicative::psyDiv);
- /**
- * Context action of the {@code mul} operator.
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- @OperatorType("mul")
- public static final ContextAction PSY_MUL
- =ContextAction.<PsyMultiplicative, PsyMultiplicative>ofBiFunction(PsyMultiplicative::psyMul);
- /**
- * Context action of the {@code reciprocal} operator.
- */
- @SuppressWarnings("rawtypes")
- @OperatorType("reciprocal")
- public static final ContextAction PSY_RECIPROCAL
- =ContextAction.<PsyMultiplicative>ofFunction(PsyMultiplicative::psyReciprocal);
- /**
- * {@return the multiplicative inverse of this object}
- *
- * @throws PsyUndefinedResultException if this object is zero.
- */
- public T psyReciprocal()
- throws PsyUndefinedResultException;
- /**
- * {@return a result of arithmetic multiplication of this number by given object}
- *
- * @param oMultiplicative a given number.
- */
- public T psyMul(final T oMultiplicative);
- /**
- * {@return a result of arithmetic division of this object by given object}
- *
- * @param oMultiplicative a given object.
- * @throws PsyUndefinedResultException when the result of division is not defined.
- */
- public T psyDiv(final T oMultiplicative)
- throws PsyUndefinedResultException;
- }