def tex_den_com0(a, b, c, sgn): # renvoie l'ecriture au format tex de la mise au meme denominateur des fraction a et b if not isinstance(c, tuple): # les deux fractions ont deja le meme denominateur return '' else: (sgn1, sgn2) = (signe(a[1]), signe(b[1])) if c[0] == 1: if c[1] == 1: d = (a[0] * sgn1, a[1] * sgn1, b[0] * sgn2, b[1] * sgn2) return '' else: d = (a[0] * sgn1, a[1] * sgn1, sgn, b[0] * sgn2, c[1], b[1] * sgn2, c[1]) return '\dfrac{%s}{%s}%s\\dfrac{%s_{\\times %s}}{%s_{\\times %s}}' % \ d elif c[1] == 1: d = (a[0] * sgn1, c[0], a[1] * sgn1, c[0], sgn, b[0] * sgn2, b[1] * sgn2) return '\dfrac{%s_{\\times %s}}{%s_{\\times %s}}%s\\dfrac{%s}{%s}' % \ d else: d = ( a[0] * sgn1, c[0], a[1] * sgn1, c[0], sgn, b[0] * sgn2, c[1], b[1] * sgn2, c[1], ) return '\dfrac{%s_{\\times %s}}{%s_{\\times %s}}%s\\dfrac{%s_{\\times %s}}{%s_{\\times %s}}' % \ d
def tex_den_com1(a, sgn): # renvoie l'ecriture au format tex de la somme des fractions au meme denominateur if not isinstance(a, tuple): # les deux fractions ont deja le meme denominateur return '' else: (sgn1, sgn2) = (signe(a[0][1]), signe(a[1][1])) b = (a[0][0] * sgn1, a[0][1] * sgn1, sgn, a[1][0] * sgn2, a[1][1] * sgn2) return '\dfrac{%s}{%s}%s\\dfrac{%s}{%s}' % b
def decomp_prod(a, b): # renvoie un tuple contenant les deux fractions apres simplification et un tuple contenant les nb par lesquels on # simplifie le produit de fractions c = pgcd(a[0], b[1]) d = pgcd(a[1], b[0]) sgn1 = signe(a[1]) sgn2 = signe(b[1]) if c == d == 1: return (((sgn1 * a[0]) // c, (sgn1 * a[1]) // d), ((sgn2 * b[0]) // d, (sgn2 * b[1]) // c), '') else: return (((sgn1 * a[0]) // c, (sgn1 * a[1]) // d), ((sgn2 * b[0]) // d, (sgn2 * b[1]) // c), (c, d))
def inverse(a): # renvoie l'inverse de la fraction a sgn1 = signe(a[0]) return (sgn1 * a[1], sgn1 * a[0])
def produit(a, b): # renvoie un tuple contenant le produit des fractions a et b sgn1 = signe(a[1] * b[1]) return ((sgn1 * a[0]) * b[0], (sgn1 * a[1]) * b[1])
def den_com1(a, b): # renvoie un tuple contenant les fractions a et b avec le meme denominateur c = den_com0(a, b) sgn1 = signe(a[1]) sgn2 = signe(b[1]) return (((a[0] * c[0]) * sgn1, (a[1] * c[0]) * sgn1), ((b[0] * c[1]) * sgn2, (b[1] * c[1]) * sgn2))