[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

sympy: what's wrong with this picture?

Mensanator

3/3/2008 8:40:00 PM

Notice anything funny about the "random" choices?

import sympy
import time
import random

f = [i for i in sympy.primerange(1000,10000)]

for i in xrange(10):
f1 = random.choice(f)
print f1,
f2 = random.choice(f)
print f2,
C = f1*f2
ff = None
ff = sympy.factorint(C)
print ff

## 7307 7243 [(7243, 1), (7307, 1)]
## 4091 6829 [(4091, 1), (6829, 1)]
## 8563 2677 [(2677, 1), (8563, 1)]
## 4091 6829 [(4091, 1), (6829, 1)]
## 8563 2677 [(2677, 1), (8563, 1)]
## 4091 6829 [(4091, 1), (6829, 1)]
## 8563 2677 [(2677, 1), (8563, 1)]
## 4091 6829 [(4091, 1), (6829, 1)]
## 8563 2677 [(2677, 1), (8563, 1)]
## 4091 6829 [(4091, 1), (6829, 1)]

As in, "they're NOT random".

The random number generator is broken by the sympy.factorint()
function.

Random.choice() works ok if the factorint() function commented out.

## 6089 1811 None
## 6449 1759 None
## 9923 4639 None
## 4013 4889 None
## 4349 2029 None
## 6703 8677 None
## 1879 1867 None
## 5153 5279 None
## 2011 4937 None
## 7253 5507 None

This makes sympy worse than worthless, as it fucks up other modules.

30 Answers

Carl Banks

3/3/2008 8:50:00 PM

0

On Mar 3, 3:40 pm, Mensanator <mensana...@aol.com> wrote:
> Notice anything funny about the "random" choices?
>
> import sympy
> import time
> import random
>
> f = [i for i in sympy.primerange(1000,10000)]
>
> for i in xrange(10):
> f1 = random.choice(f)
> print f1,
> f2 = random.choice(f)
> print f2,
> C = f1*f2
> ff = None
> ff = sympy.factorint(C)
> print ff
>
> ## 7307 7243 [(7243, 1), (7307, 1)]
> ## 4091 6829 [(4091, 1), (6829, 1)]
> ## 8563 2677 [(2677, 1), (8563, 1)]
> ## 4091 6829 [(4091, 1), (6829, 1)]
> ## 8563 2677 [(2677, 1), (8563, 1)]
> ## 4091 6829 [(4091, 1), (6829, 1)]
> ## 8563 2677 [(2677, 1), (8563, 1)]
> ## 4091 6829 [(4091, 1), (6829, 1)]
> ## 8563 2677 [(2677, 1), (8563, 1)]
> ## 4091 6829 [(4091, 1), (6829, 1)]
>
> As in, "they're NOT random".
>
> The random number generator is broken by the sympy.factorint()
> function.
>
> Random.choice() works ok if the factorint() function commented out.
>
> ## 6089 1811 None
> ## 6449 1759 None
> ## 9923 4639 None
> ## 4013 4889 None
> ## 4349 2029 None
> ## 6703 8677 None
> ## 1879 1867 None
> ## 5153 5279 None
> ## 2011 4937 None
> ## 7253 5507 None
>
> This makes sympy worse than worthless, as it f***s up other modules.

Dude, relax.

It's just a bug--probably sympy is messing with the internals of the
random number generator. It would be a simple fix. Instead of
b****ing about it, file a bug report. Or better yet, submit a patch.


Carl Banks

Mensanator

3/3/2008 9:48:00 PM

0

On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
> On Mar 3, 3:40 pm, Mensanator <mensana...@aol.com> wrote:
>
>
>
>
>
> > Notice anything funny about the "random" choices?
>
> > import sympy
> > import time
> > import random
>
> > f = [i for i in sympy.primerange(1000,10000)]
>
> > for i in xrange(10):
> >   f1 = random.choice(f)
> >   print f1,
> >   f2 = random.choice(f)
> >   print f2,
> >   C = f1*f2
> >   ff = None
> >   ff = sympy.factorint(C)
> >   print ff
>
> > ##  7307 7243 [(7243, 1), (7307, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
>
> > As in, "they're NOT random".
>
> > The random number generator is broken by the sympy.factorint()
> > function.
>
> > Random.choice() works ok if the factorint() function commented out.
>
> > ##  6089 1811 None
> > ##  6449 1759 None
> > ##  9923 4639 None
> > ##  4013 4889 None
> > ##  4349 2029 None
> > ##  6703 8677 None
> > ##  1879 1867 None
> > ##  5153 5279 None
> > ##  2011 4937 None
> > ##  7253 5507 None
>
> > This makes sympy worse than worthless, as it f***s up other modules.
>
> Dude, relax.
>
> It's just a bug--probably sympy is messing with the internals of the
> random number generator.  It would be a simple fix.  Instead of
> b****ing about it, file a bug report.  

I did.

> Or better yet, submit a patch.

I would if I knew what the problem was.

I posted it here because someone recommended it.
I'm simply un-recommending it. Those who don't care
needn't pay any attention. Those who do should be
glad that faults are pointed out when found.

>
> Carl Banks

Robert Kern

3/3/2008 10:09:00 PM

0

Mensanator wrote:
> On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:

>> It's just a bug--probably sympy is messing with the internals of the
>> random number generator. It would be a simple fix. Instead of
>> b****ing about it, file a bug report.
>
> I did.
>
>> Or better yet, submit a patch.
>
> I would if I knew what the problem was.

Did you even try to figure it out? It took me all of 5 minutes to find the mistake.

> I posted it here because someone recommended it.
> I'm simply un-recommending it.

It was a mistake, an easily remedied mistake, not a big unchangeable design
decision. If you want to recommend against sympy as a package, there is a larger
burden of proof that you have yet to meet.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Carl Banks

3/3/2008 10:53:00 PM

0

On Mar 3, 4:47 pm, Mensanator <mensana...@aol.com> wrote:
> On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
>
>
>
> > On Mar 3, 3:40 pm, Mensanator <mensana...@aol.com> wrote:
>
> > > Notice anything funny about the "random" choices?
>
> > > import sympy
> > > import time
> > > import random
>
> > > f = [i for i in sympy.primerange(1000,10000)]
>
> > > for i in xrange(10):
> > > f1 = random.choice(f)
> > > print f1,
> > > f2 = random.choice(f)
> > > print f2,
> > > C = f1*f2
> > > ff = None
> > > ff = sympy.factorint(C)
> > > print ff
>
> > > ## 7307 7243 [(7243, 1), (7307, 1)]
> > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > ## 4091 6829 [(4091, 1), (6829, 1)]
>
> > > As in, "they're NOT random".
>
> > > The random number generator is broken by the sympy.factorint()
> > > function.
>
> > > Random.choice() works ok if the factorint() function commented out.
>
> > > ## 6089 1811 None
> > > ## 6449 1759 None
> > > ## 9923 4639 None
> > > ## 4013 4889 None
> > > ## 4349 2029 None
> > > ## 6703 8677 None
> > > ## 1879 1867 None
> > > ## 5153 5279 None
> > > ## 2011 4937 None
> > > ## 7253 5507 None
>
> > > This makes sympy worse than worthless, as it f***s up other modules.
>
> > Dude, relax.
>
> > It's just a bug--probably sympy is messing with the internals of the
> > random number generator. It would be a simple fix. Instead of
> > b****ing about it, file a bug report.
>
> I did.
>
> > Or better yet, submit a patch.
>
> I would if I knew what the problem was.
>
> I posted it here because someone recommended it.
> I'm simply un-recommending it. Those who don't care
> needn't pay any attention. Those who do should be
> glad that faults are pointed out when found.

1. You can point out the faults of a program without insults and
vulgarity

2. You must be terribly difficult to please if one bug is enough to
recommend against a program as "worse than worthless"

3. You must be terribly naive if you expect a freeware program with a
version number of 0.5.12 not to have bugs


Carl Banks

apatheticagnostic

3/3/2008 10:59:00 PM

0

I swear, this is one of the most polite-oriented groups I've ever
seen.

Not that that's a bad thing or anything, it's nice to be nice.

(This has been Captain Universal Truth, over and out)

Mensanator

3/3/2008 11:55:00 PM

0

On Mar 3, 4:08 pm, Robert Kern <robert.k...@gmail.com> wrote:
> Mensanator wrote:
> > On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
> >> It's just a bug--probably sympy is messing with the internals of the
> >> random number generator.  It would be a simple fix.  Instead of
> >> b****ing about it, file a bug report.  
>
> > I did.
>
> >> Or better yet, submit a patch.
>
> > I would if I knew what the problem was.
>
> Did you even try to figure it out? It took me all of 5 minutes to find the mistake.

Could I trouble you to share? Then I could continue my testing.

>
> > I posted it here because someone recommended it.
> > I'm simply un-recommending it.
>
> It was a mistake, an easily remedied mistake,

But I didn't know that (and still don't).

> not a big unchangeable design decision.

I didn't know that either. For all I know, I might have to
wait for the next version, and who knows when that will be?

> If you want to recommend against sympy as a package, there is a larger
> burden of proof that you have yet to meet.

What kind of burden of proof must one have to recommend it in the
first place?

>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless enigma
>   that is made terrible by our own mad attempt to interpret it as though it had
>   an underlying truth."
>    -- Umberto Eco

Robert Kern

3/4/2008 12:22:00 AM

0

Mensanator wrote:
> On Mar 3, 4:08 pm, Robert Kern <robert.k...@gmail.com> wrote:
>> Mensanator wrote:
>>> On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
>>>> It's just a bug--probably sympy is messing with the internals of the
>>>> random number generator. It would be a simple fix. Instead of
>>>> b****ing about it, file a bug report.
>>> I did.
>>>> Or better yet, submit a patch.
>>> I would if I knew what the problem was.
>> Did you even try to figure it out? It took me all of 5 minutes to find the mistake.
>
> Could I trouble you to share? Then I could continue my testing.

I posted the patch on the bug tracker:

http://code.google.com/p/sympy/issues/det...

>>> I posted it here because someone recommended it.
>>> I'm simply un-recommending it.
>> It was a mistake, an easily remedied mistake,
>
> But I didn't know that (and still don't).
>
>> not a big unchangeable design decision.
>
> I didn't know that either. For all I know, I might have to
> wait for the next version, and who knows when that will be?

The point is that you didn't try to figure it out. And you assumed the worst
rather than giving anyone the benefit of the doubt. You didn't even wait to get
a response from the package maintainer about how serious the issue was before
you came here to un-recommend it.

All software has bugs.

Good software has bugs.

Finding a single bug in a package is not sufficient cause to warn people away as
if it had the plague.

>> If you want to recommend against sympy as a package, there is a larger
>> burden of proof that you have yet to meet.
>
> What kind of burden of proof must one have to recommend it in the
> first place?

Significantly less. "It was useful to me," is sufficient.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Mensanator

3/4/2008 12:25:00 AM

0

On Mar 3, 4:53 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
> On Mar 3, 4:47 pm, Mensanator <mensana...@aol.com> wrote:
>
>
>
>
>
> > On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
>
> > > On Mar 3, 3:40 pm, Mensanator <mensana...@aol.com> wrote:
>
> > > > Notice anything funny about the "random" choices?
>
> > > > import sympy
> > > > import time
> > > > import random
>
> > > > f = [i for i in sympy.primerange(1000,10000)]
>
> > > > for i in xrange(10):
> > > >   f1 = random.choice(f)
> > > >   print f1,
> > > >   f2 = random.choice(f)
> > > >   print f2,
> > > >   C = f1*f2
> > > >   ff = None
> > > >   ff = sympy.factorint(C)
> > > >   print ff
>
> > > > ##  7307 7243 [(7243, 1), (7307, 1)]
> > > > ##  4091 6829 [(4091, 1), (6829, 1)]
> > > > ##  8563 2677 [(2677, 1), (8563, 1)]
> > > > ##  4091 6829 [(4091, 1), (6829, 1)]
> > > > ##  8563 2677 [(2677, 1), (8563, 1)]
> > > > ##  4091 6829 [(4091, 1), (6829, 1)]
> > > > ##  8563 2677 [(2677, 1), (8563, 1)]
> > > > ##  4091 6829 [(4091, 1), (6829, 1)]
> > > > ##  8563 2677 [(2677, 1), (8563, 1)]
> > > > ##  4091 6829 [(4091, 1), (6829, 1)]
>
> > > > As in, "they're NOT random".
>
> > > > The random number generator is broken by the sympy.factorint()
> > > > function.
>
> > > > Random.choice() works ok if the factorint() function commented out.
>
> > > > ##  6089 1811 None
> > > > ##  6449 1759 None
> > > > ##  9923 4639 None
> > > > ##  4013 4889 None
> > > > ##  4349 2029 None
> > > > ##  6703 8677 None
> > > > ##  1879 1867 None
> > > > ##  5153 5279 None
> > > > ##  2011 4937 None
> > > > ##  7253 5507 None
>
> > > > This makes sympy worse than worthless, as it f***s up other modules.
>
> > > Dude, relax.
>
> > > It's just a bug--probably sympy is messing with the internals of the
> > > random number generator.  It would be a simple fix.  Instead of
> > > b****ing about it, file a bug report.
>
> > I did.
>
> > > Or better yet, submit a patch.
>
> > I would if I knew what the problem was.
>
> > I posted it here because someone recommended it.
> > I'm simply un-recommending it. Those who don't care
> > needn't pay any attention. Those who do should be
> > glad that faults are pointed out when found.
>
> 1. You can point out the faults of a program without insults and
> vulgarity

Did I insult someone?

And "fuck" in the context I used it means "messes with".
Now you know that the writer of that superbowl commercial
for almonds wanted to say "Robert Goulet fucks with your stuff".
But, due to censorship, changed it to "messes with".

>
> 2. You must be terribly difficult to please if one bug is enough to
> recommend against a program as "worse than worthless"

While we're on the subject of English, the word "worthless"
means "has no value". So, a program that doesn't work would
generally be "worthless". One that not only doesn't work but
creates side effects that cause other programs to not work
(which don't have bugs) would be "worse than worthless".

I'm not hard to please at all. I'm planning a later report
where I test sympy's factoring with that of the MIRACL library's
factor.exe program. It too, has a serious bug (and I'm not
a good enough C programmer to know how to fix it) but I have
a Python based workaround even though the MIRACL library
has no Python interface. But any mention I ever make of this
program will mention this bug in case anyone wants to use it.

>
> 3. You must be terribly naive if you expect a freeware program with a
> version number of 0.5.12 not to have bugs

No, but I guess I'm naive thinking that when someone posts a link to
such a program that he's recommending going and trying it out. That
is why they're making it available, isn't it? For people to try out
so they can get free testing? Aren't I doing my part? Should I just
uninstall it and forget it?

>
> Carl Banks

Carl Banks

3/4/2008 12:40:00 AM

0

On Mar 3, 7:24 pm, Mensanator <mensana...@aol.com> wrote:
> On Mar 3, 4:53 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
>
>
>
> > On Mar 3, 4:47 pm, Mensanator <mensana...@aol.com> wrote:
>
> > > On Mar 3, 2:49 pm, Carl Banks <pavlovevide...@gmail.com> wrote:
>
> > > > On Mar 3, 3:40 pm, Mensanator <mensana...@aol.com> wrote:
>
> > > > > Notice anything funny about the "random" choices?
>
> > > > > import sympy
> > > > > import time
> > > > > import random
>
> > > > > f = [i for i in sympy.primerange(1000,10000)]
>
> > > > > for i in xrange(10):
> > > > > f1 = random.choice(f)
> > > > > print f1,
> > > > > f2 = random.choice(f)
> > > > > print f2,
> > > > > C = f1*f2
> > > > > ff = None
> > > > > ff = sympy.factorint(C)
> > > > > print ff
>
> > > > > ## 7307 7243 [(7243, 1), (7307, 1)]
> > > > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > > > ## 4091 6829 [(4091, 1), (6829, 1)]
> > > > > ## 8563 2677 [(2677, 1), (8563, 1)]
> > > > > ## 4091 6829 [(4091, 1), (6829, 1)]
>
> > > > > As in, "they're NOT random".
>
> > > > > The random number generator is broken by the sympy.factorint()
> > > > > function.
>
> > > > > Random.choice() works ok if the factorint() function commented out.
>
> > > > > ## 6089 1811 None
> > > > > ## 6449 1759 None
> > > > > ## 9923 4639 None
> > > > > ## 4013 4889 None
> > > > > ## 4349 2029 None
> > > > > ## 6703 8677 None
> > > > > ## 1879 1867 None
> > > > > ## 5153 5279 None
> > > > > ## 2011 4937 None
> > > > > ## 7253 5507 None
>
> > > > > This makes sympy worse than worthless, as it f***s up other modules.
>
> > > > Dude, relax.
>
> > > > It's just a bug--probably sympy is messing with the internals of the
> > > > random number generator. It would be a simple fix. Instead of
> > > > b****ing about it, file a bug report.
>
> > > I did.
>
> > > > Or better yet, submit a patch.
>
> > > I would if I knew what the problem was.
>
> > > I posted it here because someone recommended it.
> > > I'm simply un-recommending it. Those who don't care
> > > needn't pay any attention. Those who do should be
> > > glad that faults are pointed out when found.
>
> > 1. You can point out the faults of a program without insults and
> > vulgarity
>
> Did I insult someone?

Yes, the intelligence of most people here, if you think anyone's going
to buy your rationalization of your spiteful behavior.

Four posts is more than enough of you.
*PLONK*


Carl Banks

Robert Kern

3/4/2008 12:50:00 AM

0

Mensanator wrote:
> On Mar 3, 4:53 pm, Carl Banks <pavlovevide...@gmail.com> wrote:

>> 3. You must be terribly naive if you expect a freeware program with a
>> version number of 0.5.12 not to have bugs
>
> No, but I guess I'm naive thinking that when someone posts a link to
> such a program that he's recommending going and trying it out. That
> is why they're making it available, isn't it? For people to try out
> so they can get free testing? Aren't I doing my part? Should I just
> uninstall it and forget it?

Finding the issue and reporting it to the sympy bug tracker is commendable.

Coming here and "un-recommending" sympy before the issue was resolved is not.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco