/*
 * $Id$
 */

package edu.jas.structure;


import java.util.List;


/**
 * Module element interface. Defines scalar operations.
 * @param  module type
 * @param  scalar type
 * @author Heinz Kredel
 */
public interface ModulElem, C extends RingElem> extends AbelianGroupElem {


    /**
     * Scalar multiplication. Multiply this by a scalar.
     * @param s scalar
     * @return this * s.
     */
    public M scalarMultiply(C s);


    /**
     * Linear combination.
     * @param a scalar
     * @param b module element
     * @param s scalar
     * @return a * b + this * s.
     */
    public M linearCombination(C a, M b, C s);


    /**
     * Linear combination.
     * @param b module element
     * @param s scalar
     * @return b + this * s.
     */
    public M linearCombination(M b, C s);


    /**
     * Scalar product. Multiply two vectors to become a scalar.
     * @param b module element
     * @return this * b, a scalar.
     */
    public C scalarProduct(M b);


    /**
     * Scalar product. Multiply this vectors by list of vectors to become a
     * vector.
     * @param b list of module elements
     * @return this * b, a list of scalars, a module element.
     */
    public M scalarProduct(List b);

}

 

Ads help maintain this website.