/**********************************************************************
 
	Copyright (C) 2003 Hirohisa MORI <joshua@nichibun.ac.jp>
 
	This program is free software; you can redistribute it 
	and/or modify it under the terms of the GLOBALBASE 
	Library General Public License (G-LGPL) as published by 

	http://www.globalbase.org/
 
	This program is distributed in the hope that it will be 
	useful, but WITHOUT ANY WARRANTY; without even the 
	implied warranty of MERCHANTABILITY or FITNESS FOR A 
	PARTICULAR PURPOSE.

**********************************************************************/


#include	"xl.h"


#define ALL_NULL	\
	{			\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0},	\
		{0,0,0}		\
	}

BINARY_TABLE	div_tt[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	ALL_NULL,
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,div_ii}, /* XLT_INTEGER */
		{conv_if,0,div_ff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,conv_if,div_ff}, /* XLT_INTEGER */
		{0,0,div_ff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};

BINARY_TABLE	rem_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	ALL_NULL,
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,rem_ii}, /* XLT_INTEGER */
		{conv_if,0,rem_ff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,conv_if,rem_ff}, /* XLT_INTEGER */
		{0,0,rem_ff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	equ_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	{
		{0,0,equ_pair}, /* XLT_NULL */
		{0,0,0},	/* XLT_ERROR */
		{0,0,equ_pair},	/* XLT_PAIR */
		{0,0,not_equal},/* XLT_SYMBOL */
		{0,0,not_equal},/* XLT_STRING */
		{0,0,not_equal},/* XLT_INTEGER */
		{0,0,not_equal},/* XLT_FLOAT */
		{0,0,not_equal},/* XLT_FUNC */
		{0,0,0},	/* XLT_DELAY */
	},
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	{
		{0,0,equ_pair}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,equ_pair}, /* XLT_PAIR */
		{0,0,not_equal}, /* XLT_SYMBOL */
		{0,0,not_equal}, /* XLT_STRING */
		{0,0,not_equal}, /* XLT_INTEGER */
		{0,0,not_equal}, /* XLT_FLOAT */
		{0,0,not_equal}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_SYMBOL */
	{
		{0,0,not_equal}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,not_equal}, /* XLT_PAIR */
		{0,0,equ_sym}, /* XLT_SYMBOL */
		{0,0,not_equal}, /* XLT_STRING */
		{0,0,not_equal}, /* XLT_INTEGER */
		{0,0,not_equal}, /* XLT_FLOAT */
		{0,0,not_equal}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_STRING */
	{
		{0,0,not_equal}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,not_equal}, /* XLT_PAIR */
		{0,0,not_equal}, /* XLT_SYMBOL */
		{0,0,equ_str}, /* XLT_STRING */
		{0,0,not_equal}, /* XLT_INTEGER */
		{0,0,not_equal}, /* XLT_FLOAT */
		{0,0,not_equal}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,not_equal}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,not_equal}, /* XLT_PAIR */
		{0,0,not_equal}, /* XLT_SYMBOL */
		{0,0,not_equal}, /* XLT_STRING */
		{0,0,equ_int}, /* XLT_INTEGER */
		{conv_if,0,equ_float}, /* XLT_FLOAT */
		{0,0,not_equal}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,not_equal}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,not_equal}, /* XLT_PAIR */
		{0,0,not_equal}, /* XLT_SYMBOL */
		{0,0,not_equal}, /* XLT_STRING */
		{0,conv_if,equ_float}, /* XLT_INTEGER */
		{0,0,equ_float}, /* XLT_FLOAT */
		{0,0,not_equal}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	{
		{0,0,not_equal}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,not_equal}, /* XLT_PAIR */
		{0,0,not_equal}, /* XLT_SYMBOL */
		{0,0,not_equal}, /* XLT_STRING */
		{0,0,not_equal}, /* XLT_INTEGER */
		{0,0,not_equal}, /* XLT_FLOAT */
		{0,0,equ_func}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_DELAY */
	ALL_NULL
};

BINARY_TABLE	leq_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	{
		{0,0,leq_null}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_diff}, /* XLT_PAIR */
		{0,0,leq_diff}, /* XLT_SYMBOL */
		{0,0,leq_diff}, /* XLT_STRING */
		{0,0,leq_diff}, /* XLT_INTEGER */
		{0,0,leq_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	{
		{0,0,leq_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_pair}, /* XLT_PAIR */
		{0,0,leq_diff}, /* XLT_SYMBOL */
		{0,0,leq_diff}, /* XLT_STRING */
		{0,0,leq_diff}, /* XLT_INTEGER */
		{0,0,leq_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_SYMBOL */
	{
		{0,0,leq_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_diff}, /* XLT_PAIR */
		{0,0,leq_sym}, /* XLT_SYMBOL */
		{0,0,leq_diff}, /* XLT_STRING */
		{0,0,leq_diff}, /* XLT_INTEGER */
		{0,0,leq_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_STRING */
	{
		{0,0,leq_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_diff}, /* XLT_PAIR */
		{0,0,leq_diff}, /* XLT_SYMBOL */
		{0,0,leq_str}, /* XLT_STRING */
		{0,0,leq_diff}, /* XLT_INTEGER */
		{0,0,leq_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,leq_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_diff}, /* XLT_PAIR */
		{0,0,leq_diff}, /* XLT_SYMBOL */
		{0,0,leq_diff}, /* XLT_STRING */
		{0,0,leq_int}, /* XLT_INTEGER */
		{conv_if,0,leq_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,leq_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,leq_diff}, /* XLT_PAIR */
		{0,0,leq_diff}, /* XLT_SYMBOL */
		{0,0,leq_diff}, /* XLT_STRING */
		{0,conv_if,leq_float}, /* XLT_INTEGER */
		{0,0,leq_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};

BINARY_TABLE	lt_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	{
		{0,0,lt_null}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_diff}, /* XLT_PAIR */
		{0,0,lt_diff}, /* XLT_SYMBOL */
		{0,0,lt_str}, /* XLT_STRING */
		{0,0,lt_diff}, /* XLT_INTEGER */
		{0,0,lt_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	{
		{0,0,lt_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_pair}, /* XLT_PAIR */
		{0,0,lt_diff}, /* XLT_SYMBOL */
		{0,0,lt_diff}, /* XLT_STRING */
		{0,0,lt_diff}, /* XLT_INTEGER */
		{0,0,lt_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_SYMBOL */
	{
		{0,0,lt_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_diff}, /* XLT_PAIR */
		{0,0,lt_sym}, /* XLT_SYMBOL */
		{0,0,lt_diff}, /* XLT_STRING */
		{0,0,lt_diff}, /* XLT_INTEGER */
		{0,0,lt_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_STRING */
	{
		{0,0,lt_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_diff}, /* XLT_PAIR */
		{0,0,lt_diff}, /* XLT_SYMBOL */
		{0,0,lt_str}, /* XLT_STRING */
		{0,0,lt_diff}, /* XLT_INTEGER */
		{0,0,lt_diff}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,lt_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_diff}, /* XLT_PAIR */
		{0,0,lt_diff}, /* XLT_SYMBOL */
		{0,0,lt_diff}, /* XLT_STRING */
		{0,0,lt_int}, /* XLT_INTEGER */
		{conv_if,0,lt_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,lt_diff}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,lt_diff}, /* XLT_PAIR */
		{0,0,lt_diff}, /* XLT_SYMBOL */
		{0,0,lt_diff}, /* XLT_STRING */
		{0,conv_if,lt_float}, /* XLT_INTEGER */
		{0,0,lt_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	add_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,add_str}, /* XLT_STRING */
		{0,conv_is,add_str}, /* XLT_INTEGER */
		{0,conv_fs,add_str}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{conv_is,0,add_str}, /* XLT_STRING */
		{0,0,add_int}, /* XLT_INTEGER */
		{conv_if,0,add_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{conv_fs,0,add_str}, /* XLT_STRING */
		{0,conv_if,add_float}, /* XLT_INTEGER */
		{0,0,add_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	mul_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	ALL_NULL,
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,mul_int}, /* XLT_INTEGER */
		{conv_if,0,mul_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,conv_if,mul_float}, /* XLT_INTEGER */
		{0,0,mul_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};

BINARY_TABLE	sub_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	ALL_NULL,
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,sub_int}, /* XLT_INTEGER */
		{conv_if,0,sub_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,conv_if,sub_float}, /* XLT_INTEGER */
		{0,0,sub_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	and_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,and_int}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	or_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,or_int}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	xor_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,xor_int}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	And_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,And_int}, /* XLT_INTEGER */
		{0,0,And_int_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,And_float_int}, /* XLT_INTEGER */
		{0,0,And_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};



BINARY_TABLE	Or_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,Or_int}, /* XLT_INTEGER */
		{0,0,Or_int_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,Or_float_int}, /* XLT_INTEGER */
		{0,0,Or_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


BINARY_TABLE	Xor_t[XLT_MAX][XLT_MAX] = {
/* XLT_NULL */
	ALL_NULL,
/* XLT_ERROR */
	ALL_NULL,
/* XLT_PAIR */
	ALL_NULL,
/* XLT_SYMBOL */
	ALL_NULL,
/* XLT_STRING */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,0}, /* XLT_INTEGER */
		{0,0,0}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_INTEGER */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,Xor_int}, /* XLT_INTEGER */
		{0,0,Xor_int_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FLOAT */
	{
		{0,0,0}, /* XLT_NULL */
		{0,0,0}, /* XLT_ERROR */
		{0,0,0}, /* XLT_PAIR */
		{0,0,0}, /* XLT_SYMBOL */
		{0,0,0}, /* XLT_STRING */
		{0,0,Xor_float_int}, /* XLT_INTEGER */
		{0,0,Xor_float}, /* XLT_FLOAT */
		{0,0,0}, /* XLT_FUNC */
		{0,0,0} /* XLT_DELAY */
	},
/* XLT_FUNC */
	ALL_NULL,
/* XLT_DELAY */
	ALL_NULL
};


