コード例 #1
0
def _projective_general_unitary_order(n, field):
    q = field.order
    return (Integer({field.char: field.pow * (n * (n - 1) // 2)}) *
            prod((Integer(q ** i - 1) *
                  Integer(q ** i + 1) for i in range(1, n // 2 + 1))) *
            prod((Integer(q ** (2 * i + 1) + 1)) for i in range(1,
                (n + 1) // 2)))
コード例 #2
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
 def order(n, field):
     q = field.order
     n //= 2
     o = (Integer({field.char: field.pow * n * (n - 1)}) *
          Integer(q**n - e) * prod((Integer(q**i - 1) * Integer(q**i + 1)
                                    for i in xrange(1, n))))
     if field.char != 2:
         o.div_by_prime(2)
     return o
コード例 #3
0
def _get_factorized(base, pow):
    x = _integers.get((base, pow), None)
    if x is None:
        x = Integer(base**pow - 1)
        x.factorize()
        _integers[(base, pow)] = x
    return x
コード例 #4
0
ファイル: graphs.py プロジェクト: rsharmainstart/calculations
 def __init__(self, group):
     Graph.__init__(self)
     apex = group.apex()
     for elem in apex:
         factors = Integer(elem).factorize().keys()
         self.add_vertices(factors)
         self.add_edges(itertools.combinations(factors, 2))
コード例 #5
0
ファイル: graphs.py プロジェクト: rsharmainstart/calculations
 def __init__(self, group):
     Graph.__init__(self)
     apex = group.apex()
     for elem in apex:
         self._add_element(elem)
     for i, vertex in enumerate(self._vertices):
         instance = MultiModeStringFormatter.mixin_to(Integer(vertex))
         instance.str_mode = 'verbose'
         self._vertices[i] = instance
コード例 #6
0
    def __init__(self, parent, integer=Integer(), **kw):
        Frame.__init__(self, parent, **kw)

        self._integer_view = IntegerView(self, integer)
        self._integer_view.pack(expand=True, fill='x', side='left')

        self._button = CheckBox(self,
                                indicatoron=0,
                                text="F",
                                command=self._set_factorization)
        self._button.pack(side='left')
コード例 #7
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _projective_special_unitary_order(n, field):
    q = field.order
    return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod(
        (Integer(q**i - 1) * Integer(q**i + 1)
         for i in xrange(2, n // 2 + 1))) * prod(
             (Integer(q**(2 * i + 1) + 1))
             for i in xrange(1, (n + 1) // 2)) * Integer(q - 1) * Integer(
                 (q + 1) // gcd(n, q + 1)))
コード例 #8
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
 def order(n, field):
     q = field.order
     n //= 2
     part = prod(
         (Integer(q**k - 1) * Integer(q**k + 1) for k in xrange(1, n)))
     if not e:
         return (part * Integer({field.char: field.pow * n * n}) *
                 Integer(q**n - 1) * Integer(q**n + 1))
     if field.char == 2:
         part *= 2
     return (part * Integer({field.char: field.pow * n * (n - 1)}) *
             Integer(q**n - e))
コード例 #9
0
    def __init__(self, parent, integer=Integer(), **kw):
        #kw['state'] = 'disabled'
        kw.setdefault('anchor', 'nw')
        kw.setdefault('relief', 'sunken')

        kw.setdefault('width', 10)
        kw.setdefault('justify', 'left')
        self._var = StringVar()
        Label.__init__(self, parent, textvariable=self._var, **kw)
        self._factorization_enabled = False
        self.integer = integer
        self.bind("<Configure>", self._update_width)

        self._init_menu()
コード例 #10
0
def _min_power(p, n, primes):
    """Minimal power t such that \pi(p(p^t-1)(p^2t-1)...(p^nt-1)) contains given set
    of primes.
    """
    t = 0
    primes = set(primes)
    primes.remove(p)
    while primes:
        t += 1
        x = Integer()
        for i in range(1, n + 1):
            x *= _get_factorized(p, t * i)
            #x = prod(Integer(p ** (t * i) - 1) for i in range(1, n + 1))
        x.factorize()
        primes -= set(x.factors)
    return t
コード例 #11
0
 def __init__(self,
              quotient=1,
              q=0,
              partition=None,
              signs=None,
              verbose=True):
     """Creates element = quotient * [q ^ n_1 + e_1, ...] for n_i in
     'partition', e_i in 'signs'
     """
     if partition is None:
         partition = []
     if signs is None:
         signs = []
     self._quotient = Integer(quotient)
     self._q = q
     self._partition = partition
     self._signs = signs
     super(SpectraElement, self).__init__(self)
コード例 #12
0
 def order(self):
     if self._order is None:
         func = orders.exceptional_orders.get(self._name,
                                              lambda *arg: Integer())
         self._order = func(self._field)
     return self._order
コード例 #13
0
 def __init__(self, spectrum):
     Graph.__init__(self)
     for elem in spectrum:
         factors = Integer(elem).factorize().keys()
         self.add_vertices(factors)
         self.add_edges(itertools.combinations(factors, 2))
コード例 #14
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

"""
from spectrum.calculations.numeric import Integer, gcd, prod

__author__ = 'Daniel Lytkin'

sporadic_orders = {
    "M11": (Integer((2, 4), (3, 2), 5, 11)),
    "M12": (Integer((2, 6), (3, 3), 5, 11)),
    "M22": (Integer((2, 7), (3, 2), 5, 7, 11)),
    "M23": (Integer((2, 7), (3, 2), 5, 7, 11, 23)),
    "M24": (Integer((2, 10), (3, 3), 5, 7, 11, 23)),
    "J1": (Integer((2, 3), 3, 5, 7, 11, 19)),
    "J2": (Integer((2, 7), (3, 3), (5, 2), 7)),
    "J3": (Integer((2, 7), (3, 5), 5, 17, 19)),
    "J4": (Integer((2, 21), (3, 3), 5, 7, (11, 3), 23, 29, 31, 37, 43)),
    "Co1": (Integer((2, 21), (3, 9), (5, 4), (7, 2), 11, 13, 23)),
    "Co2": (Integer((2, 18), (3, 6), (5, 3), 7, 11, 23)),
    "Co3": (Integer((2, 10), (3, 7), (5, 3), 7, 11, 23)),
    "Fi22": (Integer((2, 17), (3, 9), (5, 2), 7, 11, 13)),
    "Fi23": (Integer((2, 18), (3, 13), (5, 2), 7, 11, 13, 17, 23)),
    "Fi24'": (Integer((2, 21), (3, 16), (5, 2), (7, 3), 11, 13, 17, 23, 29)),
    "HS": (Integer((2, 9), (3, 2), (5, 3), 7, 11)),
コード例 #15
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _projective_general_linear_order(n, field):
    q = field.order
    return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod(
        (Integer(q**i - 1) for i in xrange(2, n + 1))))
コード例 #16
0
 def transform_number(number):
     if type(number) in (SpectraElement, Integer):
         return StringViewFormatter(number)
     return StringViewFormatter(Integer(number))
コード例 #17
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _e7_order(field):
    q = field.order
    return (_order_product(field, 63, [9, 7, 6, 5, 4, 3, 3, 2, 1, 1],
                           [9, 7, 5, 3, 3, 1]) * Integer(
                               (q - 1) // gcd(2, q - 1)))
コード例 #18
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _e6_order(field):
    q = field.order
    return (_order_product(field, 36, [6, 4, 3, 3, 2, 1, 1], [9, 5, 3, 3, 1]) *
            Integer((q - 1) // gcd(3, q - 1)))
コード例 #19
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _order_product(field, pow, pluses, minuses):
    q = field.order
    return (Integer({field.char: field.pow * pow}) * prod(
        (Integer(q**i + 1) for i in pluses)) * prod(
            (Integer(q**i - 1) for i in minuses)))
コード例 #20
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _projective_special_linear_order(n, field):
    q = field.order
    return (Integer({field.char: field.pow * (n * (n - 1) / 2)}) * prod(
        (Integer(q**i - 1)
         for i in xrange(3, n + 1))) * Integer(q + 1) * Integer(
             (q - 1) // gcd(n, q - 1)))
コード例 #21
0
 def order(self):
     if self._order is None:
         func = orders.classical_orders.get(self._name,
                                            lambda *arg: Integer())
         self._order = func(self._dim, self._field)
     return self._order
コード例 #22
0
ファイル: groups.py プロジェクト: aikoven/calculations
 def order(self):
     if self._order is None:
         # n!/2
         self._order = numeric.prod(range(3, self._degree + 1))
     return Integer(self._order)
コード例 #23
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _2b2_order(field):
    q = field.order
    return Integer({2: field.pow * 2}) * (q**2 + 1) * (q - 1)
コード例 #24
0
 def transform_number(number):
     if type(number) not in (SpectraElement, Integer):
         number = Integer(number)
     return MultiModeStringFormatter.mixin_to(number)
コード例 #25
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _2g2_order(field):
    q = field.order
    return Integer({3: field.pow * 3}) * (q**3 + 1) * (q - 1)
コード例 #26
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _2e6_order(field):
    q = field.order
    return (_order_product(field, 36, [9, 6, 5, 4, 3, 3, 2, 1], [3, 3, 1, 1]) *
            Integer((q + 1) // gcd(3, q + 1)))
コード例 #27
0
ファイル: orders.py プロジェクト: rsharmainstart/calculations
def _symplectic_order(n, field):
    n //= 2
    q = field.order
    return (Integer({field.char: field.pow * n * n}) * prod(
        (Integer(q**i - 1) * Integer(q**i + 1) for i in xrange(1, n + 1))))