I am running into problems using the gcd function in sage. (version 3.4.2)
Specifically, I am iterating over a set of integers [a,b,c,r,s,t] which I want to be coprime. I check this using gcd([a,b,c,r,s,t]). The problem is that it returns 1 for tuples that should not have gcd = 1. For example, for [a,b,c,r,s,t]=[2,2,2,0,0,0], it passes gcd ([a,b,c,r,s,t]) == 1. When I check this directly (by evaluating gcd ([2,2,2,0,0,0]) it evaluates correctly. This is driving me insane - any help would be greatly appreciated. Here is the pertinent code: (If you want to run into the [2,2,2,0,0,0] case, try d = 32 and N = 8) def MakeTernaryQF(d,N): ## Make the list## #r,s,t <= 0 QFlist = [] for a in range(1, 1+ceil((d/2)^(1/3))): for b in range(a, floor(sqrt(d / (2*a)))+1): for r in range(-b, 1): for s in range(-a,1): for t in range(-a,1): if (d - r*s*t +a*r*r + b*s*s)%(4*a*b - t*t) == 0: c = (d - r*s*t +a*r*r + b*s*s)/(4*a*b - t*t) if gcd([a,b,c,r,s,t]) == 1 and a+b+c+r+s+t >= 0: #print 'This dumb thing thinks gcd('+str(a)+','+str(b)+','+str (c)+','+str(r)+','+str(s)+','+str(t)+') = '+str(gcd([a,b,c,r,s,t])) QFlist.append([a,b,c,r,s,t]) #r,s,t > 0 for a in range(1, 1+ceil((d/2)^(1/3))): for b in range(a, floor(sqrt(d / (2*a)))+1): for r in range(1, b+1): for s in range(1,a+1): for t in range(1,a+1): if (d - r*s*t +a*r*r + b*s*s)%(4*a*b - t*t) == 0: c = (d - r*s*t +a*r*r + b*s*s)/(4*a*b - t*t) if gcd([a,b,c,r,s,t]) == 1 and a+b+c+r+s+t >= 0: #print 'This dumb thing thinks gcd('+str(a)+','+str(b)+','+str (c)+','+str(r)+','+str(s)+','+str(t)+') = '+str(gcd([a,b,c,r,s,t])) QFlist.append([a,b,c,r,s,t]) return QFlist --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---