[sage-devel] Re: number_field_element coercion

2007-11-09 Thread William Stein

On Fri, 09 Nov 2007 15:07:03 -, John Voight <[EMAIL PROTECTED]> wrote:
> Thanks, somehow I knew this was going to become a trac ticket.  It is
> also my suspicion that it is an optimization issue with number
> fields.  It seems really bizarre that it should be calling a
> polynomial ring constructor!

Why?  Elements of number fields are stored as polynomial ring elements.

> (The cost right now is absolutely killing me right now.  I've started
> enumerating relative extensions of number fields, and doing actual
> computation right now is taking negligible time in comparison to
> actual stuff!  I've already spent a couple of hours trying to figure
> out exactly where in my code this is happening, but because of the
> many ways in which elements are being created--and needing to use pari
> in between for some functionality which has not been implemented, e.g.
> finding an LLL-reduced basis of the ring of integers--even after my
> attempts, I had only managed to slow things down!)

Oh no.  But it's really not surprising given how little time has been
spent optimizing number fields.  Keep in mind, e.g., that just over a
month ago Sage didn't even have rings of integers.

  -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sqrt mod p

2007-11-09 Thread William Stein
; > >>> 3
> > > >>> sage: x = Mod(-1, 360)
> > > >>> sage: x.sqrt(extend=False)
> > > >>> Traceback (most recent call last):
> > > >>> ...
> > > >>> ValueError: self must be a square
> > > >>> sage: y = x.sqrt(); y
> > > >>> sqrt359
> > > >>> sage: y.parent()
> > > >>> Univariate Quotient Polynomial Ring in sqrt359 over Ring
> > > >>> of integers modulo 360 with modulus x^2 + 1
> > > >>> sage: y^2
> > > >>> 359
> >
> > > >>> We compute all square roots in several cases:
> > > >>> sage: R = Integers(5*2^3*3^2); R
> > > >>> Ring of integers modulo 360
> > > >>> sage: R(40).sqrt(all=True)
> > > >>> [20, 160, 200, 340]
> > > >>> sage: [x for x in R if x^2 == 40]  # Brute force
> > > >>> verification
> > > >>> [20, 160, 200, 340]
> > > >>> sage: R(1).sqrt(all=True)
> > > >>> [1, 19, 71, 89, 91, 109, 161, 179, 181, 199, 251, 269,
> > > >>> 271, 289, 341, 359]
> > > >>> sage: R(0).sqrt(all=True)
> > > >>> [0, 60, 120, 180, 240, 300]
> >
> > > >>> sage: R = Integers(5*13^3*37); R
> > > >>> Ring of integers modulo 406445
> > > >>> sage: v = R(-1).sqrt(all=True); v
> > > >>> [78853, 111808, 160142, 193097, 213348, 246303,
> > > >>> 294637, 327592]
> > > >>> sage: [x^2 for x in v]
> > > >>> [406444, 406444, 406444, 406444, 406444, 406444,
> > > >>> 406444, 406444]
> > > >>> sage: v = R(169).sqrt(all=True); min(v), -max(v), len(v)
> > > >>> (13, 13, 104)
> > > >>> sage: all([x^2==169 for x in v])
> > > >>> True
> >
> > > >>> Modulo a power of 2:
> > > >>> sage: R = Integers(2^7); R
> > > >>> Ring of integers modulo 128
> > > >>> sage: a = R(17)
> > > >>> sage: a.sqrt()
> > > >>> 23
> > > >>> sage: a.sqrt(all=True)
> > > >>> [23, 41, 87, 105]
> > > >>> sage: [x for x in R if x^2==17]
> > > >>> [23, 41, 87, 105]
> >
> > > >>> """
> > > >>> if self.is_one():
> > > >>> if all:
> > > >>> return list(self.parent().square_roots_of_one())
> > > >>> else:
> > > >>> return self
> >
> > > >>> if not self.is_square_c():
> > > >>> if extend:
> >
> > > >>>  and so on!
> >
> > > >>> John
> >
> > > >>> On 09/11/2007, Steffen <[EMAIL PROTECTED]> wrote:
> >
> > > >>>> Hi, I need to find square roots in GF(prime). I did it like this:
> >
> > > >>>> y = sqrt(GF(prime)(ySquare))
> >
> > > >>>> So far I am not quite happy with the calculation periods and I
> > > >>>> would
> > > >>>> like to know which algorithm is used. In my case is prime % 4 == 1,
> > > >>>> which is the hardest case to find the square root mod p. I am sage
> > > >>>> newbie and probably its again only a command that I cant find. I
> > > >>>> tried
> > > >>>> sqrt? and similar things, but only got the information that sqrt
> > > >>>> is a
> > > >>>> symbolic function. Could somebody tell me which algo is
> > > >>>> implemented or
> > > >>>> better how to find the implemented algo.
> >
> > > >>>> Cheers, Steffen
> >
> > > >>> --
> > > >>> John Cremona
> >
> > > > --
> > > > John Cremona
> >
> > --
> > John Cremona
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] My talk with martin Albrecht

2007-11-09 Thread William Stein

Hi everybody,

The slides of Martin and my talk are available at

   http://sage.math.washington.edu/tmp/talk/.

An accompanying SAGE worksheet can be found at

   http://sage.math.washington.edu/home/malb/SAGE_Demo.sws

. Feedback is very welcome :-)

William

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: My talk with martin Albrecht

2007-11-10 Thread William Stein

On Sat, 10 Nov 2007 00:27:45 -, John Voight <[EMAIL PROTECTED]> wrote:
> Oh, I didn't know I was going to get quoted!  (That's fine, of
> course.)
>
> Are we suppose to write "SAGE" since it's an acronym or "Sage" like
> you do?

Write "Sage".  There used to be an acronym, but the acronym no longer applies, 
since
Sage has a much more general range of functioanlity than the acronym suggests.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sqrt mod p

2007-11-10 Thread William Stein

On Nov 10, 2007 11:53 AM, Steffen <[EMAIL PROTECTED]> wrote:

> Original:
> Time: CPU 9.94 s, Wall: 10.09 s
> Number of roots found:
> 0
> Tonelli:
> Time: CPU 0.00 s, Wall: 0.00 s
> Number of roots found:
> 0

Wow, that's an improvement!

I've made this trac #1138

  http://trac.sagemath.org/sage_trac/ticket/1138

> This shows only that the old implementation was inefficient for large
> p. The results for the original implementation for 256 and 512 bit are
> not contained in the following results, since sqrt(a) returned an
> error for the 256 bit and 512 bit case. Here are the results for 100
> random values for a. Find x: x^2==a mod p
>
> Results for 128 bit prime:
> Original:
> Time: CPU 5.36 s, Wall: 5.41 s
> Number of roots found:
> 47
> Tonelli:
> Time: CPU 0.07 s, Wall: 0.08 s
> Number of roots found:
> 47
> Results for 256 bit prime:
> Tonelli:
> Time: CPU 0.10 s, Wall: 0.10 s
> Number of roots found:
> 48
> Results for 512 bit prime:
> Tonelli:
> Time: CPU 0.30 s, Wall: 0.33 s
> Number of roots found:
> 50
>
>
> Here is the complete code I used:
>
>
> def step3(b,p,r,x):
> # Step 3: Find exponent
> if GF(p)(b) == GF(p)(1):
> return b,r,x,0
> m = 0
> while GF(p)(b**(2**m)) != 1:
> m = m + 1
> if m == r:
> return b,r,0,0
> return b,r,x,m
>
> def s_root(a,p):
> # Step 0: Determine q:
> q = 0
> e = 0
> while q % 2 != 1:
> e = e+1
> q = (p-1) / 2**e
> # Step 1: Find generator
> n = ZZ.random_element()
> while kronecker(n,p) != -1:
> n = ZZ.random_element()
> n = GF(p)(n)
> z = GF(p)(n**q)
> # Step 2: Initialize
> y = z
> r = e
> a = GF(p)(a)
> x = GF(p)(a**((q-1)/2))
> b = GF(p)(a*(x**2))
> x = GF(p)(a*x)
> # Step 3:
> b,r,x,m = step3(b,p,r,x)
> # Step 4: Reduce exponent
> while ZZ(m) != ZZ(0):
> t = GF(p)(y**(2**(r-m-1)))
> y = GF(p)(t**2)
> r = GF(p)(m)
> x = GF(p)(x*t)
> b = GF(p)(b*y)
> b,r,x,m = step3(b,p,r,x)
> return x
>
> A = {}
>
> def go1(p):
> X = {}
> for i in range(0,len(A)):
> X[i] = sqrt(GF(p)(A[i]))
> return X
>
> def go2(p):
> X ={}
> for i in range(0,len(A)):
> X[i] = s_root(A[i], p)
> return X
>
> def analyseResult(A,X,p):
> numberRoots = 0
> for i in range(0,len(A)):
> x = X[i]
> a = A[i]
> if x in GF(p):
> if (GF(p)(x) != GF(p)(0)) & (GF(p)(x**2) != GF(p)(a)):
> print 'Error in implemenation'
> elif GF(p)(x) != GF(p)(0):
> numberRoots = numberRoots + 1
> print 'Number of roots found:'
> print numberRoots
>
> n = 100
>
> print 'Results for 128 bit prime:'
> p = next_prime(2^(128))
> while p % 4 != 1:
> p = next_prime(p+1)
>
> for i in range(0,n):
> A[i] = GF(p).random_element()
>
> print 'Original:'
> time X = go1(p)
> analyseResult(A,X,p)
>
> print 'Tonelli:'
> time X = go2(p)
> analyseResult(A,X,p)
>
> print 'Results for 256 bit prime:'
> p = next_prime(2^(256))
> while p % 4 != 1:
> p = next_prime(p+1)
>
> for i in range(0,n):
> A[i] = GF(p).random_element()
>
> #print 'Original:'
> #time X = go1(p)
> #analyseResult(A,X,p)
>
> print 'Tonelli:'
> time X = go2(p)
> analyseResult(A,X,p)
>
> print 'Results for 512 bit prime:'
> p = next_prime(2^(512))
> while p % 4 != 1:
> p = next_prime(p+1)
>
> for i in range(0,n):
> A[i] = GF(p).random_element()
>
> #print 'Original:'
> #time X = go1(p)
> #analyseResult(A,X,p)
>
> print 'Tonelli:'
> time X = go2(p)
> analyseResult(A,X,p)
>
> -- Steffen
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: ?Matrix

2007-11-10 Thread William Stein

On Nov 10, 2007 7:55 PM, John Voight <[EMAIL PROTECTED]> wrote:
>
> When I add
>
> from sage.matrix.constructor import matrix
>
> then I get the error:
>
> /home/jvoight/sage/local/lib/python2.5/site-packages/sage/matrix/
> constructor.py in ()
>  19
> #*
>  20
> ---> 21 import sage.rings.all as rings
>  22 import sage.matrix.matrix_space as matrix_space
>  23 from sage.structure.sequence import Sequence
>
> : 'module' object has no attribute
> 'all'

That's because you've made a circular import.  In rings you import constructor,
and in constructor you import rings!  So it's impossible to resolve.
What you have to do is import from constructor *right* before you
actually use it
(in the body of your function).


>
> If I change this line to
>
> import sage.rings as rings
>
> then Sage gives me a Unhandled SIGSEGV.
>
> Help, JV
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: gdb, doctests, strange behavior...

2007-11-11 Thread William Stein

On Nov 11, 2007 9:06 PM, Robert Miller <[EMAIL PROTECTED]> wrote:
> I'm working on a new .pyx file, and everything has been working okay,
> but something strange is now happening, and I can't quite get to the
> bottom of it.
>
> Some side notes- I am running on OS X 10.5, a fresh install of
> sage-2.8.12. It failed building, I think it was scipy, but other than
> that it has been working ok.

Currently, Sage is not supposed to build completely on OS X 10.5
unless you install gfortran system-wide.  (Don't ask me how to do
that.)
The only thing you loose as a result is scipy and maybe cvxopt (convex
optimization).  Absolutely everything should have been built.


> So I have some new cython classes, and I've written some doctests.
> When I run through the doctests by hand, I can't reproduce what
> happens when I doctest: I run
> ./sage -t -verbose .../relevant_file.pyx
> and I watch as every test passes, then it pauses for a while as it
> handles a bus error. Curious to see what is going on, I do the
> following:
>
> ./sage -t -gdb .../relevant_file.pyx
>
> gdb says lots of things like
>
> warning: Could not find object file "/Volumes/HOME/sage/spkg/build/
> python-2.5.1.p8/src/Modules/python.o" - no debug information available
> for "./Modules/python.c".
>
> before it loads, but it loads,

That's I think completely normal on OS X.

> and I type "r" to run the tests. It
> complains more about symbols, such as
>
> Reading symbols for shared libraries warning: Could not find object
> file "/Volumes/HOME/sage/spkg/build/python-2.5.1.p8/src/build/
> temp.macosx-10.3-i386-2.5/Volumes/HOME/sage/spkg/build/python-2.5.1.p8/
> src/Modules/mathmodule.o" - no debug information available for "/
> Volumes/HOME/sage/spkg/build/python-2.5.1.p8/src/Modules/
> mathmodule.c".
>
> Then it runs the tests. The problem is
>
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x0015
> 0x000d1c50 in collect ()
>
> So I backtrace:
>
> (gdb) bt
> #0  0x000d1c50 in collect ()
> #1  0x000d276a in PyGC_Collect ()
> #2  0x000c18d0 in Py_Finalize ()
> #3  0x000c1376 in handle_system_exit ()
> #4  0x000c15e5 in PyErr_PrintEx ()
> #5  0x000c24ac in PyRun_SimpleFileExFlags ()
> #6  0x000d0d97 in Py_Main ()
> #7  0x1fdc in _start ()
> #8  0x1f09 in start ()
>
> I have reproduced what __dealloc__ does in another function, and have
> tried over and over to reproduce this error outside of doctest mode,
> to no avail. The fact that the garbage collector is accessing bad
> memory seems to indicate that it has already been freed or something,
> but this only only happens during doctests, or at least so it seems. I
> have run the doctests again and again under gdb by hand, and they
> never produce a problem, so I have it narrowed down to only every
> doctest in the file. The crappy thing is that I don't know how to have
> gdb tell me what the gc was trying to collect, and I can't reproduce
> the problem in an environment where I can narrow anything down.
>
> Given all these problems, I'm moving my project back to linux, for the
> stability of a happy install, and the extra memory tools. However,
> this situation is so confusing and bizarre I'd still like to figure
> out what is happening... Any help is appreciated

Questions:

(1) Do you or do you not actually have the same problem when
you build the same code under Linux?   You don't say above.

(2) What happens when you do
grep "sage:" filename.pyx | sage

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: gdb, doctests, strange behavior...

2007-11-12 Thread William Stein
t; ".doctest_binary_code.py", start=0, globals=0x0, locals=0x0,
> closeit=1, flags=0xbf8f6b88) at Python/pythonrun.c:1271
> #27 0x080e2fa9 in PyRun_SimpleFileExFlags (fp=,
> filename=0xbf8f739a ".doctest_binary_code.py", closeit=1,
> flags=0xbf8f6b88) at Python/pythonrun.c:877
> #28 0x08056d0f in Py_Main (argc=1, argv=0xbf8f6c24) at Modules/main.c:
> 523
> #29 0xb7e7bea2 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.
> 6
> #30 0x080561b1 in _start () at ../sysdeps/i386/elf/start.S:119
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: cython __hash__ question

2007-11-12 Thread William Stein

On Nov 13, 2007 12:32 AM, Joel B. Mohler <[EMAIL PROTECTED]> wrote:
> Questions:  Should inheriting __hash__ implementations in a cython class work?

Just a trivial remark, yes, it actually does work as the following
simple example shows:

{{{
%cython

cdef class A:
def __hash__(self):
return 2

cdef class B(A):
 pass
}}}

{{{
a = A()
b = B()
}}}

{{{
hash(a)
///
2
}}}

{{{
hash(b)
///
2
}}}

> Would C++/C differences matter (there's a smattering of both in these
> classes)?  A patch against 2.8.12 is at
> http://kiwistrawberry.us/research/hash-patch-2_8_12.patch
> if you want to see actual code.
>
> As for the implementation, I'll note that one of my concerns is that I was
> going to have to write really nasty low level code to make this fast, but it
> turns out that my implementation is already faster than the current 2.8.12
> and the code is quite decent (i.e. more pythonic than c-like).  Actual speed
> comparisons vary greatly amongst classes, but it's clear that there's more
> optimizations to do around the corners in the poly classes (in particular
> some of the __getitem__ implementations are pretty slow).

By the way, one of the coding sprint projects, led by Willem Jan
Palenstijn (Leiden, NL)
implements modifying doctest so it prints out the time for each block
of tests (both wall
and cpu); this might be useful for testing the impact of your patch, a little...
I don't think he's posting anything yet though.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: plotQt.c with Qt 4.3.2 + GUI for pari/gp

2007-11-12 Thread William Stein

On Nov 13, 2007 1:35 AM, Téragone <[EMAIL PROTECTED]> wrote:
> I'm also working on a GUI for pari/gp. I started with mathGuide from which I
> removed the Python plugin

Wow, thanks for pointing out mathGuide, which I had never heard about before.
Since this is in English, I translation of the web page
  http://www.math.uni-siegen.de/ring/mathGUIde
is here:
http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=de_en&url=http%3A%2F%2Fwww.math.uni-siegen.de%2Fring%2FmathGUIde%2Findex.html

It's interesting how that project is fairly similar to Sage
(http://sagemath.org)
in many ways.  E.g., see this screenshot which looks very much like
the screen shot for mathGUIde:
http://sagemath.org/screen_shots/.html/sage-screenshot.png

>. I call gp in application mode, not in library
> mode.
>  I use most of the code of gp.c and I redirect the output to a global
> string. Maybe not the best way, but it's easy to code and it work.

Interestingly the Sage GP GUI also uses GP rather than the PARI
C library for the GUI (though Sage also uses PARI). Anyway,
here is a screenshot from Sage that actually looks a lot like
yours below:

http://sagemath.org/screen_shots/.html/sage-pari.png

> For now, my new code is source compatible only. All the modifications have
> been include in #ifdef/#endif so the "original" gp compile and work with no
> modification.
> Still many hours before it will work correctly. I use Qt so it must be
> possible to port it on many OS. I only tested it on Linux. Here a screenshot
> :
>
> http://pages.videotron.com/teragone/gui.png
>
> Please, let me know if you have interest for that.

I'm excited that there is so much enthusiasm and energy for open source
projects / guis, etc., related to mathematical software right now.   I wonder
if you've solved any problems I don't know how to solve (and conversely)
related to such things?

  -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: plotQt.c with Qt 4.3.2 + GUI for pari/gp

2007-11-12 Thread William Stein

On Nov 13, 2007 2:50 AM, David Joyner <[EMAIL PROTECTED]> wrote:
> I tried emailing the author of mathguide several times a few years ago,
> with no response. Of course, my email was in English, which might have been 
> the
> problem. In any case, I did not get the impression that it was open source.
> Either I am wrong or I presume this guy got permission from the
> mathguide author to distribute a derived work based on his code?

It's probably open source I guess, since the web page says
(translated) "Freeware is and with all sources is spread".  Perhaps a
German speaker could look at
  http://www.math.uni-siegen.de/ring/mathGUIde
and confirm this.

William

>
> ++++++++
>
>
> On Nov 12, 2007 9:33 PM, William Stein <[EMAIL PROTECTED]> wrote:
> >
> > On Nov 13, 2007 1:35 AM, Téragone <[EMAIL PROTECTED]> wrote:
> > > I'm also working on a GUI for pari/gp. I started with mathGuide from 
> > > which I
> > > removed the Python plugin
> >
> > Wow, thanks for pointing out mathGuide, which I had never heard about 
> > before.
> > Since this is in English, I translation of the web page
> >   http://www.math.uni-siegen.de/ring/mathGUIde
> > is here:
> > http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=de_en&url=http%3A%2F%2Fwww.math.uni-siegen.de%2Fring%2FmathGUIde%2Findex.html
> >
> > It's interesting how that project is fairly similar to Sage
> > (http://sagemath.org)
> > in many ways.  E.g., see this screenshot which looks very much like
> > the screen shot for mathGUIde:
> > http://sagemath.org/screen_shots/.html/sage-screenshot.png
> >
> > >. I call gp in application mode, not in library
> > > mode.
> > >  I use most of the code of gp.c and I redirect the output to a global
> > > string. Maybe not the best way, but it's easy to code and it work.
> >
> > Interestingly the Sage GP GUI also uses GP rather than the PARI
> > C library for the GUI (though Sage also uses PARI). Anyway,
> > here is a screenshot from Sage that actually looks a lot like
> > yours below:
> >
> > http://sagemath.org/screen_shots/.html/sage-pari.png
> >
> > > For now, my new code is source compatible only. All the modifications have
> > > been include in #ifdef/#endif so the "original" gp compile and work with 
> > > no
> > > modification.
> > > Still many hours before it will work correctly. I use Qt so it must be
> > > possible to port it on many OS. I only tested it on Linux. Here a 
> > > screenshot
> > > :
> > >
> > > http://pages.videotron.com/teragone/gui.png
> > >
> > > Please, let me know if you have interest for that.
> >
> > I'm excited that there is so much enthusiasm and energy for open source
> > projects / guis, etc., related to mathematical software right now.   I 
> > wonder
> > if you've solved any problems I don't know how to solve (and conversely)
> > related to such things?
> >
> >   -- William
> >
> > >
> >
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] another sage talk...

2007-11-14 Thread William Stein

http://sagemath.org/talks/20071114-sage_bristol/

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: trying to define a function and find an approximation

2007-11-15 Thread William Stein

On Nov 15, 2007 1:45 AM, Dan Drake <[EMAIL PROTECTED]> wrote:
>
> I discovered Sage recently and am very excited about it. In grad school,
> I came to be very good with Mathematica, and am now doing a postdoc
> where I only have access to (an old copy of) Maple. I like the idea of
> having my mathematical software being only a 'wget' away, and even more
> I like the idea of being able to see how it works and change it as I see
> fit.
>
> But I'm having difficulty even defining a relatively simple function and
> finding a floating-point approximation. I want to do
>
>   f := x -> integrate(exp(t^2), t=0..x); (Maple)
>   evalf(f(2));
>
>   f[x_] := Integrate[Exp[t^2], {t, 0, x}](Mathematica)
>   N[f[2]]
>
> in Sage. I know Python, and Sage is built with Python, so I tried
>
>   sage: def f(x): integrate(exp(t^2), t, 0, x)
>
> which complains that "global name 't' is not defined" when I try to
> evaluate it. I don't want a global variable, just a local one to do the
> integration!

You can define that function and compute the integral in Sage as
follows:

sage: assume(x > 0)
sage: f(x,t) = integrate(exp(t^2), t, 0, x)
sage: f
(x, t) |--> -sqrt(pi)*I*erf(I*x)/2
sage: a = f(x,0)
sage: a
-sqrt(pi)*I*erf(I*x)/2

The assume is needed above because of how Maxima works (you'll be
non-interactively
asked for it if you don't give it).

Unfortunately, Sage does not have an implementation of computing
a numerical approximation of erf(a) when a is not real, as PARI only
provides this function in case a is real, and maxima also seems to
only provide it in that case.   Thus you can't actually numerically evaluate
the result at some point.

You are the second person to request numerical evaluation of erf... at a
complex argument this week (Paul Zimmerman requested the same
thing a few days ago).   So I hope one of the Sage developers looks into
this.  I've made it:

http://trac.sagemath.org/sage_trac/ticket/1173

I also made

http://trac.sagemath.org/sage_trac/ticket/1174

which is related.

> What's the right way to go about all this? Like I said, I'm very excited
> about Sage, but this is not such an auspicious start.

Calculus is actually not at all the main focus of Sage or Sage development
yet, unfortunately, though the calculus package is very powerful.  It's
something we introduced pretty recently into Sage, but it will still take
some time to get every reasonable thing implemented, which very much
is our goal.   We need more people-power though, at least for the calculus
part of Sage (where there are currently very few developers compared
to other parts of Sage).

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: trying to define a function and find an approximation

2007-11-15 Thread William Stein

On Nov 15, 2007 7:49 AM, William Stein <[EMAIL PROTECTED]> wrote:
> >   f := x -> integrate(exp(t^2), t=0..x); (Maple)
> >   evalf(f(2));
...
>
> You can define that function and compute the integral in Sage as
> follows:
>
> sage: assume(x > 0)
> sage: f(x,t) = integrate(exp(t^2), t, 0, x)
> sage: f
> (x, t) |--> -sqrt(pi)*I*erf(I*x)/2
> sage: a = f(x,0)
> sage: a
> -sqrt(pi)*I*erf(I*x)/2

By the way, one can compute the numerical value at 2 in Sage of this
function as follows:

sage: val, err_bound = numerical_integral(lambda t: exp(t^2), 0, 2)
sage: val
16.452627765507231
sage: err_bound
1.826608616085327e-13

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: albums

2007-11-16 Thread William Stein

Hi,

I've created a page on the wiki for photos from Sage Days 6:

 http://wiki.sagemath.org/days6/pictures

If anybody posts photos online from the workshop, please put a link
there.  There
are already hundreds of photos that Jaap Spies posted.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Power series rings

2007-11-16 Thread William Stein

On Nov 16, 2007 2:07 AM, John Cremona <[EMAIL PROTECTED]> wrote:
> Even before getting to Laurent series, multivariate power series are
> harder to define than you might think, so I would avoid implementing
> them at this point unless you have a specific need for them!  You need
> to be really careful since K[[x]][[y]], K[[y]][[x]] and K[[x,y]] are
> not all the same.

I just want to counter with: Please *do* implement them!Numerous
people involved with Sage have procrastinated implementing
multivariate power series rings more times than I can count at this point.
We need somebody unafraid to just do it.

 William

> There are probably people on the list more knowledgeable than me about
> this, but I thought it might be worth while posting a warning!
>
> John
>
> On 16/11/2007, David Roe <[EMAIL PROTECTED]> wrote:
> > Hey all,
> > At some point in the near future I may try to bring the implementation of
> > power series rings more into line with the p-adics.  The single variable
> > case seems straightforward, but a something popped up for me when thinking
> > about the multivariable case.
> >
> > What is the appropriate analogue of laurent series?  Is the key point for
> > laurent series that we allow bounded negative exponents?   Or that it's a
> > field?  Because allowing bounded negative exponents is not enough to always
> > have inverses: x + y has no inverse if we require the exponents of x and y
> > to be bounded away from negative infinity.
> > David
> >
> >  >
> >
>
>
> --
> John Cremona
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: missing component

2007-11-16 Thread William Stein

On Nov 16, 2007 9:05 AM, Paul Zimmermann <[EMAIL PROTECTED]> wrote:
> By the way I started translating my program to extend aliquot sequences from
> MuPAD to SAGE. I figured out that the ECM.find_factor() and ECM.factor()
> functions perform a full factorization.
>
> What I need is a function that performs one curve at a time with a given
> stage 1 bound B1, and returns either 1 if no factor was found, or the factor
> found (which may be composite). Indeed, if I find a 40-digit factor of a
> 160-digit input by ECM, then I start separately GNFS on the 120-digit
> cofactor.
>
> I could try to write such a function from the current code of find_factor
> in interfaces/ecm.py. It would take me more time than you, but it would help
> me learning Python and SAGE. Would that make sense?

Yes, it would definitely make sense.

> Could I easily integrate
> such a function in my aliquot program, or should it be included in the
> interfaces/ecm.py file (to get all the needed imports)?

Yes, it should definitely included in ecm.py.

> If so, would it be useful for other users?

I think it would be.  Just make sure to include some examples so people
can easily figure out how to use it.

> Some functions to perform one curve with P-1 and P+1 would also be useful
> (maybe with an option in the function calling one ECM curve).

Yes, definitely.
Given that you're the main person behind GMP-ECM, it makes a lot of
sense that you would want to change/improve/extend/polish etc. the
Sage interface to GMP-ECM.

There may also be some people reading sage-devel who want to help
out, since several different people have put work into the ecm.py file
already (so understand it).

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Error building sage in Solaris 10 with gcc 4.0.2

2007-11-16 Thread William Stein

On Nov 15, 2007 3:45 PM, Michael Abshoff
<[EMAIL PROTECTED]> wrote:
> > sgray:sage-2.8.12>./sage
> > --
> > | SAGE Version 2.8.12, Release Date: 2007-11-06  |
> > | Type notebook() for the GUI, and license() for information.|
> > --
> > /usr/bin/env: No such file or directory
> > /usr/bin/env: No such file or directory
>
> Mmh, which shell do you use? Sage only works correctly with bash at the
> moment, but I thought that Solaris 10 at least shipped with a decent
> enough bash to run Sage. Otherwise I need to take a deeper look if it
> isn't the bash :(
>

I don't know if his problem is a bash problem or not.  All over the
place in sage we use

#!/usr/bin/env  foobar

to run a script using the program foobar in the user's path.
If /usr/bin/env doesn't exist this won't work.   Where is your env command?
What is the output of
   which env
Could you put a symlink from your env to /usr/bin/env?

William

> >
> > It seems to try to locate some programs that is not avaliable,
> > even using the same PATH as during the build.
> >
> > sgray:sage-2.8.12>./sage -testall
> > This script will run the unit tests for DSage
> > /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/local/bin/sage-dsage-trial:
> > trial: not found
> > However, an ERROR occurred in the Distributed SAGE unit tests.
> > Testing SAGE documentation
> > Testing SAGE tutorial
> > /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/local/bin/sage-maketest:
> > /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/devel/doc/tut: does not exist
> >
> >
> >
>
> Cheers,
>
> Michael
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Error building sage in Solaris 10 with gcc 4.0.2

2007-11-16 Thread William Stein

On Nov 15, 2007 4:31 PM, Michael Abshoff
<[EMAIL PROTECTED]> wrote:
> >
> > sgray:sage-2.8.12>./sage -testall
> > This script will run the unit tests for DSage
> > /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/local/bin/sage-dsage-trial:
> > line 17: trial: command not found
> > However, an ERROR occurred in the Distributed SAGE unit tests.
> > Testing SAGE documentation
> > Testing SAGE tutorial
> > /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/local/bin/sage-maketest:
> > line 18: cd: /afs/nada.kth.se/pkg/sage/src/sage-2.8.12/devel/doc/tut:
> > No such file or directory
> > ERROR: File ./tut.tex is missing
> > exit code: 1
> >

That strongly suggests the documentation package wasn't installed.

I wonder to what extent your build of Sage (on solaris) actually
succeeded.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Bug Day 6 proposal: Sat. Nov. 24th. 2007

2007-11-16 Thread William Stein

On Nov 16, 2007 1:57 AM, mabshoff
<[EMAIL PROTECTED]> wrote:
>
> > This is the Thanksgiving weekend, and as such is probably
> > significantly better or significantly worse for people living in
> > America.  For me, I will be traveling and not able to participate.
> >
>
> Yep, Thanksgiving is certainly a problem. So should we postpone a
> week? We can certainly [and will] meet informally this Saturday and/or
> Sunday to get 2.8.13 out the door, but it seems too late now to make
> this a formal Bug Day. The people who went to SD6 are probably
> somewhat burned out to make this a formal Bug Day, at least I am.

I think Sat Dec 1 for the next official Bug Day would be good.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: SAGE marketing

2007-11-16 Thread William Stein

On Nov 15, 2007 5:43 PM, mabshoff
<[EMAIL PROTECTED]> wrote:
> On Nov 15, 9:18 pm, "Ted Kosan" <[EMAIL PROTECTED]> wrote:
> > Who are the main people who are responsible for SAGE marketing?  I
> > will have some free time in December and I would like to devote some
> > of it to helping with SAGE's marketing effort.
> >
> > Ted
>
> Hi Ted,
>
> I don't think there is a formal structure in place to do any
> marketing, but everybody who is giving talks certainly drives

[...]

I just want to chime in that I totally agree with Michael's comments
below about marketing, especially about improving the clarity,
correctness, and consistency of the website, and finding ways to
get Sage release announcements into the tech news.

Additional things that could help would be:
   * writing introductory articles about sage
   * creating something about using sage for linear algebra teaching
   * creating a poster



> awareness. cwitty just told me in IRC that the 2.8.12 release
> announcement made it into this weeks "Linux Weekly News" development
> section - see http://lwn.net/Articles/257830/ (subscription required).
> I consider lwn very influential, so that is a good thing. If anybody
> actively submitted or tried to drive them to add SAGE to their
> development page I would like to hear about it.
>
> But back to your question: We should have somebody or a group of
> people who are working on Marketing, at least the non-hyperbole driven
> kind. One thing I can think are consistent a correctly spelled release
> announcements, so if you could come up with some suggestions and/or a
> couple standard sentences I would be very happy. In light of the lwn
> announcement I would like to add some "boilerplate" to the bottom:
>
> "Sage is developed by volunteers and combines xx open source packages.
> It is available for download from sagemath.org and its mirros in
> source or binary form. If you have any questions and/or problems
> please report them to the google groups sage-devel, sage-support, sage-
> forum or sage-newbie"
>
> This should be the standard on the bottom of each release
> announcement, so that somebody who runs across Sage via something like
> lwn would have all the basic information in one place instead of
> having to crawl over sagemath.org to find them all.
>
> Fixing up sagemath.org, especially pages that are not the main
> index.html, and updating information on the wiki is also something I
> would consider to be part of marketing. We can certainly use people
> who are willing to spend some time on that.
>
> Cheers,
>
> Michael
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: interactive widgets in the notebook

2007-11-17 Thread William Stein

On Sat, 17 Nov 2007 09:29:27 -0800, Jason Grout <[EMAIL PROTECTED]> wrote:
> I've been thinking about how to implement interactive widgets in the
> notebook.  Things like sliders, buttons, etc., that allow interactivity
> like Maplets in Maple or the Manipulate command in Mathematica 6.
> Here's an example of an interface:
>
> sage: a=Slider(1,10)
> sage: plot(sin(a()*x),-3,3)
>
> and in the notebook would appear a slider labeled "a" and the graph
> would appear below it.  As the slider is moved between 1 and 10, the
> plot updates dynamically, showing the frequency-scaling aspect of
> different values of a.
>
> Here's a brainstorm idea of how to do this.  I don't know that much
> about the notebook code or how evaluation works, so I don't know if this
> is the way to do things, but here goes:
>
> * There is a widget class hierarchy.  Widget is the parent class and
> under it are classes for different controls, like sliders, dials, 2-d
> location pickers, etc.  Each widget class has a __call__ method that
> returns a value, so we just use a() like above to get the value of the
> widget.
> * Before an expression is evaluated in the notebook, an empty widget
> list is created.
> * In the evaluation, if any widget is encountered (i.e., asked for its
> value), then it puts a copy of itself in the widget list.  It returns
> some default value.
> * Before displaying the result of the expression, the notebook creates
> javascript widgets corresponding to the widgets in the list.  We could,
> for example, use the jquery ui library or some other widget library.
> * Anytime a widget is updated (e.g., a slider is moved), the widget
> value is updated and the expression is reevaluated.
>
> For comparison, here would be the Mathematica 6 syntax for something
> like the above example:
>
> Manipulate[Plot[Sin[a*x],{x,-3,3}], {a,1,10}]
>
> or
>
> Plot[Sin[a*x], {x,-3,3}] // Manipulate[#, {a,1,10}] &
>
> Thoughts or ideas?  I have no clue how to actually implement this in the
> framework that we have for evaluating expressions.

I'm pretty excited about this!  I think it would be extremely amazingly
useful if you could make up some more examples like this one

sage: a = Slider(1,10)
sage: plot(sin(a()*x),-3,3)

and explain what they would do.   Also, if we could make it more like

sage: a = Slider([1..10])

i.e., have a discrete range as input, then doing caching would be easier.

> I think something like this would go a long way to making Sage useful in
> the classroom.

Definitely.

> Performance might be a problem.  In that case, we could eventually have
> some command that would cache the output of the expression for different
> widget values so the update would be faster.

Performance without caching would be a major problem.  Performance with
caching could be excellent.  E.g., in the above example we could autoload
all 10 images, so that no communication with sage at all would be required,
and scrolling would be instant.

Please please post several examples of what you imagine doing with this,
which is the perfect first step.   Try to include examples that involve
all the different controls that mathematica supports.

   -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Calculus in SAGE, motivations

2007-11-17 Thread William Stein

On Nov 15, 2007 9:15 AM, mabshoff
<[EMAIL PROTECTED]> wrote:
> > 1) Expose as much Maxima functionality as possible (one example is
> > substitution of other things besides symbols).

We've definitely laid the foundations for that step very very well.

> > 2) It's important to allow users to create their own functions and the
> > calculus package should be able to work with them. Maybe it will by
> > possible to hack the Maxima interface even more to allow this somehow.
>
> Yep, that sounds good to me.

Actually, what exactly do you mean by "users to create their own functions"?
Could you give a concrete example of what you mean by this?

> > However, I think that in the long run, the main engine of calculus
> > should be in Python + Cython (maybe also in C/C++), not in LISP.
> > Because that will allow SAGE to extend it with new features and make
> > it play nicely with the rest of SAGE.

Personally I would prefer Python + Cython more than C/C++ just for
ease of reading.

> > 3) Integrate SymPy and make it play nicely with the rest of SAGE. I
> > made a some progress on SD6, will send patches soon, together with a
> > new release of SymPy, but more work needs to be done.
>
> Nope, I think that using Maxima for problems that aren't efficient or
> present at all in sympy id the way to go.
> David Harvey did mention to
> me that getting a numerical approximation of sqrt(2) called maxima, so

That's not exactly true, since "Exiting Maxima..." is not printed out below:

sage: float(sqrt(2))
1.4142135623730951
sage: quit
Exiting SAGE (CPU time 0m0.01s, Wall time 0m5.91s).

What happens is that if one requests a numerical *float* approximation
to sqrt(2), then first a float approximation to 2 is computed, then
the math.sqrt method is called on it.

Unfortunately, evidently right now if one requests a high-precision
numerical approximation Sage currently end up calling Maxima:


sage: RealField(100) ( sqrt(2) )
1.4142135623730950488016887242
sage:
Exiting spawned Maxima process.

I consider this a mistake in implementation, which should be optimized.

Notice that

sage: sqrt( RealField(100)(2) )
1.4142135623730950488016887242

does not call Maxima anywhere.

I just investigated, and n(sqrt(2), 100) calls maxima only to simplify
sqrt(2) before even beginning to do any numerical approximation.
This isn't consistent with how the other coercions (e.g., to float)
work.   So I've posted
a patch that changes this behavior:

 http://trac.sagemath.org/sage_trac/ticket/1196

After applying this patch:

sage: RealField(100) ( sqrt(2) )
1.4142135623730950488016887242
sage: quit
(no "exiting maxima")


  --  William


> any computation that has a bad communication to computations time
> ratio should be moved to sympy quickly. On the other hand something
> like solving partial differential equations where the amount of
> communication via pexpect is negligible compares to the computation
> itself should be lower priority. This isn't pure calculus anyway, but
> I think it illustrates my point :)
>
> > I would like to clear this out, so that I am working on something that
> > makes sense and is good for SAGE.
> >
>
> Yep. It might even make it possible to ship some "Sage not so light"
> version specifically targeted at the high school/educational market if
> we ever decide to do such a thing.
>
> > Ondrej
>
> Cheers,
>
> Michael
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: interactive widgets in the notebook

2007-11-17 Thread William Stein

On Nov 17, 2007 6:14 PM, Jason Grout <[EMAIL PROTECTED]> wrote:
\> >> I'm pretty excited about this!  I think it would be extremely
> >> amazingly
> >> useful if you could make up some more examples like this one
> >>
> >> sage: a = Slider(1,10)
> >> sage: plot(sin(a()*x),-3,3)
> >
> > Why not just
> >
> >> plot(sin(a*x),-3,3)
> >
> > instead of
> >
> >> plot(sin(a()*x),-3,3)
>
>
> Your first example is what I was originally thinking.  It would be
> simpler.  I wasn't sure how it would work to have a slider object
> multiplied by something, etc.  I figured in the end that rather than
> rewrite all the multiplication, addition, subtraction, etc., it'd be
> easier to have the __call__ method in "a" return whatever the current
> value of "a" was, and then let Sage take care of how to use that value
> in the expression.
>
> Can we have "a" be a Slider object and have a*something (or a+something,
> etc.) make sense without rewriting a bunch of code to have operations
> work with Widget objects?

I think the simplest thing to implement would be something like this (which
would be in the notebook):



{{{
%form foo

a = %dom['slider']
b = %dom['button']

// Arbitrary Sage code that might use a and b to draw things, etc.
}}}

When the page is rendered to html, a cell starting with "%form foo" would
be tied to some even for the foo form.   The lines a = %dom['slider'], etc.,
would be preparsed in javascript to set the variables a and b to the values
of the corresponding DOM elements (where DOM = Document Object
Model).  Then the remaining aribitrary Sage code would be executed
and the output box be displayed.

This doesn't account at all for caching.

It's really just the first stupid naive idea I have about how to
actually implement
something dynamic in the notebook.  I look forward to somebody suggesting
a much better idea. :-)  Hey Tom Boothby, shouldn't you chime up about now?

William

> Can we just attach a "widget" property to any object in Sage?  That way
> "a" could be, say, a number, but it would have a "a.widget" which would
> encapsulate the necessary widget functionality?  I think this would be
> much more complicated.
>
> -Jason
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] slashdot

2007-11-18 Thread William Stein

Hi,

The top article on slashdot *right now* is about "Open Source Math
Software" and my opinion piece
in the Notices of the AMS:

 http://science.slashdot.org/science/07/11/18/1341232.shtml

William

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: AMS Notices: Open Source Mathematical Software

2007-11-18 Thread William Stein

On Nov 18, 2007 12:59 PM,  <[EMAIL PROTECTED]> wrote:
> David Joyner and William Stein published an opinion piece in the
> AMS Notices raising (yet again) the issue of mathematical results
> that depend on closed source symbolic mathematics. They would like
> to see open source efforts funded.
> <http://www.ams.org/notices/200710/tx071001279.pdf>

Hi, thanks for reading our short opinion and pointing out our opinion
piece on axiom-developer for discussion, and thanks even more for
formulating your thoughts about it.

> They raise the issue (raised here many times in the past) about
> funding open source mathematical software. SAGE is a university
> based project and has a funding model that NSF recognizes. Axiom
> and other projects don't fit any model and neither the NSF nor
> INRIA is able (as far as I know from direct discussions) to
> consider funding open source projects like Axiom, which are not
> supported by standard institutions, such as Universities.
>
> My direct discussions with the NSF, on several occasions, raises the
> point that the NSF claims that it does not fund projects which compete
> with commercial software. This position is frustrating on several points.

It's tricky how Sage gets any funding from NSF.  I've spent countless painful
hours writing the applications -- some of which were rejected -- and some
that have got some funding, so maybe I'll comment.
To date NSF funding for Sage has meant:

* specific funding to get undergraduates involved in research with
   faculty, which just happens to involve using and improving sage,
* hardware -- the sage.math.washington.edu computer, whose primary
  purpose is research, but which also gets used a lot by sage developers,
* conference and workshop support.
* a 50% postdoc -- Clement Pernet.

The postdoc is by far the single biggest chunk of funding for Sage from the
NSF.  This, as you say, fits very much into the academic context.  What made
hiring him palatable to NSF is that Clement Pernet is doing very interesting
cutting edge work on exact linear algebra and publishes papers about this.
Thus hiring him supports the NSF mission in fundamental research.  It just
happens he will also do work that will improve Sage as well.   So far
NSF has never given us blanket money "for Sage", yet.  I wish they would, but
I don't really see that as being likely.   Much more likely is that
they fund specific
research projects, which have improving open source mathematical software
as a pleasant side effect.   More examples below.

It's worth mentioning that NSF has funded Macaulay2 a lot over the years...

By the way, I was recently at an NSF workshop, and I got the strong
impression that NSF doesn't really "like" funding the purchases of
commercial software
very much.  Also, some NSF programs will in practice actually reject proposals
that say they won't publish the software that comes
out of their work as open source... I had the impression that there is a new
sort of grass roots movement
by actual mathematicians that advise NSF toward supporting open source.
This was very surprising to me, but it's actually what appears to be happening,
very slowly but surely.   This is good news for us.

> First, the NSF funds the purchase of commercial software at universities.
> Thus they explicity fund software that competes with open source.
>
> Second, (as I understand it) SAGE is an effort to create an open source
> competitor to the current closed source systems.

You are correct.  That is our primary goal, though I much prefer the word
"alternative" to "competitor": "provide a viable alternative to Ma*..."

> I applaud their efforts
> and think this is very valuable. However, I'm not sure how much funding
> they can get from the NSF with such commercially-competitive goals.

I think we can get a drop in the bucket, but it is an important one.
It will take other funding sources besides NSF, or funding other projects
that just happen to have a positive impact on open source software, to
really accomplish what we want.  For example, I recently applied with
several people for a big "FRG" (focused research grant) on L-functions
and modular forms -- if it were funded it would advance
number theory research, but it would also have as a side effect advancing open
source mathematical software.And there are other funding
source, e.g., tax-free donations, which do help, and have directly benefited
sage already.

> Third, even if the NSF funded SAGE, how would those funds benefit the
> various subprojects like Axiom? Open source is mostly volunteer work
> done in "spare time". While it is amusing to daydream of being paid to
> develop open source computational mathematics on a full time basis, it
> seems unlikely that this

[sage-devel] Re: AMS Notices: Open Source Mathematical Software

2007-11-18 Thread William Stein

On Nov 18, 2007 3:49 PM, root <[EMAIL PROTECTED]> wrote:
> One possible other source for funding is NIST (although the year that
> I thought to apply they only had funding for prior project, no new
> money available).
>
> An outstanding problem is that we have many different computer algebra
> and symbolic computation systems that compute different answers to the
> same problem. Sometimes these answers are equivalent but it takes a
> great deal of work to show that.
>
> I've advocated, and done some work on, CATS (computer algebra test
> suite). The idea is to categorize (similar to the NIST numeric math
> classification) and standardize a set of symbolic problems and their
> mathematical solutions. These problems would be chosen to highlight
> behavior (e.g. branch cuts, simplifications, boundary conditions) in a
> class of problems. Each system could then provide solutions to this
> standard set. Thus there would be the beginnings of the idea that you
> could expect the same results (within simplification) on any of the
> available systems. In the ideal case such tests would also document
> the algorithm(s) that solves the problem.
>
> NIST seems to me to be the ideal funding source for such a suite.
>
> Note that the test suite is applicable to both open source and
> commercial efforts.
>
> In particular, since SAGE has many daughter systems it seems that
> you are in the ideal position to build a catalog of such tests.
> The test problems would all provide hand-solved answers as well
> as the results from each daughter subsystem.
>
> Further, since each area of classification would require an expert
> to propose and document the problems it seems to be the ideal
> project for widespread grant-based funding.
>
> The end result would be an Abramowitz & Stegun style document that
> was machine readable and freely available. Each project (e.g. MMA,
> Maple, Axiom, etc) would post their results.

Actually NIST already has been working on an " Abramowitz & Stegun
style document "
for the last decade.  I had a long talk on Friday in my office with the
guy who started that effort a decade ago...  It's actually very exciting,
and I do think there is some possibility for something like you're describing
above, maybe more in the context of the CDI initiative at NSF.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: slashdot

2007-11-18 Thread William Stein

On Nov 18, 2007 6:06 PM, Ted Kosan <[EMAIL PROTECTED]> wrote:
> William wrote:
>
> > The top article on slashdot *right now* is about "Open Source Math
> > Software" and my opinion piece
> > in the Notices of the AMS:
> >
> >  http://science.slashdot.org/science/07/11/18/1341232.shtml
>
> Sometime later this week, could you please let us know how much the
> web traffic to sagemath.org increased during the time that the article
> was on the front page of slashdot?
>
> Thanks :-)

It actually didn't increase much at all.   I think there was very little
traffic directly from people clicking on a sage link from that slashdot
page:

  [EMAIL PROTECTED]:/var/log/apache2# grep slashdot access.log|wc -l
  12

There were only 8 downloads of Sage from sagemath.org so far today.
Surprisingly, that slashdot article seems to have barely drove traffic at
all to sagemath.org.  It would perhaps have been different had there
been a link to sagemath.org from the main story page.

 -- Wiliam


 - William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-19 Thread William Stein

On Nov 19, 2007 3:46 AM, D.J. Keenan <> wrote:
> I just saw your opinion piece in Notices of the AMS.
> Naturally I am wondering about Maple, which is (a)
> Mathematica's main competitor and (b) very largely
> open source.  What is your opinion about using Maple?
> (I use Maple, but have no affiliation with Maplesoft.)

(a) Indeed, Maple (and MATLAB) are Mathematica's main competitors.

(b) Maple is not "open source" in the sense I mean in the article.

 1. A substantial chunk of Maple is pre-compiled libraries:
 In Maple 10 at least, there's many completely closed pre-compiled
 shared object libraries included that implement much core
functionality, e.g.,
 maple10/bin.IBM_INTEL_LINUX/libmaple.so
 libnag2.so, etc.   I also know that Maple 11 ships with Faugere's
F4 Groebner
 basis implementation as a closed library.

 2. Source code of Maple that you can see is released under an extremely
 restrictive license and terms of usage clause.  One of my students wanted
 to read some code in Maple then implement something similar in Sage,
 and when we wrote to Maple about this they quickly responded that it is
 illegal to even "attempt to gain access to its method of
operation or source code;"
 (See forwarded message below.)  So according to the Maple license agreement
 even looking at the source code they do include is a violation.
That's definitely
 not open source.

 3. Dumb question -- Where is the actual source code of anything in Maple?
 I'm skimming through my Maple install to see some actual source code and
 I can't find anything.  The lib/ directory has lots of .mla
files, but these are all
 pre-compiled binary files -- no source code.  Is there some tool
included with
 Maple to decompile them? (I'm not being rhetorical, I simply don't know
 how to actually view source code of Maple functions, even if I wanted to.)

  4. Maple is expensive.  One of the key properties of open source software is
  that one has the right to modify it and redistribute the
modified version for
  free.  This is of course not the case with Maple.   This was one
of the main
  issues that got me started with Sage.  I had written a large
amount of code
  in Magma (another commercial math program, which is more targeted at
  pure mathematics than Maple), and had written the code to support research
  I was doing and make it easier for students to learn about
"modular forms".
  Unfortunately students very often couldn't benefit from
   this because Magma is very expensive.
  After an endless succession of complaints from students, I said
enough is enough,
  and decided to change things for the better, no matter what.

  5. Finally, there is something called "The Open Source Initiative"
http://www.opensource.org/
   which precisely defines the term "open source".  They would
certainly not consider
   Maple to be open source.


 -- William

-- Forwarded message --
Date: Mon, 30 Oct 2006 10:28:02 -0500
From: Maplesoft Technical Support <[EMAIL PROTECTED]>
To: Joshua Kantor <[EMAIL PROTECTED]>
Cc: Maplesoft Technical Support <[EMAIL PROTECTED]>
Subject: RE: Policy on Use of Source Code

Dear Joshua Kantor,

Reproducing and redistribution of Maple code is a violation of the
license agreement.  If you check the license agreement in Section 7:
unless Maplesoft has expressly authorized it, in writing for a given
situation, this is a direct violation of the EULA.

Here's copy of the section and attached is the full EULA.

7. GENERAL LICENSE RESTRICTIONS. The License of all Software hereunder
is subject to the express restrictions set forth below in addition to
the restrictions imposed by the applicable License Option, Installation
Type and Order Confirmation. Without the express written permission of
Maplesoft, Licensee shall not, and shall not permit any Third Party to:

(a) reproduce, transmit, modify, adapt, translate or create any
derivative work of, any part of the Software, in whole or in part,
except for any content developed by Registered Users in Maple Worksheets
that are not part of an electronic book Software product or as otherwise
expressly permitted in this Agreement;

(b) reverse engineer, disassemble, or decompile the Software, create
derivative works based on the Software, or otherwise attempt to gain
access to its method of operation or source code;

[]

I hope this answers your questions.

Sincerely,

Maplesoft Technical Support

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Fwd: [Maxima] Interesting Comment re Mathematica vs Everybody Else

2007-11-19 Thread William Stein

On Nov 19, 2007 7:13 AM, David Joyner <[EMAIL PROTECTED]> wrote:
> FYI (scroll down to see the mention of SAGE)
>

Interesting.  The comments afterwards about "the problem" with specialized
tools fails to mention that the point that Sage successfully solves
that very problem.   And of course Axiom isn't the only general-purpose
CAS that can handle "nested definitions of algebraic structures", since
both Sage and Magma can as well.

>
> -- Forwarded message --
> From: Miguel Marco <[EMAIL PROTECTED]>
> Date: Nov 19, 2007 7:13 AM
> Subject: Re: [Maxima] Interesting Comment re Mathematica vs Everybody Else
> To: [EMAIL PROTECTED]
>
>
>
> > I have not played with Maple or MuPAD for five years or so, and so
> > cannot really compare them now.  Five years ago Mathematica seemed to
> > handle more of the problems that I threw at it, and that was before I
> > knew anyone from Wolfram.  Every few months I look at Axiom, Maxima,
> > sympy etc..., but frankly they are not close to being in the same
> > league, and seem to be losing ground over time
> I don't know much about Mathematica, but some of my coleagues use Maple once
> in a while, and i agree with you about the fact that, often, the same problem
> requires more work from the user to be solved in maxima than in maple.
> Anyways, it is not a question of capability (at the end, both are
> Turing-complete), but of usability. Anyways, all general purpose CAS that i
> have seen make some mistakes in specific cases, which forced the user to
> think twice befure using them for serious stuff beyond education.
>
> > (I would have expected
> > computer algebra to be a place where open source would shine, but
> > alas, it seems not.)  The Sage project seems to have promise, but
> > right now it looks like a bunch of distinct tools and a lot of duct
> > tape.
> > The more specialized tools like MacCaulay, CoCoA, Gap, Pari/GP, 4ti2,
> > etc. are amazing in their niches, but have no pretenses to being
> > widely applicable.
> >
> That is exactly the point: math researchers usually don't want to use a
> general purpose tool, but the killer-app in their specific field. It makes
> little sense to calculate groebner basis, or character tables with
> Mathematica, Maple or Maxima. Hence, the same researchers that use these
> specialized tools, help improving them (after all, they are the ones that do
> research in those very specific algorithms). And thats how specifc open
> source CAS keep improving, but general purpose ones stay in a second level.
> One exception would be Axiom, that, besides a general purpose CAS, can handle
> nested definitions of algebraic structures (i don't know any other CAS that
> can do this), which can be usefull for some specific lines of research.
>
> Besides that, i consider that the main target for general purpose CAS'es is
> actually education, and in that niche efficiency of algorithms is secondary
> to pedagogical questions (such as easyness of learning). Considering that, i
> think that differences in that aspect between Mathematica, Maple, and Maxima
> (depending on the GUI) are no big enough to say that Maxima plays in another
> league.
>
> Best:
>
>
> Miguel Marco Buzunariz
> Departamento de Matematicas
> Universidad de Zaragoza.
>
> ___
> Maxima mailing list
> [EMAIL PROTECTED]
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Open source math on Slashdot

2007-11-19 Thread William Stein

On Nov 18, 2007 12:26 PM, Chris Chiasson <[EMAIL PROTECTED]> wrote:
> I just noticed this as well. This is good because of /.'s large
> programmer audience.

Yep.  Somebody mentioned Mathomatic there, which I don't ever
remember scouring to see if it has anything at all to contribute to Sage:

   http://www.mathomatic.org/math/index.html

It is GPL'd.  I just downloaded it and built it from source on my mac in
literally a few seconds, and it seems to work.   A 30 second perusal
suggests mathomatic doesn't do very much, compared to say Maxima,
but it might be worth looking into further...

>
> On Nov 18, 11:37 am, "Mike Hansen" <[EMAIL PROTECTED]> wrote:
> > Hello all,
> >
> > I just noticed that there is an article on the front page of slashdot
> > about William and David's AMS opinion piece 
> > athttp://science.slashdot.org/science/07/11/18/1341232.shtml.  I think
>
> > it'd be a good venue to get some Sage publicity in.
> >
> > --Mike
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Open source math on Slashdot

2007-11-19 Thread William Stein

On Nov 18, 2007 9:37 AM, Mike Hansen <[EMAIL PROTECTED]> wrote:
> I just noticed that there is an article on the front page of slashdot
> about William and David's AMS opinion piece at
> http://science.slashdot.org/science/07/11/18/1341232.shtml .  I think
> it'd be a good venue to get some Sage publicity in.

A journalis, Cameron Laird, noticed the article and sent me a link
to a sort of similar article -- aimed much more at the sciences -- that
he published in 2002:

  http://www.ibm.com/developerworks/library/l-oslab/?n-l-10242

E.g. it says "Related to this is a growing concern about the
scientific propriety of reliance on commercial software. What does it
mean that a certain result was achieved through use of a proprietary
library? How does an academician document a discovery or conclusion
when it rests on a black box whose details are trade secrets held by a
third party?"

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-19 Thread William Stein

On Nov 19, 2007 8:29 AM, Jason Grout <[EMAIL PROTECTED]> wrote:
>
> William Stein wrote:
>
> >  3. Dumb question -- Where is the actual source code of anything in Maple?
> >  I'm skimming through my Maple install to see some actual source code 
> > and
> >  I can't find anything.  The lib/ directory has lots of .mla
> > files, but these are all
> >  pre-compiled binary files -- no source code.  Is there some tool
> > included with
> >  Maple to decompile them? (I'm not being rhetorical, I simply don't 
> > know
> >  how to actually view source code of Maple functions, even if I wanted 
> > to.)
>
> Some links dealing with this:
>
> http://www.mapleprimes.com/blog/jacquesc/old-timer-techniques
>
> http://www.mapleprimes.com/forum/algorithms-used-in-maple
>
> http://thproxy.jinr.ru/Documents/MapleV/qa/section3_4.html
>
> I've used the printlevel and I think the showstat techniques before.
> Unfortunately, I can't test them because I no longer have access to
> Maple (at least on my home machine).  I guess that's they whole point
> again---even if there is some way for someone to get the output of the
> procedure, it doesn't do me any good because I don't have Maple and
> can't check it anyway.

This *does* work in Maple 11:

sage: maple_console()
|\^/| Maple 11 (APPLE UNIVERSAL OSX)
._|\|   |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2007
 \  MAPLE  /  All rights reserved. Maple is a trademark of
 < >  Waterloo Maple Inc.
  |   Type ? for help.
> print(gcd);
  proc(aa, bb, cofa::name, cofb::name)
 ...  end proc

> interface(verboseproc=2);
   1

> print(gcd);
proc(aa, bb, cofa::name, cofb::name)
local Z, GCD, a, b;
option `Copyright (c) 1992 by the University of Waterloo. All rights reserved.`;
if 2 < nargs and member(cofa, indets(aa) union indets(bb)) then
error "The optional 3rd argument given to `\
...

I wonder what proportion of the 1300 or so top-level functions in
Maple (according
to a sage's maple.[tab]) actually have source code.

Interestingly, I bet I can make it so

  sage: maple.gcd??

will show the source code using one you suggest above.  Trac ticket:
  http://trac.sagemath.org/sage_trac/ticket/1209

> Whether or not using printlevel or showstat is legal (in light of Josh's
> response from Maple) is an interesting question.  They are built-in
> capabilities meant for introspection.  They were also encouraged by the
> Maple people in the above posts.

 Maybe it is a trap.  :-)  

 - William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-19 Thread William Stein

On Nov 19, 2007 8:57 AM, William Stein <[EMAIL PROTECTED]> wrote:
> > >  3. Dumb question -- Where is the actual source code of anything in Maple?
> > >  I'm skimming through my Maple install to see some actual source code 
> > > and
> > >  I can't find anything.  The lib/ directory has lots of .mla
> > > files, but these are all
> > >  pre-compiled binary files -- no source code.  Is there some tool
> > > included with
> > >  Maple to decompile them? (I'm not being rhetorical, I simply 
> > > don't know
> > >  how to actually view source code of Maple functions, even if I 
> > > wanted to.)
> >
> > Some links dealing with this:
> >
> > http://www.mapleprimes.com/blog/jacquesc/old-timer-techniques
> >
> > http://www.mapleprimes.com/forum/algorithms-used-in-maple
> >
> > http://thproxy.jinr.ru/Documents/MapleV/qa/section3_4.html

Interestingly, this link says "Printing the code in this way does not
include any of the programmer's comments. If you want a separate copy
of the library source code, with comments, it is available from the
distributors for a set price. Some Maple procedures are coded
completely within the kernel. Their code is not available. If you try
to print them you see the following type of special procedure body."

So you have to pay extra for the comments!   Wow.  That's truly bizarre.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-19 Thread William Stein

On Nov 19, 2007 9:20 AM,  somebody defending Maple wrote:
> William,
>
> There are two ways to see the source code in Maple:
> eval(procname);
> and
> showstat(procname);
> Before doing that, it is usually necessary to change the
> interface setting for displaying library procedures:
> interface(verboseproc=2);
> Many procedures call subprocedures whose names are
> compound.  Backquotes are needed for compound names:
> eval(`convert/binary`);
> Also, if the procedure is part of a module, then first
> tell Maple that you do not want modules to be opaque:
> kernelopts(opaquemodules=false);
>
> Almost all Maple routines can then be obtained.  I do not
> know what the percentage is, but if you exclude external
> calls to others' code (e.g. the NAG code you cite), it is >90%.

That's good to know.

> In particular, the Groebner code is obtainable in Maple 11.

I find it very hard to believe that anybody can just read the
source code to Faugere's implementation of F4.Are you sure?

> As far as cost, I believe that the student edition of Maple
> is extremely cheap.  Compare this with textbook prices!

The student edition is cheap.  But as soon as one isn't a student
the price is $1895 or more.  That is not cheap.   Comparing
with textbooks isn't exactly fair, because students often sell
textbooks back at the end of the semester, but can't do the
same with software.   (Also, textbooks are way overpriced.)
How much do you pay for your copy of Maple, now that you
are no longer a student (I assume)?

> The definition of "open source" that you cite is not universal.

True.  But it is definitely the definition of open source that
is meant in the Notices opinion piece.  You might want to read

   http://en.wikipedia.org/wiki/Open_source

which has a good discussion of where the term as it is used
by most software engineers comes from and who popularized
it and why: 'The decision by some people in the free software movement
to use the label "open source" came out of a strategy session[2] held
at Palo Alto, California, in reaction to Netscape's January 1998
announcement of a source code release for Navigator. The group of
individuals at the session included Christine Peterson who suggested
"open source", Todd Anderson, Larry Augustin, Jon Hall, Sam Ockman,
and Eric S. Raymond.'

> Maple was developed by a commercial company at much cost
> over decades, and the company needs to stay solvent; so it
> does not want the product given away.  Also, the quote in
> the license you forwarded is only restricting a "Third Party".

Actually that's not correct.  To quote from the license:
"Without the express written permission of
Maplesoft, Licensee shall not, and shall not permit any Third Party to:"
   ^^

The Licensee is explicitly restricted, not just a Third Party.

> Maple and Mathematica are huge systems, with a lot of
> work in them done by people trained in mathematics.  I
> believe that trying to replicate them would be difficult.

I agree, it is extremely difficult to make a system that is
better than those systems.

> I am a very big fan of open source, but the main objection
> raised in your piece does not seem to apply to Maple.

I am not convinced because:

   1. Though one can read much of the Maple source code, you can't
read all of it -- there is much that is still closed.  As long as *anything*
is closed, full inspection is not possible.

   2. One cannot share Maple.
To use Maple, once must pay license fees, and for professors and
non-students these can be prohibitive.  E.g., I contacted Maple 4 years
ago because I wanted to use Maple to write a chapter for a book about
using Maple for number theory.  They told me it would cost me $495
for the "professor discount".  When I said that was too much given what
I was going to do with Maple, they said, "If you can get 4 of your colleagues
to also buy copies, we'll sell them at $250/each."  They absolutely would
not budge on price.

   3. One cannot legally take source code from Maple, modify it, and apply
it to new research problems, since this is a direct violation of the license
agreement.
-

I hope you will write a letter to the AMS though arguing your point of view.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Projects

2007-11-19 Thread William Stein

On Nov 19, 2007 9:38 AM, David Joyner <[EMAIL PROTECTED]> wrote:
>
> On Nov 19, 2007 12:21 PM, Martin Albrecht <[EMAIL PROTECTED]> wrote:
> >
> > Hi there,
> >
> > at Sage Days 6 Stefan Müller-Stach
> >
> >http://hodge.mathematik.uni-mainz.de/~stefan/index.html
> >
> > babelfish translation:
> >
> > http://babelfish.altavista.com/babelfish/tr?lp=de_en&url=http%3A//hodge.mathematik.uni-mainz.de/%7Estefan/index.html
> >
> > asked me whether the Sage project would like to name some projects suitable
> > for a Diplomarbeit for some of his students.
> >
> > If you don't know the German system: it is safe to assume a "Diplomarbeit" 
> > is
> > like a Master's thesis (except that you usually do a Diplom before pursuing 
> > a
> > PhD). The idea is that we/you/the Sage developers name a project (in number
> > theory) which is suitable for a Diplomarbeit (i.e. challenging enough but 
> > not
> > overwhelming, timeframe: roughly a year) and Stefan tries to pass this
> > project on to one of his students.
> >
> > To me this seems like a nice way to get stuff implemented that one hardly 
> > gets
> > around to implement.
> >
> > Also, he is thinking about setting up a Sage seminar which could provide a
> > similar 'service' for Sage: i.e. Students get credits for working on Sage.
> > This would be suitable for more short term projects.
> >
> > Thoughts

For starters, one thing for any student wanting to help to do is open
up the Magma reference manual and browse through it until they see
something they personally find interesting.
If Sage doesn't do it, or Magma does it way faster than Sage, then
there's a project.
Same comments for Maple/Mathematica, though I don't know if Maple/Mathematica
do anything at all in number theory / arithmetic geometry that Sage
doesn't already do better,
except maybe Faugere's F4...

Once Sage can do everything Magma can do and more, then we have to start
being much more creative about student projects.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Projects

2007-11-19 Thread William Stein

On Nov 19, 2007 9:49 AM, John Cremona <[EMAIL PROTECTED]> wrote:
>
> My suggestion for such a project is:  compute all the S-integral
> points on an elliptic curve (which is a finite set, for any given
> finie set of primes S).  First, over Q (assume that you are given a
> Mordell-Weil basis), which is also implemented in Magma.  Then, over
> number fields -- not implemented anywhere which is available.
>
> Sources: a psper of Stephens and Smart, and the Saarbruecken thesisof
> E Herrmann (in German).  He is the one responsible for the Magma
> implementation over Q, and he also has his own implementation over
> number fields written in Simath.

John, Is there any chance you could give a 2-3 paragraph summary of
what is involved, at the level of our dinner conversation recently?  It
sounds extremely interesting and exciting the way you described the
project in Bristol.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Sage math app

2007-11-19 Thread William Stein

On Nov 19, 2007 10:44 AM,  <> wrote:
> I wanted to commend you for leading Sage.  I think it is a great idea
> to combine all the open source math apps out there into a unified whole.

Thanks!

> I'm curious about your integration component.  I believe I read you
> were using Maxima but were interested in improving the interface??

Under the hood Maxima is indeed used to provide the low-level
integration capabilities
in Sage right now.

> How are you planning to change the interface?

We haven't exactly decided yet.  For starters we at least want to make sure
Sage can compute many integrals that Maxima can't (but say Maple and/or
Mathematica can compute).I've cc'd this email to sage-devel, so maybe people
there (e.g., Ondrej Certik) will say more about what they're interested
in doing.

> Perhaps making a syntax compatible with Mathematica's??

No, that's definitely not planned.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-19 Thread William Stein

On Nov 19, 2007 10:52 AM, Stephen Forrest <[EMAIL PROTECTED]> wrote:
> > So you have to pay extra for the comments!   Wow.  That's truly bizarre.
>
> Hmm, I am a former Maplesoft employee, and I have never, ever heard of
> the source code being available for reading for an extra price.  I am
> not inclined to believe this remark.

I definitely trust you over those bizarre comments.
By the way, as a former Maple employee, do you have any ideas about
how to better improve the quality control process for Sage.  Quality control
is one place where commercial software is often much more refined
than open source software, and I'd love to hear more ideas for
Sage about it.

> The fact that comments aren't available in the first place is not
> especially surprising: Maple is an interpreted language language like
> any other, and comments are the first thing to be stripped out whole
> parsing.  Java bytecode doesn't have comments either :).
>
> Furthermore, with regard to the comment by Jason Grout that the use of
> the introspection tools was "encouraged by the Maple people in the
> above posts.", you should understand that the Maple Primes posts to
> which those links refer were made by various Maple enthusiasts
> unaffiliated with Maplesoft (albeit on a site run by Maplesoft).  You
> shouldn't read anything about Maplesoft's position from them.

Very good point.  Thanks for your comments.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Sage math app

2007-11-19 Thread William Stein

On Nov 19, 2007 11:02 AM,  <[EMAIL PROTECTED]> wrote:
> On Mon, Nov 19, 2007 at 10:49:52AM -0800, William Stein wrote:
> > > Perhaps making a syntax compatible with Mathematica's??
> >
> > No, that's definitely not planned.
> >
> > William
>
> I've been thinking about this myself for a while.  Sage could definitely
> make up their own syntax.

We already did make up our own syntax, which fits most naturally with
how Python works.
In many cases it turns out to be exactly the same as Mupad and very
similar to Maple.

> As a long time Mathematica user I wonder if
> the Mathematica syntax is well known enough that it would be valuable
> to just mimic that syntax.  I believe Bateman of Maxima had even completed
> a prototype of this.   I'd be curious to hear what others in Sage think.

Having some sort of compatibility layer, e.g., a function that takes an almost
arbitrary mathematica expression and converts it to a sage expression *is*
on our todo list, so at least one could do, e.g.,
from_mathematica('Sin[x^2]')
and get Sage's sin(x^2).  We can already do this with almost arbitrary Maxima
expressions.  If we could also do it for Mathematica, then we could actually
use Mathematica as a backend for sage's symbolic simplication, integration,
etc., as an option.  This has been on the todo list for a while, but nobody has
tackled implementing it.  Are you interested in trying?

 -- William

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out!

2007-11-19 Thread William Stein

Hi,

On OSX ppc the sage alpha1 build fails with this.  Unfortunately, I
can't work on fixing this since
I have committee work to do right now.   If we can't fix this, a
reasonable option is to just comment
out building the cremona code in setup.py for now, and put some
nodoctests in the top
of the pyx files in devel/sage/sage/libs/cremona/*.pyx.   This would
be OK for now.

sage/plot/plot3d/shapes.pyx -->
/Users/was/sage-2.8.13.alpha1/local//lib/python/site-packages//sage/plot/plot3d/shapes.pyx
running install
running build
running build_py
running build_ext
building 'sage.libs.cremona.homspace' extension
g++ -bundle -undefined dynamic_lookup
build/temp.macosx-10.3-ppc-2.5/sage/libs/cremona/homspace.o
-L/Users/was/sage-2.8.13.alpha1/local//lib -lcsage -lg0nntl -ljcntl
-lgmpxx -lntl -lgmp -lm -lstdc++ -lstdc++ -lntl -o
build/lib.macosx-10.3-ppc-2.5/sage/libs/cremona/homspace.so
/usr/bin/ld: warning can't open dynamic library: libpari-gmp.dylib
referenced from:
/Users/was/sage-2.8.13.alpha1/local//lib/libcsage.dylib (checking for
undefined
symbols may be affected) (No such file or directory, errno = 2)
/usr/bin/ld: warning can't open dynamic library: libcurvesntl.dylib
referenced from:
/Users/was/sage-2.8.13.alpha1/local//lib/libg0nntl.dylib (checking for
undefine
d symbols may be affected) (No such file or directory, errno = 2)
/usr/bin/ld: Undefined symbols:
_GENtostr referenced from libjcntl expected to be defined in libpari-gmp.dylib
_Z_factor referenced from libjcntl expected to be defined in libpari-gmp.dylib
_avma referenced from libjcntl expected to be defined in libpari-gmp.dylib
_bot referenced from libjcntl expected to be defined in libpari-gmp.dylib
_isprime referenced from libjcntl expected to be defined in libpari-gmp.dylib
_pari_init referenced from libjcntl expected to be defined in libpari-gmp.dylib
_strtoi referenced from libjcntl expected to be defined in libpari-gmp.dylib
collect2: ld returned 1 exit status
error: command 'g++' failed with exit status 1
sage: There was an error installing modified sage library code.


real0m21.464s
user0m9.699s
sys 0m11.626s
ERROR installing SAGE

real21m33.408s
user19m45.068s
sys 1m44.815s
sage: An error occurred while installing sage-2.8.13.alpha1
Please email sage-devel http://groups.google.com/group/sage-devel
explaining the problem and send the relevant part of
of /Users/was/sage-2.8.13.alpha1/install.log.  Describe your computer,
operating system, etc.
If you want to try to fix the problem, yourself *don't* just cd to
/Users/was/sage-2.8.13.alpha1/spkg/build/sage-2.8.13.alpha1 and type 'make'.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out!

2007-11-19 Thread William Stein
 am looking into this later, but I might need to catch some sleep
> > > > first.
> >
> > > I fixed the doctest:
> >
> > > diff -r 4cc57dcfd20b sage/libs/flint/fmpz_poly.pyx
> > > --- a/sage/libs/flint/fmpz_poly.pyx Mon Nov 19 14:35:11 2007 -0800
> > > +++ b/sage/libs/flint/fmpz_poly.pyx Mon Nov 19 15:48:05 2007 -0800
> > > @@ -268,7 +268,7 @@ cdef class Fmpz_poly(SageObject):
> > >  sage: f = Fmpz_poly([3,4,5])
> > >  sage: g = f^5; g
> > >  11  243 1620 6345 16560 32190 47224 53650 46000 29375
> > > 12500 3125
> > > -sage: g / f
> > > +    sage: g // f
> > >  9  81 432 1404 2928 4486 4880 3900 2000 625
> > >  sage: f^4
> > >  9  81 432 1404 2928 4486 4880 3900 2000 625
> >
> > > So, any idea why we need "//" in this case?
> >
> > And probably also correct the description to "//" instead of "/".
> >
> > On OSX 10.5 we should also make gfortran mandatory - see #1212. At the
> > moment the only issue left it reverting sqlite and fixing the compile
> > of flint-0.9 on 10.5
> >
> > I am catching some sleep, cu all in about 8 hours.
> >
> > Cheers,
> >
> > Michael
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out!

2007-11-19 Thread William Stein

On Nov 19, 2007 6:56 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
> It built fine on Robert's laptop the other night. Have I got the
> architecture of Robert's laptop wrong? It is Core 2 Duo right?

The build failure below is on a Xeon quad-core Mac Pro running OS X
10.5, i.e., bsd.math.washington.edu.

If you want to try building and testing FLINT on it, let me know off
list and I'll create an account for you.

>
> Bill.
>
> On 20 Nov, 02:38, "William Stein" <[EMAIL PROTECTED]> wrote:
>
> > On Nov 19, 2007 5:13 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
> >
> > > By the way, FLINT 0.9 breaks on Core 2 Duo (this is not a build issue,
> > > but a real live corner case bug in the FLINT C code). I've added a new
> >
> > In the current alpha 1 the *build* of flint fails:
> >
> > ops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
> > ZmodF_poly-test.o test-support.o -o ZmodF_poly-test mpn_extras.o
> > mpz_extras.o memory-manager.o ZmodF.o Zmo
> > dF_mul.o ZmodF_mul-tuning.o fmpz.o fmpz_poly.o mpz_poly-tuning.o
> > mpz_poly.o ZmodF_poly.o long_extras.o
> > -L/Users/was/sage-2.8.13.alpha1/local/lib/  -L/Users/was/sage
> > -2.8.13.alpha1/local/lib/
> > -L/Users/was/sage-2.8.13.alpha1/local/include  -lgmp -lpthread -lm
> > -lntl
> > gcc -std=c99 -I/Users/was/sage-2.8.13.alpha1/local/include/
> > -I/Users/was/sage-2.8.13.alpha1/local/include
> > -I/Users/was/sage-2.8.13.alpha1/local/include  -funroll-lo
> > ops -fexpensive-optimizations  -fPIC -funroll-loops   -O3 -c
> > ZmodF_mul-test.c -o ZmodF_mul-test.o
> > ZmodF_mul.h:169: warning: inline function
> > [EMAIL PROTECTED]@~Y declared but never defined
> > ZmodF_mul.h:166: warning: inline function
> > [EMAIL PROTECTED]@~Y declared but never defined
> > ZmodF_mul.h:169: warning: inline function
> > [EMAIL PROTECTED]@~Y declared but never defined
> > ZmodF_mul.h:166: warning: inline function
> > [EMAIL PROTECTED]@~Y declared but never defined
> > gcc -std=c99 -I/Users/was/sage-2.8.13.alpha1/local/include/
> > -I/Users/was/sage-2.8.13.alpha1/local/include
> > -I/Users/was/sage-2.8.13.alpha1/local/include  -funroll-lo
> > ops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
> > ZmodF_mul-test.o test-support.o -o ZmodF_mul-test mpn_extras.o
> > mpz_extras.o memory-manager.o ZmodF.o ZmodF
> > _mul.o ZmodF_mul-tuning.o fmpz.o fmpz_poly.o mpz_poly-tuning.o
> > mpz_poly.o ZmodF_poly.o long_extras.o
> > -L/Users/was/sage-2.8.13.alpha1/local/lib/  -L/Users/was/sage-2
> > .8.13.alpha1/local/lib/ -L/Users/was/sage-2.8.13.alpha1/local/include
> > -lgmp -lpthread -lm -lntl
> > Undefined symbols:
> >   "__ZmodF_mul_threeway_reduce1", referenced from:
> >   _test__ZmodF_mul_threeway_reduce in ZmodF_mul-test.o
> >   "__ZmodF_mul_threeway_reduce2", referenced from:
> >   _test__ZmodF_mul_threeway_reduce in ZmodF_mul-test.o
> > ld: symbol(s) not found
> > collect2: ld returned 1 exit status
> > make[2]: *** [ZmodF_mul-test] Error 1
> > Failed to build FLINT dylib.
> >
> > real0m28.796s
> > user0m16.183s
> > sys 0m1.335s
> > sage: An error occurred while installing flint-0.9.p0
> >
> > -
> >
> >
> >
> > > revision 1071 to the FLINT SVN repository at
> > >https://flint.svn.sourceforge.net/svnroot/flint/trunk/but I'm still
> > > waiting to find out if this fixed the fmpz_poly-test failure on the
> > > Core 2 Duo. Can one of the SAGE developers with a Core 2 check out
> > > FLINT rev 1071 and report on whether fmpz_poly-test passes and then
> > > let me know about it.
> >
> > > I spent a couple of days completely rewriting a couple of thousand
> > > lines of code to try and fix this problem, so I'm really quite keen to
> > > find out whether it now works. When it does I will make another
> > > revision which reverts the test code to short tests and then FLINT 0.9
> > > will be OK to go.
> >
> > > After that happens it would also be great if SAGE developers with
> > > other platforms and OS's could run the test code in FLINT. In
> > > particular the following tests should be run:
> >
> > > ZmodF-test
> > > ZmodF_poly-test
> > > fmpz_poly-test
> > > fmpz-test
> > > mpn_extras-test
> > > ZmodF_mul-test
> >
> > > Perhaps we should think about whether these tests should be made part
> > > of SAGE's make test.
> >
> > > Optionally I'd like to hear about an

[sage-devel] Re: sage 2.8.13.alpha1 is out!

2007-11-19 Thread William Stein

On Nov 19, 2007 6:47 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
> >  sage: f = Fmpz_poly([3,4,5])
> >  sage: g = f^5; g
> >  11  243 1620 6345 16560 32190 47224 53650 46000 29375
> > 12500 3125
> > -sage: g / f
> > +sage: g // f
> >  9  81 432 1404 2928 4486 4880 3900 2000 625
> >  sage: f^4
> >  9  81 432 1404 2928 4486 4880 3900 2000 625
> >
> > So, any idea why we need "//" in this case?

In python // means "floor divisions".  It's the same semantics as \ in
PARI.  It means divide and
forget the remainder.   E.g.,
 5 // 3 == 1

> Typing:
>
> ??f.__div__


// is not "__div__".  You should just look at the relevant source file
anyways, which is in
   SAGE_ROOT/devel/sage/sage/libs/flint/

> When I found a function which did return source code, much of it was
> black text on black background, so it just looked like gibberish. For
> the longest time I thought this was actually python, so I had vowed
> never to learn the language.

Didn't anybody mention to you that Python is a language where only
whitespace is significant?
For example, here is a Python program to factor integers in polynomial time:











> Working over ZZ['x'] if I accidentally type:
>
> mul(f,f)
>
> it amusingly multiplies f by 6.

Which is completely correct if you read the docs for mul, which
multiplies together the
elements of a list or list-like object. What it is doing is
multiplying together the
entries of f, but starting the product with f itself:

sage: R. = ZZ[]
sage: f = R([3,4,5])
sage: mul(f,f)
300*x^2 + 240*x + 180
sage: 3*4*5 * f
300*x^2 + 240*x + 180


You can't just type random things you make up into a computer algebra
system and expect
them to behave like you want at the moment.

> If I use FLINT polynomials and type the same thing, it sits there
> forever and there is no way to stop it. Of course the semantically
> correct f.__mul__(f) works fine.

That's because it is trying to turn your FLINT poly into a list, and getting
an infinite list (since the default implementation for making a list
for something
hasn't been overridden yet for FLINT polys).

If you want to use functional notation for arithmetic use the operator module:

sage: operator.[tab]

sage: operator.mul(f, f)
25*x^4 + 40*x^3 + 46*x^2 + 24*x + 9
sage: operator.floordiv(f,f)
1

>
> In answer to your question, I think // is divrem, which FLINT
> implements.

No, it's floor division.

sage: operator.floordiv?
floordiv(a, b) -- Same as a // b.


> FLINT also implements div in ZZ['x'], which is not the same thing as
> div in SAGE. For example 3/4 returns 3/4, but 6/3 returns 2. At
> present there is no function in FLINT which returns the quotient if
> division is exact and nothing at all if it is not (in which case SAGE
> seems to return a symbolic expression f/g).

Sage doesn't return a symbolic expression from elements of ZZ['x'].  It returns
an element of the fraction field, Frac(ZZ['x']).   Maybe I'm being
confused though,
since there is a SymbolicExpression class in the calculus module, and that's
probably not what you're thinking of.

> NTL has such a function,
> but it isn't implemented in FLINT yet.
>
> Instead polynomial division always returns something in ZZ['x'] in
> FLINT. Basically it returns the same thing as what Magma returns when
> you type f div g. It's a kind of normalised division, which just
> happens to be the quotient when the division is exact.

That's like integer division in python, where:

>>> 2/3
0

This is definitely the *wrong* semantics for Sage, since it is not
mathematically correct.

That I think completely answers Michael Abshoff's question that
started this thread.

William

>
> Bill.
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out!

2007-11-19 Thread William Stein

On Nov 19, 2007 7:46 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
> Some kind of compiler bug. I've made changes in rev 1072 of FLINT
> which should fix the problem. If not, we'll have to wait for Mabshoff
> to awaken. I've no other ideas, so there's no point in setting me up
> with an account on the machine at this point.

Whatever you did in rev 1072, it *DOES* fix the problem (I just tested it).
Great work!

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out! -- g95 and OSX Leopard

2007-11-19 Thread William Stein

Hi,

I just did a test and using the new version of g95 here:

http://ftp.g95.org/g95-x86-osx.tgz

works fine for building Sage on Leopard OS X 10.5 intel.
So, we can just update that and stop worrying about require
gfortran on that platform.  Very nice, and this means we'll be
able to easily close trac #1005!!

NOTE - I also tested cvxopt building, and it works fine too.

 -- Wiliam

On Nov 19, 2007 7:56 PM, William Stein <[EMAIL PROTECTED]> wrote:
> On Nov 19, 2007 7:46 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
> > Some kind of compiler bug. I've made changes in rev 1072 of FLINT
> > which should fix the problem. If not, we'll have to wait for Mabshoff
> > to awaken. I've no other ideas, so there's no point in setting me up
> > with an account on the machine at this point.
>
> Whatever you did in rev 1072, it *DOES* fix the problem (I just tested it).
> Great work!
>
> William
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: ModularSymbols(GammaH)

2007-11-20 Thread William Stein
e):
> --> 336 rels = modS_relations(syms)
> 337 if sign != 0:
> 338 # Let rels = rels union I relations.
>
> /home/was/s/local/lib/python2.5/site-packages/sage/modular/modsym/relation_matrix.py
> in modS_relations(syms)
>  99 for i in xrange(len(syms)):
> 100 j, s = syms.apply_S(i)
> --> 101 assert j != -1
> 102 if i < j:
> 103 rels.add( ((i,1),(j,s)) )
>
> :
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Sage math app

2007-11-20 Thread William Stein

On Nov 20, 2007 11:10 AM, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> > As to syntax, I think in Python we could use:
> > >>> integrate(cos(x), (x, -pi/2, pi/2))
> >  Because then you can
> > use the syntax:
> >
> > integrate(cos(x*y), (x, -pi/2, pi/2), (y, 0, pi))
> >
> > for multiple integrals. But anyway, it's just a cosmetic issue.
>
> When I commended Sage's syntax I was assuming you were using this
> Mathematica like syntax already.  I agree with Ondrej and think his
> suggestion above is the way to go.

So do I.  I think we should change that functions as suggested.  Anybody
want to submit a patch?  Ondrej, could you create a trac ticket making precise
what you want, etc.?

> Well Mathematica is proprietary software so I'm not sure why this would be
> interesting.  More important it seems to me is to make a rock solid wrapper 
> for
> Maxima's engine.

Fortunately, that's already done :-)

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Pairing

2007-11-21 Thread William Stein

On Nov 21, 2007 8:17 AM, Steffen <[EMAIL PROTECTED]> wrote:
>
> Hi, I needed some calculation period benchmark for pairings. I could
> not find anything build in, but the following implementation solved my
> problem:
>
> http://maths.straylight.co.uk/archives/104

Thanks!  I've made adding this to Sage proper ticket

   http://trac.sagemath.org/sage_trac/ticket/1236

Can you make some sort of GPL-compatible license statement about your code,
if you haven't already?

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: ArithmeticError

2007-11-21 Thread William Stein

On Nov 20, 2007 1:40 PM, Paul Zimmermann <[EMAIL PROTECTED]> wrote:
>William,
>
> sage told me to report you, thus I do:
[... see below]

For the particular curve you're considering mwrank (via sage's rank command)
can compute the rank -- which is what you want -- in 0.5 seconds, so maybe
you can use .rank() instead?

{{{id=24|
e = EllipticCurve([0, 33076156654533652066609946884, 0,
347897536144342179642120321790729023127716119338758604800,
114112815436927429551902303280680424778815462104985764887003237028585178\
135281664])
}}}

{{{id=27|
time e.rank()
///
1
CPU time: 0.00 s,  Wall time: 0.46 s
}}}

That said, the fact that  e.torsion_order() fails is certainly a bug:

{{{id=29|
e.torsion_order()
///
Traceback (most recent call last):
  File "", line 1, in 
  File "/Users/was/sage_notebook/worksheets/admin/23/code/91.py", line
4, in 
...
self.__torsion_subgroup =
rational_torsion.EllipticCurveTorsionSubgroup(self, flag)
  File 
"/Users/was/s/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/rational_torsion.py",
line 56, in __init__
self.__E.__pari_double_prec()
AttributeError: 'EllipticCurve_rational_field' object has no attribute
'_EllipticCurveTorsionSubgroup__pari_double_prec'
}}}

This is now trac #1237
   http://trac.sagemath.org/sage_trac/ticket/1237
and it probably won't be too hard to fix.  I suspect it was caused perhaps
by David Roe's recent refactoring of the code for elliptic curve over QQ,
but I couldn't be completely wrong.


> sage: d = 919681/88529281
> sage: _ = magma.eval('K := Rationals()')
> sage: _ = magma.eval('P:=ProjectiveSpace(K,2)')
> sage: def rank(d):
> :s='f := (x^2+y^2)*z^2-z^4-('
> :s=''.join([s, repr(d), ')*x^2*y^2;'])
> :magma.eval(s)
> :magma.eval('C:=Curve(P,f);')
> :E = magma('EllipticCurve(C,C![0,1,1])')
> :l = E.aInvariants()
> :EE = EllipticCurve(map(Integer,l))
> :return EE.simon_two_descent()[0]
> :
> sage: rank(d)
> ---
> Traceback (most recent call last)
>
> /home/zimmerma/ in ()
>
> /home/zimmerma/ in rank(d)
>
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py
>  in simon_two_descent(self, verbose, lim1, lim3, limtriv, maxprob, 
> limbigprime)
> 858 (8, 8)
> 859 """
> --> 860 if self.torsion_order() % 2 == 0:
> 861 raise ArithmeticError, "curve must not have rational 
> 2-torsion\nThe *only* reason for this is that I haven't finished implementing 
> the wrapper\nin this case.  It wouldn't be too difficult.\nPerhaps you could 
> do it?!  Email me ([EMAIL PROTECTED])."
> 862 F = self.integral_weierstrass_model()
>
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py
>  in torsion_order(self)
>1743 return self.__torsion_order
>1744 except AttributeError:
> -> 1745 self.__torsion_order = self.torsion_subgroup().order()
>1746 return self.__torsion_order
>1747
>
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py
>  in torsion_subgroup(self, flag)
>1781 return self.__torsion_subgroup
>1782 except AttributeError:
> -> 1783 self.__torsion_subgroup = 
> rational_torsion.EllipticCurveTorsionSubgroup(self, flag)
>1784 return self.__torsion_subgroup
>1785
>
> /usr/local/sage-2.8.12/sage/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/rational_torsion.py
>  in __init__(self, E, flag)
>  54 G = self.__E.pari_curve().elltors(flag)
>  55 except RuntimeError:
> ---> 56 self.__E.__pari_double_prec()
>  57 if G is None:
>  58 raise RuntimeError, "Could not compute torsion subgroup"
>
> : 'EllipticCurve_rational_field' object has 
> no attribute '_EllipticCurveTorsionSubgroup__pari_double_prec'
>
> Paul
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage 2.8.13.alpha1 is out! -- g95 and OSX Leopard

2007-11-21 Thread William Stein

On Nov 19, 2007 11:49 PM, mabshoff
<[EMAIL PROTECTED]> wrote:
> On Nov 20, 6:12 am, "William Stein" <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I just did a test and using the new version of g95 here:
> >
> >http://ftp.g95.org/g95-x86-osx.tgz
> >
> > works fine for building Sage on Leopard OS X 10.5 intel.
> > So, we can just update that and stop worrying about require
> > gfortran on that platform.  Very nice, and this means we'll be
> > able to easily close trac #1005!!
> >
> > NOTE - I also tested cvxopt building, and it works fine too.
> >
> >  -- Wiliam
>
> Hello,
>
> I have update the fortran.spkg with that g95 and I am testbuilding on
> bsd. Do we also need to update the g95 for 10.5 on PPC or is this an
> x86 issue only?

It probably couldn't hurt to do so, but I really have no idea since I don't
have access to any 10.5 PPC machines.   If the updated g95 works on
ppc 10.4 also then it would be worth updating on general principle.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Projects

2007-11-21 Thread William Stein

On Nov 21, 2007 8:11 AM, sms <[EMAIL PROTECTED]> wrote:
> thanks for inviting me to become a member here!

Welcome to sage-devel!

>
> David: I am working in Algebraic Geometry (algebraic cycles and K-
> theory)  mainly but teach almost entirely number theory and hence
> essentially only give away thesis topics in number theory.  By the way
> I got into all this after writing
> a little python package for symbian series 60 phones (google for
> python math lab) which two of my students help
> developing meanwhile.

That's pretty cool.  Could you change the title of the link to Sage on the
"python math lab" webpage from
  "  SAGE: System for Arithmetic Geometry Experimentation, a CAS
developed by William Stein et.al."
to
  " SAGE: Open Source Mathematical Software, a Python-based CAS
developed by William Stein et al."

Thanks.

> To involve them into developing parts SAGE
> is an experiment though, hence it would be good to let them work on
> less time-critical things and be patient. It might even be better to
> give away such task in seminars where they usually work only for a few
> weeks on a subject.

I like that idea.

> John's suggestion (S-integral points) seems very interesting and if I
> may I would like to suggest it to a student. Also Edwards coordinates
> seem to be a nice option.  Otherwise I will follow William and suggest
> that they choose their own topic and go ahead and compare with MAGMA.
> At the end we can see whether there is a contribution.

Sounds good.  Regarding S-integral points, it would be best to break the
project up into several subtasks (I'm not sure what the subtasks are).

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] is anybody interesting lie groups, etc.

2007-11-21 Thread William Stein

Hi Sage Devel,

If you noticed the publicity a few months ago about E8, "the Sage
supercomputer", etc.,
then you might be interested in this project.The software here,
which is a mostly
well documented (but sometimes not) not unpleasant C++ program

 http://www.liegroups.org/software/download/

was the code used (run on sage.math.washington.edu) to do "the E8 calculation".
It is actually much more general code, capable I think of doing many interesting
things related to lie groups, and do them very very quickly (that's
the key point).
It's completely unique, interesting, and powerful code.

A few minutes ago I got word from the ATLAS of Lie Groups group that "William,
Well, I think everybody has had their say and the conclusion is unanimous:
Atlas is GPL. (There still is some discussion about which version of GPL
and where to put the notification. This will be straightened out soon.)"

So is anybody interested in thinking through how this could perhaps be
made a standard and useful part of Sage?   Let me know.

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Projects

2007-11-21 Thread William Stein

On Nov 21, 2007 11:16 AM, mhampton <[EMAIL PROTECTED]> wrote:
>
> I have a project that I have meant to tackle myself, but I doubt I
> will have time to do it for at least a year, so someone can beat me to
> it (just let me know!):
>
> Write a parallellized (DSage!) algorithm/implementation to compute
> convex hulls of rational points in n-dimensional space, using exact
> arithmetic.  My own interest is for polytopes that are highly
> degenerate in the sense that the faces are ususally complicated, far
> from being simplices.  For such polytopes the LRS algorithm doesn't do
> too well, although it is fairly easy to parallellize (there is at
> least one paper on that topic, but I couldn't find an
> implementation).  It would be nice to try to parallellize the cdd
> program of Fukuda et al - the serial program is already included in
> Sage in cddlib (and via polymake).
>
> I would be interested in corresponding and helping anyone interested.

Could you maybe say a little more about how existing software (e.g., polymake)
fails to meet your needs?  Is there commercial software that does what you
want?  Etc., or is this development of something that is in some sense
entirely new.  Are algorithms for what you want well known and written down in
papers or would they have to be invented (thesis!)?

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] SAGE-2.8.13 released!

2007-11-21 Thread William Stein

Hello folks,

Sage 2.8.13 has been released. Sources are and binaries should soon be
available at

  http://sagemath.org/download.html

This is the first release after the excellent Sage Days 6 in Bristol.
We are a couple days late, mostly due to a rocky initial alpha0 that
took some time to sort out and also the new policy that all patches
have to be reviewed before they can get merged.

The usual suspects contributed major pieces to this release:

 - Bill Hart
 - John Cremona
 - Josh Kantor
 - Martin Albrecht
 - Michael Abshoff
 - Mike Hansen
 - Ondrej Certik
 - Ralf-Philip Weinmann
 - Robert Bradshaw
 - William Stein
 - Willem Jan Palenstijn

Sorry if I forgot anybody, it has been quite a turbulent release
cycle. Thanks to all the reviewers, all the testers, especially
Jaap Spies, and please send me patches for the doctest failures.

Cheers,

Michael Abshoff (release chair), William Stein

* Major Features, New Spkgs and Bugfixes

Major new features are John Cremona's g0n, updates to flint, scipy &
numpy, cvxopt and sympy as well as major bug fixes to libfplll and
memory leak fixes in linbox. This is also the first release that
compiles on OSX 10.5 "out of the box", i.e. without the need to have
gfortran installed.

Updates spkgs in detail:

#563: linbox-20070915.p2.spkg (Michael Abshoff)
#1029: flint-0.9-r1072.spkg (Robert Bradshaw, Michael Abshoff)
#1188: libfplll-2.1.3-20071117.spkg (Martin Albrecht, Michael Abshoff,
  Willem Jan Palenstijn, also #1126)
#1177: mpfr-2.3.0.p0.spkg (Michael Abshoff)
#1189: sympy-0.5.7.spkg (Ondrej Certik)
#1197: cremona-20071116.p0.spkg (John Cremona, William Stein,
  Ralf-Philip Weinmann)
#1198: scipy-20071020-0.6.spkg (Josh Kantor)
#1198: numpy-20071020-1.0.3.1.spkg (Josh Kantor)
#1199: cvxopt-0.9.p1.spkg (Josh Kantor, Michael Abshoff, also #1121, #1161)

We closed a total of 49 tickets, see

 http://www.sagetrac.org/sage_trac/query?status=closed&milestone=sage-2.8.13

for details.

* Known Issues with 2.8.13

 - cvxopt fails to import on OSX PPC (ticket #1222)
 - g0n, i.e. cremona.spkg fails to compile on Linux/Itanium with
  older gcc and also Solaris.

* Upcoming Releases

2.8.14 is planned for next week, depending on how close the release
will be to Sage Bug Day 6 on November 2nd, 2007 we might do another
2.8.15 release the day before. Major spkg candidates for 2.8.14 are

 - Singular 3-0-4
 - PolyBoRi
 - ATLAS BLAS/Lapack

It looks unlikely that we will achieve the major goals for 2.9, namely
Solaris 32 bit support and OSX 10.5 64 bit support, in the next two
weeks, so we might do a couple more 2.8.x releases.

* Coverage

2.8.13:

 Overall weighted coverage score:  34.4%
 Total number of functions:  17472

Compared to 2.8.12:

 Overall weighted coverage score:  34.3%
 Total number of functions:  17418

* About Sage (http://www.sagemath.org)

Sage is developed by volunteers and combines 71 open source packages.
It is available for free download from sagemath.org and its mirrors in
source or binary form. If you have any questions and/or problems
please report them to the google groups sage-devel, sage-support, sage-
forum or sage-newbie. You can also drop by in #sage-devel in freenode.


-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: abelian groups

2007-11-22 Thread William Stein
ists, and is exactly what the coercion
code depends on (not ParentWithGens).

 -- William


> It seems to me you want to copy
>
> cdef class Group(sage.structure.parent_gens.ParentWithGens):
>
> but with a bigger parent, calling it maybe AbstractGroup or
> GroupWithoutGens or something.
> If/when you know the generators, you coerce it into Group. Probably
> it's much more
> complicated to implement but the essence of what you want seems simple enough
> conceptually. Instead of creating the ParentWithOutGens, maybe just go back 
> into
> sage.structure.parent.Parent?
>
> In your example of an elliptic curve, it is possible that you do have 
> generators
> known, so maybe you want to have the option of specifying them
> and coercing immediately?
>
>
>
> >
> > I'm really unsure of how to proceed with this. Especially since there
> > are difficult coercion issues lurking in the background. Any thoughts
> > would be most appreciated.
> >
> > david
> >
> >
> > >
> >
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: abelian groups

2007-11-22 Thread William Stein

On Nov 22, 2007 7:31 AM, David Harvey <[EMAIL PROTECTED]> wrote:
> > You should make an AbstractAbelianGroup class that derives from
> > ParentWithBase.
>
> Hmmm but wouldn't it make more sense for AbelianGroup (i.e. the
> currently implemented one) to derive from AbstractAbelianGroup?

Yes, it would make more sense.

> i.e. an AbelianGroup is an AbstractAbelianGroup where we happen to
> know the structure, and so can implement things like order, exponent
> etc more efficiently?
>
> I guess then you have problems with multiple inheritance, since you
> want AbelianGroup to inherit from both AbstractAbelianGroup and
> ParentWithGens, both of which originally come from ParentWithBase.
> That's most unfortunate.

Logically it would make more sense to derive from both ParentWithGens
and AbstractAbelianGroup, but as you point out that is multiple inheritence
which is not supported in Cython.So just make the AbelianGroup
class be a Python class (in fact -- if you look in abelian_group.py you'll
see it already is a Pure Python class!)

{{{id=0|
class AbstractAbelianGroup(ParentWithBase):
def __repr__(self):
return "An abstract abelian group"
}}}

{{{id=1|
class AbelianGroup(AbstractAbelianGroup, ParentWithGens):
def __repr__(self):
   return "an abelian group"
}}}

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: please wait less than a minute -> please wait around 6 minutes

2007-11-22 Thread William Stein

On Nov 22, 2007 7:42 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
>
> On Nov 22, 2007 1:37 PM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
> > > so startup + relocation takes 12 seconds. So there are maybe some
> > > problems on your end :(
> >
> > I downloaded the binary version: sage-2.8.13-i686-Linux-debian32.tar.gz
> >
> > I tried that on my laptop and it indeed took only 57s, which is less
> > than a minute. So there are probably some problems on my end.
>
> Just for a reference, I just tried that on Intel Core Quad:

The time has everything to do with filesystem speed (and sytem load),
and very little to do with CPU speed.  It literally takes only a few seconds
on most unloaded modern systems with a good hard drive, since all it
is doing is looking at a bunch of files and in some cases making some
changes to them (mainly in Python's site-package).

Maybe your machine has a really slow filesystem driver or was doing
something else at the same time or something.

In any case, it would likely be easy to rewrite this functionality to
give some sort
of progress meter.  If that sounds like a good idea to you, feel free to open
a trac ticket and it will eventually happen.

> $ time ./sage
> --
> | SAGE Version 2.8.13, Release Date: 2007-11-21  |
> | Type notebook() for the GUI, and license() for information.|
> --
> The SAGE install tree may have moved.
> Regenerating Python.pyo and .pyc files that hardcode the install PATH
> (please wait less than a minute)...
> Please do not interrupt this.
> /home/ondra/ext/sage-2.8.13-i686-Linux/local/bin/sage-sage: line 149:
> 6136 Alarm clock "$SAGE_ROOT/local/bin/"sage-location
>
> Automatically updating the cached Gap workspace:
> /home/ondra/.sage//gap/workspace-468476148
> sage:
> Exiting SAGE (CPU time 0m0.01s, Wall time 0m52.95s).
> Exiting spawned Gap process.
>
> real7m7.078s
> user0m3.428s
> sys 0m1.164s
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage on sagemath

2007-11-22 Thread William Stein

On Nov 22, 2007 5:20 AM, mabshoff
<[EMAIL PROTECTED]> wrote:
> > : libcsage.so: cannot open shared
> > object file: No such file or directory
> > 
> >
> > So I think it's better to build it from source, right?
>
> libcsage.so is missing in the binary, "sage -b" fixes that.

That's very weird.  In fact, there's libcsage.dylib instead included
in that tarball!
There was probably a problem with the script that determines whether
to build a dylib or so file.   Anyway, I'm rebuilding the sage for sage_dot_math
binary tarball right now and will post it later.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Banner not updated

2007-11-22 Thread William Stein

On Nov 22, 2007 7:17 AM, Nathan Dunfield <[EMAIL PROTECTED]> wrote:
> I encountered the following minor bug while upgrading to 2.8.13,
> namely the file
>
> $SAGEROOT/local/bin/sage-banner
>
> was not updated.   So when I started sage after doing "sage -upgrade"
> it claimed that I was still on 2.8.8.1:

Try doing

sage: hg_scripts.merge()
sage: hg_scripts.commit()

and answer any interactive questions.   We recently switched to "sage -upgrade"
*merging* in the scripts and several other hg repo's included in sage,
instead of
just overwriting them -- this is great, because it means people won't accidently
loose work when upgrading; however, it requires some slight manual intervention
when upgrading older installs.

William

> PBook ~ (12) sage
> --
> | SAGE Version 2.8.8.1, Release Date: 2007-10-21 |
> | Type notebook() for the GUI, and license() for information.|
> --
>
> even though within the interpreter the function "version()" correctly
> returns 2.8.13.
>
> sage: version()
> 'SAGE Version 2.8.13, Release Date: 2007-11-21'
>
> Details: OS X, version 10.4.10/Core Duo 2/original version of sage
> 2.7.1, upgraded several times.
>
> Best,
>
> Nathan
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Sage-announce] SAGE-2.8.13 released!

2007-11-23 Thread William Stein

On Nov 23, 2007 8:18 PM, Justin C. Walker <[EMAIL PROTECTED]> wrote:
> > This is all really weird since I fully tested building Sage-2.8.13 on
> > OSX 10.4 intel and OSX 10.5 intel (both core duo and Xeon),
> > and didn't have any problems at all.   So the problem could
> > be with...
...
> I reported this during one of the "alpha/rc" cycles (2.8.10.alpha?, I
> think), and tried the "move /usr/local out of the way" trick.  That

I see!   The problem was definitely in 2.8.13.rc0 I think, because I found
it then, and then somebody subsequently fixed it as a result, i.e., the
problem is fixed in 2.8.13 (but not before).

> > Something I've wondered about for a while -- is there a bulletproof
> > way to ignore /usr/local/ during build of Sage?
>
> I think 'gcc' has flags that let you force the lookup paths for
> "system-supplied" includes and libs.  I'll see if I can track that down.

That would be very very interesting indeed.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Maple?

2007-11-23 Thread William Stein

On Nov 22, 2007 11:16 AM, a concerned Maple user and AMS reader wrote:
> William,
>
> Most Maple source code is open for inspection, as well as modification and
> extension.  Hence the code is "open source".  Maplesoft sometimes uses that
> term, I and believe they are correct in doing so.  Having OSI attempt to
> redefine the common English usage of words does not mean that they have done
> so.

In the Notices article I make it clear I'm using the definition on the
OSI web page.
It is irrelevant whether OSI is attempting to redefine  a word -- I
made the definitions
of the words I was using in the article clear.

> There are two types of Maple code that are not open source (AFAIK): kernel
> code and external code written by others.  The kernel code is mostly
> low-level stuff, such as for loops and garbage collection; the amount of
> this code is tiny, and the code usually does things that are obvious (just
> written in C, for speed), and reliability does not seem to be much of an
> issue.  The external code is stuff like NAG routines.

... And Faugere's F4 and the Maple GUI (?), which is so far the only
code that comes
with Maple that I've ever really want to look at.  And I'm scared to look
at other Maple code anyways due to the license statement, as discussed
before in this thread.

> Many of the things done by NAG routines are also done by GSL [GNU Scientific
> Library], and it would be easy to extend Maple to call GSL.  So suppose that
> Maplesoft supplied two versions of some routines: an open-source GSL-based
> routine and a NAG-based routine.

If Maple provided anythig GSL-based, then all of Maple would have to be
GPL'd because GSL is GPL'd, and that would make Maple a derived work of
a GPL'd program (note that GSL is not LGPL'd like GMP).
This would mean that people could freely share Maple, which would
destroy Maplesoft's entire business model.  Thus building Maple's numerical
libraries on GSL is not an option for Maple.

> I suspect that almost everyone would use
> the NAG-based routines, because NAG's reputation is much higher.  In other
> words, although users would prefer open source, given the choice here, most
> would choose the approach that Maplesoft took.  What constructive
> recommendation would you give Maplesoft (or are you adopting with Sage)?
> Duplicating NAG quality is extremely difficult.  So I don't agree that it is
> valid to criticize Maple for relying on NAG, if a better approach cannot be
> recommended.

Maplesoft made the only choice they can given their traditional
software development model.  I can suggest no alternatives.

> What constructive
> recommendation would you give Maplesoft (or are you adopting with Sage)?

Sage includes Scipy and GSL for numerical computation.   Scipy
(http://www.scipy.org/)
is about 450,000 lines of Python, C, and Fortran, which has been under
development
for nearly a decade, and aims to provide functionality similar to
Matlab but for Python
scientific computing users.  Much Scipy development is generously supported by
a successful private scientific computing company called Enthought.
The approach we have taken in Sage is to ship Scipy with Sage, improve
integration
between Sage and Scipy, and also use GSL to support some numerical functionality
in Sage (since GSL is very well documented and easy to use from
Cython=Compiled Python).

> Your opinion piece states "If the program is proprietary, [the open
> inspection and ability to use all the computer code on which the result
> depends] is not possible".  That may be technically true, because of the
> word "all", but it is misleading in the case of Maple.  Yet that statement
> was the main point of your piece!
>
> Maple code is not free, though; e.g. copying code from Maple would be
> illegal and unethical.

My statement is right on target in the case of Maple, and you just
explained why above.

> I think that it would be great if there were a
> completely free system that could replace Maple/Mathematica, though I
> suspect that is a multi-decade project.

I also think it would be great, and agree that it is a multi-decade project.
Fortunately that project started in the 1960s, and five millions lines of code
and  4 decades later we have finally started to get somewhere.

> Even so, the route of the Sage
> project confuses me.  There are GNU projects that are working in similar
> directions: GMP, JACAL, and perhaps others (as well as GSL).

 * GMP is part of Sage.  Every copy of Sage includes GMP, often built
with patches that
make it much faster than "official" versions of GMP.
 * JACAL -- never heard of it before, but looking at
http://www-swiss.ai.mit.edu/~jaffer/jacal_toc.html
for a few seconds it appears to be a reinventing-the-wheel sort of project...
 * GSL, like GMP, is part of Sage.

> Shouldn't Sage be part of GNU?

Technically I view "being part of GNU" as meaning (1) renaming the
project to GNU Sage,
(2) signing over copyright of everything we do to the Free Software
Foundat

[sage-devel] Re: singular factorize *slow*

2007-11-23 Thread William Stein

On Nov 23, 2007 2:41 PM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
> > Wall time: 0.02
> > sage: time w = tt.Factorization()
> > CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
> > Wall time: 0.01
> > sage: time w = tt.Factorization()
> > CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
> > Wall time: 0.05
> >
> > By the way, trac #1250 has a patch so at least control-c works when
> > factoring.
> >
> > Anyway, this really really really bugs me.
>
> It's funny - this doesn't bug me at all. But that Mathematica can do
> limits and integrals and differential equations that maxima+sympy
> together cannot, that really bugs me.

Good.  That's why it's so important that we're both heavily involved!
Stay very annoyed.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: singular factorize *slow*

2007-11-23 Thread William Stein

On Nov 23, 2007 7:15 AM, Joel B. Mohler <[EMAIL PROTECTED]> wrote:
>
> On Fri, Nov 23, 2007 at 07:08:02AM -0800, mabshoff wrote:
> > Hello Joel,
> >
> > > I'm also posting this 
> > > athttp://www.singular.uni-kl.de/forum/viewforum.php?f=10
> > > as soon as I get registered on the forum.
> > >
> >
> > You don't need to be registered at the Singular forum in order to be
> > able to post. The 3-0-4 tarball is already up on the Singular website,
> > so you might want to try your luck with that version first. I think it
> > is unlikely that the new release will fix the issue, but it is worth a
> > try.
>
> Oops, I failed to mention that it was the vanilla 3-0-4 that I actually tested
> it with (I installed it outside of sage).  And, yes, they allow anonymous
> posts, but there's generally conveniences to being registered (like
> notification of replies and what-not).
>
> http://singular.mathematik.uni-kl.de/forum/viewtopic.php?t=1652
>
>

Singular errors or not, Singular is really pitiful at this problem
compared to Magma -- which is what we should have as a baseline
for solid robust behavior in this case:

In SAGE (via libsingular) on a 2.33Ghz laptop:

sage: R. = QQ[]; t =
-p10^170*X1^10*X2^10+p10^130*X1^10*X2^5+p10^130*X1^5*X2^10-p10^90*X1^5*X2^5+p10^80*X1^5*X2^5-p10^40*X1^5->
sage: time a = t.factor()
CPU times: user 10.80 s, sys: 8.91 s, total: 19.71 s
sage: time a = t.factor()
CPU times: user 3.34 s, sys: 2.39 s, total: 5.73 s
sage: time a = t.factor()
CPU times: user 21.52 s, sys: 15.10 s, total: 36.62 s

Now compare with Magma, which is the sort of performance
we want:

sage: tt = magma(t)
sage: time w = tt.Factorization()
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.02
sage: time w = tt.Factorization()
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.02
sage: time w = tt.Factorization()
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.01
sage: time w = tt.Factorization()
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.05

By the way, trac #1250 has a patch so at least control-c works when
factoring.

Anyway, this really really really bugs me.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Banner not updated

2007-11-23 Thread William Stein

On Nov 22, 2007 7:59 PM, Nathan Dunfield <[EMAIL PROTECTED]> wrote:
> > Try doing
> >
> > sage: hg_scripts.merge()
> > sage: hg_scripts.commit()
> >
> > and answer any interactive questions.
...
> If I follow the suggestion of .merge() I get
>
> sage: hg_scripts.update()
> cd "/pkgs/sage-2.7.1/local/bin" && hg update
> abort: untracked local file 'sage-wiki' differs from remote version

See where it says "abort: ".  It's aborting at that point.
If you do
   rm SAGE_ROOT/local/bin/sage-wiki
then do hg_scripts.update() again, it won't abort for that reason
and you'll get the new hg repo for scripts merged in.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Sage-announce] SAGE-2.8.13 released!

2007-11-23 Thread William Stein

On Nov 23, 2007 3:58 PM, Justin C. Walker <[EMAIL PROTECTED]> wrote:
> > Hello folks,
> >
> > Sage 2.8.13 has been released. Sources are and binaries should soon be
> > available at
> >
> >   http://sagemath.org/download.html
>
> I did a full build of 2.8.13 on two systems:
>
> Mac OS X/10.4.11: Dual Quad-Core Xeon
> Mac OS X/10.5.1:  Core Duo
>
> Problems on both:
> 10.5.1: blow-up in Flint
>ld: duplicate symbol ___gmpz_abs in test-support.o and fmpz_poly-
> test.o
>
> 10.4.11: blow-up in cddlib ("/usr/local" contamination)
>/usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols:
>___gmpq_init
>...

This is all really weird since I fully tested building Sage-2.8.13 on
OSX 10.4 intel and OSX 10.5 intel (both core duo and Xeon),
and didn't have any problems at all.   So the problem could
be with
  (1) 10.5.1 versus 10.5 -- unlikely, since this wouldn't
even touch the compilers (but I'll try upgrading right now and
see if I can replicate the problem there),
 (2) Us having different versions of Xcode: I'm using
   gcc version 4.0.1 (Apple Inc. build 5465)
on my machines, or
 (3) you having something funny in your /usr/local/.

Please report your "gcc -v" version.

Also maybe you have all kinds
of stuff in /usr/local?  Could you try temporarily renaming it,
redoing the build, just to see if that's the problem?
Something I've wondered about for a while -- is there a bulletproof
way to ignore /usr/local/ during build of Sage?

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: request for testing of new flint.spkg

2007-11-24 Thread William Stein

On Nov 24, 2007 8:36 AM, Joel B. Mohler <[EMAIL PROTECTED]> wrote:
>
> On Friday 23 November 2007 22:46, mabshoff wrote:
> > Bill has fixed a couple of bugs in flint since r1072 that were corner
> > cases that only happened on Core Duos, so I have updated the spkg to
> > r1075. It is available at
> >
> > http://sage.math.washington.edu/home/mabshoff/flint-0.9-r1075.spkg
>

This is all with the version with a memory leak, i.e. posted above:

* On OSX 10.4 Intel (a mac mini I think):

Darwin leibniz.math.harvard.edu 8.10.1 Darwin Kernel Version 8.10.1:
Wed May 23 16:33:00 PDT 2007; root:xnu-792.22.5~1/RELEASE_I386 i386
i386

gcc version 4.0.1 (Apple Computer, Inc. build 5367)

All tests passed

real11m10.282s
user8m1.407s
sys 0m33.591s

* On a Xeon 32-bit Ubuntu Linux machine:

All tests passed

real12m3.832s
user5m45.310s
sys 0m23.857s

Linux debian32 2.6.18-4-686 #1 SMP Mon Mar 26 17:17:36 UTC 2007 i686 GNU/Linux

gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

* Sparc Solaris 10 -- flint doesn't build, since maybe u_int16_t
doesn't exist or
isn't properly included:

SunOS abel 5.10 Generic_125100-10 sun4u sparc SUNW,Sun-Fire-V440
gcc version 4.1.1

gcc -std=c99 
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
-c fmpz_poly.c -o fmpz_poly.o
fmpz_poly.c: In function [EMAIL PROTECTED]@~Y:
fmpz_poly.c:169: error: [EMAIL PROTECTED]@~Y undeclared (first use in
this function)
fmpz_poly.c:169: error: (Each undeclared identifier is reported only once
fmpz_poly.c:169: error: for each function it appears in.)
fmpz_poly.c:169: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
[EMAIL PROTECTED]@~Y
fmpz_poly.c:222: error: [EMAIL PROTECTED]@~Y undeclared (first use in this 
function)
fmpz_poly.c:222: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
[EMAIL PROTECTED]@~Y
make: *** [fmpz_poly.o] Error 1
gcc -std=c99 
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
-c mpn_extras-test.c -o mpn_extras-test.o
gcc -std=c99 
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
-funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
-c fmpz_poly.c -o fmpz_poly.o
fmpz_poly.c: In function [EMAIL PROTECTED]@~Y:
fmpz_poly.c:169: error: [EMAIL PROTECTED]@~Y undeclared (first use in
this function)
fmpz_poly.c:169: error: (Each undeclared identifier is reported only once
fmpz_poly.c:169: error: for each function it appears in.)
fmpz_poly.c:169: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
[EMAIL PROTECTED]@~Y
fmpz_poly.c:222: error: [EMAIL PROTECTED]@~Y undeclared (first use in this 
function)
fmpz_poly.c:222: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
[EMAIL PROTECTED]@~Y
make: *** [fmpz_poly.o] Error 1
Error building flint shared library.


* OSX 10.4 PPC -- works fine, all tests pass.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: request for testing of new flint.spkg

2007-11-24 Thread William Stein

On Nov 24, 2007 10:18 AM, mabshoff
<[EMAIL PROTECTED]> wrote:
>
> Hello Bill,
>
> > * Sparc Solaris 10 -- flint doesn't build, since maybe u_int16_t
> > doesn't exist or
> > isn't properly included:
>
> this is because Solaris 9 isn't C99 conform. I have a fix for this (a
> couple defines) that we also use for Sage in general.
> On Solaris 10
> flint should build, but I haven't checked. There already is a ticket
> about this, see #1178.

I was building on Solaris 10 not solaris 9 (see below):

> > SunOS abel 5.10 Generic_125100-10 sun4u sparc SUNW,Sun-Fire-V440
> > gcc version 4.1.1
> >
> > gcc -std=c99 
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
> > -c fmpz_poly.c -o fmpz_poly.o
> > fmpz_poly.c: In function [EMAIL PROTECTED]@~Y:
> > fmpz_poly.c:169: error: [EMAIL PROTECTED]@~Y undeclared (first use in
> > this function)
> > fmpz_poly.c:169: error: (Each undeclared identifier is reported only once
> > fmpz_poly.c:169: error: for each function it appears in.)
> > fmpz_poly.c:169: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
> > [EMAIL PROTECTED]@~Y
> > fmpz_poly.c:222: error: [EMAIL PROTECTED]@~Y undeclared (first use in this 
> > function)
> > fmpz_poly.c:222: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
> > [EMAIL PROTECTED]@~Y
> > make: *** [fmpz_poly.o] Error 1
> > gcc -std=c99 
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
> > -c mpn_extras-test.c -o mpn_extras-test.o
> > gcc -std=c99 
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include/
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -I/hearsthome/home/math1/was/solaris10/sage-2.8.13.rc2/local/include
> > -funroll-loops -fexpensive-optimizations  -fPIC -funroll-loops   -O3
> > -c fmpz_poly.c -o fmpz_poly.o
> > fmpz_poly.c: In function [EMAIL PROTECTED]@~Y:
> > fmpz_poly.c:169: error: [EMAIL PROTECTED]@~Y undeclared (first use in
> > this function)
> > fmpz_poly.c:169: error: (Each undeclared identifier is reported only once
> > fmpz_poly.c:169: error: for each function it appears in.)
> > fmpz_poly.c:169: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
> > [EMAIL PROTECTED]@~Y
> > fmpz_poly.c:222: error: [EMAIL PROTECTED]@~Y undeclared (first use in this 
> > function)
> > fmpz_poly.c:222: error: expected [EMAIL PROTECTED];[EMAIL PROTECTED] before 
> > [EMAIL PROTECTED]@~Y
> > make: *** [fmpz_poly.o] Error 1
> > Error building flint shared library.
> >
> > * OSX 10.4 PPC -- works fine, all tests pass.
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: request for testing of new flint.spkg

2007-11-24 Thread William Stein

On Nov 24, 2007 4:24 PM, Paul Hsieh <[EMAIL PROTECTED]> wrote:
> > Fortunately, it's close enough to the MIT license, that if you pointed 
> > these flaws out to him, he might change.
>
> Yeah, I did fly by night thing.  What I wanted was to put companies
> like SCO into legal trouble if they attempted to claim they "owned"
> pstdint.h just because they happened to be using it and claiming
> someone else did and therefore was engaging in copyright
> infringement.  (Like they did with the system V malloc implementation
> and Linux.)
>
> I am considering just dual licensing everything just GPL v2.1 and BSD
> though I guess I should look at the MIT license.  Basically I would
> just like the file to be widely enough used that I should be able to

Many thanks for being so helpful!

I don't personally see a reason to dual-license under both GPL and BSD,
since anything BSD licensed can be used in any GPL project.   Technically,
the GPL license is just "BSD + extra restrictions".   I would chose
BSD over MIT, since BSD is more popular and widely known.
(Just make sure to use the modified BSD rather than the original
version.)

> take credit for it just enough that people would generally know that I
> did it (and get a few kudos for it), without that itself being too
> much of a restriction, and for people not to use it in an abusive way.

I'm not sure what to say about this, except that unless you are
the copyright holder no matter which of the above licenses you use.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage - good stuff

2007-11-24 Thread William Stein

On Nov 24, 2007 3:22 AM, Hans Fangohr <> wrote:
> I have just come across your SAGE project, and just wanted to
> congratulate on it (don't waste time to reply). I, too, believe that
> Python is the right interface for this kind of thing. (So we have
> developed a big numerical simulation (mostly OCaml code) with a front
> end in Python (nmag.soton.ac.uk) and I also use Python (numpy, scipy,
> visual) for teaching numeric computation.) I will certainly consider
> switching my teaching materials to Sage after having studied it in
> more detail.

Please let me know what you find that you don't like when you consider
Sage more carefully.   We very much want Sage to be an excellent
friendly piece of software  for students, but of course much work remains
to be done.

> Once more: the project looks very good, is needed by many people, and
> I do know it is _a lot_ of work to push something like this through;
> well done!

Thanks!   By the way, your Python library

http://www.soton.ac.uk/~juzi/software_povraython.html

looks very interesting, and might make sense for inclusion in Sage.
How does it work?  Does it write a scene description file and call povray?

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: sage - good stuff

2007-11-24 Thread William Stein

Ondrej:
> > Povray is not open source (so it has to be in Debian non-free), so I
> > don't think SAGE should depend on or use povray.

Ondrej, thanks for sharing your opinion.

Boothby:
> Sage doesn't need to distribute / depend upon non-free software.
> However, it does have interfaces to lots of non-free software, like Magma, 
> Mathematica, etc.

+1

A major goal of Sage has always been to:

 unify existing mathematical-related software, both free and  commercial.

Though it is annoying that the license for
povray is not GPL-compatible, povray is still very interesting
software, and making
it easy for people to combine the functionality of Povray with Sage
just makes sense.

The Goals for SAGE:

  (1) Provide a cross-platform distribution of free open source
mathematical software that is easy for anybody to build, modify, etc.

  (2) Provide a new library of functionality that ties (1) together,
and functionality-wise provides a viable free alternative to Maple,
Mathematica, Matlab, and Magma.

  (3) Provide interfaces to a huge range of existing mathematical software.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] pyx

2007-11-24 Thread William Stein

Hello,

Some of the Sage developers are considering including Pyx
(http://pyx.sourceforge.net/)
in Sage (http://sagemath.org).One issue is that I think Pyx is
currently licensed GPL v2 only.
Unfortunately Sage will soon have to start including several new
versions of GNU programs
such as GMP, GNUTLs, GSL, etc., and these are all licensed under "GPL
v3 or greater".
Also PolyBoRi (http://polybori.sourceforge.net/) will soon be in Sage,
and it is also "GPL v3"
licensed.  Unfortunately, it is a copyright violation to combine GPL
v2 and GPL v3 software
together and redistribute it, since the FSF decided to make GPL v3 be
GPL v2 incompatible.
So, I'm curious whether the Pyx team has any plans to change their
license to "GPL v2 or v3"
or to "GPL v2 or greater"?

This will help us in deciding whether including Pyx in Sage is an
option for us.

Thanks!   And thanks again for a great Python library.

  -- William

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [IPython-dev] Fwd: [sage-support] Re: install problem with pickleshare

2007-11-24 Thread William Stein

On Nov 24, 2007 8:29 PM, Fernando Perez <[EMAIL PROTECTED]> wrote:
> On Oct 17, 2007 11:47 PM, Ville M. Vainio <[EMAIL PROTECTED]> wrote:
> > Perhaps this is due to sys.path not containing Extensions yet for some
> > reason (I'm not aware why this is not a problem on my box).
> >
> > To get over it quickly, change line:
> >
> > > python2.5/site-packages/IPython/iplib.py", line 58, in 
> > > import pickleshare
> >
> >
> > to:
> >
> > from IPython.Extensions import pickleshare.
>
> Mmh, I hadn't realized this bug hadn't been fixed in trunk.  I've just
> committed the fix as r2871.

I tried updating Sage to this version of Ipython, and
when I start sage it just immediately exits:

rank4:~ was$ sage
--
| SAGE Version 2.8.13, Release Date: 2007-11-21  |
| Type notebook() for the GUI, and license() for information.|
--
rank4:~ was$


I.e., I get immediately dumped to the prompt.   Do you
have any idea why?  (I haven't tried at all to figure out why.)

If anybody wants to try this, just do

wget http://sage.math.washington.edu/home/was/tmp/ipython-0.8.1.r2871.spkg
sage -f ipython-0.8.1.r2871.spkg

then run sage.

To restore the previous version of Ipython, just do

sage -f ipython-0.8.1.p1.spkg

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [IPython-dev] Fwd: [sage-support] Re: install problem with pickleshare

2007-11-24 Thread William Stein

On Nov 24, 2007 11:22 PM, William Stein <[EMAIL PROTECTED]> wrote:
>
> On Nov 24, 2007 8:29 PM, Fernando Perez <[EMAIL PROTECTED]> wrote:
> > On Oct 17, 2007 11:47 PM, Ville M. Vainio <[EMAIL PROTECTED]> wrote:
> > > Perhaps this is due to sys.path not containing Extensions yet for some
> > > reason (I'm not aware why this is not a problem on my box).
> > >
> > > To get over it quickly, change line:
> > >
> > > > python2.5/site-packages/IPython/iplib.py", line 58, in 
> > > > import pickleshare
> > >
> > >
> > > to:
> > >
> > > from IPython.Extensions import pickleshare.
> >
> > Mmh, I hadn't realized this bug hadn't been fixed in trunk.  I've just
> > committed the fix as r2871.
>
> I tried updating Sage to this version of Ipython, and
> when I start sage it just immediately exits:

I should add that

  sage -ipython

which runs Ipython directly (without sage preparsing, etc.),
works fine, as does import sage.all:

rank4:standard was$ sage -ipython
Python 2.5.1 (r251:54863, Nov  2 2007, 12:50:27)
Type "copyright", "credits" or "license" for more information.

IPython 0.8.2.svn.r2848 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help  -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: from sage.all import *

In [2]: 2/3
Out[2]: 0

In [3]: ZZ(2) / ZZ(3)
Out[3]: 2/3


>
> rank4:~ was$ sage
> --
> | SAGE Version 2.8.13, Release Date: 2007-11-21  |
> | Type notebook() for the GUI, and license() for information.|
> --
> rank4:~ was$
>
>
> I.e., I get immediately dumped to the prompt.   Do you
> have any idea why?  (I haven't tried at all to figure out why.)
>
> If anybody wants to try this, just do
>
> wget http://sage.math.washington.edu/home/was/tmp/ipython-0.8.1.r2871.spkg
> sage -f ipython-0.8.1.r2871.spkg
>
> then run sage.
>
> To restore the previous version of Ipython, just do
>
> sage -f ipython-0.8.1.p1.spkg
>
>  -- William
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: pyx

2007-11-25 Thread William Stein

On Nov 25, 2007 4:06 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
>
> On Nov 25, 2007 5:19 AM, William Stein <[EMAIL PROTECTED]> wrote:
> >
> > Hello,
> >
> > Some of the Sage developers are considering including Pyx
> > (http://pyx.sourceforge.net/)
> > in Sage (http://sagemath.org).One issue is that I think Pyx is
> > currently licensed GPL v2 only.
> > Unfortunately Sage will soon have to start including several new
> > versions of GNU programs
> > such as GMP, GNUTLs, GSL, etc., and these are all licensed under "GPL
> > v3 or greater".
> > Also PolyBoRi (http://polybori.sourceforge.net/) will soon be in Sage,
> > and it is also "GPL v3"
> > licensed.  Unfortunately, it is a copyright violation to combine GPL
> > v2 and GPL v3 software
> > together and redistribute it, since the FSF decided to make GPL v3 be
>
> If it is true that SAGE is legaly unable to include GPL v2 only and
> GPL v3 only programs, not modifying them, not relicensing them, but
> just
> calling them from Python,

We're not talking about just calling them from Python.  If you take a
substantial
GPL v2 only Python library, take another substantial GPL v3 Python library, say,
then install them into Python, and redistribute the result, you're
creating a derived
work which according to GPL v2 must be GPL v2, but according to GPL v3 must
also be GPL v3.  Since v2 and v3 are mutually incompatible, this is a license
violation.

> then FSF did a terrible move, against the
> free software and against the end users, which GPL is supposed to
> protect.

Yes, FSF did indeed make a terrible move.   It seriously pisses me off.

Note that SAGE has *not* yet included any GPL v3 software yet -- if we
wanted to "take a stand against FSF though", it would require somebody forking
GSL, GMP, GNUtls, etc., etc..; I don't think anybody is seriously interested
in doing that.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Talk about SAGE at Les Trophees du Libre 2007 competition

2007-11-25 Thread William Stein

On Nov 25, 2007 11:52 AM, David Roe <[EMAIL PROTECTED]> wrote:
> I have to agree.  The slide where you list p-adic numbers, p-adic
> L-functions and p-adic height pairings kinda jumped out at me.  While I'm
> obviously interested in that kind of stuff, it won't appeal as much to a
> non-specialist audience.

Definitely completely delete that stuff.   I also recently
gave a talk (at an AMS meeting in Albuqueque), and it is critical to
*not* emphasize these sorts of things too much, as I learned the hard
way.

> One might argue that as things implemented natively in Sage, these will
> count toward the innovation category.  Perhaps, but then you should
> emphasize that aspect, and tone down the words that the judges will have
> never heard before (ie p-adics).  And I think Philippe does have a point
> that Sage does a lot in the innovation category that is more widely
> applicable.

Yes.  Like the notebook, interfaces to other programs such as Fortran,
Lisp, PARI, etc., using Python but making it usable for mathematics
via preparsing, very nice 2d graphics, etc.

william

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Sage: preparsing R. and ticket 1135

2007-11-25 Thread William Stein

On Nov 25, 2007 12:13 PM, Nick Alexander <[EMAIL PROTECTED]> wrote:
> Hi William,
>
> I've been thinking about
>
> http://sagetrac.org/sage_trac/ticket/1135
>
> for about 2 days now.  I can think of no obvious way to handle the
> following three cases:
>
> R. = PolynomialRing(ZZ) # names should be added
> R. = PolynomialRing(ZZ, 'x, y') # names should not be added
> R. = PolynomialRing(ZZ, 'a, b') # names should not be added
>
> smoothly.  In general, deciding whether the caller has included names
> is equivalent to the halting problem.  Due to Python's line-as-block
> syntax, preprocessing *cannot add newlines*, making it essentially
> impossible to add try/except blocks.  (I've tried -- if it works at
> the prompt, it fails in doctests.)
>
> What I think we should do is process "R. = PolynomialRing(ZZ)" to
>
> with __default_var_context('x, y'): R = PolynomialRing(ZZ); (x, y, )
> = R._first_ngens(2);
>
> And then have normalize_names in parent_gens.pyx check to see if
> there is a default var context in place when creating a ring with no
> names specified.  This would let "R. = PolynomialRing(ZZ, 'a,
> b')" be handled uniformly.
>
> The only reason to use with: rather than just assignment is that it
> is possible to guarantee default variable names do not remain in
> scope too long.
>
> Thoughts?
> Nick
>
> PS.  I'll try a quick implementation soon, but I don't want to waste
> time if there is some reason this is a bad idea.

If this works I think it would be an extremely good idea.   I can't
see a problem with it yet.  Though implementing it could suggest problems.

It also relates to some people's desire to have a mechanism for having
a default variable name, e.g., always use "x" or "x0,x1,x2,..." if
nothing is specified.

 -- William

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Axiom-developer] Re: AMS Notices: Open Source Mathematical Software

2007-11-25 Thread William Stein

On Nov 25, 2007 2:14 PM, C Y <[EMAIL PROTECTED]> wrote:
> >> Third, even if the NSF funded SAGE, how would those funds benefit the
> >> various subprojects like Axiom? Open source is mostly volunteer work
> >> done in "spare time". While it is amusing to daydream of being paid to
> >> develop open source computational mathematics on a full time basis, it
> >> seems unlikely that this could lead to more than just small
> >> grants. The expertise and continuity needed to do research work
> >> requires longer term funding.
> >
> > Great questions and comments.  There aren't easy answers.
> > One possibility is selling "support"... which could bring in
> > money to support people who are out of country.
>
> One possibility I've wondered about for a while would be getting a
> number of colleges to simultaneously agree to pool small amounts of
> money into an effort to support a couple of developers working on these
> programs - i.e. spreading the cost over many institutions rather than
> just having one or two carry all of the cost.  Start up a small
> nonprofit or some such to serve as the organization in question.  Surely
> if grant money can sometimes pay for commercial software it could go to
> pay for such an arrangement, particularly if the software was all
> guaranteed to be open.
>
> Is this something someone could set up with any hope of success?

I think something like this could be successful.  Actually, Magma has
been a very successful example of almost exactly this during the last
10 years.   They are a nonprofit, they get a pool of small amounts
of money from a few hundred (?) sites, and as a result hire about
5-10 fulltime people per year to work on Magma.   The only difference
is that Magma is not open.  But it is a useful successful real-life
example, which
should not be ignored:
  http://magma.maths.usyd.edu.au/magma/

William

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Axiom-developer] Re: AMS Notices: Open Source Mathematical Software

2007-11-25 Thread William Stein

On Nov 25, 2007 7:54 PM, root <[EMAIL PROTECTED]> wrote:
> >> >> Third, even if the NSF funded SAGE, how would those funds benefit the
> >> >> various subprojects like Axiom? Open source is mostly volunteer work
> >> >> done in "spare time". While it is amusing to daydream of being paid to
> >> >> develop open source computational mathematics on a full time basis, it
> >> >> seems unlikely that this could lead to more than just small
> >> >> grants. The expertise and continuity needed to do research work
> >> >> requires longer term funding.
> >> >
> >> > Great questions and comments.  There aren't easy answers.
> >> > One possibility is selling "support"... which could bring in
> >> > money to support people who are out of country.
> >>
> >> One possibility I've wondered about for a while would be getting a
> >> number of colleges to simultaneously agree to pool small amounts of
> >> money into an effort to support a couple of developers working on these
> >> programs - i.e. spreading the cost over many institutions rather than
> >> just having one or two carry all of the cost.  Start up a small
> >> nonprofit or some such to serve as the organization in question.  Surely
> >> if grant money can sometimes pay for commercial software it could go to
> >> pay for such an arrangement, particularly if the software was all
> >> guaranteed to be open.
> >>
> >> Is this something someone could set up with any hope of success?
> >
> >I think something like this could be successful.  Actually, Magma has
> >been a very successful example of almost exactly this during the last
> >10 years.   They are a nonprofit, they get a pool of small amounts
> >of money from a few hundred (?) sites, and as a result hire about
> >5-10 fulltime people per year to work on Magma.   The only difference
> >is that Magma is not open.  But it is a useful successful real-life
> >example, which
> >should not be ignored:
> >  http://magma.maths.usyd.edu.au/magma/
>
>
> My experience at schools has been that money is a scarce and very
> closely guarded resource.

Yep.  But schools do buy software... (they really don't like to so
much but they do it).

>  At one school, over 50% of the grant money
> disappeared into the "overhead" at the provost office before the
> money ever appeared.

At every university I have taught at (UCSD, Harvard, Washington), the
overhead that the university gets on any grant money I have is about 55%.
That is, if I would like to receive $1000 from the NSF, then the NSF has
to give me $1550.  This additional $550 is used by the university to pay
support staff, build buildings, roads, whatever.   The overhead rate varies
from university to university, since it is negotiated with the NSF.

> Either the initial grant had principal investigators at different
> schools (or one of the PIs moved), or a visiting scientist arrangement
> allowed someone on leave to join the project for a while, otherwise
> I don't recall other arrangements. However, my experience is quite
> limited.

I'm not sure what you're saying here, but at least with NSF funds
a researcher can pay any US citizen (or person with a soc security
number) working anywhere in the US
some money to work on a project with me.   They don't have to be
officially listed on a grant application or at my university. That said,
the grant budget would have to list that somebody somewhere would
be getting paid by the grant to do the specified work (one can't
spend NSF money they've received on anything they want -- it has
to be explicitly budgeted first).

> On the federal front, I believe the funding organizations are only
> capable of making grants to other organizations that have departments
> that handle funds, requiring the overhead.

I think that's correct.

> But giving money to open
> source is like giving money to the homeless. Even though 100% of it
> will go to support direct needs, it appears to disappear.

I'm not sure I follow.

In any case, here is a very concrete example of the NSF funding open source:

http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0713225

The money will go to pay for a postdoc for three years at UW (Clement Pernet
for the first 2 years), whose main work will be on open source software.
(I can't emphasize how much work it was to get the above grant...)

> Corporate funding has mostly (except TI?) shifted to more dedicated
> businesses (eg. Wolfram, Maplesoft, etc.) and I've already mentioned
> that I believe these will end. The question is, what will replace
> them and how will computational mathematics be impacted?

I have no idea.  I look forward to any thoughts you might have on this.
I have basically had no successful experience getting any funding for
open source math software from corporate sources.  That's where you've
done much better than me -- getting Scratchpad opened is in itself
getting a lot of "funding" in some sense.

> I am of two minds about the whole funding issue.
>
> On the one hand, funding would make i

[sage-devel] Re: patch for SymPy <--> SAGE conversion, please review

2007-11-25 Thread William Stein

On Nov 25, 2007 6:33 PM, David Roe <[EMAIL PROTECTED]> wrote:
> Addition not commuting there bothers me.  I can see why it's happening: a
> SymPy object doesn't call into the coercion system.  One possible solution
> is to have coercion map sage objects into sympy, so both s+o and o+s (in
> line 134 and 135 of test_sympy.py) would be SymPy objects.  Is SymPy and the
> SymbolicRing canonically isomorphic?  Can every SymbolicRing element be cast
> into SymPy?

I don't think so, since probably sage/maxima have special functions
sympy doesn't.  And even if it could be, the functions provided by
SymPy are different
than the ones provided by SymbolicRing.

If sympy('x') + x and x + sympy('x') are totally different in Sage I
will be unhappy about
that.Either the result has to always be in SymPy or always in Sage
or we have to get
an error and request that the user explicitly do a coercion.

We have to decide on a canonical map in exactly one direction, and I prefer

SymPy ---> SymbolicRing,

just because SymbolicRing is more native in Sage, and probably could be improved
so it would support any SymPy expression (yes -- I know this isn't
true now, unfortunately).

Now that I read through #1189 patch, I'm uncomfortable with

   return _verify_canonical_coercion_c(x,y)

The function _verify_canonical_coercion_c is supposed to be like

   assert(parent(x) is parent(y))

it's *never* supposed to be called when the parents are different -- if it is,
that means there is a bug.  However, you're using it to test whether the
parents are different, and if so do some other behavior (i.e., eventually raise
a TypeError).   So that makes me nervous.  It would be better to just
directly do a call to the have_same_parent function, like in the implementation
of _verify_canonical_coercion_c in coerce.pxi.

In summary, the way the code is written now will work fine now, but seems
a little abusive.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] doctest timing

2007-11-25 Thread William Stein

Hi,

Willem Jan Palenstijn created a clever system for timing each and every doctest.
This is now trac #1276:

   http://sagetrac.org/sage_trac/ticket/1276

I hope somebody will try it out and perhaps make it so adding it to sage is as
simple as me or Michael applying a patch :-).

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] flint build failure on itanium linux w/ gcc-4.2.1

2007-11-25 Thread William Stein
C
 -O3 -c mpn_extras-test.c -o mpn_extras-test.o
gcc -std=c99 -I/users/wstein/scratch/sage-2.8.14.rc1/local/include/
-I/users/wstein/scratch/sage-2.8.14.rc1/local/include
-I/users/wstein/scratch/sage-2.8
.14.rc1/local/include  -funroll-loops -fexpensive-optimizations  -fPIC
 -O3 -c ZmodF_mul.c -o ZmodF_mul.o
ZmodF_mul.c:91: warning: C99 inline functions are not supported; using GNU89
ZmodF_mul.c:91: warning: to disable this warning use -fgnu89-inline or
the gnu_inline function attribute
ZmodF_mul.c:616: warning: C99 inline functions are not supported; using GNU89
ZmodF_mul.c:695: warning: C99 inline functions are not supported; using GNU89
ZmodF_mul.c:857: warning: C99 inline functions are not supported; using GNU89
ZmodF_mul.c: In function '_ZmodF_mul_fft_convolve_modB2':
ZmodF_mul.c:656: error: unrecognizable insn:
(insn:TI 1048 1533 1038 39 (parallel [
(set (reg:DI 136 f8)
(asm_operands:DI ("xma.hu %0 = %2, %3, f0
xma.l %1 = %2, %3, f0") ("=&f") 0 [
(reg:DI 236 f108 [orig:529 in1_lo ] [529])
(reg:DI 235 f107 [orig:543 in2_lo ] [543])
]
 [
(asm_input:DI ("f"))
(asm_input:DI ("f"))
] ("ZmodF_mul.c") 617))
(set (reg:DI 137 f9)
(asm_operands:DI ("xma.hu %0 = %2, %3, f0
xma.l %1 = %2, %3, f0") ("=f") 1 [
(reg:DI 236 f108 [orig:529 in1_lo ] [529])
(reg:DI 235 f107 [orig:543 in2_lo ] [543])
]
 [
(asm_input:DI ("f"))
(asm_input:DI ("f"))
] ("ZmodF_mul.c") 617))
]) -1 (nil)
(nil))
ZmodF_mul.c:656: internal compiler error: in get_attr_first_insn, at
config/ia64/itanium2.md:1839
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
make: *** [ZmodF_mul.o] Error 1


-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: flint build failure on itanium linux w/ gcc-4.2.1

2007-11-25 Thread William Stein

On Nov 25, 2007 9:52 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
>
> This is a compiler bug which we've seen before. On Itanium the build
> should not be using the -funroll-loops flag.
>
> I guess we need to check for ia64 when setting the compiler flags?

The culprit is this line, which is now in patches/makefile:

CFLAGS = $(INCS) -funroll-loops -fexpensive-optimizations $(FLINT_TUNE) -O3^M

On ia64 FLINT_TUNE is properly set to not include funroll-loops, but
for some dumb
reason -funroll-loops is put in the CFLAGS explicitly in the
patches/makefile included
in Sage.

Changing the above line to

CFLAGS = $(INCS)  -fexpensive-optimizations $(FLINT_TUNE) -O3^M

completely fixes the problem.

As an aside, I don't think the .svn subdirectories should be included with
with flint-*.spkg.

A new flint spkg is at

  http://sage.math.washington.edu/home/was/tmp/flint-0.9-r1075.p2.spkg

And this is trac #1277

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] R Statistics Package into Sage !?

2007-11-25 Thread William Stein

Hi,

Mike Hansen and I have put some work into making it possible to very
easily use R from Sage, and are
even maybe considering including R in Sage.This is very likely
definitely not ready yet, but we
have an experimental package that might work.   It would be very
useful if some people could test
building it and report back whether or not it works, and how long it
takes to build.

All you have to do is:

(1) install R:

   $ time ./sage -f -m r-2.6.1rc.p1

NOTE: If the package name changes, type

   $ ./sage -experimental |grep r-

to see what the new name is.  Note that we put "-f -m" above so that the R build
directory gets left laying around in spkg/build/.  This is because
there are still some
issues with "make install" and R.Also, R hardcodes install paths
in the R command,
which is something we'll have to deal with before releasing R as an
official optional
package.

(2)
Then to test it out see if this works:

sage: import rpy
sage: rpy.r.t_test(range(100))
{'alternative': 'two.sided',
 'conf.int': [43.743490583064158, 55.256509416935835],
 'data.name': '0:99',
 'estimate': {'mean of x': 49.5},
 'method': 'One Sample t-test',
 'null.value': {'mean': 0.0},
 'p.value': 3.0537578007169442e-31,
 'parameter': {'df': 99.0},
 'statistic': {'t': 17.062204191756354}}


sage: time rpy.r.t_test(range(100))
CPU times: user 1.97 s, sys: 0.12 s, total: 2.08 s
Wall time: 2.09
{'alternative': 'two.sided',
 'conf.int': [499433.7061652476, 500565.2938347524],
 'data.name': '0:99',
 'estimate': {'mean of x': 49.5},
 'method': 'One Sample t-test',
 'null.value': {'mean': 0.0},
 'p.value': 0.0,
 'parameter': {'df': 99.0},
 'statistic': {'t': 1732.0482094941815}}



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: flint build failure on itanium linux w/ gcc-4.2.1

2007-11-25 Thread William Stein

On Nov 25, 2007 10:01 PM, Bill Hart <[EMAIL PROTECTED]> wrote:
>
> Does uname -m yield ia64? If so I'll add this to the latest revision
> of FLINT. I think currently it only checks for AIX.

Yes, uname -m yields ia64.

But the problem is entirely in sloppiness with sage's packaging for
itanium (i.e.,
not at all in your code).

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: R Statistics Package into Sage !?

2007-11-25 Thread William Stein

On Nov 25, 2007 10:07 PM, William Stein <[EMAIL PROTECTED]> wrote:
> Mike Hansen and I have put some work into making it possible to very
> easily use R from Sage, and are
> even maybe considering including R in Sage.This is very likely
> definitely not ready yet, but we
> have an experimental package that might work.   It would be very
> useful if some people could test
> building it and report back whether or not it works, and how long it
> takes to build.

Responding to myself.  R builds on ppc osx10.4 but rpy doesn't yet:

gcc -bundle -undefined dynamic_lookup
build/temp.macosx-10.3-ppc-2.5/src/rpymodule2061.o
build/temp.macosx-10.3-ppc-2.5/src/R_eval2061.o build/temp.macos
x-10.3-ppc-2.5/src/io2061.o
-L/Users/was/sage-2.8.14.rc1/spkg/build/r-2.6.1rc.p1/src/bin
-L/Users/was/sage-2.8.14.rc1/spkg/build/r-2.6.1rc.p1/src/lib -L/
Users/was/sage-2.8.14.rc1/local/lib/gcc-lib/powerpc-apple-darwin6.8/4.0.3/
-L/Users/was/sage-2.8.14.rc1/spkg/build/r-2.6.1rc.p1/src/bin
-L/Users/was/sage
-2.8.14.rc1/spkg/build/r-2.6.1rc.p1/src/lib
-L/Users/was/sage-2.8.14.rc1/local/lib/gcc-lib/powerpc-apple-darwin6.8/4.0.3/
-lR -lf95 -o build/lib.macosx-1
0.3-ppc-2.5/_rpy2061.so
/usr/bin/ld: warning can't open dynamic library: libRblas.dylib
referenced from:
/Users/was/sage-2.8.14.rc1/spkg/build/r-2.6.1rc.p1/src/lib/libR.dylib
(c
hecking for undefined symbols may be affected) (No such file or
directory, errno = 2)
/usr/bin/ld: Undefined symbols:
_dgemm_ referenced from libR expected to be defined in libRblas.dylib
_dsyrk_ referenced from libR expected to be defined in libRblas.dylib
_zgemm_ referenced from libR expected to be defined in libRblas.dylib
_dcopy_ referenced from libR expected to be defined in libRblas.dylib
_dtrsm_ referenced from libR expected to be defined in libRblas.dylib
_daxpy_ referenced from libR expected to be defined in libRblas.dylib
_dswap_ referenced from libR expected to be defined in libRblas.dylib
_ddot_ referenced from libR expected to be defined in libRblas.dylib
__g95_sign_r8 referenced from libR expected to be defined in libRblas.dylib
_dasum_ referenced from libR expected to be defined in libRblas.dylib
_dscal_ referenced from libR expected to be defined in libRblas.dylib
_dnrm2_ referenced from libR expected to be defined in libRblas.dylib
_drot_ referenced from libR expected to be defined in libRblas.dylib
_drotg_ referenced from libR expected to be defined in libRblas.dylib
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

real0m3.647s
user0m1.476s
sys 0m0.957s
sage: An error occurred while installing rpy-1.0-rc3-p1
Please email sage-devel http://groups.google.com/group/sage-devel
explaining the problem and send the relevant part of
of /Users/was/sage-2.8.14.rc1/install.log.  Describe your computer,
operating system, etc.
If you want to try to fix the problem, yourself *don't* just cd to
/Users/was/sage-2.8.14.rc1/spkg/build/rpy-1.0-rc3-p1 and type 'make'.
Instead type "/Users/was/sage-2.8.14.rc1/sage -sh"
in order to set all environment variables correctly, then cd to
/Users/was/sage-2.8.14.rc1/spkg/build/rpy-1.0-rc3-p1
(When you are done debugging, you can type "exit" to leave the
subshell.)



>
> All you have to do is:
>
> (1) install R:
>
>$ time ./sage -f -m r-2.6.1rc.p1
>
> NOTE: If the package name changes, type
>
>$ ./sage -experimental |grep r-
>
> to see what the new name is.  Note that we put "-f -m" above so that the R 
> build
> directory gets left laying around in spkg/build/.  This is because
> there are still some
> issues with "make install" and R.Also, R hardcodes install paths
> in the R command,
> which is something we'll have to deal with before releasing R as an
> official optional
> package.
>
> (2)
> Then to test it out see if this works:
>
> sage: import rpy
> sage: rpy.r.t_test(range(100))
> {'alternative': 'two.sided',
>  'conf.int': [43.743490583064158, 55.256509416935835],
>  'data.name': '0:99',
>  'estimate': {'mean of x': 49.5},
>  'method': 'One Sample t-test',
>  'null.value': {'mean': 0.0},
>  'p.value': 3.0537578007169442e-31,
>  'parameter': {'df': 99.0},
>  'statistic': {'t': 17.062204191756354}}
>
>
> sage: time rpy.r.t_test(range(100))
> CPU times: user 1.97 s, sys: 0.12 s, total: 2.08 s
> Wall time: 2.09
> {'alternative': 'two.sided',
>  'conf.int': [499433.7061652476, 500565.2938347524],
>  'data.name': '0:99',
>  'estimate': {'mean of x': 49.5},
>  'method': 'One Sample t-test',
>  

[sage-devel] Fwd: Compiling sage-2.8.14 on Opensuse-10.2

2007-11-25 Thread William Stein

Hi,

This is another report of a flint-related build issue.  Though this
isn't a problem with a compiler
bug as far as I can tell.  It's on opensuse.

Any ideas?

-- Forwarded message --
From: Jose G Pierre <[EMAIL PROTECTED]>
Date: Nov 25, 2007 10:49 PM
Subject: Compiling sage-2.8.14 on Opensuse-10.2
To: William Stein <[EMAIL PROTECTED]>


This is just to let you know that compilation of sage fails on
OpenSuse-10.2 since version 2.8.13( version 2.8.12 compiles ok). Here is
the relevant part of install.log:

gcc -std=c99 -I/windows/C/apps/sage-2.8.14/local/include/
-I/windows/C/apps/sage-2.8.14/local/include
-I/windows/C/apps/sage-2.8.14/local/include  -funroll-loops
-fexpensive-optimizations  -fPIC -funroll-loops   -O3 mpz_poly-tune.o
test-support.o profiler.o -o mpz_poly-tune mpn_extras.o mpz_extras.o
memory-manager.o ZmodF.o ZmodF_mul.o ZmodF_mul-tuning.o fmpz.o
fmpz_poly.o mpz_poly-tuning.o mpz_poly.o ZmodF_poly.o long_extras.o
-L/windows/C/apps/sage-2.8.14/local/lib/
-L/windows/C/apps/sage-2.8.14/local/lib/
-L/windows/C/apps/sage-2.8.14/local/include  -lgmp -lpthread -lm -lntl
gcc -std=c99 -I/windows/C/apps/sage-2.8.14/local/include/
-I/windows/C/apps/sage-2.8.14/local/include
-I/windows/C/apps/sage-2.8.14/local/include  -funroll-loops
-fexpensive-optimizations  -fPIC -funroll-loops   -O3 -c
fmpz_poly-profile.c -o fmpz_poly-profile.o
python make-profile-tables.py fmpz_poly
 File "make-profile-tables.py", line 23
   raise ValueError, "no file specified"
   ^
SyntaxError: invalid syntax
make[2]: *** [fmpz_poly-profile-tables.o] Error 1
make[2]: Leaving directory
`/windows/C/apps/sage-2.8.14/spkg/build/flint-0.9-r1075.p1/src'
Error building flint shared library.

real0m29.529s
user0m27.498s
sys0m0.824s
sage: An error occurred while installing flint-0.9-r1075.p1
Please email sage-devel http://groups.google.com/group/sage-devel
explaining the problem and send the relevant part of
of /windows/C/apps/sage-2.8.14/install.log.  Describe your computer,
operating system, etc.
If you want to try to fix the problem, yourself *don't* just cd to
/windows/C/apps/sage-2.8.14/spkg/build/flint-0.9-r1075.p1 and type 'make'.
Instead type "/windows/C/apps/sage-2.8.14/sage -sh"
in order to set all environment variables correctly, then cd to
/windows/C/apps/sage-2.8.14/spkg/build/flint-0.9-r1075.p1
(When you are done debugging, you can type "exit" to leave the
subshell.)
make[1]: *** [installed/flint-0.9-r1075.p1] Error 1
make[1]: Leaving directory `/windows/C/apps/sage-2.8.14/spkg'

real20m36.858s
user16m45.975s
sys1m24.669s

Regards
jgp




-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Axiom-developer] Re: AMS Notices: Open Source Mathematical Software

2007-11-25 Thread William Stein

On Nov 26, 2007 12:20 AM, root <[EMAIL PROTECTED]> wrote:
> > >> >> Third, even if the NSF funded SAGE, how would those funds benefit the
> ...[snip]...
> >> Either the initial grant had principal investigators at different
> >> schools (or one of the PIs moved), or a visiting scientist arrangement
> >> allowed someone on leave to join the project for a while, otherwise
> >> I don't recall other arrangements. However, my experience is quite
> >> limited.
> >
> >I'm not sure what you're saying here, but at least with NSF funds
> >a researcher can pay any US citizen (or person with a soc security
> >number) working anywhere in the US
> >some money to work on a project with me.   They don't have to be
> >officially listed on a grant application or at my university. That said,
> >the grant budget would have to list that somebody somewhere would
> >be getting paid by the grant to do the specified work (one can't
> >spend NSF money they've received on anything they want -- it has
> >to be explicitly budgeted first).
>
> I know that we hired students to do work. At CCNY there was an open
> source lab and we hired two people to work on Doyen. But student
> labor is not "any U.S. citizen". It really falls partially under the
> mandate of the University and was not hard to justify.

Yes, I could hire students as long as they are students at the university.
I was just pointing out that it's also possible to pay non-students.

> At IBM we had a specific contract with William Schelter to develop
> a version of AKCL that supported Axiom. I'm not sure that it would
> have been possible to do that under an NSF contract, although you
> know more about that than I do.

I don't know either.

> >> But giving money to open
> >> source is like giving money to the homeless. Even though 100% of it
> >> will go to support direct needs, it appears to disappear.
> >
> >I'm not sure I follow.
> >
> >In any case, here is a very concrete example of the NSF funding open source:
> >
> >http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0713225
> >
> >The money will go to pay for a postdoc for three years at UW (Clement Pernet
> >for the first 2 years), whose main work will be on open source software.
> >(I can't emphasize how much work it was to get the above grant...)
>
> Again, this tends to fall into the NSF-University tangle. If Clement
> were hired to sit at home and develop open source software without
> the association to UW I'm not sure the grant would have passed muster.
> I admit I don't know the details.

This is solidly in the "NSF-University tangle".  In fact, a critical component
is that Clement will be a research postdoc at the university, contribute
to the research environment there, write papers, etc.   The NSF really
cared about all that.

> The fact that he is working on open source is incidental, in my view.
> NSF work is government work and is supposed to be freely available
> since it is paid for by tax money.

Unfortunately, that's not at all how things actually work though.
Researchers funded by *NSF grants* are usually under no obligation
to make their work freely available.   I probably wish something more
like this were the case, but it isn't in general.  That's just the current
reality of how things work.

> The distinction I'm trying to draw here is that there is a difference
> between doing NSF work that is open sourced and doing open source work
> that is NSF funded. The former is simply a side-effect of the proposal.
> The latter is fundamental.

I view the Sage postdoc, i.e., what I linked to above, as the latter.  It
was NSF funding a proposal specifically to support some open source
software development.  I'm very appreciate to them for being open
minded and funding it.  The abstract for the award says: "This project
involves creating open source mathematical software that plays a key
roll in research in cryptography, number theory, geometry, and other
area. It promotes the progress of science by making many highly
optimized research-oriented algorithms widely available, and making it
easy to simultaneously create and work with objects defined in almost
any mathematical software package. This project also stimulates new
forms of collaboration between researchers in diverse areas of
mathematics, and between undegraduates, graduate students, and
professors. "

> So getting an NSF grant to develop software for a project and then
> opening the source (see Magnus, one of my sourceforge projects) is
> perfectly reasonable. It happens often. Indeed Macsyma was started
> that way, as near as I understand it. I can see where Sage could
> be funded under this model.
>
> But doing open source (that is, non-university, non-commercial,
> privately-supported) prior to the grant and getting continued work
> funded is unknown to me. I see that Axiom falls under this model.
> (Curiously, (D)ARPA and NSF funded Axiom when it was at IBM, which
> presumably had slightly more financial resources than me.)

I don't

[sage-devel] Re: An error occurred while installing cremona-20071116.p0

2007-11-26 Thread William Stein

On Nov 25, 2007 11:51 PM, Zhang Long <[EMAIL PROTECTED]> wrote:
> An error occurred while installing cremona-20071116.p0, see install.log
>
> Computer:
>
> Cpu: Intel Pentium 4 3.00GHZ
>
> Ram 1G
>
> OS: linux 2.6.22-2-686 , debian testing

You're using gcc-4.2.3, which sage-2.8.13 doesn't support.
*Fortunately* we just released sage-2.8.14, which does support
gcc-4.2.x:

   http://sagemath.org/dist/src

>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: pyx

2007-11-26 Thread William Stein

On Nov 26, 2007 3:04 AM, Joerg Lehmann <[EMAIL PROTECTED]> wrote:
> Hello,
>
> On 24.11.07, William Stein wrote:
> > Some of the Sage developers are considering including Pyx
> > (http://pyx.sourceforge.net/)
> > in Sage (http://sagemath.org).One issue is that I think Pyx is
> > currently licensed GPL v2 only.
>
> A bit embarrassingly, the license information on our web page is not
> entirely correct. If you look into the PyX sources, you will find
> out that PyX is licensed under GPL v2 and later. We also do not intend
> to change this. So, license wise there should be no problem for you to
> include PyX in Sage.
>
> We will correct the license information on the web page, as soon as
> possible.
>

Excellent.   This is exactly what I had hoped for.  Thanks!

By the way, if you have any thoughts about how / if / in what way Pyx should or
could be used from sage please let me know.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: patch for SymPy <--> SAGE conversion, please review

2007-11-26 Thread William Stein

On Nov 26, 2007 6:34 AM, Joel B. Mohler <[EMAIL PROTECTED]> wrote:
> Well, if I had to pick a nasty point to sage I would agree that it's huge-ness
> is seriously annoying.  The slow import of "sage.all" really kills the
> pleasure for writing python programs which you want to use from bash, but I
> realize that I'm a bit unusual to actually use it that way.  I would love

Ondrej says:
> And I think SAGE will eventually get there. The speed of import can be
> cured, by importing things on the fly, etc. etc.

Ondrej is 100% right.

This slow import is not necessarily a function of sage being huge, but of nobody
lately going through and auditing what happens when one does

  $ sage -ipython
  >>> import sage.all

I've done this in the past several times and each time greatly sped things up.
Doing this can be helpful:

$ echo "%prun import sage.all" |sage -ipython

Then commenting things out, etc., etc.

For example, importing numpy takes (or at least used to take) a surprisingly
long time, so I have to be careful to make sure Sage doesn't import that
by default on startup.   Same goes for matplotlib -- never ever import that
at the module level -- make the import lazy, and things are much faster.
I think the sage startup time could be greatly reduced with some work.

> more modularity, but I'm not convinced it's possible.  I mean, this huge-ness
> is a wart in many ways, but quite frankly I've not seen any other mathematics
> package which I would look forward to using for a lifetime of mathematics (at

When I'm actually doing real work, research, teaching, etc. this
hugeness is not a wart to me at least in any way at all.  It means that
the resources are there to do what I want.  Instead of hunting around for,
installing, building, learning new programs, I get work done.To quote
Michael Stoll when he switched from lots of little tools to Magma 10 years
ago: "it is very nice to have everything under one roof".  He cares about
getting research done. Period.  And could care less about "unix philosophy".
At the end of the day, I tend to agree.

> I am wondering though what kind of support for matrices and polynomials (for
> examples) you might envision with sympy.  I see that you currently have
> support listed for these things, but if it's pure python the sage equivalents
> are going to be much faster.  It seems that you could gain so much by sharing
> these goals with sage.

The sage equivalents only work when all coefficients of the polynomial lie
in a specific ring.Sympy does polynomial multiplication generically, which
requires generic files.

> and we really need a symbolic alternative -- sympy seems just the thing.  I
> think sage's symbolic side should be strong enough that we really shouldn't
> have to break out the special polynomial declarations unless you are doing
> something very special purpose.  This might require a very very smart
> symbolic engine to detect when it is working with polynomials and use
> polynomial algorithms behind the scenes instead of more generic symbolic
> ones.  I think if we could pull that off, then even the number theorists
> might find themselves working with the symbolic expressions.  This would be a
> huge step towards mathematica level friendliness imo.

You're right.  In fact I already work with symbolic expressions
frequently, when it makes sense to do so.  :-)

But personally my first priority is creating a viable alternative to
the big systems, before
trying to do some sort of open ended research system that's really
hard to write.

Ondrej:
> which goes into my patch, with x==Spec(QQ) and y==5, it pass all my
> ifs, and then it segfaults. The workaround is to check that they have
> the same parent, or just call _verify_canonical_coercion_c, that does
> exactly that for me.

It is wrong / abusive to call _verify_canonical_coercion_c because that
function is never supposed to fail.  You should check that the parents
are the same explicitly and if not pass through to the next case.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Axiom-developer] Re: AMS Notices: Open Source Mathematical Software

2007-11-26 Thread William Stein

On Nov 26, 2007 10:01 AM, root <[EMAIL PROTECTED]> wrote:
> ==> Ed Borasky writes:

> >> There is nothing particularly special about mathematics software that
> >> makes it winning in a similar sense impossible, as much as Wolfram
> >> would argue that (as he often used to do in interviews I've read online).
> >
> >I disagree. Mathematics software is the most difficult software to
> >write, and it's market is very limited. And *symbolic* mathematics
> >software / theorem proving are more difficult to write than numeric
> >software. I've never used Mathematica, and only briefly used Maple, so I
> >can't really compare either of them with Axiom in the same sense as I
> >compared OpenOffice with Microsoft Office, Firefox with Internet
> >Explorer, or the Linux desktop with the Windows desktop in the context
> >of a corporate workstation. But again, I'm guessing that people who can
> >cost-justify Mathematica or Maple will keep them in business and "winning."

Mathematical software is indeed difficult to write.  You're right --
what I hope to
accomplish with the Sage project is impossible.  I don't care; I'm going to do
it anyways.

> Clearly you've not studied your "Art of War" by Sun Tsu. :-)

Actually I have.   Evidently my interpretation of it is much different
than yours.

> A frontal attack against a strongly held point never wins.  You are
> trying a direct head-to-head competition against a well financed,
> heavily backed position. As Ed points out, even if you *could* match
> the 3Ms point for point in the usual checklist feature game there are
> still forces which make it difficult, if not impossible, for people to
> use your software. You plan to march onto the field of battle,
> confront the enemy strength-to-strengh, and win by force of arms.
> That's not strategic thinking, and clearly not a successful strategy.
>
> You let the enemy define your tactics.  That is, if MMA develops a new
> parallel matrix multiply (opening a new wing of the battle), you must
> turn to confront this and apply effort to develop a similar checklist
> point. Since they are larger, faster, and better financed it is
> unlikely that you can match them continuously on every point. Linux
> plays this game, and loses, on the desktop. That's not strategic
> thinking, and clearly not a successful strategy.
>
> You train recruits for your enemy. Because you fight the same battle
> on the same turf with the same tactics, the people you lose to industry
> are perfectly trained to compete against you. Thus the person who
> writes the great new prototype harmonic analysis software for his
> thesis (giving you a new checklist point nobody competes with), then
> this same person is perfect for the 3Ms to hire. In fact, the best use
> of his talent would be to develop a better version of his thesis work
> and add it as a new, better checklist feature point. Thus, you trained
> and financed your enemy. That's not strategic thinking, and clearly
> not a successful strategy.
>
> You give away your material freely to your enemy. Because you work in
> open source and you encourage publication of your work the enemy can
> see everything. But the publications are tiny (5 pages) and the thesis
> work is obscure so it will take much time to convert this into a
> useful "product". The 3Ms have the idea, the time, and the money.  You
> gave it all to them because you published the idea, trained the
> people, and bought 3M's software "for the department". That's not
> strategic thinking, and clearly not a successful strategy.
>
> You let the enemy use your own strength against you. What's to stop
> the 3Ms from becoming useable with the Sage front end?

Nothing.  In fact, one of the main features of the Sage front end
already is that it
can be used with the 4Ms (don't dismiss Magma, which belongs in
there -- it's very good quality commercial software).

>  How hard would
> it be for them to define "plug-ins" that either use the MMA workbook
> browser or the full Maple engine?

Trivial, since we already do that.

> If mathml allows one to transfer
> (content-free) equations from one system to another, cannot one of
> those systems be one of the 3Ms?

Yes.

> Thus they gut your whole system.

No they don't.  Sage is GPL'd.  Any improvements or changes they make to Sage
must be given back.

> They can make the claim that they "work with Sage" which allows them
> to sell licenses to locations where you've "won". That's not strategic
> thinking, and clearly not a successful strategy.
> I don't know why you've chosen to benefit the enemy
> but I can't prevent it.

True, you can't.But honestly I really don't see the 4M's as the
enemy.  They are four high quality
valuable tools for mathematical computation.  I love mathematics and
doing computation
in the context of mathematics, and at some level I really like using
any mathematical
software.  With Sage I want to provide a viable free open source
alternative, not put the
4M's out of business.  Softw

[sage-devel] Re: patch for SymPy <--> SAGE conversion, please review

2007-11-26 Thread William Stein

On Nov 26, 2007 1:11 PM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
> exactly what I need, but fortnuately, this will improve,
> when SAGE becomes more famous, and more people like Michael Abshoff
> are going to join. I am looking forward to a time,
> when I do in Debian:
>
> $ apt-get install sage
> $ python
> Python 2.5.1 (r251:54863, Aug 17 2007, 00:51:07)
> [GCC 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from sage.all import *
> >>> print x**2
>
> And I could use anything that SAGE wraps. Everything under one hood. Period.

Indeed!  This will be even better in the direction I like.  The key
thing you (=Ondrej)
want really is that it is all under *your* existing roof (i.e., Debian) too.

> > > and we really need a symbolic alternative -- sympy seems just the thing.  
> > > I
> > > think sage's symbolic side should be strong enough that we really 
> > > shouldn't
> > > have to break out the special polynomial declarations unless you are doing
> > > something very special purpose.  This might require a very very smart
> > > symbolic engine to detect when it is working with polynomials and use
> > > polynomial algorithms behind the scenes instead of more generic symbolic
> > > ones.  I think if we could pull that off, then even the number theorists
> > > might find themselves working with the symbolic expressions.  This would 
> > > be a
> > > huge step towards mathematica level friendliness imo.
> >
> > You're right.  In fact I already work with symbolic expressions
> > frequently, when it makes sense to do so.  :-)
> >
> > But personally my first priority is creating a viable alternative to
> > the big systems, before
> > trying to do some sort of open ended research system that's really
> > hard to write.
>
> Agree.
>
> >
> > It is wrong / abusive to call _verify_canonical_coercion_c because that
> > function is never supposed to fail.  You should check that the parents
> > are the same explicitly and if not pass through to the next case.
>
> Agree. That's why I am proposing the fix here (at the end of the message):
>
> http://groups.google.com/group/sage-devel/msg/752742fd202f6868
>
> as opposed to Robert's proposal here:
>
> http://groups.google.com/group/sage-devel/msg/d0aab9c309a3aa29
>
> So if there are no more objections (Robert?) I'll implement my
> proposal and the patch will be ready.

Good.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: An error occurred while installing cremona-20071116.p0

2007-11-26 Thread William Stein

On Nov 26, 2007 1:11 PM, fwc <[EMAIL PROTECTED]> wrote:
> dortmund.de> wrote:
> > this bothered me enough to finally investiagte. So far I found out:
> >
> >  * this is an issue only on OSX 10.4, OSX 10.5 is not effected
> >  * It isn't the gmp's fault, but libntl.dynlib hardcodes the path to
> > gmp somehow - I don't know why and how yet.
> >  * a solution is to force a rebuild of NTL if one moved the location
> > of the Sage installation
> >
> > Francis, could you verify that this fixes the issue for you?
>
> I can't check it I'm afraid because (1) having installed Sage 2.8.14
> from scratch, I've deleted Sage 2.8.12 which was refusing to upgrade;
> (2) I don't think I have the expertise to implement what you suggest.
>
> Sorry

No problem.  We just want to make sure you're up and running
without problems!

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: patch for SymPy <--> SAGE conversion, please review

2007-11-26 Thread William Stein

On Nov 26, 2007 7:51 PM, Robert Bradshaw <[EMAIL PROTECTED]> wrote:
>
> On Nov 26, 2007, at 2:04 PM, Ondrej Certik wrote:
>
> >>
> >> I still think _verify_canonical_coercion_c is the wrong thing to use
> >> here, there is no reason that x._sage_() and y._sage_() should have
> >> the same parent (e.g. one could be an element of SR, the other a sage
> >> Integer), and at this point we should be able to succeed even if they
> >> don't have the same parent by (re-)calling the Sage coercion model on
> >> the Sage elements.
> >
> > Yes, I also think it's a bug somewhere else in SAGE. If you are able
> > to figure it out,
> > I am curious about it. Try my first patch, that will segfault. My
> > second patch passes fine.
>
> See
>
> http://sagetrac.org/sage_trac/attachment/ticket/1189/sympy-coerce.patch
>
> This on top of 2.8.14 + sympy.patch works great. (I wasn't able to
> cleanly apply sympy2.patch which looks like it had some useful non-
> coercion stuff in there as well.) I'm curious about your infinite
> recursion bug for looking up the _sage_ attribute...

This is getting discussed to death but wouldn't it make more sense
to replace:

if not PY_TYPE_CHECK(x, SageObject) or not PY_TYPE_CHECK(y, SageObject):
  x = x._sage_()
  y = y._sage_()
  return self.canonical_coercion_c(x, y)

by

cdef bint tx = PY_TYPE_CHECK(x, SageObject)
cdef bint ty = PY_TYPE_CHECK(y, SageObject)

if not tx or not ty:
 x = x if tx else x._sage_()
 y = y if ty else x._sage_()
 return self.canonical_coercion_c(x, y)

Since otherwise you're very likely calling _sage_() on a sage object (in your
version of the code).

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: [Axiom-developer] Re: AMS Notices: Open Source Mathematical Software

2007-11-26 Thread William Stein

On Nov 26, 2007 8:06 PM, M. Edward (Ed) Borasky <[EMAIL PROTECTED]> wrote:
> root wrote:
> > The NSF, INRIA, and others cover it.
> > These are the same people who won't fund Axiom because "it competes
> > with commercial software". Which shows that they don't understand
> > that Axiom is NOT trying to compete; and that funding competition
> > to commercial software implies funding BOTH sides of the effort.
>
> Ah, but given the difficulty of writing said software with any licensing
> scheme, whether it be closed-source commercial, "academic free but
> industrial users pay", GPL, BSD, MIT, etc., why would a non-profit
> organization like the NSF want to get dragged into licensing disputes,
> questions about tax exemptions, intellectual property battles, and other
> things that a society full of attorneys "features"? The world is
> littered with the corpses of organizations that sued other organizations
> bigger than they were. I don't know about INRIA, but I really doubt the
> NSF could withstand a lawsuit from Wolfram or Maplesoft.

(1) The NSF does fund research that directly results in open source
mathematical software development.They've funded Macaulay2,
they've funded me, and they've funded other scientists. NIH also
funds software development:
   http://grants.nih.gov/grants/guide/pa-files/par-05-057.html

(2) Regarding NSF withstanding a lawsuit -- I don't know.
NSF is a very powerful and impressive foundation.  They have
a 6 billion dollar annual budget:
   http://nsf.gov/about/congress/110/highlights/cu07_0308.jsp#final
compared to Mathematica which probably has maybe $150
million per year in revenue.

(3) People at the NSF do think about issues such as
"licensing disputes, questions about tax exemptions, intellectual
property battles, and other things", and take them seriously.

> > In the long term (think next century) does it benefit computational
> > mathematics if the fundamental algorithms are "black box"?
>
> Mathematics has a long history of independent discoveries by researchers
> working on different problems. Think of Gauss and Legendre, for example,
> and least squares. In other words, fundamental algorithms will get
> re-invented. The FFT is another example -- radio engineers were doing
> 24-point DFTs using essentially the FFT algorithm long before Cooley and
> Tukey, and both Runge and Lanczos published equivalents.

I think has a point; though there are examples like yours, there are also
many interesting powerful algorithms that do exist only in closed proprietary
software, and it could be a long time until they are rediscovered and
published.

> > Suppose someone creates a
> > closed, commercial, really fast Groebner basis algorithm, does not
> > publish the details, and then the code dies. It can happen. Macsyma
> > had some of the best algorithms and they are lost.
>
> 1. What do you think the real chances are of a "really fast Groebner
> basis algorithm" are? I'm by no means an expert, but I thought the
> computational complexity odds were heavily stacked against one.

Since "really fast" isn't well defined, I'll just give you a practical example
of exactly this.   For the last 5 years there have been exactly
two implementations of a "really fast Groebner basis algorithm", namely
F4 (and its variant F5).  One implementation is closed source and is
only available via purchasing Magma.  The other is closed source and
is only available via purchasing Maple. The one in Magma took
Allan Steel (who is in my mind easily one of the top 5 mathematical
software coders in the world today) about 5 years to implement, even with
full access to all the papers that Faugere wrote on his algorithm.  The
one in Maple was implemented by Faugere, and is of course also closed
source.   There have been numerous (maybe a dozen?) attempts by
open source authors to implement a really usable F4, but nobody has
yet come close so far as I can tell.   (Ralf Phillip Weinmann is working
on a promising open source one right now, maybe...)

The F4 in Magma is really incredibly fast at many standard benchmark
problems.   See the timings here:
   http://magma.maths.usyd.edu.au/users/allan/gb/

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] cherrypy

2007-11-26 Thread William Stein

Hi,

Timothy Clemans pointed out a very interesting powerful and *simple*
Python web application
server today to me called cherrypy:
 http://www.cherrypy.org/
It's actually very easy to install (just grab their tarball and do
"sage -python setup.py install").
To try it out with some nontrivial sage code, after installing it put this in
a notebook cell (no {{{'s, of course):

{{{
import cherrypy

class HelloWorld(object):
def index(self):
return str(sage0('factor(293840923840823)'))
index.exposed = True

cherrypy.quickstart(HelloWorld())

}}}


The sage0 business is needed because cherrypy is multithreaded, so can't run
sage code directly, so the sage code runs in another process.

Anyway, if you shift enter the above then surf to http://localhost:8080 you'll
see something.


Timothy, if you make several interesting mathematical examples which can be
pasted into a notebook cell like above, you might want to post some to
this thread.


-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: implementation of Rencontres numbers

2007-11-27 Thread William Stein

On Nov 26, 2007 11:05 PM, Dan Drake <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I don't know if this is the appropriate place to submit code, but...
>
> The combinat.py file lists Rencontres numbers in the TODO section.
> Here's a function that implements Rencontres numbers. I tried to copy
> the documentation style, but feel free to edit as necessary.

Hi,

I've cleaned up your code and posted it as a patch here:
  http://trac.sagemath.org/sage_trac/ticket/1290

I also noticed a subtle issue (=bug with sage) with the way you wrote
the code below
to use the symbolic sage code, which would lead to a bug when the
input is very large!I've posted a trac ticket about that here:
   http://trac.sagemath.org/sage_trac/ticket/1289
This #1289 will be good cannon fodder for bug day.

William

>
>
> def rencontres(n, k):
> r"""
> Returns the Rencontres number D(n,k), the number of permutations of
> {1, 2,..., n} with k fixed points.
>
> EXAMPLES:
> Because 312 and 231 are the two permutations of {1, 2, 3} with 0 fixed
> points, we have:
>
> sage: rencontres(3,0)
> 2
>
> Also:
>
> sage: rencontres(6,1)
> 264
>
> REFERENCES:
>
> http://en.wikipedia.org/wiki/Rencontres_number
>
> Sequence A008290 in the OEIS.
> """
> if (n - k) % 2 == 0:
> return binomial(n, k) * ceil(factorial(n - k)/e)
> else:
> return binomial(n, k) * floor(factorial(n - k)/e)
>
>
> --
> ---  Dan Drake <[EMAIL PROTECTED]>
> -  KAIST Department of Mathematical Sciences
> ---  http://math.kaist.ac.kr/~drake
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFHS8G+r4V8SljC5LoRAiIyAKCU+DfZU/2NA2qUBrrjz/ohyHxWFACfTiEJ
> zwvYBTCUp0x/4nVpcfFViR4=
> =Q2Ew
> -END PGP SIGNATURE-
>
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: implementation of Rencontres numbers

2007-11-27 Thread William Stein

On Nov 27, 2007 10:47 AM, Jaap Spies <[EMAIL PROTECTED]> wrote:
>
> Jaap Spies wrote:
>
> >
> > Maybe it is interesting to know that you can do this with integer arithmetic
> > (and permanents!):
> >
> > Let J_n be the n x n matrix with all 1's and I_n the identity matrix,
> > then the number of recontres or derangements with no fixed points is
> >
> > D_{n,0} = per(J_n - I_n) (per being the permanent of the matrix)
> >
> > Applying Ryser's algorithm one gets the formula:
> >
> > D_{n,0} = sum_r=0^n-1 (-1)^r * binomial(n,r) * (n-r)^r * (n-r-1)^{n-r}
> >
> > and than
> >
> > D_{n,k} = binomial(n,k) * D_{n-k, 0}
> >
> >
>
> This is my favorite application of permanents: counting the number of
> permutations with restricted positions!

That is indeed very beautiful.It's not so good from an efficiency
point of view though:

sage: time a=derangements(1,0)
CPU time: 45.73 s,  Wall time: 47.70 s
sage: time b=rencontres_number(1,0)
CPU time: 1.11 s,  Wall time: 1.21 s

at least not practically.  This might be because factorial and
multiprecision arithmetic are both so fast in sage.

>
> See:
>
> encontres
> system:sage
>
> {{{id=0|
> def derangements(n, k):
>  if n == 0 and k == 0:
>  return 1
>  if n == 1 and k == 0:
>  return 0
>
>  if k == 0:
>  lst = [(-1)^r * binomial(n, r) * (n-r)^r * (n-r-1)^(n-r) for r in 
> range(n)]
>  return sum(lst)
>  else:
>  return binomial(n, k) * derangements(n-k, 0)
> }}}
>
> {{{id=1|
> derangements(3,0)
> ///
> 2
> }}}
>
> {{{id=2|
> derangements(6,1)
> ///
> 264
> }}}
>
> {{{id=3|
> for i in range(12):
>  for j in range(i+1):
>  print derangements(i,j),
>  print
> ///
> 1
> 0 1
> 1 0 1
> 2 3 0 1
> 9 8 6 0 1
> 44 45 20 10 0 1
> 265 264 135 40 15 0 1
> 1854 1855 924 315 70 21 0 1
> 14833 14832 7420 2464 630 112 28 0 1
> 133496 133497 66744 22260 5544 1134 168 36 0 1
> 1334961 1334960 667485 222480 55650 11088 1890 240 45 0 1
> 14684570 14684571 7342280 2447445 611820 122430 20328 2970 330 55 0 1
> }}}
>
> {{{id=4|
> derangements(0,0)
> ///
> 1
> }}}
>
> {{{id=5|
> derangements(1,0)
> ///
>
> 0
> }}}
>
>
> Jaap
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



[sage-devel] Re: Sage Ticket #799 (alleged Tachyon bug)

2007-11-28 Thread William Stein

On Nov 27, 2007 9:13 AM, Leif Hille <> wrote:
> William -
>
> REF: http://sagetrac.org/sage_trac/ticket/799
>
> I dunno if this is the right way to comment on bugs however, I ran into the
> same problem as the ticket's author. This "bug" ticket is part bug, part
> user error (or poor documentation).

Hi, I've added your comments below to the above trac ticket.  They will
be very very helpful when we fix #799 (perhaps on bug day this Saturday...?)
Thanks!

>
> (1) The user error part: In order to create a texture using a number other
> than zero, you have to pass in a .texfunc() object.
>
> (2) The bug part: There is a problem with the plot/tachyon.py function that
> prevents additional key parameters from being passed in.
>
> Explanation:
> t.texture('grey', color=(.5,.5,.5), texfunc=0)  --> this works
> t.texture('dk_grey', color=(0.8,0.8,0.8),textfunc=1) --> this causes
> subsequent t.show() command to fail.
>
> Solution:
> (1) While the t.texture(...) function allows for 'texfunc=0' as an argument,
> for any number greater than 0, it expects a texfunc object.
>
> ie:
> r=t.texfunc(2)
> t.texture('grey', color=(.5,.5,.5), texfunc=r)
>
> This is not evident from the inline help & the interface doesn't complain
> when it's passed bad input - it just fails when t.show() is called (verbose
> mode reveals the tachyon parser's complaints).
>
> (2) The bug is that some of the predefined numbered textures require
> additional string input (eg. a file name for a texture map image/data)
> immediately after the texture number.  The texture number is passed in as a
> number.  I've made a workaround, making the "type" parameter into a
> string(see changes below), allowing for filenames to be specified when the
> texture number calls for it.  This is still a little troublesome in that
> because it's not obvious to me how to reference filenames of graphics
> created within Sage (maybe there should there be a toplevel "fileref" method
> to get a filesystem path reference to existing graphic image or dataset).
> The same filereference problem presents if the user wants to use another
> graphic or datafile as a texture map.
>
> ##from : .../plot/tachyon.py...
>  class Texfunc:
>   def __init__(self, type=0,center=(0,0,0), rotate=(0,0,0), scale=(1,1,1)):
>  self._type = type
>  self._center = center
>  self._rotate = rotate
>  self._scale = scale
>
>   def str(self):
>  if type == 0:
>   return "0"
> #  Old Code
> # return """%d center %s rotate %s scale %s"""%(self._type,  #
> <-- number
> #   >tostr(self._center),
> #   >tostr(self._rotate),
> #tostr(self._scale))
> # new code:
>  return """%s center %s rotate %s scale %s"""%(tostr(self._type),
> # <-- string
>>tostr(self._center),
>>tostr(self._rotate),
> tostr(self._scale))
>
>
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~--~~~~--~~--~--~---



  1   2   3   4   5   6   7   8   9   10   >