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 }