In Files

Parent

Included Modules

JAS::RingElem

Proxy for JAS ring elements.

Methods to be used as + - * ** / %.

Attributes

elem[R]

the Java element object

ring[R]

the Java factory object

Public Class Methods

new(elem) click to toggle source

Constructor for ring element.

# File examples/jas.rb, line 486
def initialize(elem)
    if elem.is_a? RingElem
        @elem = elem.elem;
    else
        @elem = elem;
    end
    begin
        @ring = @elem.factory();
    rescue
        @ring = @elem;
    end
    @elem.freeze
    @ring.freeze
    self.freeze
end

Public Instance Methods

%(other) click to toggle source

Modular remainder of two ring elements.

# File examples/jas.rb, line 822
def %(other)
    s,o = coercePair(self,other);
    return RingElem.new( s.elem.remainder( o.elem ) ); 
end
*(other) click to toggle source

Multiply two ring elements.

# File examples/jas.rb, line 783
def *(other)
    #puts "* self  type(#{self.elem}) = #{self.elem.class}\n";
    #puts "* other type(#{other.elem}) = #{other.elem.class}\n";
    s,o = coercePair(self,other);
    #puts "* s = #{s}, o = #{o}, s*o = #{s.elem.multiply(o.elem)}\n";
    return RingElem.new( s.elem.multiply( o.elem ) ); 
end
**(other) click to toggle source

Power of this to other.

# File examples/jas.rb, line 837
def **(other)
    #puts "pow other type(#{other}) = #{other.class}";
    if other.is_a? Integer
        n = other;
    else
        if other.is_a? RingElem
            n = other.elem;
            if n.getClass().getSimpleName() == "BigRational"
                n = n.numerator().intValue() / n.denominator().intValue();
            end
            if n.getClass().getSimpleName() == "BigInteger" 
                n = n.intValue();
            end
        end
    end
    if isFactory()
        p = Power.new(@elem).power( @elem, n );
    else
        p = Power.new(@elem.factory()).power( @elem, n );
        #puts "@elem**#{n} = #{p}, @elem = #{@elem}"
        #puts "@elem.ring = #{@elem.ring.toScript()}";
    end
    return RingElem.new( p ); 
end
+(other) click to toggle source

Add two ring elements.

# File examples/jas.rb, line 794
def +(other)
    #puts "+ self  type(#{self}) = #{self.elem.class}\n";
    #puts "+ other type(#{other}) = #{other.elem.class}\n";
    s,o = coercePair(self,other);
    return RingElem.new( s.elem.sum( o.elem ) ); 
end
+@() click to toggle source

Positive value.

# File examples/jas.rb, line 597
def +@()
    return self; 
end
-(other) click to toggle source

Subtract two ring elements.

# File examples/jas.rb, line 804
def -(other)
    #puts "+ self  type(#{self}) = #{self.elem.class}\n";
    #puts "+ other type(#{other}) = #{other.elem.class}\n";
    s,o = coercePair(self,other);
    return RingElem.new( s.elem.subtract( o.elem ) ); 
end
-@() click to toggle source

Negative value.

# File examples/jas.rb, line 590
def -@()
    return RingElem.new( @elem.negate() ); 
end
/(other) click to toggle source

Divide two ring elements.

# File examples/jas.rb, line 814
def /(other)
    s,o = coercePair(self,other);
    return RingElem.new( s.elem.divide( o.elem ) ); 
end
<=>(other) click to toggle source

Compare two ring elements.

# File examples/jas.rb, line 750
def <=>(other)
    #s,o = coercePair(other);
    s,o = self, other
    return s.elem.compareTo( o.elem ); 
end
===(other) click to toggle source

Test if two ring elements are equal.

# File examples/jas.rb, line 759
def ===(other)
    if not other.is_a? RingElem
       return false;
    end
    return (self <=> other) == 0; 
end
^(other) click to toggle source

Can not be used as power.

# File examples/jas.rb, line 830
def ^(other)
    return nil;
end
abs() click to toggle source

Absolute value.

# File examples/jas.rb, line 583
def abs()
    return RingElem.new( @elem.abs() ); 
end
base_ring() click to toggle source

Coefficient ring of a polynomial.

# File examples/jas.rb, line 1265
def base_ring()
    begin
        ev = @elem.ring.coFac;
    rescue
        return nil;
    end
    return RingElem.new(ev);
end
call(num) click to toggle source

Apply this to num.

Call syntax is ringElem.(num). Only for interger num.

# File examples/jas.rb, line 1208
def call(num)
    if num == 0 
        return zero();
    end
    if num == 1
        return one();
    end
    return RingElem.new( @ring.fromInteger(num) );
end
coefficients() click to toggle source

Get the coefficients of a polynomial.

# File examples/jas.rb, line 1181
def coefficients()
    a = @elem;
    #L = [ c.toScriptFactory() for c in a.coefficientIterator() ];
    ll = a.coefficientIterator().map { |c| RingElem.new(c) }; 
    return ll
end
coerce(other) click to toggle source

Coerce other to self

# File examples/jas.rb, line 604
def coerce(other)
    s,o = coercePair(self,other);
    return [o,s]; # keep order for non-commutative
end
coerceElem(other) click to toggle source

Coerce other to self

# File examples/jas.rb, line 635
def coerceElem(other)
    #puts "self  type(#{self}) = #{self.class}\n";
    #puts "other type(#{other}) = #{other.class}\n";
    if @elem.getClass().getSimpleName() == "GenVector"
        if other.is_a? Array 
            o = rbarray2arraylist(other,@elem.factory().coFac,rec=1);
            o = GenVector.new(@elem.factory(),o);
            return RingElem.new( o );
            end
    end
    if @elem.getClass().getSimpleName() == "GenMatrix"
        if other.is_a? Array 
            o = rbarray2arraylist(other,@elem.factory().coFac,rec=2);
            o = GenMatrix.new(@elem.factory(),o);
            return RingElem.new( o );
            end
    end
    if other.is_a? RingElem
        if isPolynomial() and not other.isPolynomial()
            o = @ring.parse( other.elem.toString() ); # not toScript()
            return RingElem.new( o );
        end
        #puts "other type(#{other}) = #{other.class}\n";
        return other;
    end
    #puts "--1";
    if other.is_a? Array
       # assume BigRational or BigComplex
       # assume self will be compatible with them. todo: check this
       puts "other type(#{other})_3 = #{other.class}\n";
       o = makeJasArith(other);
       puts "other type(#{o})_4 = #{o.class}\n";
       ##o = BigRational.new(other[0],other[1]);
       if isPolynomial()
            o = @ring.parse( o.toString() ); # not toScript();
            #o = o.elem;
       elsif @elem.getClass().getSimpleName() == "BigComplex"
            o = CC( o );
            o = o.elem;
       elsif @elem.getClass().getSimpleName() == "BigQuaternion"
            o = Quat( o );
            o = o.elem;
       elsif @elem.getClass().getSimpleName() == "BigOctonion"
            o = Oct( Quat(o) );
            o = o.elem;
       elsif @elem.getClass().getSimpleName() == "Product"
            o = RR(@ring, @elem.multiply(o) ); # valueOf
            #puts "o = #{o}";
            o = o.elem;
       end
       puts "other type(#{o})_5 = #{o.class}\n";
       return RingElem.new(o);
    end
    # test if @elem is a factory itself
    if isFactory()
        if other.is_a? Integer
            o = @elem.fromInteger(other);
        elsif other.is_a? Rational 
            o = @elem.fromInteger( other.numerator );
            o = o.divide( @elem.fromInteger( other.denominator ) );
        elsif other.is_a? Float # ?? what to do ??
            o = @elem.parse( other.to_s );
            ##o = @elem.fromInteger( other.to_i );
        else
            puts "unknown other type(#{other})_1 = #{other.class}\n";
            o = @elem.parse( other.to_s );
        end
        return RingElem.new(o);
    end
    # @elem has a ring factory
    if other.is_a? Integer
        o = @elem.factory().fromInteger(other);
    elsif other.is_a? Rational 
        o = @elem.factory().fromInteger( other.numerator );
        o = o.divide( @elem.factory().fromInteger( other.denominator ) );
    elsif other.is_a? Float # ?? what to do ??
            o = @elem.factory().parse( other.to_s );
            if @elem.getClass().getSimpleName() == "Product"
                o = RR(@ring, @elem.idempotent().multiply(o) ); # valueOf
                o = o.elem;
            end
    else
            puts "unknown other type(#{other})_2 = #{other.class}\n";
            o = @elem.factory().parse( other.to_s );
    end
    return RingElem.new(o);
end
coercePair(a,b) click to toggle source

Coerce type a to type b or type b to type a.

# File examples/jas.rb, line 612
def coercePair(a,b)
    #puts "a type(#{a}) = #{a.class}\n";
    #puts "b type(#{b}) = #{b.class}\n";
    begin
        if not a.isPolynomial() and b.isPolynomial()
           s = b.coerceElem(a);
           o = b;
        else
           s = a;
           o = a.coerceElem(b);
        end
    rescue
        s = a;
        o = a.coerceElem(b);
    end
    #puts "s type(#{s}) = #{s.class}\n";
    #puts "o type(#{o}) = #{o.class}\n";
    return [s,o];
end
complexRoots(eps=nil) click to toggle source

Compute complex roots of univariate polynomial.

# File examples/jas.rb, line 1139
def complexRoots(eps=nil)
    a = @elem;
    if eps.is_a? RingElem
        eps = eps.elem;
    end
    cmplx = false;
    begin
        x = a.ring.coFac.getONE().getRe();
        cmplx = true;
    rescue Exception => e
        #pass;
    end
    begin
        if eps == nil
            #rr = ComplexRootsSturm.new(a.ring.coFac).complexRoots( a );
            if cmplx
               rr = RootFactory.complexAlgebraicNumbersComplex( a );
            else 
               rr = RootFactory.complexAlgebraicNumbers( a );
            end
            #R = [ r.centerApprox() for r in R ];
        else
            ## rr = ComplexRootsSturm.new(a.ring.coFac).complexRoots( a, eps );
            ## rr = [ r.centerApprox() for r in rr ];
            ##rr = ComplexRootsSturm.new(a.ring.coFac).approximateRoots( a, eps );
            if cmplx
               rr = RootFactory.complexAlgebraicNumbersComplex( a, eps );
            else
               rr = RootFactory.complexAlgebraicNumbers( a, eps );
            end
        end
        rr = rr.map{ |y| RingElem.new(y) };
        return rr;
    rescue Exception => e
        puts "error " + str(e)
        return nil
    end
end
degree() click to toggle source

Degree of a polynomial.

# File examples/jas.rb, line 1253
def degree()
    begin
        ev = @elem.degree();
    rescue
        return nil;
    end
    return ev;
end
differentiate(r=nil) click to toggle source

Differentiate a power series.

r is for partial differentiation in variable r.

# File examples/jas.rb, line 985
def differentiate(r=nil)
    begin
        if r != nil
            e = @elem.differentiate(r);
        else
            e = @elem.differentiate();
        end
    rescue
        e = @elem.factory().getZERO();
    end
    return RingElem.new( e );
end
divides(other) click to toggle source

Test if self divides other.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1296
def divides(other)
    s,o = coercePair(self,other);
    return o.elem.remainder( s.elem ).isZERO(); 
end
equal?(other) click to toggle source

Test if two ring elements are equal.

# File examples/jas.rb, line 865
def equal?(other)
    o = other;
    if other.is_a? RingElem
        o = other.elem;
    end
    return @elem.equals(o)
end
evaluate(a) click to toggle source

Evaluate at a for power series or polynomial.

# File examples/jas.rb, line 907
def evaluate(a)
    #puts "self  type(#{@elem}) = #{@elen.class}";
    #puts "a     type(#{a}) = #{a.class}";
    x = nil;
    if a.is_a? RingElem
        x = a.elem;
    end
    if a.is_a? Array 
        # assume BigRational or BigComplex
        # assume self will be compatible with them. todo: check this
        #x = makeJasArith(a);
        x = rbarray2arraylist(a);
    else
        x = rbarray2arraylist([a]);
    end
    begin
        if @elem.is_a? UnivPowerSeries
           e = @elem.evaluate(x[0]);
        else if @elem.is_a? MultiVarPowerSeries
              e = @elem.evaluate(x);
           else  
              #puts "x     = " + x[0].getClass().getSimpleName().to_s;
              x = x.map{ |p| p.leadingBaseCoefficient() };
              e = PolyUtil.evaluateAll(@ring.coFac, @elem, x);
           end
        end
    rescue Exception => e
        raise RuntimeError, e.to_s; 
        e = 0;            
    end
    return RingElem.new( e );
end
factors() click to toggle source

Compute irreducible factorization for modular, integer, rational number and algebriac number coefficients.

# File examples/jas.rb, line 1060
def factors()
    a = @elem;
    if isPolynomial()
       factor = Ring.getEngineFactor(@ring); 
       if factor == nil 
          raise NotImplementedError, "factors not implemented for " + @ring.to_s;
       end
       cf = @ring.coFac;
       if cf.getClass().getSimpleName() == "GenPolynomialRing"
           e = factor.recursiveFactors( a );
       else
           e = factor.factors( a );
       end
       ll = {};
       for k in e.keySet()
           i = e.get(k);
           ll[ RingElem.new( k ) ] = i;
       end
       return ll;
    else
       raise NotImplementedError, "factors not implemented for " + a.to_s;
    end
end
factorsAbsolute() click to toggle source

Compute absolute irreducible factorization for (modular,) rational number coefficients.

# File examples/jas.rb, line 1088
    def factorsAbsolute()
        a = @elem;
        if isPolynomial()
           factor = Ring.getEngineFactor(@ring); 
           if factor == nil 
              raise NotImplementedError, "factors not implemented for " + @ring.to_s;
           end
           begin
               ll = factor.factorsAbsolute( a );
##             ll = {};
##             for a in e.keySet()
##                 i = e.get(a);
##                 ll[ RingElem.new( a ) ] = i;
               return ll;
           rescue Exception => e
               raise RuntimeError, "error factorsAbsolute " + @ring.to_s;
           end
        else
           raise NotImplementedError, "factors not implemented for " + a.to_s;
        end
    end
factory() click to toggle source

Get the factory of this element.

# File examples/jas.rb, line 876
def factory()
    fac = @elem.factory();
    begin
        nv = fac.nvar;
    rescue
        return RingElem.new(fac);
    end
    #return PolyRing(fac.coFac,fac.getVars(),fac.tord);
    return RingElem.new(fac);
end
gcd(b) click to toggle source

Compute the greatest common divisor of this/self and b.

# File examples/jas.rb, line 1013
def gcd(b)
    a = @elem;
    if b.is_a? RingElem
        b = b.elem;
    else
        b = element( b );
        b = b.elem;
    end
    if isPolynomial()
       engine = Ring.getEngineGcd(@ring); 
       return RingElem.new( engine.gcd(a,b) );
    else
       return RingElem.new( a.gcd(b) );
    end
end
gens() click to toggle source

Get the generators for the factory of this element.

# File examples/jas.rb, line 890
def gens()
    ll = @elem.factory().generators();
    #puts "L = #{ll}";
    nn = ll.map {|e| RingElem.new(e) };
    return nn;
end
ideal(list) click to toggle source

Create an ideal.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1306
def ideal(list)
    r = Ring.new("",ring=self.ring); #,fast=true
    return r.ideal("",list=list);
end
integrate(a=0,r=nil) click to toggle source

Integrate a power series or rational function with constant a.

a is the integration constant, r is for partial integration in variable r.

# File examples/jas.rb, line 945
def integrate(a=0,r=nil)
    #puts "self  type(#{@elem}) = #{@elem.class}";
    #puts "a     type(#{a}) = #{a.class}";
    x = nil;
    if a.is_a? RingElem
        x = a.elem;
    end
    if a.is_a? Array 
        # assume BigRational or BigComplex
        # assume self will be compatible with them. todo: check this
        x = makeJasArith(a);
    end
    # power series
    begin 
        if r != nil
            e = @elem.integrate(x,r);
        else
            e = @elem.integrate(x);
        end
        return RingElem.new( e );
    rescue
        #pass;
    end
    cf = @elem.ring;
    begin
        cf = cf.ring;
    rescue
        #pass;
    end
    # rational function
    integrator = ElementaryIntegration.new(cf.coFac);
    ei = integrator.integrate(@elem); 
    return ei;
end
isFactory() click to toggle source

Test if this is itself a ring factory.

# File examples/jas.rb, line 726
def isFactory()
    f = @elem.factory();
    if @elem == f
        return true;
    else
        return false;
    end
end
isONE() click to toggle source

Test if this is the one element of the ring.

# File examples/jas.rb, line 562
def isONE()
    return @elem.isONE();
end
isPolynomial() click to toggle source

Test if this is a polynomial.

# File examples/jas.rb, line 738
def isPolynomial()
    begin
        nv = @elem.ring.coFac; #nvar;
    rescue
        return false;
    end
    return true;
end
isZERO() click to toggle source

Test if this is the zero element of the ring.

# File examples/jas.rb, line 541
def isZERO()
    return @elem.isZERO();
end
is_field() click to toggle source

Test if this RingElem is field.

# File examples/jas.rb, line 1277
def is_field()
    return @ring.isField();
end
lc() click to toggle source

Leading coefficient of a polynomial.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1234
def lc()
    c = @elem.leadingBaseCoefficient();
    return RingElem.new(c);
end
len() click to toggle source

Length of an element.

# File examples/jas.rb, line 769
def len()
    return self.elem.length(); 
end
lm() click to toggle source

Leading monomial of a polynomial.

Compatibility method for Sage/Singular. Note: the meaning of lt and lm is swapped compared to JAS.

# File examples/jas.rb, line 1224
def lm()
    ev = @elem.leadingExpVector();
    return ev;
end
lt() click to toggle source

Leading term of a polynomial.

Compatibility method for Sage/Singular. Note: the meaning of lt and lm is swapped compared to JAS.

# File examples/jas.rb, line 1245
def lt()
    ev = @elem.leadingMonomial();
    return Monomial.new(ev);
end
monic() click to toggle source

Monic polynomial.

# File examples/jas.rb, line 900
def monic()
    return RingElem.new( @elem.monic() ); 
end
monomial_divides(a,b) click to toggle source

Test divide of ExpVectors.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1342
def monomial_divides(a,b)
    #print "JAS a = " + str(a) + ", b = " + str(b);
    if a.is_a? RingElem
        a = a.elem;
    end
    if a.getClass().getSimpleName() == "GenPolynomial"
        a = a.leadingExpVector();
    end
    if a.getClass().getSimpleName() != "ExpVectorLong"
        raise ArgumentError, "No ExpVector given " + str(a) + ", " + str(b)
    end
    if b == nil
        return False;
    end
    if b.is_a? RingElem
        b = b.elem;
    end
    if b.getClass().getSimpleName() == "GenPolynomial"
        b = b.leadingExpVector();
    end
    if b.getClass().getSimpleName() != "ExpVectorLong"
        raise ArgumentError, "No ExpVector given " + str(a) + ", " + str(b)
    end
    return a.divides(b);
end
monomial_lcm(e,f) click to toggle source

Lcm of ExpVectors.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1390
def monomial_lcm(e,f)
    if e.is_a? RingElem
        e = e.elem;
    end
    if f.is_a? RingElem
        f = f.elem;
    end
    # assume JAS ExpVector
    c = e.lcm(f);
    return c;
end
monomial_pairwise_prime(e,f) click to toggle source

Test if ExpVectors are pairwise prime.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1373
def monomial_pairwise_prime(e,f)
    if e.is_a? RingElem
        e = e.elem;
    end
    if f.is_a? RingElem
        f = f.elem;
    end
    # assume JAS ExpVector
    c = e.gcd(f);
    return c.isZERO();
end
monomial_quotient(a,b,coeff=false) click to toggle source

Quotient of ExpVectors.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1316
def monomial_quotient(a,b,coeff=false)
    if a.is_a? RingElem
        a = a.elem;
    end
    if b.is_a? RingElem
        b = b.elem;
    end
    if coeff == false
        if a.getClass().getSimpleName() == "GenPolynomial"
            return RingElem.new( a.divide(b) );
        else
            return RingElem.new( GenPolynomial.new(@ring, a.subtract(b)) );
        end
    else
        # assume JAS Monomial
        c = a.coefficient().divide(b.coefficient());
        e = a.exponent().subtract(b.exponent())
        return RingElem.new( GenPolynomial.new(@ring, c, e) );
    end
end
monomials() click to toggle source

All monomials of a polynomial.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1286
def monomials()
    ev = @elem.getMap().keySet();
    return ev;
end
object_id() click to toggle source

Hash value.

# File examples/jas.rb, line 776
def object_id()
    return @elem.hashCode(); 
end
one() click to toggle source

One element of this ring.

# File examples/jas.rb, line 555
def one()
    return RingElem.new( @elem.factory().getONE() );
end
one?() click to toggle source

Test if this is the one element of the ring.

# File examples/jas.rb, line 569
def one?()
    return @elem.isONE();
end
parent() click to toggle source

Parent in Sage is factory in JAS.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1199
def parent()
    return factory();
end
random(n=3) click to toggle source

Random element.

n size for random element will be less than 2**n.

# File examples/jas.rb, line 1003
def random(n=3)
    if n.is_a? RingElem
       n = n.elem
    end
    return RingElem.new( @elem.factory().random(n) );
end
realRoots(eps=nil) click to toggle source

Compute real roots of univariate polynomial.

# File examples/jas.rb, line 1113
def realRoots(eps=nil)
    a = @elem;
    if eps.is_a? RingElem
        eps = eps.elem;
    end
    begin
        if eps == nil
            #rr = RealRootsSturm.new().realRoots( a );
            rr = RootFactory.realAlgebraicNumbers( a )
        else
            rr = RootFactory.realAlgebraicNumbers( a, eps );
            ## rr = RealRootsSturm.new().realRoots( a, eps );
            ## rr = [ r.toDecimal() for r in rr ];
            #rr = RealRootsSturm.new().approximateRoots(a,eps);
        end
        rr = rr.map{ |e| RingElem.new(e) };
        return rr;
    rescue Exception => e
        puts "error " + str(e)
        return nil
    end
end
reduce(ff) click to toggle source

Compute a normal form of self with respect to ff.

Compatibility method for Sage/Singular.

# File examples/jas.rb, line 1407
def reduce(ff)
    s = @elem;
    fe = ff.map {|e| e.elem };
    n = ReductionSeq.new().normalform(fe,s);
    return RingElem.new(n);
end
signum() click to toggle source

Get the sign of this element.

# File examples/jas.rb, line 576
def signum()
    return @elem.signum();
end
squarefreeFactors() click to toggle source

Compute squarefree factors of polynomial.

# File examples/jas.rb, line 1032
def squarefreeFactors()
    a = @elem;
    if isPolynomial()
       sqf = Ring.getEngineSqf(@ring); 
       if sqf == nil 
          raise NotImplementedError, "squarefreeFactors not implemented for " + @ring.to_s;
       end
       cf = @ring.coFac;
       if cf.getClass().getSimpleName() == "GenPolynomialRing"
           e = sqf.recursiveSquarefreeFactors( a );
       else
           e = sqf.squarefreeFactors( a );
       end
       ll = {};
       for k in e.keySet()
           i = e.get(k);
           ll[ RingElem.new( k ) ] = i;
       end
       return ll;
    else
       raise NotImplementedError, "squarefreeFactors not implemented for " + a.to_s;
    end
end
to_f() click to toggle source

Convert to float.

# File examples/jas.rb, line 516
def to_f()
    e = @elem;
    if e.getClass().getSimpleName() == "BigInteger"
        e = BigRational(e);
    end
    if e.getClass().getSimpleName() == "BigRational"
        e = BigDecimal(e);
    end
    if e.getClass().getSimpleName() == "BigDecimal"
        e = e.toString();
    end
    e = e.to_f();
    return e;
end
to_s() click to toggle source

Create a string representation.

# File examples/jas.rb, line 505
def to_s()
    begin 
       return @elem.toScript();
    rescue 
       return @elem.to_s(); 
    end
end
zero() click to toggle source

Zero element of this ring.

# File examples/jas.rb, line 534
def zero()
    return RingElem.new( @elem.factory().getZERO() );
end
zero?() click to toggle source

Test if this is the zero element of the ring.

# File examples/jas.rb, line 548
def zero?()
    return @elem.isZERO();
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.