001 /*
002 * $Id: ModularRingFactory.java 3355 2010-10-23 16:01:52Z kredel $
003 */
004
005 package edu.jas.arith;
006
007
008 import edu.jas.structure.RingElem;
009 import edu.jas.structure.RingFactory;
010
011
012 /**
013 * Modular ring factory interface. Defines chinese remainder method and get
014 * modul method.
015 * @author Heinz Kredel
016 */
017
018 public interface ModularRingFactory<C extends RingElem<C> & Modular> extends RingFactory<C> {
019
020
021 /**
022 * Return the BigInteger modul for the factory.
023 * @return a BigInteger of this.modul.
024 */
025 public BigInteger getIntegerModul();
026
027
028 /**
029 * Chinese remainder algorithm. Assert c.modul >= a.modul and c.modul *
030 * a.modul = this.modul.
031 * @param c modular.
032 * @param ci inverse of c.modul in ring of a.
033 * @param a other ModLong.
034 * @return S, with S mod c.modul == c and S mod a.modul == a.
035 */
036 public C chineseRemainder(C c, C ci, C a);
037
038 }