Class: Abst::IntegerResidueRing
- Inherits:
-
Object
- Object
- Abst::IntegerResidueRing
- Includes:
- Ring
- Defined in:
- lib/include/integer.rb
Direct Known Subclasses
Class Attribute Summary collapse
-
.mod ⇒ Object
readonly
Returns the value of attribute mod.
Instance Attribute Summary collapse
-
#n ⇒ Object
readonly
Returns the value of attribute n.
Class Method Summary collapse
- .cardinality ⇒ Object
- .one ⇒ Object
- .order(op = :+) ⇒ Object
- .to_s ⇒ Object
- .to_tex ⇒ Object
- .zero ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#initialize(n) ⇒ IntegerResidueRing
constructor
A new instance of IntegerResidueRing.
- #inverse ⇒ Object
- #order(op) ⇒ Object
- #to_i ⇒ Object
- #to_s ⇒ Object (also: #inspect)
Methods included from Ring
Constructor Details
#initialize(n) ⇒ IntegerResidueRing
Returns a new instance of IntegerResidueRing.
323 324 325 |
# File 'lib/include/integer.rb', line 323 def initialize(n) @n = n % self.class.mod end |
Class Attribute Details
.mod ⇒ Object (readonly)
Returns the value of attribute mod.
288 289 290 |
# File 'lib/include/integer.rb', line 288 def mod @mod end |
Instance Attribute Details
#n ⇒ Object (readonly)
Returns the value of attribute n.
321 322 323 |
# File 'lib/include/integer.rb', line 321 def n @n end |
Class Method Details
.cardinality ⇒ Object
309 310 311 312 313 314 315 316 317 318 319 |
# File 'lib/include/integer.rb', line 309 def order(op = :+) case op when :+ return @mod when :* @order = phi(@mod) unless defined?(@order) return @order end raise ArgumentError, "unrecognized argument #{op} was specified" end |
.one ⇒ Object
294 295 296 |
# File 'lib/include/integer.rb', line 294 def one return self.new(1) end |
.order(op = :+) ⇒ Object
298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/include/integer.rb', line 298 def order(op = :+) case op when :+ return @mod when :* @order = phi(@mod) unless defined?(@order) return @order end raise ArgumentError, "unrecognized argument #{op} was specified" end |
.to_s ⇒ Object
311 312 313 |
# File 'lib/include/integer.rb', line 311 def to_s return "Z / #{@mod}Z" end |
.to_tex ⇒ Object
315 316 317 318 |
# File 'lib/include/integer.rb', line 315 def to_tex z = Z.to_tex return z + " / #{@mod}" + z end |
.zero ⇒ Object
290 291 292 |
# File 'lib/include/integer.rb', line 290 def zero return self.new(0) end |
Instance Method Details
#==(other) ⇒ Object
333 334 335 336 337 |
# File 'lib/include/integer.rb', line 333 def ==(other) return false unless self.class.superclass == other.class.superclass return false unless self.class.mod == other.class.mod return @n == other.n end |
#inverse ⇒ Object
339 340 341 |
# File 'lib/include/integer.rb', line 339 def inverse return self.class.new(Abst.inverse(@n, self.class.mod)) end |
#order(op) ⇒ Object
343 344 345 346 347 348 349 350 351 352 353 354 355 |
# File 'lib/include/integer.rb', line 343 def order(op) mod = self.class.mod case op when :+ return mod / gcd(@n, mod) when :* raise ArgumentError, "#{self} is not invertible" unless 1 == gcd(@n, mod) return element_order(self, self.class.order(op)) end raise ArgumentError, "unrecognized argument #{op} was specified" end |
#to_i ⇒ Object
362 363 364 |
# File 'lib/include/integer.rb', line 362 def to_i return @n end |
#to_s ⇒ Object Also known as: inspect
357 358 359 |
# File 'lib/include/integer.rb', line 357 def to_s return "#{@n} (mod #{self.class.mod})" end |