Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Why rational products are not correctly handled

Hi there. I've got a strange behavior on a very simple case. This is just a little code that generates two rationals (a priori) and ask to return their product and display it as a rational. I put that in a loop and got strange results however only time to time. it doesn't look to me that it's deterministic. Who can help understanding and why not how to do it properly. Thanks

    for i in range(100):
    n1=randint(0,6)
    d1=randint(1,4)
    n2=randint(1,100)
    d2=randint(1,100)
    exp1 = str(n1)+"/"+str(d1)+"*"+str(n2)+"/"+str(d2) + " = " 
    exp2 = eval("Rational(" + str(n1)+"/"+str(d1)+"*"+str(n2)+"/"+str(d2) +")")
    print(exp1 + str(exp2))

ps: looks like the indentation is lost when I copy the code.

Why rational products are not correctly handled

Hi there. I've got a strange behavior on a very simple case. This is just a little code that generates two rationals (a priori) and ask to return their product and display it as a rational. I put that in a loop and got strange results however only time to time. it doesn't look to me that it's deterministic. Who can help understanding and why not how to do it properly. Thanks

    for i in range(100):
    n1=randint(0,6)
    d1=randint(1,4)
    n2=randint(1,100)
    d2=randint(1,100)
    exp1 = str(n1)+"/"+str(d1)+"*"+str(n2)+"/"+str(d2) + " = " 
    exp2 = eval("Rational(" + str(n1)+"/"+str(d1)+"*"+str(n2)+"/"+str(d2) +")")
    print(exp1 + str(exp2))

ps: looks like the indentation is lost when I copy the code.

This is an edit. I thought may be a copy of some displays could help

    1/3*3/11=1/11
2/1*11/43=22/43
4/1*65/37=260/37
2/4*19/23=19/46
6/3*51/86=51/43
1/4*100/65=5/13
3/3*4/40=1/10
1/1*78/88=39/44
1/3*56/80=205041934254272/878751146804023
4/2*12/14=12/7
0/1*85/2=0
6/3*72/94=72/47
1/1*72/41=72/41
5/3*48/14=40/7
6/3*80/4=40
4/3*88/15=352/45
0/3*71/67=0
5/2*88/93=220/93
4/4*43/39=43/39
4/3*77/54=71651876916793/37687026170521
6/1*100/40=15
0/3*61/90=0
6/2*19/96=19/32
1/4*15/23=15/92
0/3*82/96=0
3/2*71/52=213/104