001/* 002 * $Id: NoncomRingElem.java 5298 2015-08-15 17:54:47Z kredel $ 003 */ 004 005package edu.jas.structure; 006 007 008/** 009 * Non-commutative ring element interface. Defines right divide and right remainder. 010 * @param <C> ring element type 011 * @author Heinz Kredel 012 */ 013 014public interface NoncomRingElem<C extends NoncomRingElem<C>> extends RingElem<C> { 015 016 017 /** 018 * Right division. 019 * @param a element. 020 * @return right, with a * right = this 021 */ 022 public C rightDivide(C a); 023 024 025 /** 026 * Right remainder. 027 * @param a element. 028 * @return r = this - a * (a/right), where a * right = this. 029 */ 030 public C rightRemainder(C a); 031 032 033 /** 034 * Two-sided division. 035 * @param a element. 036 * @return [left,right], with left * a * right = this 037 */ 038 public C[] twosidedDivide(C a); 039 040 041 /** 042 * Two-sided remainder. 043 * @param a element. 044 * @return r = this - (a/left) * a * (a/right), where left * a * right = this. 045 */ 046 public C twosidedRemainder(C a); 047 048}