001/* 002 * $Id: JLAdapter.java 4850 2014-06-28 18:26:08Z kredel $ 003 */ 004 005package edu.jas.jlinalg; 006 007 008import org.jlinalg.DivisionByZeroException; 009import org.jlinalg.IRingElement; 010import org.jlinalg.IRingElementFactory; 011import org.jlinalg.operator.MonadicOperator; 012 013import edu.jas.structure.RingElem; 014 015 016/** 017 * Class that wraps a JAS <code>RingElem</code> in an JLinALg 018 * <code>IRingElement</code>. 019 * @param <C> JAS ring element type 020 * @author Heinz Kredel 021 */ 022 023public class JLAdapter<C extends RingElem<C>> implements IRingElement<JLAdapter<C>> { 024 025 026 public final C val; 027 028 029 public JLAdapter(C v) { 030 val = v; 031 } 032 033 034 /** 035 * Get the string representation. 036 * @see java.lang.Object#toString() 037 */ 038 @Override 039 public String toString() { 040 StringBuffer s = new StringBuffer(); 041 //s.append("JLAdapter("); 042 s.append(val.toString()); 043 //s.append(")"); 044 return s.toString(); 045 } 046 047 048 /** 049 * @see java.lang.Object#equals(java.lang.Object) 050 */ 051 @SuppressWarnings("unchecked") 052 @Override 053 public boolean equals(Object obj) { 054 if (!(obj instanceof JLAdapter)) { 055 return false; 056 } 057 JLAdapter<C> other = (JLAdapter<C>) obj; 058 return this.compareTo(other) == 0; 059 } 060 061 062 /** 063 * @see java.lang.Object#hashCode() 064 */ 065 @Override 066 public int hashCode() { 067 return val.hashCode(); 068 } 069 070 071 @Override 072 public JLAdapter<C> abs() { 073 return new JLAdapter<C>(val.abs()); 074 } 075 076 077 @Override 078 public JLAdapter<C> norm() { 079 return new JLAdapter<C>(val.abs()); 080 } 081 082 083 @Override 084 public JLAdapter<C> add(JLAdapter<C> other) { 085 return new JLAdapter<C>(val.sum(other.val)); 086 } 087 088 089 @Override 090 public JLAdapter<C> apply(MonadicOperator<JLAdapter<C>> fun) { 091 return fun.apply(this); 092 } 093 094 095 @Override 096 public int compareTo(JLAdapter<C> other) { 097 return val.compareTo(other.val); 098 } 099 100 101 @Override 102 public JLAdapter<C> divide(JLAdapter<C> other) throws DivisionByZeroException { 103 return new JLAdapter<C>(val.divide(other.val)); 104 } 105 106 107 @Override 108 public boolean ge(JLAdapter<C> val) { 109 return this.compareTo(val) >= 0; 110 } 111 112 113 @Override 114 public IRingElementFactory<JLAdapter<C>> getFactory() { 115 return new JLAdapterFactory<C>(val.factory()); 116 } 117 118 119 @Override 120 public boolean gt(JLAdapter<C> val) { 121 return this.compareTo(val) > 0; 122 } 123 124 125 @Override 126 public JLAdapter<C> invert() throws DivisionByZeroException { 127 return new JLAdapter<C>(val.inverse()); 128 } 129 130 131 @Override 132 public boolean isOne() { 133 return val.isONE(); 134 } 135 136 137 @Override 138 public boolean isZero() { 139 return val.isZERO(); 140 } 141 142 143 @Override 144 public boolean le(JLAdapter<C> val) { 145 return this.compareTo(val) <= 0; 146 } 147 148 149 @Override 150 public boolean lt(JLAdapter<C> val) { 151 return this.compareTo(val) < 0; 152 } 153 154 155 @Override 156 public JLAdapter<C> multiply(JLAdapter<C> other) { 157 return new JLAdapter<C>(val.multiply(other.val)); 158 } 159 160 161 @Override 162 public JLAdapter<C> negate() { 163 return new JLAdapter<C>(val.negate()); 164 } 165 166 167 @Override 168 public JLAdapter<C> subtract(JLAdapter<C> other) { 169 return new JLAdapter<C>(val.subtract(other.val)); 170 } 171 172}