001 /*
002 * $Id: AlgebraElem.java 1708 2008-02-24 17:28:36Z kredel $
003 */
004
005 package edu.jas.structure;
006
007
008 /**
009 * Algabra element interface.
010 * @param <A> algebra type
011 * @param <C> scalar type
012 * @author Heinz Kredel
013 */
014 public interface AlgebraElem<A extends AlgebraElem<A,C>,
015 C extends RingElem<C>>
016 extends RingElem< A > {
017
018 /**
019 * Scalar multiplication. Multiply this by a scalar.
020 * @param s scalar
021 * @return this * s.
022 */
023 public A scalarMultiply(C s);
024
025
026 /**
027 * Linear combination.
028 * @param a scalar
029 * @param b algebra element
030 * @param s scalar
031 * @return a * b + this * s.
032 */
033 public A linearCombination(C a, A b, C s);
034
035
036 /**
037 * Linear combination.
038 * @param b algebra element
039 * @param s scalar
040 * @return b + this * s.
041 */
042 public A linearCombination(A b, C s);
043
044 }