Just now I understood what you are doing.Ferdy wrote: Sorry I don't get your point exactly.
Here is a case where accuracy is important in see(). There are certain positions that see() will report >= 0 where in fact it is < 0 why because I did not consider pins, and there are certain positions that see() will report < 0 where in fact it is >= 0 why because I did not consider pins also. Search efficiency is affected, lost opportunities to draw or to win, mis-informed move ordering scores. Every heuristics that uses see() become garbage.
The point I was trying to make is that for the first move (the one you pass for the see() function as parameter) you don't need to check for pins because if the move is illegal it is going to be discarded immediately after you test the legality of the move. But I presume you are doing that in every iteration of your see().
It seems to be a good idea. I gonna try that.
Thanks!