001 /*
002 * $Id: PrimitiveElement.java 3169 2010-06-05 10:44:44Z kredel $
003 */
004
005 package edu.jas.application;
006
007
008 import java.io.Serializable;
009
010 import edu.jas.structure.GcdRingElem;
011 import edu.jas.poly.AlgebraicNumber;
012 import edu.jas.poly.AlgebraicNumberRing;
013
014
015 /**
016 * Container for primitive elements.
017 * @author Heinz Kredel
018 */
019 public class PrimitiveElement<C extends GcdRingElem<C>> implements Serializable {
020
021
022 /**
023 * The primitive element.
024 */
025 public final AlgebraicNumberRing<C> primitiveElem;
026
027
028 /**
029 * The representation of the first algebraic element in the new ring.
030 */
031 public final AlgebraicNumber<C> A;
032
033
034 /**
035 * The representation of the second algebraic element in the new ring.
036 */
037 public final AlgebraicNumber<C> B;
038
039
040 /**
041 * The first algebraic ring.
042 */
043 public final AlgebraicNumberRing<C> Aring;
044
045
046 /**
047 * The second algebraic ring.
048 */
049 public final AlgebraicNumberRing<C> Bring;
050
051
052 /**
053 * Constructor not for use.
054 */
055 protected PrimitiveElement() {
056 throw new IllegalArgumentException("do not use this constructor");
057 }
058
059
060 /**
061 * Constructor.
062 * @param pe the primitive element
063 * @param A the first element.
064 * @param B the second element.
065 */
066 protected PrimitiveElement(AlgebraicNumberRing<C> pe, AlgebraicNumber<C> A, AlgebraicNumber<C> B) {
067 this(pe, A, B, null, null);
068 }
069
070
071 /**
072 * Constructor.
073 * @param pe the primitive element
074 * @param A the first element.
075 * @param B the second element.
076 */
077 protected PrimitiveElement(AlgebraicNumberRing<C> pe, AlgebraicNumber<C> A, AlgebraicNumber<C> B,
078 AlgebraicNumberRing<C> ar, AlgebraicNumberRing<C> br ) {
079 primitiveElem = pe;
080 this.A = A;
081 this.B = B;
082 this.Aring = ar;
083 this.Bring = br;
084 }
085
086
087 /**
088 * String representation of the ideal.
089 * @see java.lang.Object#toString()
090 */
091 @Override
092 public String toString() {
093 StringBuffer s = new StringBuffer("[");
094 s.append(primitiveElem.toString());
095 s.append(", " + A.toString());
096 s.append(", " + B.toString());
097 if (Aring != null) {
098 s.append(", " + Aring.toString());
099 }
100 if (Bring != null) {
101 s.append(", " + Bring.toString());
102 }
103 return s + "]";
104 }
105
106
107 /**
108 * Get a scripting compatible string representation.
109 * @return script compatible representation for this Element.
110 * @see edu.jas.structure.Element#toScript()
111 */
112 public String toScript() {
113 // Python case
114 StringBuffer s = new StringBuffer("(");
115 s.append(primitiveElem.toScript());
116 s.append(", " + A.toScript());
117 s.append(", " + B.toScript());
118 if (Aring != null) {
119 s.append(", " + Aring.toScript());
120 }
121 if (Bring != null) {
122 s.append(", " + Bring.toScript());
123 }
124 return s + ")";
125 }
126
127 }