New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

ngerber

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by ngerber »

Aser Huerga wrote:Tony, DoubleCheck_x64 doesn't work for me under Arena 2.0.1 (SO XP 64-bit).
Double clicking the .exe show a message saying msvcr100.dll is not found, but it's in the same folder ... :?:

DoubleCheck (I suppose is the 32-bit one) runs fine.

Thanks.
i have the same problems under windows xp32bit.
its not computing and complains about the missing msvcr100.dll

where to get this file ?
tmokonen
Posts: 1362
Joined: Sun Mar 12, 2006 6:46 pm
Location: Kelowna
Full name: Tony Mokonen

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by tmokonen »

ngerber wrote: i have the same problems under windows xp32bit.
its not computing and complains about the missing msvcr100.dll

where to get this file ?
Hi Nils, that was my fault, due to unfamiliarity with a new compiler. I have uploaded an update for the 32 bit compile, which should resolve this issue. You can download it at one of the links below:

http://www3.telus.net/tmokonen/DoubleCh ... indows.rar
http://www.megaupload.com/?d=37JRT8EL
User avatar
abik
Posts: 823
Joined: Fri Dec 01, 2006 10:46 pm
Location: Mountain View, CA, USA
Full name: Aart Bik

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by abik »

I compiled DoubleCheck for Android, and it runs reasonably well in the Chess for Android GUI (although it does not support some UCI commands yet). If Lucas gives me permission, I can add the binary to my Android engine download page.
lucasart
Posts: 3241
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by lucasart »

abik wrote:I compiled DoubleCheck for Android, and it runs reasonably well in the Chess for Android GUI (although it does not support some UCI commands yet). If Lucas gives me permission, I can add the binary to my Android engine download page.
Yes, you have my permission. In fact you don't need my permission :D Have a look at the readme file
DoubleCheck is free, and distributed under the GNU General Public License (GPL). Essentially, this means that you are free to do almost exactly what you want with the program, including distributing it among your friends, making it available for download from your web site, selling it (either by itself or as part of some bigger software package), or using it as the starting point for a software project of your own.

The only real limitation is that whenever you distribute DoubleCheck in some way, you must always include the full source code, or a pointer to where the source code can be found. If you make any changes to the source code, these changes must also be made available under the GPL.

For full details, read the copy of the GPL found in the file named copying.txt.
On a technical level, I am a bit sceptical about an android compile: is it a 64 bit compile ? Because if you compile in 32 bit (as I imagine android phones are 32bit ?), it may well "work" but give incorrect results. Have a look at the first_bit and count_bit functions. If they work (given 64 bit input where of course the 32 highest bits are non zero), then you're ok.
Actually you might want to wait a day or two. I've just sent Leo and Graham (by email) a new version that is significantly stronger (and has some basic UCI options).
User avatar
abik
Posts: 823
Joined: Fri Dec 01, 2006 10:46 pm
Location: Mountain View, CA, USA
Full name: Aart Bik

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by abik »

lucasart wrote:Yes, you have my permission. In fact you don't need my permission :D Have a look at the readme file
Thanks. Yes, I noticed the readme, but I always like to play this safe.
lucasart wrote:On a technical level, I am a bit sceptical about an android compile: is it a 64 bit compile ? Because if you compile in 32 bit (as I imagine android phones are 32bit ?), it may well "work" but give incorrect results.
Even 32-bit processors can perform 64-bit arithmetic, they just take more instructions do so. If you declare a data type as 64-bit (implied by your "typedef unsigned long long U64"), the compiler will honor that requirement for both 32-bit and 64-bit binaries, it will just run more efficient on the latter. So even on Android, I see for example:

count_bit(0x8000000000000000) = 1

The only major semantic difference between 32-bit and 64-bit compilations deals with the width of pointers (viz. sizeof(int*) == 4 vs. 8).
User avatar
abik
Posts: 823
Joined: Fri Dec 01, 2006 10:46 pm
Location: Mountain View, CA, USA
Full name: Aart Bik

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by abik »

lucasart wrote:Yes, you have my permission.

Actually you might want to wait a day or two. I've just sent Leo and Graham (by email) a new version that is significantly stronger (and has some basic UCI options).
I noticed you released DoubleCheck 1.1 and I put an Android binary (ARM) on UCI engines for Android (for a screenshot, see my blog).

In a next release, could you kindly implement the "movetime" option? My GUI currently only support fixed-time settings (yes, something I should fix :-)), and as a result, the engine now always plays instantaneously. Results of matches will be more meaningful if that is fixed.
lucasart
Posts: 3241
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by lucasart »

ngerber wrote:
Aser Huerga wrote:Tony, DoubleCheck_x64 doesn't work for me under Arena 2.0.1 (SO XP 64-bit).
Double clicking the .exe show a message saying msvcr100.dll is not found, but it's in the same folder ... :?:

DoubleCheck (I suppose is the 32-bit one) runs fine.

Thanks.
i have the same problems under windows xp32bit.
its not computing and complains about the missing msvcr100.dll

where to get this file ?
Have a look here
http://wbec-ridderkerk.nl/html/details1 ... Check.html
ngerber

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by ngerber »

can you make a 32 bit version too ? thanks.
lucasart
Posts: 3241
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by lucasart »

ngerber wrote:can you make a 32 bit version too ? thanks.
Can't be bothered to install the 32bit compile stuff for both gcc and mingw. Uou'll have to compile it yourself...
lucasart
Posts: 3241
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: New chess engine - DoubleCheck 1.0 (Lucas Braesch)

Post by lucasart »

abik wrote: In a next release, could you kindly implement the "movetime" option? My GUI currently only support fixed-time settings (yes, something I should fix :-)), and as a result, the engine now always plays instantaneously. Results of matches will be more meaningful if that is fixed.
Just replace the parse_go function by that one, and recompile. It should work:

Code: Select all

static void parse_go()
{
	const char *token;
	int wtime, btime, winc, binc;	// blitz time control
	int move_time = 0;				// time per move

	for (token = strtok(NULL," "); token; token = strtok(NULL," ")) {
		if (!strcmp(token, "wtime")) {
			if (!(token = strtok(NULL, " ")))
				fatal("parse_go(): missing argument\n");
			wtime = atoi(token);
		} else if (!strcmp(token, "btime")) {
			if (!(token = strtok(NULL, " ")))
				fatal("parse_go(): missing argument\n");
			btime = atoi(token);
		} else if (!strcmp(token, "winc")) {
			if (!(token = strtok(NULL, " ")))
				fatal("parse_go(): missing argument\n");
			winc = atoi(token);
		} else if (!strcmp(token, "binc")) {
			if (!(token = strtok(NULL, " ")))
				fatal("parse_go(): missing argument\n");
			binc = atoi(token);
		} else if (!strcmp(token, "movetime")) {
			if (!(token = strtok(NULL, " ")))
				fatal("parse_go(): missing argument\n");
			move_time = atoi(token);
			break;
		}
	}

	const int blitz_time = B.turn ? btime : wtime;
	const int blitz_inc = B.turn ? binc : winc;
	const int time = move_time ? move_time : (blitz_time/40 + blitz_inc);

	UseNull = option_get_bool("NullMove");
	UseIID = option_get_bool("IID");
	Draw = option_get_int("Draw");

	move_t best = id_loop(&B, time);

	char s[8];
	move_to_string(&B, best, s, false);
	send("bestmove %s", s);
}