Velocity Reviews > sympy: what's wrong with this picture?

# sympy: what's wrong with this picture?

Mensanator
Guest
Posts: n/a

 03-03-2008
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 ****s up other modules.

Carl Banks
Guest
Posts: n/a

 03-03-2008
On Mar 3, 3:40 pm, Mensanator <(E-Mail Removed)> 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
Guest
Posts: n/a

 03-03-2008
On Mar 3, 2:49*pm, Carl Banks <(E-Mail Removed)> wrote:
> On Mar 3, 3:40 pm, Mensanator <(E-Mail Removed)> 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
Guest
Posts: n/a

 03-03-2008
Mensanator wrote:
> On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> 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
an underlying truth."
-- Umberto Eco

Carl Banks
Guest
Posts: n/a

 03-03-2008
On Mar 3, 4:47 pm, Mensanator <(E-Mail Removed)> wrote:
> On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> wrote:
>
>
>
> > On Mar 3, 3:40 pm, Mensanator <(E-Mail Removed)> 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
Guest
Posts: n/a

 03-03-2008
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
Guest
Posts: n/a

 03-03-2008
On Mar 3, 4:08*pm, Robert Kern <(E-Mail Removed)> wrote:
> Mensanator wrote:
> > On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> 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
Guest
Posts: n/a

 03-04-2008
Mensanator wrote:
> On Mar 3, 4:08 pm, Robert Kern <(E-Mail Removed)> wrote:
>> Mensanator wrote:
>>> On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> 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:

>>> 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 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
an underlying truth."
-- Umberto Eco

Mensanator
Guest
Posts: n/a

 03-04-2008
On Mar 3, 4:53*pm, Carl Banks <(E-Mail Removed)> wrote:
> On Mar 3, 4:47 pm, Mensanator <(E-Mail Removed)> wrote:
>
>
>
>
>
> > On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> wrote:

>
> > > On Mar 3, 3:40 pm, Mensanator <(E-Mail Removed)> 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 "****" 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 ****s 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
Guest
Posts: n/a

 03-04-2008
On Mar 3, 7:24 pm, Mensanator <(E-Mail Removed)> wrote:
> On Mar 3, 4:53 pm, Carl Banks <(E-Mail Removed)> wrote:
>
>
>
> > On Mar 3, 4:47 pm, Mensanator <(E-Mail Removed)> wrote:

>
> > > On Mar 3, 2:49 pm, Carl Banks <(E-Mail Removed)> wrote:

>
> > > > On Mar 3, 3:40 pm, Mensanator <(E-Mail Removed)> 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

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

Carl Banks