In case anyone looked at that in the last few hours, I replaced the
patch recently with some fixes and minor speedups.

-Marshall

On Jul 10, 3:22 pm, Marshall Hampton <hampto...@gmail.com> wrote:
> A slightly revised effort is now up for review as trac #6509:
>
> http://trac.sagemath.org/sage_trac/ticket/6509
>
> -Marshall
>
> On Jul 10, 2:08 pm, Marshall Hampton <hampto...@gmail.com> wrote:
>
> > I have tested this up to 10000, seems to work:
>
> > def brute_force_s4(n):
> >     '''
> >     Brute force search for decomposition into a sum of four squares,
> >     for cases that the main algorithm fails to handle.
> >     '''
> >     for i in range(0,int(sqrt(n))+1):
> >         for j in range(i,int(sqrt(n-i^2))+1):
> >             for k in range(j, int(sqrt(n-i^2-j^2))+1):
> >                 l = int(sqrt(n-i^2-j^2-k^2))
> >                 if n-i^2-j^2-k^2-l^2==0:
> >                     return [i,j,k,l]
>
> > def sq4(n):
> >     '''
> >     Computes the decomposition into the sum of four squares,
> >     using an algorithm described by Peter Schorn at:
> >    http://www.schorn.ch/howto.html.
> >     '''
> >     if squarefree_part(Integer(n)) == 1:
> >         return [0,0,0,sqrt(n)]
> >     m = n
> >     v = 0
> >     while mod(m,4)==0:
> >         v = v +1
> >         m = m/4
> >     if mod(m,8) == 7:
> >         d = 1
> >         m = m - 1
> >     else:
> >         d = 0
> >     if mod(m,8)==3:
> >         x = int(sqrt(m))
> >         if mod(x,2) == 0:
> >             x = x - 1
> >         p = (m-x^2)/2
> >         while not is_prime(p):
> >             x = x - 2
> >             p = (m-x^2)/2
> >             if x < 0:
> >             # fall back to brute force
> >                 m = m + d
> >                 return [2^v*q for q in brute_force_s4(m)]
> >         y,z = two_squares(p)
> >         return [2^v*q for q in [d,x,y+z,abs(y-z)]]
> >     x = int(sqrt(m))
> >     p = m - x^2
> >     if p == 1:
> >         return[2^v*q for q in [d,0,x,1]]
> >     while not is_prime(p):
> >         x = x - 1
> >         p = m - x^2
> >         if x < 0:
> >             # fall back to brute force
> >             m = m + d
> >             return [2^v*q for q in brute_force_s4(m)]
> >     y,z = two_squares(p)
> >     return [2^v*q for q in [d,x,y,z]]
>
> > Cheers,
> > Marshall Hampton
>
> > On Jul 10, 9:30 am, Santanu Sarkar <sarkar.santanu....@gmail.com>
> > wrote:
>
> > > Is the algorithm for sum of four square i,e every positive integer
> > > can be expressed as the sum of four square  is  implemented in
> > > Sage
--~--~---------~--~----~------------~-------~--~----~
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