{Do you smell burned moth wings?}
As we all know, using the bitboard technique developed by someone else is truly shameful. The sort of thing that should cause international news bulletins defaming the despicable cad who does it.
If one were to do that without even giving credit to the original author, it would truly be a criminal act.
And yet, in Crafty 21.3, we find Pradu Kannan's magic bitboard code, through and through. Bob even uses the word 'Magic' over and over. You would think a smart thief would at least change it to 'Trickery' or something.
Not a single line in all of the code base giving credit to him, either. Do a grep for 'Pradu' and 'Kannan' though the code base. Deathly silence.
Since the entire universe is now captured in google, we can even use the wayback machine to go back in time.
But I did not need to. A simple web search shows the very moment of the theft, and even posts a caption underneath:
http://chessprogramming.wikispaces.com/Pradu+Kannan
As we all know, using the bitboard technique developed by someone else is truly shameful. The sort of thing that should cause international news bulletins defaming the despicable cad who does it.
If one were to do that without even giving credit to the original author, it would truly be a criminal act.
And yet, in Crafty 21.3, we find Pradu Kannan's magic bitboard code, through and through. Bob even uses the word 'Magic' over and over. You would think a smart thief would at least change it to 'Trickery' or something.
Not a single line in all of the code base giving credit to him, either. Do a grep for 'Pradu' and 'Kannan' though the code base. Deathly silence.
Since the entire universe is now captured in google, we can even use the wayback machine to go back in time.
But I did not need to. A simple web search shows the very moment of the theft, and even posts a caption underneath:
http://chessprogramming.wikispaces.com/Pradu+Kannan
Do I smell a big 'uh oh' here!?
Now, I do not doubt for a moment that Bob has written permission to use Pradu's code.
In fact, the crime that was committed was expunging his name and copyright.
That is what is known as 'plagiarism'.
There is no citation anywhere in the code.
There is no citation anywhere in the readme files or help file.
Further, Bob should obviously have listed Pradu as co-author in all contests crafty participated in since 21.3 onwards (for those contests that request authorship).
You might think that it is no big deal. But even if Pradu did not mind, it is still a problem.
Imagine someone who reads the crafty code and asks Bob for permission to use a few hundred lines with promise to list him as co-author.
If the code he used was Pradu's code, he would still be using that code without permission, because Pradu holds the copyright to that code.
I guess that it is really a simple oversight on Bob's part and he will take care of it. Still, it is a serious matter.
If a student were to do that on a student project at UAB, he would definitely be expelled from school.
In fact, the crime that was committed was expunging his name and copyright.
That is what is known as 'plagiarism'.
There is no citation anywhere in the code.
There is no citation anywhere in the readme files or help file.
Further, Bob should obviously have listed Pradu as co-author in all contests crafty participated in since 21.3 onwards (for those contests that request authorship).
You might think that it is no big deal. But even if Pradu did not mind, it is still a problem.
Imagine someone who reads the crafty code and asks Bob for permission to use a few hundred lines with promise to list him as co-author.
If the code he used was Pradu's code, he would still be using that code without permission, because Pradu holds the copyright to that code.
I guess that it is really a simple oversight on Bob's part and he will take care of it. Still, it is a serious matter.
If a student were to do that on a student project at UAB, he would definitely be expelled from school.
I guess it's absolutely illegal to take public domain code and publish it under an infectious license.
No.
That is legal.
That is legal.
I can even give you a computer chess example of it:
The original ippolit {and friends} releases were specifically released as public domain software.
Kranium {don't recall his real name} made a clone of it and released it as GPL.
Now, he literally does hold a GPL license to his version, and if you use his version of the code, then you must also release your work as GPL.
It's called "public domain hijack" in the industry, and it is definitely not illegal.
If you use (instead) the original public domain release to make a new program, then you can do that safely.
If it turns out that the original ippolit is contains illegal material obtained by unlawful reverse engineering, then I am not sure what the proper standing of the ippolit clones would be. I would guess that infringing material would have to be removed, at the very least.
The original ippolit {and friends} releases were specifically released as public domain software.
Kranium {don't recall his real name} made a clone of it and released it as GPL.
Now, he literally does hold a GPL license to his version, and if you use his version of the code, then you must also release your work as GPL.
It's called "public domain hijack" in the industry, and it is definitely not illegal.
If you use (instead) the original public domain release to make a new program, then you can do that safely.
If it turns out that the original ippolit is contains illegal material obtained by unlawful reverse engineering, then I am not sure what the proper standing of the ippolit clones would be. I would guess that infringing material would have to be removed, at the very least.
Thanks for clarifying this.
But this is something I could never understand. Bob has Crafty embedded in commercial software. I should change my handle to "I'mnotaprogarmmer". How did he get away with going commercial and yet not!
I do not think he is compensated for his crafty versions that are/were used commercially (e.g. the dll used by chessbase).
I do not find any fault with Robert Hyatt in that particular area.
I do not find any fault with Robert Hyatt in that particular area.
> I do not find any fault with Robert Hyatt in that particular area.
It was more interested in understanding how he got around it rather then looking to find fault.

Crafty made its way into more than just Chesebase products. It was for a considerable long time the computer chess software industries utility chess engine for many products.
That is not unusual. Several other engines had this sort of treatment also.
I guess that in every case, the commercial tool vendor contacted the authors first and asked for permission.
In reality, this is a good deal for the end users for several reasons:
1. For acquisition of the engine there is almost no cost to the commercial software vendor, lowering costs.
2. The effort of integration of the engine into the GUI is removed from the tool user, since the vendor will have done that for you
3. The software maintenance is provided by the author of the engine, again lowering costs.
The author receives the pleasure of knowing that thousands of people will benefit from using his engine (including those who have no idea how to download and install a chess engine into their favorite GUI).
So he is also compensated in some way.
I guess that in every case, the commercial tool vendor contacted the authors first and asked for permission.
In reality, this is a good deal for the end users for several reasons:
1. For acquisition of the engine there is almost no cost to the commercial software vendor, lowering costs.
2. The effort of integration of the engine into the GUI is removed from the tool user, since the vendor will have done that for you
3. The software maintenance is provided by the author of the engine, again lowering costs.
The author receives the pleasure of knowing that thousands of people will benefit from using his engine (including those who have no idea how to download and install a chess engine into their favorite GUI).
So he is also compensated in some way.
But is it legal to remove the disclaimer like in this post: http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?pid=482262#pid482262?
No.
Agreed. And what's up with the ICGA entry form? Shouldn't Pradu's name be on this form as well?
WHAT ICGA entry form? Which year? I do not believe any magic version of Crafty has competed. Last one I remember is 1997 if that was Paris...
Fruit bishop PST, now Pradu's name missing..... I guess we should make a case out of this towards the ICGA. The ICGA isn't interested in versions playing in their tournaments anyway, so they should give you the same treatment as Vas, shouldn't they?
Where did I "expunge his name and copyright"?
This look familiar:
* 21.3 "Magic" move generation is now used, which eliminates the rotated *
* bitboard approach completely. Not a significant speed change, *
* but it is far simpler overall. Original code by Pradu Kannan as *
* posted on CCC/Winboard forums, modified to work with Crafty.
Do you know where my magic move generator code came from? Not from some source distro provided by him. From code snippets posted on CCC and winboard fora. Some of the code I had to write for myself since it was not all a "done deal" when this topic came about. I may well have been the first magic user, I am not sure. But I certainly have not "expunged his name or copyright." I can't "expunge his copyright" as that belongs to him for the parts of the magic code he wrote.
So what, EXACTLY, are you talking about??? ICGA? I don't believe any "magic" crafty has participated in any ICGA event, not that this is relevant. When you say "no citation" how do you reconcile the above in main.c??? Been there since that version. you have the old versions. Check. Before posting.
BTW, NO a student would NOT "be expelled from school". No school is that draconian. He'd certainly get a strongly worded warning, and possibly a zero for that assignment...
This look familiar:
* 21.3 "Magic" move generation is now used, which eliminates the rotated *
* bitboard approach completely. Not a significant speed change, *
* but it is far simpler overall. Original code by Pradu Kannan as *
* posted on CCC/Winboard forums, modified to work with Crafty.
Do you know where my magic move generator code came from? Not from some source distro provided by him. From code snippets posted on CCC and winboard fora. Some of the code I had to write for myself since it was not all a "done deal" when this topic came about. I may well have been the first magic user, I am not sure. But I certainly have not "expunged his name or copyright." I can't "expunge his copyright" as that belongs to him for the parts of the magic code he wrote.
So what, EXACTLY, are you talking about??? ICGA? I don't believe any "magic" crafty has participated in any ICGA event, not that this is relevant. When you say "no citation" how do you reconcile the above in main.c??? Been there since that version. you have the old versions. Check. Before posting.
BTW, NO a student would NOT "be expelled from school". No school is that draconian. He'd certainly get a strongly worded warning, and possibly a zero for that assignment...
I heard that there was an organization that called a man a liar and a cheat in the international press for simply having similar concepts in a program once. The group that did it never followed the required steps (like showing what parts were public domain and which parts were not) and did not even have the original source. And yet they publicly defamed him before the entire planet in the press.
No, wait. That's absurd. No organization is THAT draconian.
No, wait. That's absurd. No organization is THAT draconian.
Probably, in real life, he just got a strongly worded warning and a zero for the tournament.
I don't believe any "magic" crafty has participated in any ICGA event
Nor did R1.4-R1.6.1 and Rybka 1.0 beta, but they were still used by the ICGA in their investigation.
So if the ICGA uses Rybka versions that didn't play in WCCC's to ban Vas, they have to give you the same treatment.
Nor did R1.4-R1.6.1 and Rybka 1.0 beta, but they were still used by the ICGA in their investigation.
So if the ICGA uses Rybka versions that didn't play in WCCC's to ban Vas, they have to give you the same treatment.
I think that even if the ICGA treated him the same as Vas (they wouldn't, of course--they like Bob a lot more, and Vas doesn't have the same connections with people like Levy), he wouldn't be treated to the same verdict because the mistake was corrected.
Bob's account should be blocked to punish him. It's a large crime. I even can't believe it. Banned for Life, what is your idea?
No! Blocking his account would be the same as doing him a big favour. The punishment is that he keeps his account and his lies are exposed

Really?
I think Bob should be forced to post over 8000 attacks on Vas in the Rybka forum to try to convince people that Vas is a bad man, a very bad man!

My idea is to reason with Bob until he comes around.
Of course, I get tired quickly, so I doubt if I will ever succeed at that.
Of course, I get tired quickly, so I doubt if I will ever succeed at that.
We have been trying that for a few years now, it seems an easier task to move the rock of Gibraltar a few inches ;-).
Forget reasoning Bob. I remember that in past, the discussion about icga and Vas was so hot, maybe some thousands of posts were made and Bob wasn't contented. The discussions fires up here time by time and is useless. People discuss it so much here because what icga did made them angry. I don't read the discussions and I have hated talking about that. Because the outline of all discussions is: Vas is innocent, Vas isn't inoccent. In last discussions some source code are added!
Tom Paxton said that "some people you don't have to satirize: you just quote them."
Some one should start a petition!

crafty-23.6, main.c
On the image text: there is a question mark. ACCA 2008 was one year after Bob already had magics.
* 21.3 "Magic" move generation is now used, which eliminates the rotated *
* bitboard approach completely. Not a significant speed change, *
* but it is far simpler overall. Original code by Pradu Kannan as *
* posted on CCC/Winboard forums, modified to work with Crafty. *
On the image text: there is a question mark. ACCA 2008 was one year after Bob already had magics.
I am glad to see that Bob came to his senses.
It was missing from earlier versions.
Directory of F:\project\dcorbit\crafty-fossils\crafty-21.3
09/04/2013 08:14 AM <DIR> .
09/04/2013 08:14 AM <DIR> ..
01/26/2010 10:39 AM 7,071 analyze.c
01/26/2010 10:39 AM 32,602 annotate.c
01/26/2010 10:39 AM 2,841 attacks.c
01/26/2010 10:39 AM 4,806 bench.c
01/26/2010 10:39 AM 7,421 bits.c
01/26/2010 10:39 AM 59,432 book.c
01/26/2010 10:39 AM 2,222 boolean.c
01/26/2010 10:39 AM 36,961 chess.h
01/26/2010 10:39 AM 2,130 client.c
01/26/2010 10:39 AM 3,174 cluster.c
01/26/2010 10:39 AM 947 crafty.c
01/26/2010 10:39 AM 32,302 data.c
01/26/2010 10:39 AM 11,217 data.h
01/26/2010 10:39 AM 4,623 dgt.c
01/26/2010 10:39 AM 22,871 dgtdrv.c
01/26/2010 10:39 AM 3,141 drawn.c
01/26/2010 10:39 AM 6,686 edit.c
01/26/2010 10:39 AM 277,485 egtb.cpp
01/26/2010 10:39 AM 119,518 epd.c
01/26/2010 10:39 AM 6,050 epd.h
01/26/2010 10:39 AM 21,640 epddefs.h
01/26/2010 10:39 AM 75,257 epdglue.c
01/26/2010 10:39 AM 1,255 epdglue.h
01/26/2010 10:39 AM 149,943 evaluate.c
01/26/2010 10:39 AM 4,281 evtest.c
01/26/2010 10:39 AM 408 exam.c
01/26/2010 10:39 AM 401 final.c
01/26/2010 10:39 AM 732 fut.c
01/26/2010 10:39 AM 331 grade.c
01/26/2010 10:39 AM 14,865 hash.c
01/26/2010 10:39 AM 2,109 history.c
01/26/2010 10:39 AM 48,672 init.c
01/26/2010 10:39 AM 2,356 inline32.h
01/26/2010 10:39 AM 1,521 inline64.h
01/26/2010 10:39 AM 11,511 input.c
01/26/2010 10:39 AM 7,743 interupt.c
01/26/2010 10:39 AM 27,275 iterate.c
01/26/2010 10:39 AM 118 killcrafty.c
01/26/2010 10:39 AM 1,659 killer.c
01/26/2010 10:39 AM 11,531 learn.c
01/26/2010 10:39 AM 740 legal.c
01/26/2010 10:39 AM 3,901 lock.h
01/26/2010 10:39 AM 487 logscan.c
01/26/2010 10:39 AM 493 lsb.c
01/26/2010 10:39 AM 1,291 mailsift.c
01/26/2010 10:39 AM 307,501 main.c
01/26/2010 10:39 AM 22,637 make.c
01/26/2010 10:39 AM 15,602 Makefile
01/26/2010 10:39 AM 389 makefile.c
01/26/2010 10:39 AM 54,354 movgen.c
01/26/2010 10:39 AM 7,752 next.c
01/26/2010 10:39 AM 6,978 nexte.c
01/26/2010 10:39 AM 5,165 nextr.c
01/26/2010 10:39 AM 1,676 oddsearch.c
01/26/2010 10:39 AM 154,471 option.c
01/26/2010 10:39 AM 6,356 output.c
01/26/2010 10:39 AM 8,740 ponder.c
01/26/2010 10:39 AM 4,358 preeval.c
01/26/2010 10:39 AM 5,896 probe.c
01/26/2010 10:39 AM 6,306 quiesce.c
01/26/2010 10:39 AM 1,302 random32.c
01/26/2010 10:39 AM 6,572 repeat.c
01/26/2010 10:39 AM 5,580 resign.c
01/26/2010 10:39 AM 775 results.c
01/26/2010 10:39 AM 1,048 resultsx2.c
01/26/2010 10:39 AM 9,290 root.c
01/26/2010 10:39 AM 1,015 scramble.c
01/26/2010 10:39 AM 1,015 scramblex.c
01/26/2010 10:39 AM 28,489 search.c
01/26/2010 10:39 AM 7,611 searchmp.c
01/26/2010 10:39 AM 11,057 searchr.c
01/26/2010 10:39 AM 2,044 server.c
01/26/2010 10:39 AM 10,654 setboard.c
01/26/2010 10:39 AM 90 setuid.c
01/26/2010 10:39 AM 6,354 swap.c
01/26/2010 10:39 AM 27,816 tbdecode.h
01/26/2010 10:39 AM 13,693 test.c
01/26/2010 10:39 AM 6,542 testepd.c
01/26/2010 10:39 AM 16,230 thread.c
01/26/2010 10:39 AM 18,071 time.c
01/26/2010 10:39 AM 15,109 unmake.c
01/26/2010 10:39 AM 94,818 utility.c
01/26/2010 10:39 AM 6,713 valid.c
01/26/2010 10:39 AM 12,171 validate.c
01/26/2010 10:39 AM 1,411 vcinline.h
85 File(s) 1,947,671 bytes
2 Dir(s) 187,055,972,352 bytes free
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl pradu *.*
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl kannon *.*
It was missing from earlier versions.
Directory of F:\project\dcorbit\crafty-fossils\crafty-21.3
09/04/2013 08:14 AM <DIR> .
09/04/2013 08:14 AM <DIR> ..
01/26/2010 10:39 AM 7,071 analyze.c
01/26/2010 10:39 AM 32,602 annotate.c
01/26/2010 10:39 AM 2,841 attacks.c
01/26/2010 10:39 AM 4,806 bench.c
01/26/2010 10:39 AM 7,421 bits.c
01/26/2010 10:39 AM 59,432 book.c
01/26/2010 10:39 AM 2,222 boolean.c
01/26/2010 10:39 AM 36,961 chess.h
01/26/2010 10:39 AM 2,130 client.c
01/26/2010 10:39 AM 3,174 cluster.c
01/26/2010 10:39 AM 947 crafty.c
01/26/2010 10:39 AM 32,302 data.c
01/26/2010 10:39 AM 11,217 data.h
01/26/2010 10:39 AM 4,623 dgt.c
01/26/2010 10:39 AM 22,871 dgtdrv.c
01/26/2010 10:39 AM 3,141 drawn.c
01/26/2010 10:39 AM 6,686 edit.c
01/26/2010 10:39 AM 277,485 egtb.cpp
01/26/2010 10:39 AM 119,518 epd.c
01/26/2010 10:39 AM 6,050 epd.h
01/26/2010 10:39 AM 21,640 epddefs.h
01/26/2010 10:39 AM 75,257 epdglue.c
01/26/2010 10:39 AM 1,255 epdglue.h
01/26/2010 10:39 AM 149,943 evaluate.c
01/26/2010 10:39 AM 4,281 evtest.c
01/26/2010 10:39 AM 408 exam.c
01/26/2010 10:39 AM 401 final.c
01/26/2010 10:39 AM 732 fut.c
01/26/2010 10:39 AM 331 grade.c
01/26/2010 10:39 AM 14,865 hash.c
01/26/2010 10:39 AM 2,109 history.c
01/26/2010 10:39 AM 48,672 init.c
01/26/2010 10:39 AM 2,356 inline32.h
01/26/2010 10:39 AM 1,521 inline64.h
01/26/2010 10:39 AM 11,511 input.c
01/26/2010 10:39 AM 7,743 interupt.c
01/26/2010 10:39 AM 27,275 iterate.c
01/26/2010 10:39 AM 118 killcrafty.c
01/26/2010 10:39 AM 1,659 killer.c
01/26/2010 10:39 AM 11,531 learn.c
01/26/2010 10:39 AM 740 legal.c
01/26/2010 10:39 AM 3,901 lock.h
01/26/2010 10:39 AM 487 logscan.c
01/26/2010 10:39 AM 493 lsb.c
01/26/2010 10:39 AM 1,291 mailsift.c
01/26/2010 10:39 AM 307,501 main.c
01/26/2010 10:39 AM 22,637 make.c
01/26/2010 10:39 AM 15,602 Makefile
01/26/2010 10:39 AM 389 makefile.c
01/26/2010 10:39 AM 54,354 movgen.c
01/26/2010 10:39 AM 7,752 next.c
01/26/2010 10:39 AM 6,978 nexte.c
01/26/2010 10:39 AM 5,165 nextr.c
01/26/2010 10:39 AM 1,676 oddsearch.c
01/26/2010 10:39 AM 154,471 option.c
01/26/2010 10:39 AM 6,356 output.c
01/26/2010 10:39 AM 8,740 ponder.c
01/26/2010 10:39 AM 4,358 preeval.c
01/26/2010 10:39 AM 5,896 probe.c
01/26/2010 10:39 AM 6,306 quiesce.c
01/26/2010 10:39 AM 1,302 random32.c
01/26/2010 10:39 AM 6,572 repeat.c
01/26/2010 10:39 AM 5,580 resign.c
01/26/2010 10:39 AM 775 results.c
01/26/2010 10:39 AM 1,048 resultsx2.c
01/26/2010 10:39 AM 9,290 root.c
01/26/2010 10:39 AM 1,015 scramble.c
01/26/2010 10:39 AM 1,015 scramblex.c
01/26/2010 10:39 AM 28,489 search.c
01/26/2010 10:39 AM 7,611 searchmp.c
01/26/2010 10:39 AM 11,057 searchr.c
01/26/2010 10:39 AM 2,044 server.c
01/26/2010 10:39 AM 10,654 setboard.c
01/26/2010 10:39 AM 90 setuid.c
01/26/2010 10:39 AM 6,354 swap.c
01/26/2010 10:39 AM 27,816 tbdecode.h
01/26/2010 10:39 AM 13,693 test.c
01/26/2010 10:39 AM 6,542 testepd.c
01/26/2010 10:39 AM 16,230 thread.c
01/26/2010 10:39 AM 18,071 time.c
01/26/2010 10:39 AM 15,109 unmake.c
01/26/2010 10:39 AM 94,818 utility.c
01/26/2010 10:39 AM 6,713 valid.c
01/26/2010 10:39 AM 12,171 validate.c
01/26/2010 10:39 AM 1,411 vcinline.h
85 File(s) 1,947,671 bytes
2 Dir(s) 187,055,972,352 bytes free
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl pradu *.*
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl kannon *.*
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl kannan *.*
This is the notice in main.c found in 21.3:
* *
* 21.3 "magic" move generation is now used, which eliminates the rotated *
* bitboard approach completely. not a significant speed change, *
* but it is far simpler overall. *
* *
*******************************************************************************
*/
* *
* 21.3 "magic" move generation is now used, which eliminates the rotated *
* bitboard approach completely. not a significant speed change, *
* but it is far simpler overall. *
* *
*******************************************************************************
*/
Crafty 23.5 is the first version that mentions Pradu's name.
:) of course it was. It was not IN CRAFTY until version 21.3. :) 21.2 still had this stuff:
# define AttacksRank(a) \
rook_attacks_r0[(a)][((tree->pos.w_occupied|tree->pos.b_occupied)>> \
(((a)&56)+1))&63]
# define AttacksFile(a) \
rook_attacks_rr90[(a)][(tree->pos.occupied_rr90>> \
((File(a)<<3)+1))&63]
# define AttacksDiaga1(a) \
bishop_attacks_rl45[(a)][(tree->pos.occupied_rl45>> \
bishop_shift_rl45[(a)])&63]
# define AttacksDiagh1(a) \
bishop_attacks_rr45[(a)][(tree->pos.occupied_rr45>> \
bishop_shift_rr45[(a)])&63]
Seem familiar? Rotated bitboards. What about 21.3?
#define AttacksBishop(square) *(magic_bishop_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksBishopSpecial(square, occupied) *(magic_bishop_indices[square]+((((occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksRook(square) *(magic_rook_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))
#define AttacksRookSpecial(square, occupied) *(magic_rook_indices[square]+((((occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))
See those references to the magic tables.
Here's my take, which is NOT going to be pleasant. I now believe you to be one of the lowest of the "low-lifes" I have EVER known. There were no magic numbers in 21.2 and earlier. I didn't "come to my senses and add Pradu's name later". I added his name in the release where his code appeared.
Now that I see just how low you are willing to go, to imply outright lies (He obviously should have mentioned Pradu earlier...) you can continue this discussion by yourself. I have absolutely no interest in having ANY discussion with someone that resorts to that kind of nonsense.
Been nice knowing you. I am now wise enough to know I wish I never had...
ciao...
# define AttacksRank(a) \
rook_attacks_r0[(a)][((tree->pos.w_occupied|tree->pos.b_occupied)>> \
(((a)&56)+1))&63]
# define AttacksFile(a) \
rook_attacks_rr90[(a)][(tree->pos.occupied_rr90>> \
((File(a)<<3)+1))&63]
# define AttacksDiaga1(a) \
bishop_attacks_rl45[(a)][(tree->pos.occupied_rl45>> \
bishop_shift_rl45[(a)])&63]
# define AttacksDiagh1(a) \
bishop_attacks_rr45[(a)][(tree->pos.occupied_rr45>> \
bishop_shift_rr45[(a)])&63]
Seem familiar? Rotated bitboards. What about 21.3?
#define AttacksBishop(square) *(magic_bishop_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksBishopSpecial(square, occupied) *(magic_bishop_indices[square]+((((occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksRook(square) *(magic_rook_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))
#define AttacksRookSpecial(square, occupied) *(magic_rook_indices[square]+((((occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))
See those references to the magic tables.
Here's my take, which is NOT going to be pleasant. I now believe you to be one of the lowest of the "low-lifes" I have EVER known. There were no magic numbers in 21.2 and earlier. I didn't "come to my senses and add Pradu's name later". I added his name in the release where his code appeared.
Now that I see just how low you are willing to go, to imply outright lies (He obviously should have mentioned Pradu earlier...) you can continue this discussion by yourself. I have absolutely no interest in having ANY discussion with someone that resorts to that kind of nonsense.
Been nice knowing you. I am now wise enough to know I wish I never had...
ciao...
> I added his name in the release where his code appeared.
Why is Pradu's name not in crafty 23.4 then?
It is in EVERY last version since 21.3. The comments (change log) in main.c continually grow with new versions. Nothing gets deleted.
what ARE you talking about?
what ARE you talking about?
> what ARE you talking about?
You do realize that people download the crafty source over the years right?
I've attached the main.c of crafty 23.4 to this post. WHY IS PRADU'S NAME NOT MENTIONED IN IT??
Attachment: main.c (334k)
23.5 is the first version that his name appears.
As I said up above, it was probably an oversight and you would probably correct it.
It was and you did.
As I said up above, it was probably an oversight and you would probably correct it.
It was and you did.
You wrote: "Still, it is a serious matter. If a student were to do that on a student project at UAB, he would definitely be expelled from school. "
Was that correct or tongue-in-cheek?
Was that correct or tongue-in-cheek?
A little of both.
I don't know for sure about UAB.
I would definitely have been expelled from the University of Washington if I had done that while I was a student.
They spell out penalties for plagiarism in the entrance paperwork.
I suspect that they have a policy like that at UAB, but I can't say for sure.
If Bob could produce a written permission, it would obviously prove that it was a simple oversight and not a deliberate example of intentional plagiarism. (He got permission, but simply forgot to mention it. Normally if the code is used verbatim, you would say, "used with permission from <copyright owner>" and if modified, a citation of the original source.
So I guess that (just like a student who made such an oversight but could prove it was unintentional and that he actually had permission) he would only be chastised.
But removal of copyright notice is definitely a naughty-no-no.
I don't know for sure about UAB.
I would definitely have been expelled from the University of Washington if I had done that while I was a student.
They spell out penalties for plagiarism in the entrance paperwork.
I suspect that they have a policy like that at UAB, but I can't say for sure.
If Bob could produce a written permission, it would obviously prove that it was a simple oversight and not a deliberate example of intentional plagiarism. (He got permission, but simply forgot to mention it. Normally if the code is used verbatim, you would say, "used with permission from <copyright owner>" and if modified, a citation of the original source.
So I guess that (just like a student who made such an oversight but could prove it was unintentional and that he actually had permission) he would only be chastised.
But removal of copyright notice is definitely a naughty-no-no.
I just looked up the current UW policy. The first instance of plagiarism would result in a failing grade for the course and being put on probation.
Thanks for checking. We have more than one instance of plagiarism in crafty though, we had the copied bishop PST (+8) from Fruit too. What is the policy for two? If they need three strikes then perhaps we could throw in the MG/EG interpolation idea?
Don't forget the transcribed assembly that harry wrote.
Looks like we've got a repeat offender here.
Looks like we've got a repeat offender here.

IMHO looks like we have a complete jackass here...
IMHO of course...
There was no "transcribed asm".
Yet another fabrication / strawman type of nonsense you have created...
Falsely, I might add.
IMHO of course...
There was no "transcribed asm".
Yet another fabrication / strawman type of nonsense you have created...
Falsely, I might add.
/**
*magicmoves.h
*
*Source file for magic move bitboard generation.
*
*See header file for instructions on usage.
*
*The magic keys are not optimal for all squares but they are very close
*to optimal.
*
*Copyright (C) 2007 Pradyumna Kannan.
*
*This code is provided 'as-is', without any express or implied warranty.
*In no event will the authors be held liable for any damages arising from
*the use of this code. Permission is granted to anyone to use this
*code for any purpose, including commercial applications, and to alter
*it and redistribute it freely, subject to the following restrictions:
*
*1. The origin of this code must not be misrepresented; you must not
*claim that you wrote the original code. If you use this code in a
*product, an acknowledgment in the product documentation would be
*appreciated but is not required.
*
*2. Altered source versions must be plainly marked as such, and must not be
*misrepresented as being the original code.
*
*3. This notice may not be removed or altered from any source distribution.
*/
This is from Pradu's magicmoves.c
You violated 3.
*magicmoves.h
*
*Source file for magic move bitboard generation.
*
*See header file for instructions on usage.
*
*The magic keys are not optimal for all squares but they are very close
*to optimal.
*
*Copyright (C) 2007 Pradyumna Kannan.
*
*This code is provided 'as-is', without any express or implied warranty.
*In no event will the authors be held liable for any damages arising from
*the use of this code. Permission is granted to anyone to use this
*code for any purpose, including commercial applications, and to alter
*it and redistribute it freely, subject to the following restrictions:
*
*1. The origin of this code must not be misrepresented; you must not
*claim that you wrote the original code. If you use this code in a
*product, an acknowledgment in the product documentation would be
*appreciated but is not required.
*
*2. Altered source versions must be plainly marked as such, and must not be
*misrepresented as being the original code.
*
*3. This notice may not be removed or altered from any source distribution.
*/
This is from Pradu's magicmoves.c
You violated 3.
I wouldn't be surprised if something similar is the case with the numerous changes in epd.c (SJE's host-independent part of the EPD/FEN code). The license requires one to request any changes by email.
There are no changes in epd.c, EXCEPT for whatever Steven did. You DID know that he wrote the epdglue.h? You DID know that he sent something tested and ready to use in Crafty directly to me? :) I didn't write or modify a thing. You can thank Steven for all of that.
You look foolish with all this idle speculation that has no basis in fact. Send Steven an email to confirm what I just told you. Did Steven request any of the changes with email to himself? Not a clue. :)
Keep grasping at these straws, ignoring the primary issue about Fruit. Seems to be the ONLY way one argues a point HERE.
You look foolish with all this idle speculation that has no basis in fact. Send Steven an email to confirm what I just told you. Did Steven request any of the changes with email to himself? Not a clue. :)
Keep grasping at these straws, ignoring the primary issue about Fruit. Seems to be the ONLY way one argues a point HERE.
There are no changes in epd.c, EXCEPT for whatever Steven did.
It is easy to check what the changes over the years are. They are numerous and are consistent with evolution of Crafty, not consistent with evolution of SJE's epd kit: Reformatting to the point that the meta comments don't always match the contents anymore, deletions of stuff that Crafty doesn't need, variable renaming, preprocessor changes. Besides, the epd.c history comments have never been updated accordingly. SJE is meticulous in that, so I have a hard time to believe that he made those changes while Crafty evolved.
I take it that you here claim otherwise: "every version of epd.c appearing in any published version of Crafty came literally from SJE and was not altered". Is that your claim?
Did Steven request any of the changes with email to himself?
Why he would have to do something like that is beyond me. If anything, in your terminology, "looks foolish", that is it.
It is easy to check what the changes over the years are. They are numerous and are consistent with evolution of Crafty, not consistent with evolution of SJE's epd kit: Reformatting to the point that the meta comments don't always match the contents anymore, deletions of stuff that Crafty doesn't need, variable renaming, preprocessor changes. Besides, the epd.c history comments have never been updated accordingly. SJE is meticulous in that, so I have a hard time to believe that he made those changes while Crafty evolved.
I take it that you here claim otherwise: "every version of epd.c appearing in any published version of Crafty came literally from SJE and was not altered". Is that your claim?
Did Steven request any of the changes with email to himself?
Why he would have to do something like that is beyond me. If anything, in your terminology, "looks foolish", that is it.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill