2004-10-21  Dhruv Matani  <dhruvbird@gmx.net>
	
	* mt_alloc/thread_heap.hpp: Changed int to size_t.
	* mt_alloc/mt_malloc.cpp: Changed int to size_t.
	* mt_alloc/global_pool.hpp: Changed int to size_t.
	* mt_alloc/mt_allocator.hpp: Added check for whether n == 0 in the
	allocate function. Split the allocate function into 2 overloads,
	one containing the hint argument, and the other without without
	it.
	
2004-10-20  Dhruv Matani  <dhruvbird@gmx.net>
	
	* node_manager.hpp: Add a static const size_t approx_size, which
	denotes the approximate size in bytes of a packet to be sent
	across the network. Now the actual size is deduced automatically
	from the approximate size, and the other members are adjusted
	automatically too. Changed unsigned int to size_t.
	
2004-10-13  Dhruv Matani  <dhruvbird@gmx.net>
	
	* atomicity_i686.hpp: copy_double() Remove function and MMX
	instructions.
	
2004-10-12  Dhruv Matani  <dhruvbird@gmx.net>
	
	* mt_alloc/: New capital's Mt_Malloc used here after tweaking it a
	bit! Removed all the template parameters, and added conditionals
	to use sbrk directly or to pass through the system malloc. Made
	the whole system a separetely compiled unit. The allocator is
	compiled into the file mt_malloc.o. It can thus be linked
	seprately.
	* allocator.hpp: New file. To choose between the default
	std::allocator<> and the optimized mt_allocator<>.
	* det_dist.cpp: Use it here!
	* udefs.hpp: And here!
	
2004-10-11  Dhruv Matani  <dhruvbird@gmx.net>
	
	* atomic_i686.cpp: Simplified and corrected a few asm
	constructs. More specifically, remove memory from clobber the
	list, and a few other registers too. Add the memory constraint
	instead of the register or any constraint.
	* udefs.hpp: Re-order data members for faster access.
	* atomic_i686.cpp: Remove this file.
	* atomic_i686.hpp: Move functions definitions here for
	inlining. Added a function copy_double() which uses the IntelMMX
	instructions to copy directly a quadword.
	* config.hpp: Added an option for selection the MMX version of the
	copy double instruction or the normal 2 instruction copy.
			
2004-10-10  Dhruv Matani  <dhruvbird@gmx.net>
	
	* atomic_i686.hpp (eqn_cruncher): Added a processor specific Mutex
	class for efficiency reasions. This internally uses IA32 Assembly
	instructions directly.
	* node_manager.hpp: Use it here.
	* config.hpp: Add config options for switching between the
	pthread_* versions and the processor specific atomic versions of
	certain functions.

2004-10-09  Dhruv Matani  <dhruvbird@gmx.net>
	
	* atomic_i686.hpp: New file
	* atomic_i686.cpp: New file. Contains definitions for the assembly
	instructions for atomically testing and setting memory
	locations. Created to replace the pthread_join function, because
	it was found to be slow.
	* det_dist.cpp (eqn_cruncher)[determinant]: Use it here.
	* det_dist.cpp (eqn_cruncher)[eval_variables]: And here.
					
2004-10-07  Dhruv Matani  <dhruvbird@gmx.net>
	
	* det_dist.cpp: Added support for determining whether a client has
	gone down midway whilst trying to solve a particular
	determinant. If so, then try finding another free client, and
	re-distributing the work again. If no free client can be found,
	then solve the problem locally.
	* main.cpp: Ignore the SIGPIPE signal from the underlying OS, so
	that we may specify exceptional conditions using exceptions rather
	than UNIX signals. This was also abruptly terminating the
	application when we tried to send data across a broken pipe, not
	letting us recover gracefully from the exceptional condition.
	* client.hpp (eqn_cruncher): Do not close the socket at the client
	side after it has already been closed at the server side.
	* client.cpp (eqn_cruncher): Add support for faulty clients at the
	client side too. (Fault Tolerance). Now, if any client or
	sub-client goes down, the server remains unaffected. this means
	that any client/sub-client can enter/leave the system at any time
	it wishes without affecting the correctness of the final result.

2004-09-27  Dhruv Matani  <dhruvbird@gmx.net>
	
	* main.cpp: Added a check for whether the server has been
	started. Only if it has, then destroy the server thread and the
	server's listener socket. Earlier, we were destroying the server
	thread and socket unconditionally. So, when the application was
	started with --noconnect, then the thread which did not exist was
	being canceled and the socket which did not exist and which had
	not been opened was being closed, resulting in a Segmentation
	fault, and premature abortion of the application.

2004-09-23  Dhruv Matani  <dhruvbird@gmx.net>
		
	* file_parser.cpp (eqn_cruncher): Added checks for finding out
	whether the end of the file has been reached prematurely at the
	various stages of parsing the input file.
	
2004-09-11  Dhruv Matani  <dhruvbird@gmx.net>
	
	* det_dist.cpp: Added code for checking if the value to be
	multiplied with is 0(zero) for the sub-determinants being
	evaluated. If so, then do not waste time calculating that
	particular sub-determinant, and move on to the next determinant.
	
2004-08-31  Dhruv Matani  <dhruvbird@gmx.net>
	
	* det_dist.cpp: Changed the determinant procedure to solve the
	determinant of a matrix having dimension <= 3 directly using the
	formulae; for efficiency reasons.
	* file_parser.cpp (eqn_cruncher): Added checks for multiple
	variables in a single equation. The parser reports an error when
	it encounters a variable more than once on a particular line, and
	shows the faulty line number, and the variable under question.
	
2004-08-30  Dhruv Matani  <dhruvbird@gmx.net>
		
	* file_parser.cpp (eqn_cruncher): Changed the code for parsing the
	doubles encountered as a coefficient, because expressions like
	x+y=<constant> and -x+y=<constant> were not being
	recognized. Also, this fix made possible expressions like
	-.3x+y=<constant>, and the like.

