Beispiel #1
0
def traza(alpha,d):
    alpha = simplify(alpha)
    if d < 0 or alpha.coeff(sqrt(d),1)==0:
        # Tomamos la norma como el alpha por su conjugado si d < 0
        # o alpha está en Z (2 * alpha)
        return simplify(alpha+alpha.conjugate())
    else:
        # En caso contrario tomamos menos el coeficiente del término
        # de primer grado su polinomio mínimo asociado.
        polynome = minimal_polynomial(alpha,x)
        return -polynome.coeff(x,1)
Beispiel #2
0
def traza(alpha, d):
    alpha = simplify(alpha)
    if d < 0 or alpha.coeff(sqrt(d), 1) == 0:
        # Tomamos la norma como el alpha por su conjugado si d < 0
        # o alpha está en Z (2 * alpha)
        return simplify(alpha + alpha.conjugate())
    else:
        # En caso contrario tomamos menos el coeficiente del término
        # de primer grado su polinomio mínimo asociado.
        polynome = minimal_polynomial(alpha, x)
        return -polynome.coeff(x, 1)
Beispiel #3
0
def divisores(p, d):
    e = getE(d)
    fp = poly(minimal_polynomial(e, "x"), modulus=p)
    roots = fp.ground_roots().keys()

    if len(roots) == 0:
        return [[p]]
    else:
        if len(roots) == 1:
            roots.append(roots[0])
        return [[p, e - roots[0]], [p, e - roots[1]]]
Beispiel #4
0
def divisores(p,d):
    e = getE(d)
    fp = poly(minimal_polynomial(e, "x"), modulus=p)
    roots = fp.ground_roots().keys()

    if len(roots) == 0:
        return [[p]]
    else:
        if len(roots)==1:
            roots.append(roots[0])
        return [[p,e-roots[0]],[p,e-roots[1]]]
Beispiel #5
0
def norma(alpha, d):
    alpha = simplify(alpha)

    if d < 0 or alpha.coeff(sqrt(d), 1) == 0:
        # Tomamos la norma como el alpha por su conjugado si d < 0
        # o alpha está en Z (alpha**2)
        return simplify(alpha * alpha.conjugate())
    else:
        # En caso contrario tomamos el término independiente
        # de su polinomio mínimo asociado.
        polynome = minimal_polynomial(alpha, x)
        return polynome.coeff(x, 0)
Beispiel #6
0
def norma(alpha,d):
    alpha = simplify(alpha)

    if d < 0 or alpha.coeff(sqrt(d),1)==0:
        # Tomamos la norma como el alpha por su conjugado si d < 0
        # o alpha está en Z (alpha**2)
        return simplify(alpha*alpha.conjugate())
    else:
        # En caso contrario tomamos el término independiente
        # de su polinomio mínimo asociado.
        polynome = minimal_polynomial(alpha,x)
        return polynome.coeff(x,0)
Beispiel #7
0
 def apply(self, s, x, evaluation):
     'MinimalPolynomial[s_, x_]'
     variables = find_all_vars(s)
     if len(variables) > 0:
         return evaluation.message('MinimalPolynomial', 'nalg', s)
     
     if s == Symbol('Null'):
         return evaluation.message('MinimalPolynomial', 'nalg', s)
     
     sympy_s, sympy_x = s.to_sympy(), x.to_sympy()
     if sympy_s is None or sympy_x is None:
         return None
     sympy_result = sympy.minimal_polynomial(sympy_s, sympy_x)
     return from_sympy(sympy_result)
Beispiel #8
0
    def apply(self, s, x, evaluation):
        "MinimalPolynomial[s_, x_]"
        variables = find_all_vars(s)
        if len(variables) > 0:
            return evaluation.message("MinimalPolynomial", "nalg", s)

        if s == Symbol("Null"):
            return evaluation.message("MinimalPolynomial", "nalg", s)

        sympy_s, sympy_x = s.to_sympy(), x.to_sympy()
        if sympy_s is None or sympy_x is None:
            return None
        sympy_result = sympy.minimal_polynomial(sympy_s, polys=True)(sympy_x)
        return from_sympy(sympy_result)
Beispiel #9
0
 def apply(self, s, x, evaluation):
     'MinimalPolynomial[s_, x_]'
     variables = find_all_vars(s)
     if len(variables) > 0:
         return evaluation.message('MinimalPolynomial', 'nalg', s)
     
     if s == Symbol('Null'):
         return evaluation.message('MinimalPolynomial', 'nalg', s)
     
     sympy_s, sympy_x = s.to_sympy(), x.to_sympy()
     if sympy_s is None or sympy_x is None:
         return None
     sympy_result = sympy.minimal_polynomial(sympy_s, sympy_x)
     return from_sympy(sympy_result)
Beispiel #10
0
def es_primo(ideal, d):
    e = getE(d)
    norm = norma_ideal(ideal, d)
    if isprime(norm):
        return True
    elif esO(ideal, d) == 1:
        return False

    sqrt_norm = sqrt(norm)

    if getType(sqrt_norm) == Integer and isprime(sqrt_norm):
        fp = poly(minimal_polynomial(e, "x"), modulus=sqrt_norm)

        roots = fp.ground_roots().keys()

        if pertenece(sqrt_norm, ideal, d) and len(roots) == 0:
            return True

    return False
Beispiel #11
0
def es_primo(ideal, d):
    e = getE(d)
    norm = norma_ideal(ideal, d)
    if isprime(norm):
        return True
    elif esO(ideal,d)==1:
        return False

    sqrt_norm = sqrt(norm)

    if getType(sqrt_norm) == Integer and isprime(sqrt_norm):
        fp = poly(minimal_polynomial(e, "x"), modulus=sqrt_norm)

        roots = fp.ground_roots().keys()

        if pertenece(sqrt_norm,ideal,d) and  len(roots)==0:
            return True

    return False