This file is indexed.

/usr/share/pyshared/pyromaths/outils/Polynomes.py is in pyromaths 11.05.1b2-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# -*- coding: utf-8 -*-
from ..classes.Polynome import Polynome
from .Arithmetique import pgcd

from random import randint,randrange
from math import *


#--------------outils pour la class Polynome----------------------

def TeX_division(dividende,diviseur):
    '''renvoie une chaine de caractere TeX pour afficher la division en détail'''
    quotient=Polynome({0:0})
    texquotient,restera= dividende/diviseur
    reste=dividende
    diviseur_degre=diviseur.deg
    sauve=min(dividende.puiss+restera.puiss)
    longueur=dividende.degre_max-sauve
    string= "$$\\renewcommand\\arraycolsep{0cm}\n\\begin{array}{c"
    for i in range(longueur):
        string+= "c"
    string+= "|c}\n"
    string+=tab_print(dividende,longueur+1)
    string+= str(diviseur)+ "\\\\\n"
    string+= "\\cline{"+str(dividende.deg+2-sauve)+"-"+str(dividende.deg+2-sauve)+"}\n"
    i=0
    while reste.deg>=diviseur.deg:
        for k in range(i):
            string+= " &"
        ajout_quotient_deg=reste.deg-diviseur_degre
        facteur= reste.dictio[max(0,reste.deg)]/diviseur.dictio[diviseur.deg]
        ajout_quotient=Polynome({ajout_quotient_deg:facteur},var=dividende.var)
        soustrait_reste=ajout_quotient*diviseur
        string +=tab_print(soustrait_reste,diviseur_degre+1-sauve,parenthese=True)
        for k in range(longueur-i-diviseur.deg+sauve):
            string+= " & "
        if i ==0:
            string+= str(texquotient)
        string+= "\\\\\n"
        string+= "\\cline{"+str(i+1) +"-"+str(i+diviseur.deg+1-sauve) +"}\n"
        avant=reste.deg
        reste=reste-soustrait_reste
        delta=avant-reste.degre_max
        for k in range(i):
            string+= " &"
        i=i+delta
        prochain=1
        string +=tab_print(reste,min(diviseur.deg+1,reste.degre_max+1)+delta-sauve,debut=delta)
        #fait descendre les monome du dividende
        for k in range(longueur-i-diviseur.deg+sauve):
            string+= " & "
        string+= "\\\\ \n"
    string+= "\\end{array}\n$$"

    string+="\n On a $$"+dividende.TeX()+" = \\left(" + texquotient.TeX()+"\\right) \\times \\left("+diviseur.TeX()+"\\right)"
    if restera!=Polynome(0):
        if len(restera.puiss)==1 and restera[restera.deg]>0:#monome
            string +="+"+restera.TeX()
        else:
            string+="+\\left("+restera.TeX()+"\\right)"
    string+="$$"
    return string
def tab_print(polynome,longueur=0,parenthese=False,debut=0):
    '''utilisé par TeX_division pour décaler le reste dans la partie gauche'''
    degre=polynome.degre_max+debut
    string=''
    if parenthese:
        string = "-("
        fin=")"
    else:
        fin=""
    if polynome==0:
        string += "+"+str(0)+ " &"
    else:
        for i in range(longueur):
            k=degre-i
            coeff=polynome.dictio.get(k,0)
            if coeff>=0:
                string+= "+"
            string += str(coeff)
            if k!=0:
                string+= polynome.var
            if k != 1 and k!=0:
                string+= u"^" + str(k)
            if longueur-i==1:
                    string+= fin
            string+= " & "
    return string

########################################################
#
#  construction de polynôme de degré 2
#  X est un Polynome
#  X=Polynome("x","x") donnera un polynome de degré 2
#  X=Polynome("x^2",x) donnera un polynôme bicarrée
#
########################################################
def poly_racines_quelconques(abs_a,abs_b,abs_c,X):
    '''renvoie un polynome de degré 2'''
    '''abs_a,abs_b,abs_c sont des entiers positifs majorant les valeurs absolues de a, b ,c'''
    
    a3=(2*randrange(2)-1)*randrange(1,abs_a+1)
    b3=randrange(abs_b)
    c3=randrange(-abs_c,abs_c)
    return a3*X**2+b3*X+c3
def poly_racines_fractionnaires(rac_min,rac_max,denom1,X):
    '''renvoie un polynome de degré2 à racines fractionnaires '''
    '''les racines sont comprises entre rac_min et rac_max'''
    '''denom1 majore le dénominateur des racines'''
    while 1:
        #pour éviter P=77x^2
        a2=2*randrange(2)-1 #a2=-1 ou 1
        p2facteur=[randint(1,denom1)*X-randint(rac_min,rac_max)for i in range(2)]
        pol2=a2*p2facteur[0]*p2facteur[1]
        if pol2[1]!=0 and pol2[0]!=0:
            break
    pol2=pol2.simplifie()
    simplifie=abs(pgcd(pgcd(int(pol2[0]),int(pol2[1])),int(pol2[2])))
    pol2= pol2/simplifie
    return pol2.simplifie()
def poly_racines_entieres(rac_min,rac_max,X,a1=1):
    
    while 1:
        p1facteur=[X-randrange(rac_min,rac_max) for i in range(2)]
        pol1=a1*p1facteur[0]*p1facteur[1]
        if pol1[1]!=0 or pol1[1]!=0:
            break
    return pol1

def poly_id_remarquables(rac_min,rac_max,X):
    '''Renvoie un polynome obtenu par une identité remarquable'''
    '''et sgns 
         -2 => (a-b)²
         +2 => (a+b)²
          0 => (a-b)(a+b)'''
    a=randint(1,10)
    while 1:
        coeff=randrange(rac_min,rac_max)
        racine=randrange(rac_min,rac_max)
        if coeff!=0 and racine!=0:
            break
    sgns=[[-1,1][randrange(2)]for i in range(2)]
    p1facteur=[coeff*X+sgns[i]*racine for i in range(2)]
    return a*p1facteur[0]*p1facteur[1],sum(sgns)   
        #sum(sgns) permet de connaître l'identité remarquable
        # -2 => (a-b)²
        # +2 => (a+b)²
        # 0 => (a-b)(a+b)

 #----------polynome de degré 3-------------
def poly_degre3_racines_entieres(rac_min,rac_max,X,racines=[-2,-1,0,1,2]):
    racine_evidente=racines[randrange(len(racines))]
    return (X-racine_evidente)*poly_racines_entieres(rac_min,rac_max,X)
def poly_degre3_racines_fractionnaires(rac_min,rac_max,denom1,X,racines=[-2,-1,0,1,2]):
    racine_evidente=racines[randrange(len(racines))]
    return (X-racine_evidente)*poly_racines_fractionnaires(rac_min,rac_max,denom1,X)
def poly_degre3_racines_quelconques(abs_a,abs_b,abs_c,X,racines=[-2,-1,0,1,2]):
    racine_evidente=racines[randrange(len(racines))]
    return (X-racine_evidente)*poly_racines_quelconques(abs_a=1,abs_b=10,abs_c=10,X=X)