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

gov.sandia.cognition.math.EuclideanRing Maven / Gradle / Ivy

/*
 * File:            EuclideanRing.java
 * Authors:         Justin Basilico
 * Project:         Cognitive Foundry Common Core
 * 
 * Copyright 2013, Cognitive Foundry. All rights reserved.
 */

package gov.sandia.cognition.math;

import gov.sandia.cognition.annotation.PublicationReference;
import gov.sandia.cognition.annotation.PublicationType;

/**
 * Defines something similar to a Euclidean ring from abstract algebra. It is 
 * also known as a Euclidean Domain. Extends a ring and adds division.
 *
 * @param   
 *      The type of EuclideanRing that this can operate with.
 * @author  Justin Basilico
 * @version 3.3.3
 */
@PublicationReference(
    author="Wikipedia",
    title="Euclidean Domain",
    type=PublicationType.WebPage,
    year=2013,
    url="http://en.wikipedia.org/wiki/Euclidean_domain"
)
public interface EuclideanRing>
    extends Ring
{

    /**
     * Multiplies {@code this} value by the {@code other} value, returning the
     * result of the multiplication as a new value.
     *
     * @param   other
     *      The other value.
     * @return
     *      The result of the multiplication.
     */
    public RingType times(
        final RingType other);

    /**
     * Inline multiplies {@code this} value by the {@code other} value,
     * storing the result inside {@code this}.
     *
     * @param   other
     *      The other value.
     */
    public void timesEquals(
        final RingType other);

    /**
     * Divides {@code this} value by the {@code other} value, returning the
     * result of the division as a new value.
     *
     * @param   other
     *      The other value.
     * @return
     *      The result of the division.
     */
    public RingType divide(
        final RingType other);

    /**
     * Inline divises {@code this} value by the {@code other} value, storing
     * the result inside {@code this}.
     *
     * @param   other
     *      The other value.
     */
    public void divideEquals(
        final RingType other);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy