# why there is no exact result with this fractions sum ?

Hi, here is my code, in order to use it with sagetex (I'm new with sage). I want to make a sum with two fractions.

L = random.sample([n for n in range(-15, 15) if n != -1 and n != 1 and n != 0], 4)
print(L)
print(type(L))
L/L+L/L


and the result is :

[-11, 12, 7, -7]
<class 'int'>
-1.9166666666666665


so, no exact value.

I've made an other test :

L = random.sample([n for n in range(-15, 15) if n != -1 and n != 1 and n != 0],4)
print(L)
print(type(L))
print(L/L+L/L)
QQ(L/L+L/L)


and the output is :

[-6, -8, -4, 5]
<class 'int'>
-0.050000000000000044
-52215647853572/1044312957071439


instead of -1/20. I would like to understand how to achieve the exact and simplified fraction.

Thank you

Edit :

I tried with this 1 min ago :

L = random.sample([n for n in range(-15, 15) if n != -1 and n != 1 and n != 0],4)
print(L)
print(type(L))
print(L/L+L/L)
print(Integer(L)/Integer(L)+Integer(L)/Integer(L))
QQ(L/L+L/L)


and the output is :

[5, -8, -6, -13]
<class 'int'>
-0.16346153846153844
-17/104

-39792720200266/243437817695745


so ... i have to do this with "Integer" ?

edit retag close merge delete

Sort by » oldest newest most voted Yes, definitely use Integer to get access to exact arithmetic. Python isn't built for this, and int is a Python class. Sage and its Integer class are built for this. You could do L = random.sample([Integer(n) for n ...]), or use srange instead of range to iterate using the Integer class.

more

from srange? :

Docstring:
Return a list of numbers "start, start+step, ..., start+k*step",
where "start+k*step < end" and "start+(k+1)*step >= end".

This provides one way to iterate over Sage integers as opposed to
Python int's.  It also allows you to specify step sizes for such an
iteration.


HTH,

EDIT :

Just saw John Palmieri's suggestion, whi h amoiunts exactly to the same thing. Wups...

more