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
-~----------~----~----~----~------~----~------~--~---

Reply via email to