Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-12 21:33, Ursula Whitcher wrote:

On 11/11/2014 4:46 AM, Jeroen Demeyer wrote:


* The sentence A recent tweak of another part of Sage’s matrix code had
changed the definition of “small n” to n = 63. is wrong:
what had changed is the bound on p to compute the determinant over GF(p)
using LinBox (for larger p, we compute determinants over GF(p) by
lifting to ZZ): it used to be the case that the bound in LinBox depended
on n, this was changed to a fixed bound for p which was less than the
old value for n = 63.


What's the fixed bound?


2^23, so the largest prime number is 8388593.

--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Jori Mantysalo

On Wed, 12 Nov 2014, Travis Scrimshaw wrote:


That's exactly what I'm saying. With this change, that may not occur if
someone had overwritten interval() with some slightly different behavior in
a subclass and was calling closed_interval(), they would experience an
unexpected change (or, perhaps more likely, a major slow-down). It would be
calling the interval() of FinitePoset rather than the subclass.


rsk.py contains robinson_schensted_knuth = RSK, posets.py contains 
Posets_all = Posets and poset_examples.py contains posets = Posets. 
Does same thing happen with those also?


 * * *

As I wrote to ticket, it seems a little confusing for me to have 
documentation with two functions, both with examples and so, that actually 
does same thing. Maybe docstring of other could be only Alias for 
linkxxx()/link.?


--
Jori Mäntysalo

--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-12 23:09, William Stein wrote:

There's also maybe 5000+ (??) lines of examples in other documentation
You also forgot Cython files. I get a total of 239600 doctests (not 
counting the non-English documentation since those are translated files):

$ find src/sage src/doc/en -type f |xargs cat | grep -c '^ *sage: '
239600

Of course, some are optional/not tested/known bug tests or examples in 
.txt files (there are several old todo.txt and notes.txt files lying around)


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread mmarco
IS that individual lines of doctests or doctest units themselves?

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-13 10:29, mmarco wrote:

IS that individual lines of doctests or doctest units themselves?

I don't know what a doctest unit is, but the answer is:
lines matching /^ *sage: /

Note that this count *excludes* the Sage notebook, since that's a 
separate project (at least on paper).


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

where Sage tried to find det(A) “modulo a few additional primes”. When a
prime p is large, Sage computes determinants (mod p) by lifting to Z. Sage
defines “large p” by reference to the size n of the matrix in question. A re-
cent tweak to another part of Sage’s matrix code had changed the definition
of “large p” to depend only on a constant for n ≤ 63.
Something does not depend on a constant, something is a constant. 
And the for n = 63 can be removed, it is a constant not depending on n.


To clarify: the bound for large p *used* to depend on n but recent 
changes before #14032 changed it to a constant bound not depending on n 
at all.


The reason that determinant() only broke for n = 63 is that the old 
non-constant bound was larger than the new constant bound for n = 63 only.


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-12 21:35, Ursula Whitcher wrote:

Future releases of Sage will use FLINT, the Fast Library for Number The-
ory, to compute the determinants of integer matrices.
Today's future version will very likely be the current version when 
this article is published.


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Samuel Lelievre

2014-11-12 21:18:56 UTC+1, Ursula Whitcher wrote:

All I can see from trac is that everything happened 22 months ago.  How 
 do I find how long it took to go from positive review to stable release?


Once logged into sage's trac, follow the top-right link to Preferences
then go to the Date and time tab.

There you can set date relative/absolute format to absolute,
and you will get absolute dates rather than how long ago.

The Date and time tab has two more settings,
- time zone, which has UTC among the options,
- date format, which has ISO 8601 as an option.

SL

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Dr. David Kirkby (Kirkby Microwave Ltd)
On 12 November 2014 20:35, Ursula Whitcher whitc...@uwec.edu wrote:

 Article at

 http://people.uwec.edu/whitchua/notes/sagebugprocess.pdf

 has been updated based on feedback.

 UAW


A bit more feedback -  from a non-mathematician.

1) It would be better if rather than over-writing an old version of
your document, you wrote a revised version and called is
sagebugprocess-vesion-2 or similar.

2) Change Working mathematicians have an alternative to comparing the output
of di erent(sic) black boxes: 

to Working mathematicians have a much better alternative than to
compare the output
of different black boxes, which may well share some of the same code

2) The phase A very con dent(sic) user might move straight to the
next step: creating a ticket is wrong.

You need to be a particularly confident use to report a bug in a trac
ticket. I have reported bugs in software I know very little about, but
enough to know there is a bug.

Actually fixing the bug requires *ability*, rather than confidence. A
totally incompetent user could try to fix the bug, but make a complete
mess of it. But you stated something quite different.

3) You have totally missed the point I made, which Karl-Dieter Crisman
wrote was a very good point. This is that comparing the output of two
black boxes may well be comparing the output of two *identical* bits
of code.

I just checked the libraries for Mathematica version 7.0.1 on Solaris
x86, and a view of the names of them

libML64i3.so
libML32i3.so
liblapack.a
libcblas.a
libsndfile.so.1
libf77blas.a
libatlas.a
libgmp.so.3
libQtXml.so.4
libQtGui.so.4
libQtSql.so.4
libQtNetwork.so.4
Qt-Plugins
libGLU.so
libGLU.so.1
Mesa
libQtSvg.so.4
libaspell.so.1
libQt3Support.so.4
libMesaGL.so
libMesaGLU.so
libQtCore.so.4

would suggest to me that Mathematica is using at least the following
two maths libraries

* ATLAS
* GMP

It would be worth checking a more recent release, to see if things
have changed, but it is largely irrelevant. The fact remains WRI did
use both those maths libraries is good enough.

There's no reason Maple could not use them too. GMP is licensed under
the GNU Lesser General Public License (LGPL), so Wolfram Research and
Maplesoft are well within their rights to do that. In fact, they are
well within their rights to hide that fact, as they could just compile
GMP into a library libfoo.so, and you would be none the wiser.

The mere fact they are black boxes means you don't have a clue. If
there was a bug in ATLAS, comparing the output of Mathematica and
Maple could lead you to a false sense of security, believing you are
using two bits of software to perform a computation, but instead using
the same bit of code twice.

Both you, and the trio of mathematicians seem to have missed this
point. This non-mathematician (i.e. me) thinks it is an important
point !!

4) It might be worth briefly stating that if (hypothetically) such a
bug was found in Sage, rather than just report the bug, the trio could
have inspected Sage, determined the code used to find the determinate
used algorithms A, B and C, using software packages X, Y and Z, then
looked to find the bug in A, B, C or some code which links them
together.

That would hint Sage gets it right, but be more constructive than just
saying it gets it right. You could put that in a few sentances - there
is no need to detail the exact process they would have to use.

Dave

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Dr. David Kirkby (Kirkby Microwave Ltd)
On 13 November 2014 11:19, Dr. David Kirkby (Kirkby Microwave Ltd)
drkir...@kirkbymicrowave.co.uk wrote:
 You need to be a particularly confident use to report a bug in a trac
 ticket. I have reported bugs in software I know very little about, but
 enough to know there is a bug.

Of course I mean you do NOT have to be a particularly confident use to
report a bug in a trac.

Dave

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Dr. David Kirkby (Kirkby Microwave Ltd)
On 12 November 2014 20:18, Ursula Whitcher whitc...@uwec.edu wrote:
 On 11/11/2014 3:41 AM, Dr. David Kirkby (Kirkby Microwave Ltd) wrote:

 If I am honest,  I am not that convinced it is a good follow up comment,


 OK, I won't put your name on it ;)

You can if I ultimately feel the submitted version is good !

 Thanks for the comments!

 1) Add a time line. How long it took from the reporting of the bug,  to
 the bug fixed, peer reviewed, then to release of a new
 alpha/beta/release candidate and finally to the release of a stable
 version with the bug fixed.

 I suspect it was faster than the year or so the bug has remained in
 Mathematica.


 All I can see from trac is that everything happened 22 months ago.  How do I
 find how long it took to go from positive review to stable release?

I need to go to a hospital soon, so are not going to give full
details, but a search of sage-release would show the dates when the
release manager made a particular release. I think times (in days) are
far more useful than actual dates, but you can work out the days from
the dates.

Dave

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Volker Braun
On Thursday, November 13, 2014 11:19:37 AM UTC, Dr. David Kirkby (Kirkby 
Microwave Ltd) wrote:

 The mere fact they are black boxes means you don't have a clue


Which patches did Wolfram apply to ATLASGMP, and which versions did they 
use? I know we apply patches, so its extremely unlikely that we have 
identical libraries here even if upstream is the same. Also, without being 
able to trace the program flow we don't even know whether Mathematica was 
using ATLAS in that particular computation or not.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-13 12:19, Dr. David Kirkby (Kirkby Microwave Ltd) wrote:

di erent(sic)
con dent(sic)
I think these are font issues with your PDF reader. You are missing the 
glyphs for the ligatures ff and fi. I don't have this problem 
(qpdfview on Gentoo Linux)


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Dr. David Kirkby (Kirkby Microwave Ltd)
LOn 13 Nov 2014 11:19, Dr. David Kirkby (Kirkby Microwave Ltd) 
drkir...@kirkbymicrowave.co.uk wrote:

 4) It might be worth briefly stating that if (hypothetically) such a
 bug was found in Sage, rather than just report the bug, the trio could
 have inspected Sage, determined the code used to find the determinate
 used algorithms A, B and C, using software packages X, Y and Z, then
 looked to find the bug in A, B, C or some code which links them
 together.

I meant bug in X, Y or Z, rather than A, B or C.

But thinking about it more, there could be an error in algorithm A, B or C.
Or perhaps use of such an algorithm was inappropriate. Clearly with open
source software,  a lot more possibilities exist if a bug is found.

Dave

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Dr. David Kirkby (Kirkby Microwave Ltd)
On 13 Nov 2014 11:27, Jeroen Demeyer jdeme...@cage.ugent.be wrote:

 On 2014-11-13 12:19, Dr. David Kirkby (Kirkby Microwave Ltd) wrote:

 di erent(sic)
 con dent(sic)

 I think these are font issues with your PDF reader. You are missing the
glyphs for the ligatures ff and fi. I don't have this problem (qpdfview
on Gentoo Linux)

Thanks.  I was using Acrobat Reader on Solaris.

Anyway,  I think there are are some fundamental flaws in the paper.

Dave

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Problems with building Sage because of package ecm-6.4.4.

2014-11-13 Thread Florian Mussner
So I tried to reinstall Sage 6.3. on my Lenovo Edge E540 with Ubuntu 12.04 
in different ways, but make always fails because of the following error 
message:


Error building Sage.

The following package(s) may have failed to build:

package: ecm-6.4.4

Here is the part of the log file that I think is causing the mistake

Now building GMP-ECM...
 make[3]: Entering directory 
 `/home/mussna/sage/sage-6.3/local/var/tmp/sage/build/ecm-6.4.4/src'
 make  all-recursive
 make[4]: Entering directory 
 `/home/mussna/sage/sage-6.3/local/var/tmp/sage/build/ecm-6.4.4/src'
 Making all in x86_64
 make[5]: Entering directory 
 `/home/mussna/sage/sage-6.3/local/var/tmp/sage/build/ecm-6.4.4/src/x86_64'
 m4 -I../ -DOPERATION_mulredc1 `test -f mulredc1.asm || echo 
 './'`mulredc1.asm mulredc1.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc1.lo mulredc1.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc1.s -o 
 mulredc1.o
 m4 -I../ -DOPERATION_mulredc2 `test -f mulredc2.asm || echo 
 './'`mulredc2.asm mulredc2.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc2.lo mulredc2.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc2.s -o 
 mulredc2.o
 m4 -I../ -DOPERATION_mulredc3 `test -f mulredc3.asm || echo 
 './'`mulredc3.asm mulredc3.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc3.lo mulredc3.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc3.s -o 
 mulredc3.o
 m4 -I../ -DOPERATION_mulredc4 `test -f mulredc4.asm || echo 
 './'`mulredc4.asm mulredc4.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc4.lo mulredc4.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc4.s -o 
 mulredc4.o
 m4 -I../ -DOPERATION_mulredc5 `test -f mulredc5.asm || echo 
 './'`mulredc5.asm mulredc5.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc5.lo mulredc5.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc5.s -o 
 mulredc5.o
 m4 -I../ -DOPERATION_mulredc6 `test -f mulredc6.asm || echo 
 './'`mulredc6.asm mulredc6.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc6.lo mulredc6.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc6.s -o 
 mulredc6.o
 m4 -I../ -DOPERATION_mulredc7 `test -f mulredc7.asm || echo 
 './'`mulredc7.asm mulredc7.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc7.lo mulredc7.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc7.s -o 
 mulredc7.o
 m4 -I../ -DOPERATION_mulredc8 `test -f mulredc8.asm || echo 
 './'`mulredc8.asm mulredc8.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc8.lo mulredc8.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc8.s -o 
 mulredc8.o
 m4 -I../ -DOPERATION_mulredc9 `test -f mulredc9.asm || echo 
 './'`mulredc9.asm mulredc9.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc9.lo mulredc9.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc9.s -o 
 mulredc9.o
 m4 -I../ -DOPERATION_mulredc10 `test -f mulredc10.asm || echo 
 './'`mulredc10.asm mulredc10.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc10.lo mulredc10.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc10.s -o 
 mulredc10.o
 m4 -I../ -DOPERATION_mulredc11 `test -f mulredc11.asm || echo 
 './'`mulredc11.asm mulredc11.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc11.lo mulredc11.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc11.s -o 
 mulredc11.o
 m4 -I../ -DOPERATION_mulredc12 `test -f mulredc12.asm || echo 
 './'`mulredc12.asm mulredc12.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc12.lo mulredc12.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc12.s -o 
 mulredc12.o
 m4 -I../ -DOPERATION_mulredc13 `test -f mulredc13.asm || echo 
 './'`mulredc13.asm mulredc13.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc13.lo mulredc13.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc13.s -o 
 mulredc13.o
 m4 -I../ -DOPERATION_mulredc14 `test -f mulredc14.asm || echo 
 './'`mulredc14.asm mulredc14.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc14.lo mulredc14.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc14.s -o 
 mulredc14.o
 m4 -I../ -DOPERATION_mulredc15 `test -f mulredc15.asm || echo 
 './'`mulredc15.asm mulredc15.s
 /bin/bash ../libtool   --mode=compile gcc  -march=native -g -O3  -fPIC -c 
 -o mulredc15.lo mulredc15.s
 libtool: compile:  gcc -march=native -g -O3 -fPIC -c mulredc15.s -o 
 mulredc15.o
 m4 -I../ -DOPERATION_mulredc16 `test -f mulredc16.asm || echo 
 './'`mulredc16.asm mulredc16.s
 /bin/bash 

Re: [sage-devel] Problems with building Sage because of package ecm-6.4.4.

2014-11-13 Thread Jeroen Demeyer

On 2014-11-13 15:58, Florian Mussner wrote:

So what can I do to make it work?

Upgrade your compiler toolchain or build Sage with SAGE_INSTALL_GCC=yes.

--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Problems with building Sage because of package ecm-6.4.4.

2014-11-13 Thread Florian Mussner
Thank you, I will try that

Am Donnerstag, 13. November 2014 16:04:48 UTC+1 schrieb Jeroen Demeyer:

 On 2014-11-13 15:58, Florian Mussner wrote: 
  So what can I do to make it work? 
 Upgrade your compiler toolchain or build Sage with SAGE_INSTALL_GCC=yes. 



-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Ondřej Čertík
Yes. Note also here:

http://mathworld.wolfram.com/AbsoluteValue.html

which says that complex derivative of d|z|/dz does not exist, as
Cauchy-Riemann equations do not hold for Abs(z). And:

As a result of the fact that computer algebra programs such as
Mathematica generically deal with complex variables (i.e., the
definition of derivative always means complex derivative), d|z|/dz
correctly returns unevaluated by such software.

So perhaps SymPy and Sage should return Derivative(Abs(x), x). Only
when user specifies that x is real, only then we can differentiate.

Ondrej

On Thu, Nov 13, 2014 at 12:17 AM, Clemens Heuberger
clemens.heuber...@aau.at wrote:

 possibly related to http://trac.sagemath.org/ticket/12588 ?

 Regards, CH

 Am 2014-11-13 um 06:19 schrieb Ondřej Čertík:
 Hi,

 With Sage 6.3, I am getting:

 sage: abs(x).diff(x)
 x/abs(x)
 sage: abs(I*x).diff(x)
 -x/abs(I*x)

 But abs(I*x) == abs(x). So also abs(x).diff(x) and abs(I*x).diff(x)
 must be the same. But in the first case we get x/abs(x), and in the
 second we got -x/abs(x).

 In SymPy, the answer is:

 In [1]: abs(x).diff(x)
 Out[1]:
   d d
 re(x)⋅──(re(x)) + im(x)⋅──(im(x))
   dxdx
 ─
│x│


 In [2]: x = Symbol(x, real=True)

 In [3]: abs(x).diff(x)
 Out[3]: sign(x)

 In [4]: abs(I*x).diff(x)
 Out[4]: sign(x)

 In [26]: var(x)
 Out[26]: x

 Which seems all correct --- in the complex case [1] we get a little
 messy expression, but a correct one. For a real case, we get the
 correct answer.

 In Wolfram Alpha, the answer of abs(I*x).diff(x) is x/abs(x):

 http://www.wolframalpha.com/input/?i=Diff%5BAbs%5Bi*x%5D%2C+x%5D

 Which is only correct for real x, but at least it is correct for
 this special case.

 The Sage result seems wrong for any x.

 Ondrej



 --
 Univ.-Prof. Dr. Clemens HeubergerAlpen-Adria-Universität Klagenfurt
 Institut für Mathematik, Universitätsstraße 65-67, 9020 Klagenfurt, Austria
 Tel: +43 463 2700 3121Fax: +43 463 2700 99 3121
 clemens.heuber...@aau.athttp://wwwu.aau.at/cheuberg

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Travis Scrimshaw
   In those cases, those are functions (or classes), not methods, and so 
they are safe. There are cases where methods get aliased, and there the 
user my experience something unexpected when first trying to subclass, but 
they won't experience a sudden change when upgrading Sage. However I'm not 
opposed to mentioning in the docstring that it is an alias. Yet the 
docstring is short, so I won't remove it. IMO we should never have the 
docstring just be Alias for :meth:`foo`, at the very least the short 
description should tell what the (redirected) function does.

Best,
Travis


On Thursday, November 13, 2014 1:18:11 AM UTC-8, Jori Mantysalo wrote:

 On Wed, 12 Nov 2014, Travis Scrimshaw wrote: 

  That's exactly what I'm saying. With this change, that may not occur if 
  someone had overwritten interval() with some slightly different behavior 
 in 
  a subclass and was calling closed_interval(), they would experience an 
  unexpected change (or, perhaps more likely, a major slow-down). It would 
 be 
  calling the interval() of FinitePoset rather than the subclass. 

 rsk.py contains robinson_schensted_knuth = RSK, posets.py contains 
 Posets_all = Posets and poset_examples.py contains posets = Posets. 
 Does same thing happen with those also? 

   * * * 

 As I wrote to ticket, it seems a little confusing for me to have 
 documentation with two functions, both with examples and so, that actually 
 does same thing. Maybe docstring of other could be only Alias for 
 linkxxx()/link.? 

 -- 
 Jori Mäntysalo 


-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread mmarco
What i mean is that, for example:

sage: R.x,y = PolynomialRing(QQ)
sage: I = R.ideal([x^2 - y ^2, x + y +1])
sage: I.groebner_basis()
[x + 1/2, y + 1/2]

Is just one doctest unit (since it is really one test going on, we only 
check that the groebner basis coincides with the expected one). But it 
involves three lines that match 'sage:'

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread William Stein
On Thu, Nov 13, 2014 at 8:00 AM, mmarco mma...@unizar.es wrote:
 What i mean is that, for example:

 sage: R.x,y = PolynomialRing(QQ)
 sage: I = R.ideal([x^2 - y ^2, x + y +1])
 sage: I.groebner_basis()
 [x + 1/2, y + 1/2]

 Is just one doctest unit (since it is really one test going on, we only
 check that the groebner basis coincides with the expected one). But it
 involves three lines that match 'sage:'

The answer to your original question IS that individual lines of
doctests or doctest units themselves? is clear since Jereon posted the
(very nice) code he used to compute the total:

$ find src/sage src/doc/en -type f |xargs cat | grep -c '^ *sage: '
239600

It would be nice if somebody wrote a more sophisticated scanner to
compute the number of doctest units, as you suggest above.

William


 --
 You received this message because you are subscribed to the Google Groups
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.



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

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread TB
Is there some Python idiom to alias class methods that respects 
subclassing? Usually the docstring of aliases in Sage containes less 
examples, and when the original method is updated (e.g. warn about an 
edge case), there is a risk of not updating the alias' docstring.


What I would like to see is, assuming we have something like

class C(object):
def foo():
The full docstring of foo

alias(foo, bar)

is that automagically bar.__doc__ is now


bar is an alias of :meth:`C.foo`.

The full docstring of foo


Or do we have to mess with C.__{get,set}attr__?

Regards,
TB

On 11/13/2014 04:54 PM, Travis Scrimshaw wrote:

In those cases, those are functions (or classes), not methods, and
so they are safe. There are cases where methods get aliased, and there
the user my experience something unexpected when first trying to
subclass, but they won't experience a sudden change when upgrading Sage.
However I'm not opposed to mentioning in the docstring that it is an
alias. Yet the docstring is short, so I won't remove it. IMO we should
never have the docstring just be Alias for :meth:`foo`, at the very
least the short description should tell what the (redirected) function does.

Best,
Travis


On Thursday, November 13, 2014 1:18:11 AM UTC-8, Jori Mantysalo wrote:

On Wed, 12 Nov 2014, Travis Scrimshaw wrote:

  That's exactly what I'm saying. With this change, that may not
occur if
  someone had overwritten interval() with some slightly different
behavior in
  a subclass and was calling closed_interval(), they would
experience an
  unexpected change (or, perhaps more likely, a major slow-down).
It would be
  calling the interval() of FinitePoset rather than the subclass.

rsk.py contains robinson_schensted_knuth = RSK, posets.py contains
Posets_all = Posets and poset_examples.py contains posets = Posets.
Does same thing happen with those also?

   * * *

As I wrote to ticket, it seems a little confusing for me to have
documentation with two functions, both with examples and so, that
actually
does same thing. Maybe docstring of other could be only Alias for
linkxxx()/link.?

--
Jori Mäntysalo

--
You received this message because you are subscribed to the Google
Groups sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sage-devel+unsubscr...@googlegroups.com
mailto:sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com
mailto:sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Nathann Cohen
 I would like to see is, assuming we have something like

 class C(object):
 def foo():
 The full docstring of foo

 alias(foo, bar)

+1 to that !

Nathann

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread kcrisman


  All I can see from trac is that everything happened 22 months ago.  How 
 do I 
  find how long it took to go from positive review to stable release? 

 ... a search of sage-release would show the dates when the 
 release manager made a particular release. I think times (in days) are 
 far more useful than actual dates, but you can work out the days from 
 the dates. 


Unfortunately, we no longer use the Merged in part of Trac, which was a 
VERY efficient way to find this out.  Searching through git history and 
then trying to forward to the next release is something for git wizards, no 
doubt some command using tag... amazingly, I found something relevant.

$ git tag --contains 4f8b380
6.4.rc1
6.4.rc2

Hope this helps.

It should not be necessary for people to spend time figuring this out, 
though; you should be able to work it out without using Trac or searching 
through sage-release - indeed, without knowing about commits at all, 
because many people who want to know what version of Sage has such-and-such 
fixed won't be developers, just users.

- kcrisman

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Jeroen Demeyer

On 2014-11-13 17:07, William Stein wrote:

It would be nice if somebody wrote a more sophisticated scanner to
compute the number of doctest units, as you suggest above.
I'm sure this could be added easily to the doctest framework. I don't 
really see the point though... a single doctest unit can contain many 
independent tests.


--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Future NTL versions and exception handling

2014-11-13 Thread Robert Bradshaw
Sage's wrapping of NTL should be just fine as long as it's declared in
the Cython declarations, but there's a question of all the libraries
that use NTL indirectly which may have more difficulty adapting to
exceptions being thrown though their call stacks.

On Tue, Nov 11, 2014 at 3:48 PM, Francesco Biscani bluesca...@gmail.com wrote:
 OOM exception handling is gonna be hard to implement, as GMP does not
 provide any mechanism to recover from memory errors. You can replace the GMP
 memory management functions but the usual problem with that approach is that
 you might be potentially interacting with other packages which might also
 want to override the default functions. Another problem is that IIRC
 throwing C++ exceptions from C is undefined (or maybe
 implementation-defined?) behaviour.

 In any case, exceptions are the way to go when you program in C++. A
 well-coded C++ program should state precisely what level of exception safety
 the routines provide (no-throw, strong, basic), and how and what a routine
 can throw. Ideally you would want strong exception safety always - this is
 quite doable but sometimes for the sake of performance basic exception
 safety is a good compromise. Of course anything involving move semantics
 should be marked noexcept. Another typical suggestion is always to use RAII
 patterns when coding routines that can throw - that way you are guaranteed
 that any resource is properly cleaned up before exiting the function through
 an exception.

 C++11 also has good support for handling exceptions in threads, including
 transporting exceptions between threads. In particular, using an std::future
 for managing the return value of (or the exception thrown within) a thread
 is pretty handy.

 Cheers,

   Francesco.

 On 12 November 2014 00:05, Jean-Pierre Flori jpfl...@gmail.com wrote:



 On Tuesday, November 11, 2014 11:55:49 PM UTC+1, Volker Braun wrote:

 What kind of error states are we talking about? divide by zero and out of
 memory?

 Exactly, that is exactly the kind of stuff Victor mentioned.


 IMHO a C++ library should just throw C++ exceptions, thats what they are
 here for. If only for better readability - less bugs. If you declare
 methods with except + to Cython then they will automatically be converted
 into Python exceptions, so its also very convenient for us. Pynac uses that
 all the time.

 Pretty much the only potential downside are rumors that exceptions might
 possibly hinder the optimizer. Though I've never seen that in a reasonable
 benchmark. While that is certainly a possibility, it would just be an
 optimizer bug. All reasonable C++ compilers uses a zero-cost model so its at
 least as fast as handling / returning some error flag. What _is_ expensive
 is when an exception occurs, but in C++ you are not supposed to use
 exceptions for program flow like in Python.



 On Tuesday, November 11, 2014 10:15:44 PM UTC, Jean-Pierre Flori wrote:

 Dear all,

 As you must have noticed, Victor Shoup just released a new thread safe
 version of NTL.

 He also took the opportunity to ask me (and surely a bunch of other
 people) what would be expected from exception handling in NTL
 Currently NTL just prints something and then aborts.
 Note that we patch that in Sage to call one of our own functions and
 avoid aborting.
 I'm no C++ expert and don't usually play with exceptions, so I don't
 have anything that sart to say.
 But your comments/ideas/suggestions are more than welcomed.
 I can gather them and forward them back to Victor.

 Best,
 JP

 --
 You received this message because you are subscribed to the Google Groups
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.


 --
 You received this message because you are subscribed to the Google Groups
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] review tutorial en español

2014-11-13 Thread kcrisman
Spanish speakers: 
After some neglect, #7192, #10165, and #10180 are ready for review, 
hopefully just minor edits needed?

(And for those great at tracking down subtle Sphinx errors, #10180 has one 
of those...)

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread William Stein
On Thu, Nov 13, 2014 at 8:53 AM, Jeroen Demeyer jdeme...@cage.ugent.be wrote:
 On 2014-11-13 17:07, William Stein wrote:

 It would be nice if somebody wrote a more sophisticated scanner to
 compute the number of doctest units, as you suggest above.

 I'm sure this could be added easily to the doctest framework. I don't really
 see the point though... a single doctest unit can contain many independent
 tests.

We could define a doctest unit to be a sequence of inputs followed by
some verified output, terminated by a new input.  So:

sage: 2+2
4
sage: a = 5
sage: 3+a
8

Is *two*  doctest units.If we're testing anything at all about
running code except it didn't crash (e..g, the a=5 line), then
this seems meaningful.

 -- William

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

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Bill Page
It has always seemed very inconvenient to me that computer algebra
programs such as Mathematica choose to define derivative as
complex-derivative.  I believe a reasonable alternative is what is
known as a Wirtinger derivative.  Wirtinger derivatives exist for all
continuous complex-valued functions including non-holonomic functions
and permit the construction of a differential calculus for functions
of complex variables that is analogous to the ordinary differential
calculus for functions of real variables

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

Wirtinger derivatives come in conjugate pairs but we have

  f(x).diff(conjugate(x)) = conjugate(conjugate(f(x).diff(x))

so we really only need one derivative given an appropriate conjugate
function.  The Cauchy-Riemann equations reduce to

  f(x).diff(conjugate(x)) = 0

I also like that abs is related to the sgn function

 abs(x).diff(x)  = x/abs(x)

This is consistent with

  abs(x)=sqrt(x*conjugate(x))

The Wirtinger derivative of abs(x) is 1/2 x/abs(x).  Its total
Wirtinger derivative is x/abs(x).

I have implemented conjugate and Wirtinger derivatives in FriCAS

  http://axiom-wiki.newsynthesis.org/SandBoxWirtinger

Unfortunately I have not yet been able to convince the FriCAS
developers of the appropriateness of this approach.  I would be happy
to find someone with whom to discuss this further, pro and con.  The
discussion on the FriCAS email list consisted mostly of the related
proper treatment of conjugate without making explicit assumptions
about variables.

Regards,
Bill Page.


On 13 November 2014 10:29, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 Yes. Note also here:

 http://mathworld.wolfram.com/AbsoluteValue.html

 which says that complex derivative of d|z|/dz does not exist, as
 Cauchy-Riemann equations do not hold for Abs(z). And:

 As a result of the fact that computer algebra programs such as
 Mathematica generically deal with complex variables (i.e., the
 definition of derivative always means complex derivative), d|z|/dz
 correctly returns unevaluated by such software.

 So perhaps SymPy and Sage should return Derivative(Abs(x), x). Only
 when user specifies that x is real, only then we can differentiate.

 Ondrej

 On Thu, Nov 13, 2014 at 12:17 AM, Clemens Heuberger
 clemens.heuber...@aau.at wrote:

 possibly related to http://trac.sagemath.org/ticket/12588 ?

 Regards, CH

 Am 2014-11-13 um 06:19 schrieb Ondřej Čertík:
 Hi,

 With Sage 6.3, I am getting:

 sage: abs(x).diff(x)
 x/abs(x)
 sage: abs(I*x).diff(x)
 -x/abs(I*x)

 But abs(I*x) == abs(x). So also abs(x).diff(x) and abs(I*x).diff(x)
 must be the same. But in the first case we get x/abs(x), and in the
 second we got -x/abs(x).

 In SymPy, the answer is:

 In [1]: abs(x).diff(x)
 Out[1]:
   d d
 re(x)⋅──(re(x)) + im(x)⋅──(im(x))
   dxdx
 ─
│x│


 In [2]: x = Symbol(x, real=True)

 In [3]: abs(x).diff(x)
 Out[3]: sign(x)

 In [4]: abs(I*x).diff(x)
 Out[4]: sign(x)

 In [26]: var(x)
 Out[26]: x

 Which seems all correct --- in the complex case [1] we get a little
 messy expression, but a correct one. For a real case, we get the
 correct answer.

 In Wolfram Alpha, the answer of abs(I*x).diff(x) is x/abs(x):

 http://www.wolframalpha.com/input/?i=Diff%5BAbs%5Bi*x%5D%2C+x%5D

 Which is only correct for real x, but at least it is correct for
 this special case.

 The Sage result seems wrong for any x.

 Ondrej



 --
 Univ.-Prof. Dr. Clemens HeubergerAlpen-Adria-Universität Klagenfurt
 Institut für Mathematik, Universitätsstraße 65-67, 9020 Klagenfurt, Austria
 Tel: +43 463 2700 3121Fax: +43 463 2700 99 3121
 clemens.heuber...@aau.athttp://wwwu.aau.at/cheuberg

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.

Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Bill Page
On 13 November 2014 12:16, Bill Page bill.p...@newsynthesis.org wrote:

 The Wirtinger derivative of abs(x) is 1/2 x/abs(x).  Its total
 Wirtinger derivative is x/abs(x).


Sorry, I should have written that the Wirtinger derivative of abs(x) is

  1/2 conjugate(x)/abs(x)

Bill.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Code of Conduct

2014-11-13 Thread Volker Braun
Can we create an environment... where character matters, hard work is 
respected, humility is valued, and support for one another is 
unconditional? 

I admittedly stole that quote, but only because I wholeheartedly agree it 
is good to always aspire to better ourselves. Some of the Sage developers 
who are better with words than me went ahead and stole a lot more, mostly 
from Fedora (http://fedoraproject.org/code-of-conduct) and Django (
https://www.djangoproject.com/conduct), to formulate a Code of Conduct 
for the Sage project. I'm happy to present it here, and welcome everyone to 
vote on it.


Code of Conduct
---

The Sage community is comprised of an international mixture of 
mathematicians, computer scientists, engineers,
researchers, teachers, amateurs, and others with varied backgrounds. This 
diversity is one of our strengths, but it can also lead to communication 
problems and unhappiness. People who love working on
Sage can more effectively collaborate with others if they follow this code.

If you believe someone is violating the code of conduct, we ask that you 
report it by emailing sage-ab...@googlegroups.com. The group administrators 
will consider the issue and explore resolutions. It
is also possible to move heated discussions to the mailing list 
sage-fl...@googlegroups.com.

1)   Be friendly and patient.

2)   Be welcoming. We strive to be a community that welcomes and supports 
people of all backgrounds and identities.

3)   Be considerate. Your work will be used by other people and you in turn 
will depend on the work of others. Any decision you take will affect users 
and developers so you should take those
consequences into account when making decisions. Conversely, Sage is 
constantly evolving, and earlier decisions that were made in good faith may 
sometimes need to be reconsidered. Nonetheless, we
should still appreciate the hard work done in the past.

4)   Be respectful and polite. Not all of us will agree all the time, but 
disagreement is no excuse for poor behavior and poor manners. We might all 
experience some frustration now and then, but we
cannot allow that frustration to morph into personal attacks. It is 
important to remember that a community where people feel uncomfortable or 
threatened is not a productive one. Members of the Sage
community should be respectful when dealing with other developers and users.

When we disagree, we should try to understand why. Disagreements, both 
social and technical, happen all the time. It is important that we resolve 
disagreements and differing views constructively.
Being unable to understand why someone holds a viewpoint does not mean that 
they are wrong. Do not forget that it is human to err. Blame alone gets us 
nowhere, it is better to help resolve issues so
we can all learn from our mistakes.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Code of Conduct

2014-11-13 Thread William Stein
On Thu, Nov 13, 2014 at 10:48 AM, Volker Braun vbraun.n...@gmail.com wrote:
 Can we create an environment... where character matters, hard work is
 respected, humility is valued, and support for one another is unconditional?

 I admittedly stole that quote, but only because I wholeheartedly agree it is
 good to always aspire to better ourselves. Some of the Sage developers who
 are better with words than me went ahead and stole a lot more, mostly from
 Fedora (http://fedoraproject.org/code-of-conduct) and Django
 (https://www.djangoproject.com/conduct), to formulate a Code of Conduct
 for the Sage project. I'm happy to present it here, and welcome everyone to
 vote on it.

For concreteness:

[ ] Yes, this is a great idea.  About time!

[ ] This looks good, but it would be better if... (insert suggestions).

[ ] No, I greatly value the freedom to spout offensive profanity, and
will fork Sage in frustration if there is such a code.  (We really do
want to know if there are any developers who would quit working on
Sage if we have this Code of Conduct; by definition such a person
should have no hesitation publicly saying so in response to this
email.  I'm imagining what someone like Linus Torvalds might say if
this were proposed on the Linux kernel mailing list.   I just want
people to think -- having a code of conduct isn't _obviously_ the
right thing to do.)



 Code of Conduct
 ---

 The Sage community is comprised of an international mixture of
 mathematicians, computer scientists, engineers,
 researchers, teachers, amateurs, and others with varied backgrounds. This
 diversity is one of our strengths, but it can also lead to communication
 problems and unhappiness. People who love working on
 Sage can more effectively collaborate with others if they follow this code.

 If you believe someone is violating the code of conduct, we ask that you
 report it by emailing sage-ab...@googlegroups.com. The group administrators
 will consider the issue and explore resolutions. It
 is also possible to move heated discussions to the mailing list
 sage-fl...@googlegroups.com.

 1)   Be friendly and patient.

 2)   Be welcoming. We strive to be a community that welcomes and supports
 people of all backgrounds and identities.

 3)   Be considerate. Your work will be used by other people and you in turn
 will depend on the work of others. Any decision you take will affect users
 and developers so you should take those
 consequences into account when making decisions. Conversely, Sage is
 constantly evolving, and earlier decisions that were made in good faith may
 sometimes need to be reconsidered. Nonetheless, we
 should still appreciate the hard work done in the past.

 4)   Be respectful and polite. Not all of us will agree all the time, but
 disagreement is no excuse for poor behavior and poor manners. We might all
 experience some frustration now and then, but we
 cannot allow that frustration to morph into personal attacks. It is
 important to remember that a community where people feel uncomfortable or
 threatened is not a productive one. Members of the Sage
 community should be respectful when dealing with other developers and users.

 When we disagree, we should try to understand why. Disagreements, both
 social and technical, happen all the time. It is important that we resolve
 disagreements and differing views constructively.
 Being unable to understand why someone holds a viewpoint does not mean that
 they are wrong. Do not forget that it is human to err. Blame alone gets us
 nowhere, it is better to help resolve issues so
 we can all learn from our mistakes.

 --
 You received this message because you are subscribed to the Google Groups
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.



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

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Code of Conduct

2014-11-13 Thread Jan Groenewald
Hi

Great to have in place to refer to as an educational guideline (not to be
abused as strict rules).

It could also mention core values of Libre Software, with additional
emphasis on scientific transparency.

Regards,
Jan

On 13 November 2014 21:00, William Stein wst...@gmail.com wrote:

 On Thu, Nov 13, 2014 at 10:48 AM, Volker Braun vbraun.n...@gmail.com
 wrote:
  Can we create an environment... where character matters, hard work is
  respected, humility is valued, and support for one another is
 unconditional?
 
  I admittedly stole that quote, but only because I wholeheartedly agree
 it is
  good to always aspire to better ourselves. Some of the Sage developers
 who
  are better with words than me went ahead and stole a lot more, mostly
 from
  Fedora (http://fedoraproject.org/code-of-conduct) and Django
  (https://www.djangoproject.com/conduct), to formulate a Code of
 Conduct
  for the Sage project. I'm happy to present it here, and welcome everyone
 to
  vote on it.

 For concreteness:

 [ ] Yes, this is a great idea.  About time!

 [ ] This looks good, but it would be better if... (insert suggestions).

 [ ] No, I greatly value the freedom to spout offensive profanity, and
 will fork Sage in frustration if there is such a code.  (We really do
 want to know if there are any developers who would quit working on
 Sage if we have this Code of Conduct; by definition such a person
 should have no hesitation publicly saying so in response to this
 email.  I'm imagining what someone like Linus Torvalds might say if
 this were proposed on the Linux kernel mailing list.   I just want
 people to think -- having a code of conduct isn't _obviously_ the
 right thing to do.)

 
 
  Code of Conduct
  ---
 
  The Sage community is comprised of an international mixture of
  mathematicians, computer scientists, engineers,
  researchers, teachers, amateurs, and others with varied backgrounds. This
  diversity is one of our strengths, but it can also lead to communication
  problems and unhappiness. People who love working on
  Sage can more effectively collaborate with others if they follow this
 code.
 
  If you believe someone is violating the code of conduct, we ask that you
  report it by emailing sage-ab...@googlegroups.com. The group
 administrators
  will consider the issue and explore resolutions. It
  is also possible to move heated discussions to the mailing list
  sage-fl...@googlegroups.com.
 
  1)   Be friendly and patient.
 
  2)   Be welcoming. We strive to be a community that welcomes and supports
  people of all backgrounds and identities.
 
  3)   Be considerate. Your work will be used by other people and you in
 turn
  will depend on the work of others. Any decision you take will affect
 users
  and developers so you should take those
  consequences into account when making decisions. Conversely, Sage is
  constantly evolving, and earlier decisions that were made in good faith
 may
  sometimes need to be reconsidered. Nonetheless, we
  should still appreciate the hard work done in the past.
 
  4)   Be respectful and polite. Not all of us will agree all the time, but
  disagreement is no excuse for poor behavior and poor manners. We might
 all
  experience some frustration now and then, but we
  cannot allow that frustration to morph into personal attacks. It is
  important to remember that a community where people feel uncomfortable or
  threatened is not a productive one. Members of the Sage
  community should be respectful when dealing with other developers and
 users.
 
  When we disagree, we should try to understand why. Disagreements, both
  social and technical, happen all the time. It is important that we
 resolve
  disagreements and differing views constructively.
  Being unable to understand why someone holds a viewpoint does not mean
 that
  they are wrong. Do not forget that it is human to err. Blame alone gets
 us
  nowhere, it is better to help resolve issues so
  we can all learn from our mistakes.
 
  --
  You received this message because you are subscribed to the Google Groups
  sage-devel group.
  To unsubscribe from this group and stop receiving emails from it, send an
  email to sage-devel+unsubscr...@googlegroups.com.
  To post to this group, send email to sage-devel@googlegroups.com.
  Visit this group at http://groups.google.com/group/sage-devel.
  For more options, visit https://groups.google.com/d/optout.



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

 --
 You received this message because you are subscribed to the Google Groups
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.




-- 
  .~.
  /V\ Jan Groenewald
 /( )\

Re: [sage-devel] Code of Conduct

2014-11-13 Thread kcrisman


  good to always aspire to better ourselves. Some of the Sage developers 
 who 
  are better with words than me went ahead and stole a lot more, mostly 
 from 
  Fedora (http://fedoraproject.org/code-of-conduct) and Django 
  (https://www.djangoproject.com/conduct), to formulate a Code of 
 Conduct 
  for the Sage project. I'm happy to present it here, and welcome everyone 
 to 
  vote on it. 


This also seems to channel an inner Larry Wall :)

 

 For concreteness: 

 [X] This looks good, but it would be better if... (insert suggestions). 



I'd suggest that the language of reporting a violation could be softened, 
since naturally there will even be disagreements about what constitutes a 
'violation'... as we know, this has been debated over the years on various 
threads that may or may not have turned personal, including by very 
valuable members of the community.  I'd hate to have some kicking out 
policy for that, referring to sage-flame seems like a very good idea. 
 Indeed, eventually (already? I don't think so, but who knows) we will have 
people coming from very different cultural contexts as to what constitutes 
respect or considerateness - e.g. directness versus face-saving versus 
something yet again?

What I do think this brings is a tool to remind all of us (!) that 
everything here reflects on Sage, whether or not you care about your own 
personal reputation.  So more or less in support, and certainly in support 
very much of the values themselves.

- kcrisman

PS that includes trying to keep things PG and SFW!  I fully expect our 
first elementary-schooler to contribute something within a year... am I 
kidding?  I don't know!  I wouldn't be surprised.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Bug in abs(I*x).diff(x)

2014-11-13 Thread maldun
We had a similar problem with the complex derivative of logarithms in 
combination with the complex conjugate, where I also the
use of Wirtinger Operators would solve the problem: 
https://groups.google.com/forum/?hl=en#!topic/sage-support/bEMPMEYeZKU

Having them in Sage would be a great achievement!

Although this has some sense in complex analysis one should be careful with 
'deriving' the absolute value, since
it results in the weak derivative ( 
http://en.wikipedia.org/wiki/Weak_derivative) , which is in a broader sense 
the derivative in the distribution sense. 
Thus we have infinite possible derivatives

With this expression it is indirectly forbidden to asign a specific value 
to the unspecified value at zero:

sage: f = abs(x).diff(x)
sage: f(x=0)
---
ValueErrorTraceback (most recent call last)
ipython-input-14-615bbebcb37c in module()
 1 f(x=Integer(0))

/home/maldun/sage/sage-6.3/local/lib/python2.7/site-packages/sage/symbolic/expression.so
 
in sage.symbolic.expression.Expression.__call__ 
(build/cythonized/sage/symbolic/expression.cpp:21933)()

/home/maldun/sage/sage-6.3/local/lib/python2.7/site-packages/sage/symbolic/ring.so
 
in sage.symbolic.ring.SymbolicRing._call_element_ 
(build/cythonized/sage/symbolic/ring.cpp:8493)()

/home/maldun/sage/sage-6.3/local/lib/python2.7/site-packages/sage/symbolic/expression.so
 
in sage.symbolic.expression.Expression.substitute 
(build/cythonized/sage/symbolic/expression.cpp:21183)()

ValueError: power::eval(): division by zero



This is in some sense good, since  we don't have to care about the 
derivative at zero, 
but in an other sense it is not so good, since the subdifferential ∂abs(0) 
= [0,1] is a bounded and with this definition one could come to the false 
conclusion that abs(x)
has a pole, althoug by taking limits one can easily see that it should be 
bounded at zero.

For symbolic purposes, of course one could live on with this.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Bug in abs(I*x).diff(x)

2014-11-13 Thread maldun



 This is in some sense good, since  we don't have to care about the 
 derivative at zero, 
 but in an other sense it is not so good, since the subdifferential ∂abs(0) 
 = [0,1] is a bounded and with this definition one could come to the false 
 conclusion that abs(x)
 has a pole, althoug by taking limits one can easily see that it should be 
 bounded at zero.




Sorry I meant  ∂abs(0) = [-1,1] ...

And another thing to add: I think the only clean solution could be a 
warning like: Warning: This is not a derivative in the classical sense!
But I don't know if this is really worth the effort ... 

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Ondřej Čertík
Hi Bill,

On Thu, Nov 13, 2014 at 10:16 AM, Bill Page bill.p...@newsynthesis.org wrote:
 It has always seemed very inconvenient to me that computer algebra
 programs such as Mathematica choose to define derivative as
 complex-derivative.  I believe a reasonable alternative is what is
 known as a Wirtinger derivative.  Wirtinger derivatives exist for all
 continuous complex-valued functions including non-holonomic functions
 and permit the construction of a differential calculus for functions
 of complex variables that is analogous to the ordinary differential
 calculus for functions of real variables

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

 Wirtinger derivatives come in conjugate pairs but we have

   f(x).diff(conjugate(x)) = conjugate(conjugate(f(x).diff(x))

 so we really only need one derivative given an appropriate conjugate
 function.  The Cauchy-Riemann equations reduce to

   f(x).diff(conjugate(x)) = 0

 I also like that abs is related to the sgn function

  abs(x).diff(x)  = x/abs(x)

 This is consistent with

   abs(x)=sqrt(x*conjugate(x))

 The Wirtinger derivative of abs(x) is 1/2 x/abs(x).  Its total
 Wirtinger derivative is x/abs(x).

 I have implemented conjugate and Wirtinger derivatives in FriCAS

   http://axiom-wiki.newsynthesis.org/SandBoxWirtinger

 Unfortunately I have not yet been able to convince the FriCAS
 developers of the appropriateness of this approach.  I would be happy
 to find someone with whom to discuss this further, pro and con.  The
 discussion on the FriCAS email list consisted mostly of the related
 proper treatment of conjugate without making explicit assumptions
 about variables.

Thanks for your email! I haven't talked to you in a long time.
Literally just today I learned about Wirtinger derivatives. The
wikipedia page is *really* confusing to me. It took me a while to
realize, that Wirtinger derivatives is simply the derivative with
respect to z or conjugate(z). I.e.

z = x + i*y
conjugate(z) = x - i*y

From this it follows:

x = 1/2*(z + conjugate(z))
y = i/2*(-z+conjugate(z))

Then I take any function and write it in terms of z and conjugate(z),
some examples:

|z| = sqrt(z*conjugate(z))
Re z = x = 1/2 * (z + conjugate(z))
z^2 = (x+i*y)^2

And then I simply differentiate with respect to z or conjugate(z).
This is called the Wirtinger derivative. So:

d|z|/dz = d sqrt(z*conjugate(z)) / dz = 1/2*conjugate(z) / |z|

As you said, the function is analytic if it doesn't functionally
depend on conjugate(z), as can be shown easily. So |z| or Re z are not
analytic, while z^2 is. If the function is analytic, then df/d
conjugate(z) = 0, and df/dz is the complex derivative. Right?

So for analytic functions, Wirtinger derivative gives the same answer
as Mathematica. For non-analytic functions, Mathematica leaves it
unevaluated, but Wirtinger derivative gives you something.

How do you calculate the total Wirtinger derivative? How is that defined?

Because I would like to get

d|x| / d x = x / |x|

for real x. And I don't see currently how is this formula connected to
Wirtinger derivatives. Finally, the derivative operator in a CAS could
return Wirtinger derivatives, I think it's a great idea, if somehow we
can recover the usual formula for abs(x) with real x.

What are the cons of this approach?

Ondrej

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Ursula Whitcher

On 11/13/2014 3:05 AM, Jeroen Demeyer wrote:

On 2014-11-12 21:33, Ursula Whitcher wrote:

On 11/11/2014 4:46 AM, Jeroen Demeyer wrote:


* The sentence A recent tweak of another part of Sage’s matrix code had
changed the definition of “small n” to n = 63. is wrong:
what had changed is the bound on p to compute the determinant over GF(p)
using LinBox (for larger p, we compute determinants over GF(p) by
lifting to ZZ): it used to be the case that the bound in LinBox depended
on n, this was changed to a fixed bound for p which was less than the
old value for n = 63.


What's the fixed bound?


2^23, so the largest prime number is 8388593.


This is fixed as in the old, bad constant, rather than an improved 
bound which fixed the problem, right?


UAW

--
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Problems with building Sage because of package ecm-6.4.4.

2014-11-13 Thread Florian Mussner
It worked, thank you very much!

Am Donnerstag, 13. November 2014 16:04:48 UTC+1 schrieb Jeroen Demeyer:

 On 2014-11-13 15:58, Florian Mussner wrote: 
  So what can I do to make it work? 
 Upgrade your compiler toolchain or build Sage with SAGE_INSTALL_GCC=yes. 



-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Code of Conduct

2014-11-13 Thread Robert Dodier
On 2014-11-13, Volker Braun vbraun.n...@gmail.com wrote:

 Can we create an environment... where character matters, hard work is 
 respected, humility is valued, and support for one another is 
 unconditional? 

Yes, I think you can, although I think formulating a code of conduct
is mostly a distraction. People take their cues from others who are
perceived to be socially superior, so the key is to get anybody who
has a lot of visibility / brownie points / respect / whatever to
get on the bandwagon. Whatever those people practice, is going to
become the conventional way, so we had better hope they have good
habits. About good habits, I think it's really pretty simple:

 * talk about ideas instead of people
 * don't feed the trolls
 * get to the point

But if someone like, oh, I don't know, Linus Torvalds for instance,
consistently treats others like shit, everybody else joins the fun,
and everything goes downhill from there.

As I get older, I've become fascinated by the way that people pick
up culture (i.e., shared assumptions about how things work) from
each other, in all kinds of situations. I'm pretty sure that
informal cues vastly outweigh the formal ones, for better or worse.

For what it's worth,

Robert Dodier

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems

2014-11-13 Thread Andrew


 The answer to your original question IS that individual lines of 
 doctests or doctest units themselves? is clear since Jereon posted the 
 (very nice) code he used to compute the total: 

 $ find src/sage src/doc/en -type f |xargs cat | grep -c '^ *sage: ' 
 239600 


Using ag I find:

sage: ag '^\s*sage:'| wc -l
  300410 

If we just want to look for testing blocks then a crude lower bound is:

sage: ag '^\s*(TEST|EXAMPLE)S::' | wc -l
   62882

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Code of Conduct

2014-11-13 Thread Simon King
Hi!

On 2014-11-13, William Stein wst...@gmail.com wrote:
 For concreteness:

 [ ] Yes, this is a great idea.  About time!

 [ ] This looks good, but it would be better if... (insert suggestions).

 [ ] No, I greatly value the freedom to spout offensive profanity, and
 will fork Sage in frustration if there is such a code.  (We really do
 want to know if there are any developers who would quit working on
 Sage if we have this Code of Conduct; by definition such a person
 should have no hesitation publicly saying so in response to this
 email.  I'm imagining what someone like Linus Torvalds might say if
 this were proposed on the Linux kernel mailing list.   I just want
 people to think -- having a code of conduct isn't _obviously_ the
 right thing to do.)

I certainly see the possibility that a contributor quits if s/he is
mistreated by other contributors. I actually have first-hand experience:
A couple of years ago, I was involved in the German translation of some
parts of the Sage documentation. Another contributor personally insulted
me here on the list, and even by comments that he tried to put into the
Sage code. As a result, the German translation became a very low priority
for me, and I am not even sure if it is completed now.

However: If there was even the vague possibility of instrumenting a code of
conduct to kick valuable contributors out, then by Murphy's law it would
eventually happen. But I think it must not happen, which is why I am
strongly against a code of conduct that has the status of enforceable law
within our community.

I don't think that publishing a code of conduct is the right thing to do.
What really matters (also in the case of bullying at school) is: If people
see that contributor A mistreats contributor B, then they should first of
all be solidaric with B and openly express that they do not agree with how
A acts--- *without* starting to mistreat A in turn. This, I think, is by far
more important and helpful for B and for the community as a whole than to
kick A out.

Instead of publishing a code of conduct, I think it would be more
helpful to explain by (constructed) examples how and why people get
offended by certain ways of expressing concerns, and suggest better
ways of expressing the concern.

Best regards,
Simon


-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Code of Conduct

2014-11-13 Thread Simon King
Hi Robert,

On 2014-11-13, Robert Dodier robert.dod...@gmail.com wrote:
 Can we create an environment... where character matters, hard work is 
 respected, humility is valued, and support for one another is 
 unconditional? 

 Yes, I think you can, although I think formulating a code of conduct
 is mostly a distraction.

+1

 People take their cues from others who are
 perceived to be socially superior, so the key is to get anybody who
 has a lot of visibility / brownie points / respect / whatever to
 get on the bandwagon. Whatever those people practice, is going to
 become the conventional way, so we had better hope they have good
 habits. About good habits, I think it's really pretty simple:

  * talk about ideas instead of people
  * don't feed the trolls
  * get to the point

Very good comment, I think!
Cheers,
Simon


-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: tab completion for list of associated objects

2014-11-13 Thread Andrew
On Wednesday, 12 November 2014 21:27:50 UTC+11, Volker Braun wrote:

 The Sage code style is that methods are preferred over properties if in 
 doubt. And even in plain Python I would really recommend to only use 
 properties for static accessors. If you need to make a computation, use a 
 method. This makes it clear to the user that there is a computation 
 involved, even if it is just enumerating the possible representations for 
 future use. 

 It might be a minor inconvenience to have to write

 sage: A=MyFavouriteAlgebra()
 sage. A.representations()
 sage: _.tab

 but its much more annoying to have A.representations.tab hang for a long 
 time and then potentially raise an out of memory error etc. Also your UI 
 might automatically collect tab completions before you even press tab. 

 
The UI is essentially just a dictionary and it is constructed when A is 
first created. The objects that get included in it depend in a trivial way 
on the type and deformation parameters of the algebra A (i.e. arguments to 
__init__), so the run-time cost is negligible. My rationale for having this 
is the same as for the groups().tab expanders. If people don't like I'll 
remove it.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Ondřej Čertík
On Thu, Nov 13, 2014 at 2:00 PM, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 Hi Bill,

 On Thu, Nov 13, 2014 at 10:16 AM, Bill Page bill.p...@newsynthesis.org 
 wrote:
 It has always seemed very inconvenient to me that computer algebra
 programs such as Mathematica choose to define derivative as
 complex-derivative.  I believe a reasonable alternative is what is
 known as a Wirtinger derivative.  Wirtinger derivatives exist for all
 continuous complex-valued functions including non-holonomic functions
 and permit the construction of a differential calculus for functions
 of complex variables that is analogous to the ordinary differential
 calculus for functions of real variables

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

 Wirtinger derivatives come in conjugate pairs but we have

   f(x).diff(conjugate(x)) = conjugate(conjugate(f(x).diff(x))

 so we really only need one derivative given an appropriate conjugate
 function.  The Cauchy-Riemann equations reduce to

   f(x).diff(conjugate(x)) = 0

 I also like that abs is related to the sgn function

  abs(x).diff(x)  = x/abs(x)

 This is consistent with

   abs(x)=sqrt(x*conjugate(x))

 The Wirtinger derivative of abs(x) is 1/2 x/abs(x).  Its total
 Wirtinger derivative is x/abs(x).

 I have implemented conjugate and Wirtinger derivatives in FriCAS

   http://axiom-wiki.newsynthesis.org/SandBoxWirtinger

 Unfortunately I have not yet been able to convince the FriCAS
 developers of the appropriateness of this approach.  I would be happy
 to find someone with whom to discuss this further, pro and con.  The
 discussion on the FriCAS email list consisted mostly of the related
 proper treatment of conjugate without making explicit assumptions
 about variables.

 Thanks for your email! I haven't talked to you in a long time.
 Literally just today I learned about Wirtinger derivatives. The
 wikipedia page is *really* confusing to me. It took me a while to
 realize, that Wirtinger derivatives is simply the derivative with
 respect to z or conjugate(z). I.e.

 z = x + i*y
 conjugate(z) = x - i*y

 From this it follows:

 x = 1/2*(z + conjugate(z))
 y = i/2*(-z+conjugate(z))

 Then I take any function and write it in terms of z and conjugate(z),
 some examples:

 |z| = sqrt(z*conjugate(z))
 Re z = x = 1/2 * (z + conjugate(z))
 z^2 = (x+i*y)^2

 And then I simply differentiate with respect to z or conjugate(z).
 This is called the Wirtinger derivative. So:

 d|z|/dz = d sqrt(z*conjugate(z)) / dz = 1/2*conjugate(z) / |z|

 As you said, the function is analytic if it doesn't functionally
 depend on conjugate(z), as can be shown easily. So |z| or Re z are not
 analytic, while z^2 is. If the function is analytic, then df/d
 conjugate(z) = 0, and df/dz is the complex derivative. Right?

To elaborate on this point, if the function has a complex derivative
(i.e. it is analytic),
then the complex derivative f'(z) = \partial f /  \partial x. So to
calculate a complex derivative
with respect to z=x+i*y, we just need to differentiate with respect to x.

It can be shown, that the Wirtinger derivatives df/dz is equal to
\partial f /  \partial x for analytic functions,
i.e. when df/d conjugate(z) = 0.

So in a CAS, we can simply define the derivative f'(z) as \partial f /
\partial x for any function, even if it doesn't have a complex
derivative.
For any function we can show that:

\partial f / \partial x = d f / d z + d f / d conjugate(z)

Bill, is this what you call the total Wirtinger derivative?

For example, for |z| we get:

|z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

Using our definition, this holds for any complex z. Then, if z is
real, we get:

|z|' = z / |z|

Which is exactly the usual real derivative. Bill, is this what you had
in mind? That a CAS could return the derivative of abs(z)
as Re(z) / abs(z) ?

Ondrej


 So for analytic functions, Wirtinger derivative gives the same answer
 as Mathematica. For non-analytic functions, Mathematica leaves it
 unevaluated, but Wirtinger derivative gives you something.

 How do you calculate the total Wirtinger derivative? How is that defined?

 Because I would like to get

 d|x| / d x = x / |x|

 for real x. And I don't see currently how is this formula connected to
 Wirtinger derivatives. Finally, the derivative operator in a CAS could
 return Wirtinger derivatives, I think it's a great idea, if somehow we
 can recover the usual formula for abs(x) with real x.

 What are the cons of this approach?

 Ondrej

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Bill Page
On 13 November 2014 19:24, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 On Thu, Nov 13, 2014 at 2:00 PM, Ondřej Čertík ondrej.cer...@gmail.com 
 wrote:

 As you said, the function is analytic if it doesn't functionally
 depend on conjugate(z), as can be shown easily. So |z| or
 Re z are not analytic, while z^2 is. If the function is analytic,
 then df/d conjugate(z) = 0, and df/dz is the complex derivative.
 Right?


Yes.  In my email I notice that  I wrote holonomic but what I meant
was holomorphic. Complex-analytic functions are holomorphic and
vice-versa.

 ...
 So in a CAS, we can simply define the derivative f'(z) as
 \partial f / \partial x for any function, even if it doesn't have a
 complex derivative.

Yes.

 For any function we can show that:

 \partial f / \partial x = d f / d z + d f / d conjugate(z)

 Bill, is this what you call the total Wirtinger derivative?


Yes

 For example, for |z| we get:

 |z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

 Using our definition, this holds for any complex z. Then, if z is
 real, we get:

 |z|' = z / |z|

 Which is exactly the usual real derivative. Bill, is this what you had
 in mind? That a CAS could return the derivative of abs(z)
 as Re(z) / abs(z) ?

 Ondrej


 So for analytic functions, Wirtinger derivative gives the same answer
 as Mathematica. For non-analytic functions, Mathematica leaves it
 unevaluated, but Wirtinger derivative gives you something.

 How do you calculate the total Wirtinger derivative? How is that defined?

 Because I would like to get

 d|x| / d x = x / |x|

 for real x. And I don't see currently how is this formula connected to
 Wirtinger derivatives. Finally, the derivative operator in a CAS could
 return Wirtinger derivatives, I think it's a great idea, if somehow we
 can recover the usual formula for abs(x) with real x.

 What are the cons of this approach?

 Ondrej

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Fwd: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Bill Page
Sorry, I hit send before I was quite ready.  To continue ...

On 13 November 2014 19:24, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 On Thu, Nov 13, 2014 at 2:00 PM, Ondřej Čertík ondrej.cer...@gmail.com 
 wrote:
 ...
 For example, for |z| we get:

 |z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

 Using our definition, this holds for any complex z. Then, if z
 is real, we get:

 |z|' = z / |z|

 Which is exactly the usual real derivative. Bill, is this what you
 had in mind? That a CAS could return the derivative of abs(z)
 as Re(z) / abs(z) ?


Yes, exactly.  I think a question might arise whether we should treat
conjugate or Re as elementary.

 ...
 What are the cons of this approach?


First, care needs to be taken to properly extend the chain rule to
include the conjugate Wirtinger derivative where necessary.

Second, in principle problems can arise when defining a test for
constant functions.  For example this is necessary as part of
rewriting expressions in terms of the smallest number of elementary
functions (normalize) as a kind of zero test for expressions in
FriCAS/Axiom. Usually we assume that

  df(x)/dx = 0

is necessary and sufficient for f to be a constant function.  But
requiring that the total derivative

  d f / d z + d f / d conjugate(z) = 0

is not what we mean by constant. In fact it seems to be an open
question whether Richardson's theorem can be extended to include
conjugate as an elementary function in such a way that the zero test
is still computable. This is the last point of discussion on the
FriCAS email list.

Bill.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Code of Conduct

2014-11-13 Thread Travis Scrimshaw
   I believe we need to have such a code-of-conduct posted stating the 
manner in which we should act. Like Jan and Simon, this should not be some 
strict set of rules that gets referenced every time someone feels another 
developer is out of line. By publishing such a code, we give explicit 
guideline which we want our contributors to try to adhere to. It should not 
be a zero tolerance policy, but it needs to be enforceable when necessary 
for clear repetitive violations.

   To give a counterpoint to Simon's analogy, we agree that bullying is 
bad, but by the rules, we can tell bullies explicitly what their doing is 
wrong, why we can't push the bullies down, and explain what will happen if 
the behavior escalates. Bullying can get so bad that the teachers need to 
step in and enact the correct punishment.

Best,
Travis


On Thursday, November 13, 2014 11:00:58 AM UTC-8, William wrote:

 On Thu, Nov 13, 2014 at 10:48 AM, Volker Braun vbrau...@gmail.com 
 javascript: wrote: 
  Can we create an environment... where character matters, hard work is 
  respected, humility is valued, and support for one another is 
 unconditional? 
  
  I admittedly stole that quote, but only because I wholeheartedly agree 
 it is 
  good to always aspire to better ourselves. Some of the Sage developers 
 who 
  are better with words than me went ahead and stole a lot more, mostly 
 from 
  Fedora (http://fedoraproject.org/code-of-conduct) and Django 
  (https://www.djangoproject.com/conduct), to formulate a Code of 
 Conduct 
  for the Sage project. I'm happy to present it here, and welcome everyone 
 to 
  vote on it. 

 For concreteness: 

 [ ] Yes, this is a great idea.  About time! 

 [ ] This looks good, but it would be better if... (insert suggestions). 

 [ ] No, I greatly value the freedom to spout offensive profanity, and 
 will fork Sage in frustration if there is such a code.  (We really do 
 want to know if there are any developers who would quit working on 
 Sage if we have this Code of Conduct; by definition such a person 
 should have no hesitation publicly saying so in response to this 
 email.  I'm imagining what someone like Linus Torvalds might say if 
 this were proposed on the Linux kernel mailing list.   I just want 
 people to think -- having a code of conduct isn't _obviously_ the 
 right thing to do.) 

  
  
  Code of Conduct 
  --- 
  
  The Sage community is comprised of an international mixture of 
  mathematicians, computer scientists, engineers, 
  researchers, teachers, amateurs, and others with varied backgrounds. 
 This 
  diversity is one of our strengths, but it can also lead to communication 
  problems and unhappiness. People who love working on 
  Sage can more effectively collaborate with others if they follow this 
 code. 
  
  If you believe someone is violating the code of conduct, we ask that you 
  report it by emailing sage-...@googlegroups.com javascript:. The 
 group administrators 
  will consider the issue and explore resolutions. It 
  is also possible to move heated discussions to the mailing list 
  sage-...@googlegroups.com javascript:. 
  
  1)   Be friendly and patient. 
  
  2)   Be welcoming. We strive to be a community that welcomes and 
 supports 
  people of all backgrounds and identities. 
  
  3)   Be considerate. Your work will be used by other people and you in 
 turn 
  will depend on the work of others. Any decision you take will affect 
 users 
  and developers so you should take those 
  consequences into account when making decisions. Conversely, Sage is 
  constantly evolving, and earlier decisions that were made in good faith 
 may 
  sometimes need to be reconsidered. Nonetheless, we 
  should still appreciate the hard work done in the past. 
  
  4)   Be respectful and polite. Not all of us will agree all the time, 
 but 
  disagreement is no excuse for poor behavior and poor manners. We might 
 all 
  experience some frustration now and then, but we 
  cannot allow that frustration to morph into personal attacks. It is 
  important to remember that a community where people feel uncomfortable 
 or 
  threatened is not a productive one. Members of the Sage 
  community should be respectful when dealing with other developers and 
 users. 
  
  When we disagree, we should try to understand why. Disagreements, both 
  social and technical, happen all the time. It is important that we 
 resolve 
  disagreements and differing views constructively. 
  Being unable to understand why someone holds a viewpoint does not mean 
 that 
  they are wrong. Do not forget that it is human to err. Blame alone gets 
 us 
  nowhere, it is better to help resolve issues so 
  we can all learn from our mistakes. 
  
  -- 
  You received this message because you are subscribed to the Google 
 Groups 
  sage-devel group. 
  To unsubscribe from this group and stop receiving emails from it, send 
 an 
  email to sage-devel+...@googlegroups.com javascript:. 
  To post 

Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Darij Grinberg
Hi,

I have used method aliasing (such as frobenius = frobenius_endomorphism) 
a lot. What should I be doing instead, and what is the problem? (I have to 
admit this thread was TL;DR to me.)

  Best regards,
  Darij

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Nathann Cohen
Yo !

I have used method aliasing (such as frobenius = frobenius_endomorphism)
 a lot. What should I be doing instead, and what is the problem? (I have to
 admit this thread was TL;DR to me.)


1) Build a class with a method named A, aliased by B
2) Extend this class and redefine A

B still points toward the old A.

For this, it would be nice to have a function doing B = alias('A') which
does the job right.

Nathann

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: Posets: interval/closed_interval

2014-11-13 Thread Darij Grinberg
Hi Nathan,

On Thu, Nov 13, 2014 at 11:07 PM, Nathann Cohen nathann.co...@gmail.com wrote:
 1) Build a class with a method named A, aliased by B
 2) Extend this class and redefine A

 B still points toward the old A.

OK, I see. Well, good enough that the classes I am talking about are
not usually extended.

  Best regards,
  Darij

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Code of Conduct

2014-11-13 Thread Anne Schilling
I agree with Travis that it is good to have guidelines that one can point 
people to if discussions escalate. I agree that it is best to try to work 
things out mutually, but this does not always seem possible. So ...

[X ] Yes, this is a great idea.  About time! 

Best,

Anne

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Bug in abs(I*x).diff(x)

2014-11-13 Thread maldun
The only clean solution for this behaviour would be a warning e.g: 
Warning: This Identity holds only almost everywhere!
But I don't know if it's worth the effort ...

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-devel] Re: Code of Conduct

2014-11-13 Thread Simon King
Hi Travis,

On 2014-11-14, Travis Scrimshaw tsc...@ucdavis.edu wrote:
To give a counterpoint to Simon's analogy, we agree that bullying is 
 bad, but by the rules, we can tell bullies explicitly what their doing is 
 wrong, why we can't push the bullies down, and explain what will happen if 
 the behavior escalates. Bullying can get so bad that the teachers need to 
 step in and enact the correct punishment.

In my experience, it is often the *teachers* who are bullying, in the
sense that bullying pupils are just the teacher's tools to destroy
pupils they don't like. But school aside.

If person A verbally attacks person B, I still think it does not help to
show a *disapproving* reaction towards person A, because then A may feel
attacked, which may make his/her behaviour even worse, and which
wouldn't help B at all. Instead, I suggest to show a *supporting* reaction
towards person B, in order to make B stronger and prevent damage.

As it has been said by (IIRC) Jan, it is important that authorities set
a good example. It may not always help with any individual, but is the
best way to keep a communicative environment healthy. And concerning those
individuals for which a good example isn't good enough, I'd prefer to
see a don't feed the troll policy. If person A realises that his/her
stampede ended in a vacuum, then s/he will usually stop. And if there
was harm done to B on the way towards the vacuum, then helping B has
priority over banning A.

Best regards,
Simon


-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Code of Conduct

2014-11-13 Thread john_perry_usm
On Friday, November 14, 2014 3:55:34 AM UTC+1, Travis Scrimshaw wrote:

 Bullying can get so bad that the teachers need to step in and enact the 
 correct punishment.


...yet, in my experience, they usually don't, and often because the bullies 
are likable, or socially influential (e.g., son of the superintendent/major 
donor, comes from a good family), etc. Sometimes a teacher can 
unintentionally make a student feel like s/he is bullying her or him. 
Speech codes are sometimes used simply to shut down debate on topics that 
become culturally unfashionable, and are often applied unevenly. I 
personally prefer civilized discourse, but I've also noticed that Western 
society seems to have adopted an undercurrent of thin-skinned outrage.

If someone wanted to add a patch that verifiably improved the performance 
of Sage on [insert your favorite subsystem here], what would you do if her 
or his comments were frequently abusive toward other contributors, or 
previous contributions? i.e., profanity-laced, derogatory, etc. Not the 
code itself, mind, just the comments in the trac ticket and/or discussion 
in sage-devel. Presumably, someone would take her/ him aside  talk to him, 
but what if (as often happens) that person ignored the intervention  
continued to heap abuse on you? Would you reject the patch?

If not, what's the point of the proposed code? Again, I like civilized 
discourse, but a code without consequences strikes me as worse than no code 
at all.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Ondřej Čertík
On Thu, Nov 13, 2014 at 6:56 PM, Bill Page bill.p...@newsynthesis.org wrote:
 Sorry, I hit send before I was quite ready.  To continue ...

 On 13 November 2014 19:24, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 On Thu, Nov 13, 2014 at 2:00 PM, Ondřej Čertík ondrej.cer...@gmail.com 
 wrote:
 ...
 For example, for |z| we get:

 |z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

 Using our definition, this holds for any complex z. Then, if z
 is real, we get:

 |z|' = z / |z|

 Which is exactly the usual real derivative. Bill, is this what you
 had in mind? That a CAS could return the derivative of abs(z)
 as Re(z) / abs(z) ?


 Yes, exactly.  I think a question might arise whether we should treat
 conjugate or Re as elementary.

Ok, thanks for the confirmation.

There is an issue though --- since |z| is not analytic, the
derivatives depend on the direction. So along x you get


 ...
 What are the cons of this approach?


 First, care needs to be taken to properly extend the chain rule to
 include the conjugate Wirtinger derivative where necessary.

 Second, in principle problems can arise when defining a test for
 constant functions.  For example this is necessary as part of
 rewriting expressions in terms of the smallest number of elementary
 functions (normalize) as a kind of zero test for expressions in
 FriCAS/Axiom. Usually we assume that

   df(x)/dx = 0

 is necessary and sufficient for f to be a constant function.  But
 requiring that the total derivative

   d f / d z + d f / d conjugate(z) = 0

 is not what we mean by constant. In fact it seems to be an open
 question whether Richardson's theorem can be extended to include
 conjugate as an elementary function in such a way that the zero test
 is still computable. This is the last point of discussion on the
 FriCAS email list.

 Bill.

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Bug in abs(I*x).diff(x)

2014-11-13 Thread Ondřej Čertík
On Fri, Nov 14, 2014 at 12:14 AM, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 On Thu, Nov 13, 2014 at 6:56 PM, Bill Page bill.p...@newsynthesis.org wrote:
 Sorry, I hit send before I was quite ready.  To continue ...

 On 13 November 2014 19:24, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 On Thu, Nov 13, 2014 at 2:00 PM, Ondřej Čertík ondrej.cer...@gmail.com 
 wrote:
 ...
 For example, for |z| we get:

 |z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

 Using our definition, this holds for any complex z. Then, if z
 is real, we get:

 |z|' = z / |z|

 Which is exactly the usual real derivative. Bill, is this what you
 had in mind? That a CAS could return the derivative of abs(z)
 as Re(z) / abs(z) ?


 Yes, exactly.  I think a question might arise whether we should treat
 conjugate or Re as elementary.

 Ok, thanks for the confirmation.

 There is an issue though --- since |z| is not analytic, the
 derivatives depend on the direction. So along x you get

Sorry, a bug in gmail sent the message

along x you get:

|z|' = \partial |z| / \partial x = d |z| / d z + d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) + z / (2*|z|) = Re(z) / |z|

but along y you get:

|z|' = \partial |z| / \partial i*y = d |z| / d z - d |z| / d
 conjugate(z) = conjugate(z) / (2*|z|) - z / (2*|z|) = i*Im(z) / |z|

So I get something completely different. So which direction should be preferred
in the CAS convention and why?

Ondrej



 ...
 What are the cons of this approach?


 First, care needs to be taken to properly extend the chain rule to
 include the conjugate Wirtinger derivative where necessary.

 Second, in principle problems can arise when defining a test for
 constant functions.  For example this is necessary as part of
 rewriting expressions in terms of the smallest number of elementary
 functions (normalize) as a kind of zero test for expressions in
 FriCAS/Axiom. Usually we assume that

   df(x)/dx = 0

 is necessary and sufficient for f to be a constant function.  But
 requiring that the total derivative

   d f / d z + d f / d conjugate(z) = 0

 is not what we mean by constant. In fact it seems to be an open
 question whether Richardson's theorem can be extended to include
 conjugate as an elementary function in such a way that the zero test
 is still computable. This is the last point of discussion on the
 FriCAS email list.

 Bill.

 --
 You received this message because you are subscribed to the Google Groups 
 sage-devel group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to sage-devel+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-devel@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-devel.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.