I had a similar problem with the quadratic sieve I was developing. Someone developed an extremely nice trick for speeding up the quadratic sieve, implemented it in MAPLE (I'm not sure if it is actually part of the core functionality of MAPLE, since it seems to factor extremely slowly), then wrote a paper on the subject.
I'd really like to pinch that algorithmic trick, and in fact, had I discovered the paper on the web myself, I probably would have implemented it. But it was actually pointed out to me by someone who knew the author. The author obviously didn't want his idea GPL'd, but probably would have no problems with me using the trick in a home brew program. In short, things like this force one to be innovative and come up with one's own unique solutions. Another neat trick for the quadratic sieve is one used by an extemely fast implementation called msieve, by Jason P. I could have just pinched his big idea, but I consider Jason P to be a friend. In the end, I found my own unique strategy which seems to accomplish pretty much the same thing by completely different means. It is still not clear which will end up being faster when I finally add in all the other known tricks for the quadratic sieve. Some of Jason P's code from msieve has ended up in GPL'd works (most notably GGNFS), but with attribution. I suspect they sought special permission from him to use it. He may have even contributed it himself. In short, sometimes contacting the author can be a help. Other times it is better to not know the author too well. Another difficulty I have is, how does one give attribution when the code you write is heavily based on code by someone else (where their code *IS* GPL'd), but your code has been rewritten to the point where you can't just put their copyright notice on the code? There is an example of this in a very small section of my quadratic sieve. I rewrote and made use of some (but certainly not all) of the F2Matrix code used in Pari (and made it 20 times faster on some architectures). It is still recognizable, but virtually no line is precisely the same as used in Pari. Any ideas how I properly attribute this? I've tried contacting the original copyright holder, but didn't yet get a response. A similar issue is likely to arise for portions of the NTL replacement library I am writing. There I can just contact Victor Shoup and see what he wants me to do to properly credit him. Some portions of the code are so similar (virtually just translated) that it might be appropriate to just make them copyright Victor Shoup and note that I had made contributions!! Other parts are of course uniquely mine. Note, that the similar portions can't just be submitted to be included in NTL, since they work completely differently and are not compatible with that product. Bill. P.S: Unfortunately msieve itself is (currently) only fast on an Athlon machine and is otherwise not portable due to the use of assembly language (if I understand correctly), so we can't just use it in SAGE for factoring (it's about 8 times faster on an Athlon than the current factoring implementation). Jason P's license restrictions are actually compatible with the GPL I suspect, so this would be theoretically possible, if it weren't for his home brew MP library. --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---
