ResidueClassRing

(Class of Residue Class Ring)

This class represents a residue class ring. To create concrete class, use the class method ResidueClassRing.create or the function ResidueClassRing designating the base ring and the element of it.

File Name:

SuperClass:

Included Modules:

none.

Associated Functions:

ResidueClassRing(ring, mod)

Same as ResidueClassRing.create(ring, mod).

AlgebraicExtentionField(field, obj){|x| ... }

Returns the extension field of the field by the polynomial ... of the variable x, where obj represents the x. The class method var of this class is defined as the variable represented by x.

Example: Create the field F extended by x**2 + x + 1 == 0 from Rational.

require "rational"
require "polynomial"
require "residue-class-ring"
F  = AlgebraicExtentionField(Rational, "x") {|x| x**2 + x + 1}
x = F.var
p( (x-1)** 3 / (x**2 - 1) ) #=> -3x - 3

Class Methods:

ResidueClassRing.create(ring, mod)

Returns the class of the residue class ring of the ring and the modulus mod.

This class is a subclass of ResidueClassRing and has the class methods ground, modulus and [x] , which return the fundamental ring ring, the modulus mod and the representing residue class of x, respectively.

Example: divide the polynomial ring by the modulus x**2 + x + 1.

require "rational"
require "polynomial"
require "residue-class-ring"
Px = Polynomial(Rational, "x")
x = Px.var
F = ResidueClassRing(Px, x**2 + x + 1)
p F[x + 1]**100     #=> -x - 1

When ring is Integer, all inverse elements are calculated in advance. And we can obtain the residue classes of 0, 1, ... , mod-1 by to_ary.

Example: the prime field of modulo 7

require "residue-class-ring"
F7 = ResidueClassRing.create(Integer, 7)
a, b, c, d, e, f, g = F7
p [e + c, e - c, e * c, e * 2001, 3 + c, 1/c, 1/c * c]
  #=> [6, 2, 1, 3, 5, 4, 1]
p( (1...7).collect{|i| F7[i]**6} )
  #=> [1, 1, 1, 1, 1, 1]
ResidueClassRing.[x]

Returns the residue class represented bye x.

ResidueClassRing.zero

Returns zero.

ResidueClassRing.unity

Returns unity.

Methods:

lift

Returns the representative of self.

zero?

Returns true if self is zero.

zero

Returns zero.

unity

Returns unity.

==(other)

Returns true if self equals other.

+(other)

Returns the sum of self and other.

-(other)

Returns the difference of self from other.

*(other)

Returns the product of self and other.

**(n)

Returns the n-th power of self.

/(other)

Returns the quotient of self by other using inverse.

inverse

Returns the inverse element, assuming the fundamental ring is Euclidian. When it does not exist, this returns nil.