class Algebra::AlgebraicExtensionField
Public Class Methods
create(field, var_obj) { |var| ... }
click to toggle source
Calls superclass method
# File lib/algebra/algebraic-extension-field.rb, line 18 def self.create(field, var_obj) poly_ring = Algebra.Polynomial(field, var_obj) modulus = yield(poly_ring.var) klass = super(poly_ring, modulus) # def klass.var; self[ground.var]; end klass.sysvar :var, klass[klass.ground.var] klass.sysvar :base, field if Algebra::AlgebraicExtensionField >= field env_ring = Algebra.Polynomial(field.env_ring, var_obj) klass.sysvar :def_polys, field.def_polys + [modulus] else env_ring = poly_ring klass.sysvar :def_polys, [modulus] end poly_ring.class_eval <<-__DEF__ def abs_lift if Algebra::AlgebraicExtensionField >= ground project(self.class.env_ring) {|c, n| c.abs_lift } else project(self.class.env_ring) {|c, n| c } end end __DEF__ poly_ring.sysvar :env_ring, env_ring klass.sysvar :env_ring, env_ring klass end
to_ary()
click to toggle source
# File lib/algebra/algebraic-extension-field.rb, line 59 def self.to_ary [self, var] end
Public Instance Methods
[](n)
click to toggle source
# File lib/algebra/algebraic-extension-field.rb, line 51 def [](n) lift[n] end
abs_lift()
click to toggle source
# File lib/algebra/algebraic-extension-field.rb, line 55 def abs_lift Algebra::AlgebraicExtensionField >= self.class.base ? lift.abs_lift : lift end