/** * $OpenXM: OpenXM/src/OpenMath/ORG/openxm/tam/CMO_DISTRIBUTED_POLYNOMIAL.java,v 1.3 2000/12/03 12:40:39 ohara Exp $ */ package ORG.openxm.tam; import java.io.*; /** * CMO 形式の distributed polynomial 型を表します. */ final public class CMO_DISTRIBUTED_POLYNOMIAL extends CMO{ private CMO ring; private CMO_MONOMIAL32[] monomials; /** * 環 ring 上の MONOMIAL32 型の配列 monomials を持つ多項式を作成します. */ public CMO_DISTRIBUTED_POLYNOMIAL(CMO ring,CMO_MONOMIAL32[] monomials){ this.ring = ring; this.monomials = monomials; } public int DISCRIMINATOR(){ return CMO.DISTRIBUTED_POLYNOMIAL; } public boolean allowQ (int[] datacap) { if(CMO.allowQ_tag(datacap, DISCRIMINATOR())) { if (ring.allowQ(datacap)) { for (int j=0; j < monomials.length; j++) { if (!monomials[j].allowQ(datacap)) { return false; } } return true; } } return false; } public void sendByObject(OpenXMstream os) throws IOException,MathcapViolation{ if(monomials.length == 0){ os.writeInt(1); ring.write(os); new CMO_ZERO().write(os); }else{ os.writeInt(monomials.length); ring.write(os); for(int i=0;i