Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ libcfa/src/iostream.cfa	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar 11 14:35:35 2020
-// Update Count     : 860
+// Last Modified On : Wed Apr 22 10:50:46 2020
+// Update Count     : 933
 //
 
@@ -29,4 +29,6 @@
 #include <complex.h>									// creal, cimag
 } // extern "C"
+
+#include <bitmanip.hfa>									// fms
 
 
@@ -459,8 +461,6 @@
 \
 		if ( f.base == 'b' || f.base == 'B' ) {			/* bespoke binary format */ \
-			int bits;													\
-			if ( f.val == (T){0} ) bits = 1;			/* force at least one bit to print */ \
-			else bits = sizeof(long long int) * 8 - __builtin_clzll( f.val ); /* position of most significant bit */ \
-			bits = bits > sizeof(f.val) * 8 ? sizeof(f.val) * 8 : bits; \
+			int bits = high1( f.val );					/* position of most significant bit */ \
+			if ( bits == 0 ) bits = 1;					/* 0 value => force one bit to print */ \
 			int spaces = f.wd - bits;					/* can be negative */ \
 			if ( ! f.flags.nobsdp ) { spaces -= 2; }	/* base prefix takes space */ \
@@ -565,28 +565,81 @@
 				fmt2.flags.pad0 = fmt2.flags.nobsdp = true;	\
 				if ( f.base == 'b' | f.base == 'B' ) { \
-					if ( f.wd > 64 ) fmt.wd = f.wd - 64; \
-					if ( f.flags.pc && f.pc > 64 ) fmt.pc = f.pc - 64; \
-					fmt2.wd = 64; \
+					if ( fmt.flags.pc && fmt.pc > 64 ) fmt.pc -= 64; \
+					if ( fmt.flags.left ) { \
+						fmt2.wd = fmt.wd; \
+						if ( fmt2.wd <= 64 ) { \
+							fmt2.wd = 64; \
+						} else { \
+							if ( fmt.pc > 0 ) { \
+								fmt2.wd -= fmt.pc; \
+							} else { \
+								fmt2.wd = fmt.wd - high1( msig ); \
+							} /* if */ \
+							if ( ! fmt.flags.nobsdp ) fmt2.wd -= 2; \
+							if ( fmt2.wd < 0 ) fmt2.wd = 0; \
+							fmt2.flags.left = true; \
+							fmt.wd = 0; \
+						} /* if */ \
+						printf( "left %d %d %x\n", f.wd, f.pc, f.all ); \
+						printf( "left %d %d %x\n", fmt.wd, fmt.pc, fmt.all ); \
+					} else { \
+						fmt2.wd = 64; \
+						if ( fmt.wd > 64 ) fmt.wd -= 64; \
+						printf( "left %d %d %x\n", f.wd, f.pc, f.all ); \
+						printf( "left %d %d %x\n", fmt.wd, fmt.pc, fmt.all ); \
+					} /* if */ \
+					fmt2.pc = 64; fmt2.flags.pc = true;	\
+					printf( "left %d %d %x\n", fmt2.wd, fmt2.pc, fmt2.all ); \
 					(ostype &)(os | fmt | "" | fmt2); \
 				} else if ( f.base == 'o' ) { \
-					fmt.val = (unsigned long long int)fmt.val >> 2; \
-					if ( f.wd > 21 ) fmt.wd = f.wd - 21; \
-					if ( f.flags.pc && f.pc > 21 ) fmt.pc = f.pc - 21; \
-					fmt2.wd = 1; \
-					fmt2.val = ((msig & 0x3) << 1) + 1; \
-					(ostype &)(os | fmt | "" | fmt2); \
-					sepOff( os ); \
-					fmt2.wd = 21; \
-					fmt2.val = lsig & 0x7fffffffffffffff; \
-					(ostype &)(os | fmt2); \
+					if ( fmt.flags.pc && fmt.pc > 21 ) fmt.pc -= 21; \
+					if ( fmt.flags.left ) { \
+						fmt.flags.left = false; \
+						fmt.wd = 1; \
+						fmt.val = (unsigned long long int)fmt.val >> 2; \
+						fmt2.wd = 1; \
+						fmt2.val = ((msig & 0x3) << 1) + 1; \
+						(ostype &)(os | fmt | "" | fmt2); \
+						sepOff( os ); \
+						fmt2.flags.left = true;	\
+						fmt2.wd = f.wd - ( ceiling( high1( fmt.val ), 3 ) + 1 ); \
+						fmt2.flags.pc = true; fmt2.pc = 21; \
+						if ( ! fmt.flags.nobsdp ) { fmt2.wd -= 1; } \
+						fmt2.val = lsig & 0x7fffffffffffffff; \
+						(ostype &)(os | fmt2); \
+					} else { \
+						fmt.val = (unsigned long long int)fmt.val >> 2; \
+						if ( fmt.wd > 21 ) fmt.wd -= 21; \
+						if ( ! fmt.flags.nobsdp ) { if ( fmt.pc < fmt.wd ) fmt.wd -= 1; else fmt.pc -= 1; } \
+						fmt2.wd = 1; \
+						fmt2.val = ((msig & 0x3) << 1) + 1; \
+						(ostype &)(os | fmt | "" | fmt2); \
+						sepOff( os ); \
+						fmt2.wd = 21; \
+						fmt2.val = lsig & 0x7fffffffffffffff; \
+						(ostype &)(os | fmt2); \
+					} /* if */ \
 				} else { \
-					if ( f.flags.left ) { \
-						if ( f.wd > 16 ) fmt2.wd = f.wd - 16; \
-						fmt.wd = 16; \
+					if ( fmt.flags.pc && fmt.pc > 16 ) fmt.pc -= 16; \
+					if ( fmt.flags.left ) { \
+						fmt2.wd = fmt.wd; \
+						if ( fmt2.wd <= 16 ) { \
+							fmt2.wd = 16; \
+						} else { \
+							if ( fmt.pc > 0 ) { \
+								fmt2.wd -= fmt.pc; \
+							} else { \
+								fmt2.wd = fmt.wd - ceiling2( high1( msig ), 4 ) / 4; \
+							} /* if */ \
+							if ( ! fmt.flags.nobsdp ) fmt2.wd -= 2; \
+							if ( fmt2.wd < 0 ) fmt2.wd = 0; \
+							fmt2.flags.left = true; \
+							fmt.wd = 0; \
+						} /* if */ \
 					} else { \
-						if ( f.wd > 16 ) fmt.wd = f.wd - 16; \
-						if ( f.flags.pc && f.pc > 16 ) fmt.pc = f.pc - 16; \
 						fmt2.wd = 16; \
+						if ( fmt.wd > 16 ) fmt.wd -= 16; \
 					} /* if */ \
+					fmt2.pc = 16; fmt2.flags.pc = true; \
 					(ostype &)(os | fmt | "" | fmt2); \
 				} /* if */ \
Index: tests/.expect/bitmanip3.x64.txt
===================================================================
--- tests/.expect/bitmanip3.x64.txt	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ tests/.expect/bitmanip3.x64.txt	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -404,400 +404,400 @@
 
 signed char
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(-128, -128) = -128, floor(-126, -128) = -128, floor(126, -128) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(-128, -128) = -128, floor2(-126, -128) = -128, floor2(126, -128) = 0
 
 unsigned char
-floor(0, 0) = 0, floor(2, 0) = 0, floor(254, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(253, 1) = 253
-floor(2, 2) = 2, floor(4, 2) = 4, floor(252, 2) = 252
-floor(4, 4) = 4, floor(6, 4) = 4, floor(250, 4) = 248
-floor(8, 8) = 8, floor(10, 8) = 8, floor(246, 8) = 240
-floor(16, 16) = 16, floor(18, 16) = 16, floor(238, 16) = 224
-floor(32, 32) = 32, floor(34, 32) = 32, floor(222, 32) = 192
-floor(64, 64) = 64, floor(66, 64) = 64, floor(190, 64) = 128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(126, 128) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(254, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(253, 1) = 253
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(252, 2) = 252
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(250, 4) = 248
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(246, 8) = 240
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(238, 16) = 224
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(222, 32) = 192
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(190, 64) = 128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(126, 128) = 0
 
 short int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(-32768, -32768) = -32768, floor(-32766, -32768) = -32768, floor(32766, -32768) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(-32768, -32768) = -32768, floor2(-32766, -32768) = -32768, floor2(32766, -32768) = 0
 
 unsigned short int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(65534, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(65533, 1) = 65533
-floor(2, 2) = 2, floor(4, 2) = 4, floor(65532, 2) = 65532
-floor(4, 4) = 4, floor(6, 4) = 4, floor(65530, 4) = 65528
-floor(8, 8) = 8, floor(10, 8) = 8, floor(65526, 8) = 65520
-floor(16, 16) = 16, floor(18, 16) = 16, floor(65518, 16) = 65504
-floor(32, 32) = 32, floor(34, 32) = 32, floor(65502, 32) = 65472
-floor(64, 64) = 64, floor(66, 64) = 64, floor(65470, 64) = 65408
-floor(128, 128) = 128, floor(130, 128) = 128, floor(65406, 128) = 65280
-floor(256, 256) = 256, floor(258, 256) = 256, floor(65278, 256) = 65024
-floor(512, 512) = 512, floor(514, 512) = 512, floor(65022, 512) = 64512
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(64510, 1024) = 63488
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(63486, 2048) = 61440
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(61438, 4096) = 57344
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(57342, 8192) = 49152
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(49150, 16384) = 32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(32766, 32768) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(65534, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(65533, 1) = 65533
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(65532, 2) = 65532
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(65530, 4) = 65528
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(65526, 8) = 65520
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(65518, 16) = 65504
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(65502, 32) = 65472
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(65470, 64) = 65408
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(65406, 128) = 65280
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(65278, 256) = 65024
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(65022, 512) = 64512
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(64510, 1024) = 63488
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(63486, 2048) = 61440
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(61438, 4096) = 57344
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(57342, 8192) = 49152
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(49150, 16384) = 32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(32766, 32768) = 0
 
 int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(-2147483648, -2147483648) = -2147483648, floor(-2147483646, -2147483648) = -2147483648, floor(2147483646, -2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(-2147483648, -2147483648) = -2147483648, floor2(-2147483646, -2147483648) = -2147483648, floor2(2147483646, -2147483648) = 0
 
 unsigned int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(4294967294, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(4294967293, 1) = 4294967293
-floor(2, 2) = 2, floor(4, 2) = 4, floor(4294967292, 2) = 4294967292
-floor(4, 4) = 4, floor(6, 4) = 4, floor(4294967290, 4) = 4294967288
-floor(8, 8) = 8, floor(10, 8) = 8, floor(4294967286, 8) = 4294967280
-floor(16, 16) = 16, floor(18, 16) = 16, floor(4294967278, 16) = 4294967264
-floor(32, 32) = 32, floor(34, 32) = 32, floor(4294967262, 32) = 4294967232
-floor(64, 64) = 64, floor(66, 64) = 64, floor(4294967230, 64) = 4294967168
-floor(128, 128) = 128, floor(130, 128) = 128, floor(4294967166, 128) = 4294967040
-floor(256, 256) = 256, floor(258, 256) = 256, floor(4294967038, 256) = 4294966784
-floor(512, 512) = 512, floor(514, 512) = 512, floor(4294966782, 512) = 4294966272
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(4294966270, 1024) = 4294965248
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(4294965246, 2048) = 4294963200
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(4294963198, 4096) = 4294959104
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(4294959102, 8192) = 4294950912
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(4294950910, 16384) = 4294934528
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(4294934526, 32768) = 4294901760
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(4294901758, 65536) = 4294836224
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(4294836222, 131072) = 4294705152
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(4294705150, 262144) = 4294443008
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(4294443006, 524288) = 4293918720
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(4293918718, 1048576) = 4292870144
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(4292870142, 2097152) = 4290772992
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(4290772990, 4194304) = 4286578688
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(4286578686, 8388608) = 4278190080
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(4278190078, 16777216) = 4261412864
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(4261412862, 33554432) = 4227858432
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(4227858430, 67108864) = 4160749568
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(4160749566, 134217728) = 4026531840
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(4026531838, 268435456) = 3758096384
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(3758096382, 536870912) = 3221225472
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(3221225470, 1073741824) = 2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(2147483646, 2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(4294967294, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(4294967293, 1) = 4294967293
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(4294967292, 2) = 4294967292
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(4294967290, 4) = 4294967288
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(4294967286, 8) = 4294967280
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(4294967278, 16) = 4294967264
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(4294967262, 32) = 4294967232
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(4294967230, 64) = 4294967168
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(4294967166, 128) = 4294967040
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(4294967038, 256) = 4294966784
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(4294966782, 512) = 4294966272
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(4294966270, 1024) = 4294965248
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(4294965246, 2048) = 4294963200
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(4294963198, 4096) = 4294959104
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(4294959102, 8192) = 4294950912
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(4294950910, 16384) = 4294934528
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(4294934526, 32768) = 4294901760
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(4294901758, 65536) = 4294836224
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(4294836222, 131072) = 4294705152
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(4294705150, 262144) = 4294443008
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(4294443006, 524288) = 4293918720
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(4293918718, 1048576) = 4292870144
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(4292870142, 2097152) = 4290772992
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(4290772990, 4194304) = 4286578688
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(4286578686, 8388608) = 4278190080
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(4278190078, 16777216) = 4261412864
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(4261412862, 33554432) = 4227858432
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(4227858430, 67108864) = 4160749568
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(4160749566, 134217728) = 4026531840
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(4026531838, 268435456) = 3758096384
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(3758096382, 536870912) = 3221225472
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(3221225470, 1073741824) = 2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(2147483646, 2147483648) = 0
 
 long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(-2147483650, 2147483648) = -4294967296
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(-4294967298, 4294967296) = -8589934592
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(-8589934594, 8589934592) = -17179869184
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(-17179869186, 17179869184) = -34359738368
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(-34359738370, 34359738368) = -68719476736
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(-68719476738, 68719476736) = -137438953472
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(-137438953474, 137438953472) = -274877906944
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(-274877906946, 274877906944) = -549755813888
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(-549755813890, 549755813888) = -1099511627776
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(-1099511627778, 1099511627776) = -2199023255552
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(-2199023255554, 2199023255552) = -4398046511104
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(-4398046511106, 4398046511104) = -8796093022208
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(-8796093022210, 8796093022208) = -17592186044416
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(-17592186044418, 17592186044416) = -35184372088832
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(-35184372088834, 35184372088832) = -70368744177664
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(-70368744177666, 70368744177664) = -140737488355328
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(-140737488355330, 140737488355328) = -281474976710656
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(-281474976710658, 281474976710656) = -562949953421312
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(-562949953421314, 562949953421312) = -1125899906842624
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(-1125899906842626, 1125899906842624) = -2251799813685248
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(-2251799813685250, 2251799813685248) = -4503599627370496
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(-4503599627370498, 4503599627370496) = -9007199254740992
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(-9007199254740994, 9007199254740992) = -18014398509481984
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(-18014398509481986, 18014398509481984) = -36028797018963968
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(-36028797018963970, 36028797018963968) = -72057594037927936
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(-72057594037927938, 72057594037927936) = -144115188075855872
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(-144115188075855874, 144115188075855872) = -288230376151711744
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(-288230376151711746, 288230376151711744) = -576460752303423488
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(-576460752303423490, 576460752303423488) = -1152921504606846976
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(-1152921504606846978, 1152921504606846976) = -2305843009213693952
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(-2305843009213693954, 2305843009213693952) = -4611686018427387904
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(-4611686018427387906, 4611686018427387904) = -9223372036854775808
-floor(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor(9223372036854775806, -9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(-2147483650, 2147483648) = -4294967296
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(-4294967298, 4294967296) = -8589934592
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(-8589934594, 8589934592) = -17179869184
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(-17179869186, 17179869184) = -34359738368
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(-34359738370, 34359738368) = -68719476736
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(-68719476738, 68719476736) = -137438953472
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(-137438953474, 137438953472) = -274877906944
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(-274877906946, 274877906944) = -549755813888
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(-549755813890, 549755813888) = -1099511627776
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(-1099511627778, 1099511627776) = -2199023255552
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(-2199023255554, 2199023255552) = -4398046511104
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(-4398046511106, 4398046511104) = -8796093022208
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(-8796093022210, 8796093022208) = -17592186044416
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(-17592186044418, 17592186044416) = -35184372088832
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(-35184372088834, 35184372088832) = -70368744177664
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(-70368744177666, 70368744177664) = -140737488355328
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(-140737488355330, 140737488355328) = -281474976710656
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(-281474976710658, 281474976710656) = -562949953421312
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(-562949953421314, 562949953421312) = -1125899906842624
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(-1125899906842626, 1125899906842624) = -2251799813685248
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(-2251799813685250, 2251799813685248) = -4503599627370496
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(-4503599627370498, 4503599627370496) = -9007199254740992
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(-9007199254740994, 9007199254740992) = -18014398509481984
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(-18014398509481986, 18014398509481984) = -36028797018963968
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(-36028797018963970, 36028797018963968) = -72057594037927936
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(-72057594037927938, 72057594037927936) = -144115188075855872
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(-144115188075855874, 144115188075855872) = -288230376151711744
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(-288230376151711746, 288230376151711744) = -576460752303423488
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(-576460752303423490, 576460752303423488) = -1152921504606846976
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(-1152921504606846978, 1152921504606846976) = -2305843009213693952
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(-2305843009213693954, 2305843009213693952) = -4611686018427387904
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(-4611686018427387906, 4611686018427387904) = -9223372036854775808
+floor2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor2(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor2(9223372036854775806, -9223372036854775808) = 0
 
 unsigned long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(18446744073709551614, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(18446744073709551613, 1) = 18446744073709551613
-floor(2, 2) = 2, floor(4, 2) = 4, floor(18446744073709551612, 2) = 18446744073709551612
-floor(4, 4) = 4, floor(6, 4) = 4, floor(18446744073709551610, 4) = 18446744073709551608
-floor(8, 8) = 8, floor(10, 8) = 8, floor(18446744073709551606, 8) = 18446744073709551600
-floor(16, 16) = 16, floor(18, 16) = 16, floor(18446744073709551598, 16) = 18446744073709551584
-floor(32, 32) = 32, floor(34, 32) = 32, floor(18446744073709551582, 32) = 18446744073709551552
-floor(64, 64) = 64, floor(66, 64) = 64, floor(18446744073709551550, 64) = 18446744073709551488
-floor(128, 128) = 128, floor(130, 128) = 128, floor(18446744073709551486, 128) = 18446744073709551360
-floor(256, 256) = 256, floor(258, 256) = 256, floor(18446744073709551358, 256) = 18446744073709551104
-floor(512, 512) = 512, floor(514, 512) = 512, floor(18446744073709551102, 512) = 18446744073709550592
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(18446744073709550590, 1024) = 18446744073709549568
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(18446744073709549566, 2048) = 18446744073709547520
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(18446744073709547518, 4096) = 18446744073709543424
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(18446744073709543422, 8192) = 18446744073709535232
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(18446744073709535230, 16384) = 18446744073709518848
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(18446744073709518846, 32768) = 18446744073709486080
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(18446744073709486078, 65536) = 18446744073709420544
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(18446744073709420542, 131072) = 18446744073709289472
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(18446744073709289470, 262144) = 18446744073709027328
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(18446744073709027326, 524288) = 18446744073708503040
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(18446744073708503038, 1048576) = 18446744073707454464
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(18446744073707454462, 2097152) = 18446744073705357312
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(18446744073705357310, 4194304) = 18446744073701163008
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(18446744073701163006, 8388608) = 18446744073692774400
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(18446744073692774398, 16777216) = 18446744073675997184
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(18446744073675997182, 33554432) = 18446744073642442752
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(18446744073642442750, 67108864) = 18446744073575333888
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(18446744073575333886, 134217728) = 18446744073441116160
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(18446744073441116158, 268435456) = 18446744073172680704
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(18446744073172680702, 536870912) = 18446744072635809792
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(18446744072635809790, 1073741824) = 18446744071562067968
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(18446744071562067966, 2147483648) = 18446744069414584320
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(18446744069414584318, 4294967296) = 18446744065119617024
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(18446744065119617022, 8589934592) = 18446744056529682432
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(18446744056529682430, 17179869184) = 18446744039349813248
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(18446744039349813246, 34359738368) = 18446744004990074880
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(18446744004990074878, 68719476736) = 18446743936270598144
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(18446743936270598142, 137438953472) = 18446743798831644672
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(18446743798831644670, 274877906944) = 18446743523953737728
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(18446743523953737726, 549755813888) = 18446742974197923840
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(18446742974197923838, 1099511627776) = 18446741874686296064
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(18446741874686296062, 2199023255552) = 18446739675663040512
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(18446739675663040510, 4398046511104) = 18446735277616529408
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(18446735277616529406, 8796093022208) = 18446726481523507200
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(18446726481523507198, 17592186044416) = 18446708889337462784
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(18446708889337462782, 35184372088832) = 18446673704965373952
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(18446673704965373950, 70368744177664) = 18446603336221196288
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(18446603336221196286, 140737488355328) = 18446462598732840960
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(18446462598732840958, 281474976710656) = 18446181123756130304
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(18446181123756130302, 562949953421312) = 18445618173802708992
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(18445618173802708990, 1125899906842624) = 18444492273895866368
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(18444492273895866366, 2251799813685248) = 18442240474082181120
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(18442240474082181118, 4503599627370496) = 18437736874454810624
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(18437736874454810622, 9007199254740992) = 18428729675200069632
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(18428729675200069630, 18014398509481984) = 18410715276690587648
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(18410715276690587646, 36028797018963968) = 18374686479671623680
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(18374686479671623678, 72057594037927936) = 18302628885633695744
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(18302628885633695742, 144115188075855872) = 18158513697557839872
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(18158513697557839870, 288230376151711744) = 17870283321406128128
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(17870283321406128126, 576460752303423488) = 17293822569102704640
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(17293822569102704638, 1152921504606846976) = 16140901064495857664
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(16140901064495857662, 2305843009213693952) = 13835058055282163712
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(13835058055282163710, 4611686018427387904) = 9223372036854775808
-floor(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor(9223372036854775806, 9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(18446744073709551614, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(18446744073709551613, 1) = 18446744073709551613
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(18446744073709551612, 2) = 18446744073709551612
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(18446744073709551610, 4) = 18446744073709551608
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(18446744073709551606, 8) = 18446744073709551600
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(18446744073709551598, 16) = 18446744073709551584
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(18446744073709551582, 32) = 18446744073709551552
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(18446744073709551550, 64) = 18446744073709551488
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(18446744073709551486, 128) = 18446744073709551360
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(18446744073709551358, 256) = 18446744073709551104
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(18446744073709551102, 512) = 18446744073709550592
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(18446744073709550590, 1024) = 18446744073709549568
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(18446744073709549566, 2048) = 18446744073709547520
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(18446744073709547518, 4096) = 18446744073709543424
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(18446744073709543422, 8192) = 18446744073709535232
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(18446744073709535230, 16384) = 18446744073709518848
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(18446744073709518846, 32768) = 18446744073709486080
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(18446744073709486078, 65536) = 18446744073709420544
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(18446744073709420542, 131072) = 18446744073709289472
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(18446744073709289470, 262144) = 18446744073709027328
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(18446744073709027326, 524288) = 18446744073708503040
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(18446744073708503038, 1048576) = 18446744073707454464
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(18446744073707454462, 2097152) = 18446744073705357312
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(18446744073705357310, 4194304) = 18446744073701163008
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(18446744073701163006, 8388608) = 18446744073692774400
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(18446744073692774398, 16777216) = 18446744073675997184
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(18446744073675997182, 33554432) = 18446744073642442752
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(18446744073642442750, 67108864) = 18446744073575333888
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(18446744073575333886, 134217728) = 18446744073441116160
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(18446744073441116158, 268435456) = 18446744073172680704
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(18446744073172680702, 536870912) = 18446744072635809792
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(18446744072635809790, 1073741824) = 18446744071562067968
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(18446744071562067966, 2147483648) = 18446744069414584320
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(18446744069414584318, 4294967296) = 18446744065119617024
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(18446744065119617022, 8589934592) = 18446744056529682432
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(18446744056529682430, 17179869184) = 18446744039349813248
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(18446744039349813246, 34359738368) = 18446744004990074880
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(18446744004990074878, 68719476736) = 18446743936270598144
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(18446743936270598142, 137438953472) = 18446743798831644672
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(18446743798831644670, 274877906944) = 18446743523953737728
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(18446743523953737726, 549755813888) = 18446742974197923840
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(18446742974197923838, 1099511627776) = 18446741874686296064
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(18446741874686296062, 2199023255552) = 18446739675663040512
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(18446739675663040510, 4398046511104) = 18446735277616529408
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(18446735277616529406, 8796093022208) = 18446726481523507200
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(18446726481523507198, 17592186044416) = 18446708889337462784
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(18446708889337462782, 35184372088832) = 18446673704965373952
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(18446673704965373950, 70368744177664) = 18446603336221196288
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(18446603336221196286, 140737488355328) = 18446462598732840960
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(18446462598732840958, 281474976710656) = 18446181123756130304
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(18446181123756130302, 562949953421312) = 18445618173802708992
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(18445618173802708990, 1125899906842624) = 18444492273895866368
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(18444492273895866366, 2251799813685248) = 18442240474082181120
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(18442240474082181118, 4503599627370496) = 18437736874454810624
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(18437736874454810622, 9007199254740992) = 18428729675200069632
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(18428729675200069630, 18014398509481984) = 18410715276690587648
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(18410715276690587646, 36028797018963968) = 18374686479671623680
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(18374686479671623678, 72057594037927936) = 18302628885633695744
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(18302628885633695742, 144115188075855872) = 18158513697557839872
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(18158513697557839870, 288230376151711744) = 17870283321406128128
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(17870283321406128126, 576460752303423488) = 17293822569102704640
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(17293822569102704638, 1152921504606846976) = 16140901064495857664
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(16140901064495857662, 2305843009213693952) = 13835058055282163712
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(13835058055282163710, 4611686018427387904) = 9223372036854775808
+floor2(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775806, 9223372036854775808) = 0
 
 long long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(-2147483650, 2147483648) = -4294967296
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(-4294967298, 4294967296) = -8589934592
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(-8589934594, 8589934592) = -17179869184
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(-17179869186, 17179869184) = -34359738368
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(-34359738370, 34359738368) = -68719476736
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(-68719476738, 68719476736) = -137438953472
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(-137438953474, 137438953472) = -274877906944
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(-274877906946, 274877906944) = -549755813888
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(-549755813890, 549755813888) = -1099511627776
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(-1099511627778, 1099511627776) = -2199023255552
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(-2199023255554, 2199023255552) = -4398046511104
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(-4398046511106, 4398046511104) = -8796093022208
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(-8796093022210, 8796093022208) = -17592186044416
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(-17592186044418, 17592186044416) = -35184372088832
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(-35184372088834, 35184372088832) = -70368744177664
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(-70368744177666, 70368744177664) = -140737488355328
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(-140737488355330, 140737488355328) = -281474976710656
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(-281474976710658, 281474976710656) = -562949953421312
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(-562949953421314, 562949953421312) = -1125899906842624
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(-1125899906842626, 1125899906842624) = -2251799813685248
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(-2251799813685250, 2251799813685248) = -4503599627370496
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(-4503599627370498, 4503599627370496) = -9007199254740992
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(-9007199254740994, 9007199254740992) = -18014398509481984
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(-18014398509481986, 18014398509481984) = -36028797018963968
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(-36028797018963970, 36028797018963968) = -72057594037927936
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(-72057594037927938, 72057594037927936) = -144115188075855872
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(-144115188075855874, 144115188075855872) = -288230376151711744
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(-288230376151711746, 288230376151711744) = -576460752303423488
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(-576460752303423490, 576460752303423488) = -1152921504606846976
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(-1152921504606846978, 1152921504606846976) = -2305843009213693952
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(-2305843009213693954, 2305843009213693952) = -4611686018427387904
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(-4611686018427387906, 4611686018427387904) = -9223372036854775808
-floor(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor(9223372036854775806, -9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(-2147483650, 2147483648) = -4294967296
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(-4294967298, 4294967296) = -8589934592
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(-8589934594, 8589934592) = -17179869184
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(-17179869186, 17179869184) = -34359738368
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(-34359738370, 34359738368) = -68719476736
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(-68719476738, 68719476736) = -137438953472
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(-137438953474, 137438953472) = -274877906944
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(-274877906946, 274877906944) = -549755813888
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(-549755813890, 549755813888) = -1099511627776
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(-1099511627778, 1099511627776) = -2199023255552
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(-2199023255554, 2199023255552) = -4398046511104
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(-4398046511106, 4398046511104) = -8796093022208
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(-8796093022210, 8796093022208) = -17592186044416
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(-17592186044418, 17592186044416) = -35184372088832
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(-35184372088834, 35184372088832) = -70368744177664
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(-70368744177666, 70368744177664) = -140737488355328
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(-140737488355330, 140737488355328) = -281474976710656
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(-281474976710658, 281474976710656) = -562949953421312
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(-562949953421314, 562949953421312) = -1125899906842624
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(-1125899906842626, 1125899906842624) = -2251799813685248
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(-2251799813685250, 2251799813685248) = -4503599627370496
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(-4503599627370498, 4503599627370496) = -9007199254740992
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(-9007199254740994, 9007199254740992) = -18014398509481984
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(-18014398509481986, 18014398509481984) = -36028797018963968
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(-36028797018963970, 36028797018963968) = -72057594037927936
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(-72057594037927938, 72057594037927936) = -144115188075855872
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(-144115188075855874, 144115188075855872) = -288230376151711744
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(-288230376151711746, 288230376151711744) = -576460752303423488
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(-576460752303423490, 576460752303423488) = -1152921504606846976
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(-1152921504606846978, 1152921504606846976) = -2305843009213693952
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(-2305843009213693954, 2305843009213693952) = -4611686018427387904
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(-4611686018427387906, 4611686018427387904) = -9223372036854775808
+floor2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor2(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor2(9223372036854775806, -9223372036854775808) = 0
 
 unsigned long long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(18446744073709551614, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(18446744073709551613, 1) = 18446744073709551613
-floor(2, 2) = 2, floor(4, 2) = 4, floor(18446744073709551612, 2) = 18446744073709551612
-floor(4, 4) = 4, floor(6, 4) = 4, floor(18446744073709551610, 4) = 18446744073709551608
-floor(8, 8) = 8, floor(10, 8) = 8, floor(18446744073709551606, 8) = 18446744073709551600
-floor(16, 16) = 16, floor(18, 16) = 16, floor(18446744073709551598, 16) = 18446744073709551584
-floor(32, 32) = 32, floor(34, 32) = 32, floor(18446744073709551582, 32) = 18446744073709551552
-floor(64, 64) = 64, floor(66, 64) = 64, floor(18446744073709551550, 64) = 18446744073709551488
-floor(128, 128) = 128, floor(130, 128) = 128, floor(18446744073709551486, 128) = 18446744073709551360
-floor(256, 256) = 256, floor(258, 256) = 256, floor(18446744073709551358, 256) = 18446744073709551104
-floor(512, 512) = 512, floor(514, 512) = 512, floor(18446744073709551102, 512) = 18446744073709550592
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(18446744073709550590, 1024) = 18446744073709549568
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(18446744073709549566, 2048) = 18446744073709547520
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(18446744073709547518, 4096) = 18446744073709543424
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(18446744073709543422, 8192) = 18446744073709535232
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(18446744073709535230, 16384) = 18446744073709518848
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(18446744073709518846, 32768) = 18446744073709486080
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(18446744073709486078, 65536) = 18446744073709420544
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(18446744073709420542, 131072) = 18446744073709289472
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(18446744073709289470, 262144) = 18446744073709027328
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(18446744073709027326, 524288) = 18446744073708503040
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(18446744073708503038, 1048576) = 18446744073707454464
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(18446744073707454462, 2097152) = 18446744073705357312
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(18446744073705357310, 4194304) = 18446744073701163008
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(18446744073701163006, 8388608) = 18446744073692774400
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(18446744073692774398, 16777216) = 18446744073675997184
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(18446744073675997182, 33554432) = 18446744073642442752
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(18446744073642442750, 67108864) = 18446744073575333888
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(18446744073575333886, 134217728) = 18446744073441116160
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(18446744073441116158, 268435456) = 18446744073172680704
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(18446744073172680702, 536870912) = 18446744072635809792
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(18446744072635809790, 1073741824) = 18446744071562067968
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(18446744071562067966, 2147483648) = 18446744069414584320
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(18446744069414584318, 4294967296) = 18446744065119617024
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(18446744065119617022, 8589934592) = 18446744056529682432
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(18446744056529682430, 17179869184) = 18446744039349813248
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(18446744039349813246, 34359738368) = 18446744004990074880
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(18446744004990074878, 68719476736) = 18446743936270598144
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(18446743936270598142, 137438953472) = 18446743798831644672
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(18446743798831644670, 274877906944) = 18446743523953737728
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(18446743523953737726, 549755813888) = 18446742974197923840
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(18446742974197923838, 1099511627776) = 18446741874686296064
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(18446741874686296062, 2199023255552) = 18446739675663040512
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(18446739675663040510, 4398046511104) = 18446735277616529408
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(18446735277616529406, 8796093022208) = 18446726481523507200
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(18446726481523507198, 17592186044416) = 18446708889337462784
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(18446708889337462782, 35184372088832) = 18446673704965373952
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(18446673704965373950, 70368744177664) = 18446603336221196288
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(18446603336221196286, 140737488355328) = 18446462598732840960
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(18446462598732840958, 281474976710656) = 18446181123756130304
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(18446181123756130302, 562949953421312) = 18445618173802708992
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(18445618173802708990, 1125899906842624) = 18444492273895866368
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(18444492273895866366, 2251799813685248) = 18442240474082181120
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(18442240474082181118, 4503599627370496) = 18437736874454810624
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(18437736874454810622, 9007199254740992) = 18428729675200069632
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(18428729675200069630, 18014398509481984) = 18410715276690587648
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(18410715276690587646, 36028797018963968) = 18374686479671623680
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(18374686479671623678, 72057594037927936) = 18302628885633695744
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(18302628885633695742, 144115188075855872) = 18158513697557839872
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(18158513697557839870, 288230376151711744) = 17870283321406128128
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(17870283321406128126, 576460752303423488) = 17293822569102704640
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(17293822569102704638, 1152921504606846976) = 16140901064495857664
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(16140901064495857662, 2305843009213693952) = 13835058055282163712
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(13835058055282163710, 4611686018427387904) = 9223372036854775808
-floor(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor(9223372036854775806, 9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(18446744073709551614, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(18446744073709551613, 1) = 18446744073709551613
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(18446744073709551612, 2) = 18446744073709551612
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(18446744073709551610, 4) = 18446744073709551608
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(18446744073709551606, 8) = 18446744073709551600
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(18446744073709551598, 16) = 18446744073709551584
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(18446744073709551582, 32) = 18446744073709551552
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(18446744073709551550, 64) = 18446744073709551488
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(18446744073709551486, 128) = 18446744073709551360
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(18446744073709551358, 256) = 18446744073709551104
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(18446744073709551102, 512) = 18446744073709550592
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(18446744073709550590, 1024) = 18446744073709549568
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(18446744073709549566, 2048) = 18446744073709547520
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(18446744073709547518, 4096) = 18446744073709543424
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(18446744073709543422, 8192) = 18446744073709535232
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(18446744073709535230, 16384) = 18446744073709518848
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(18446744073709518846, 32768) = 18446744073709486080
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(18446744073709486078, 65536) = 18446744073709420544
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(18446744073709420542, 131072) = 18446744073709289472
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(18446744073709289470, 262144) = 18446744073709027328
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(18446744073709027326, 524288) = 18446744073708503040
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(18446744073708503038, 1048576) = 18446744073707454464
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(18446744073707454462, 2097152) = 18446744073705357312
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(18446744073705357310, 4194304) = 18446744073701163008
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(18446744073701163006, 8388608) = 18446744073692774400
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(18446744073692774398, 16777216) = 18446744073675997184
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(18446744073675997182, 33554432) = 18446744073642442752
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(18446744073642442750, 67108864) = 18446744073575333888
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(18446744073575333886, 134217728) = 18446744073441116160
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(18446744073441116158, 268435456) = 18446744073172680704
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(18446744073172680702, 536870912) = 18446744072635809792
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(18446744072635809790, 1073741824) = 18446744071562067968
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(18446744071562067966, 2147483648) = 18446744069414584320
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(18446744069414584318, 4294967296) = 18446744065119617024
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(18446744065119617022, 8589934592) = 18446744056529682432
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(18446744056529682430, 17179869184) = 18446744039349813248
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(18446744039349813246, 34359738368) = 18446744004990074880
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(18446744004990074878, 68719476736) = 18446743936270598144
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(18446743936270598142, 137438953472) = 18446743798831644672
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(18446743798831644670, 274877906944) = 18446743523953737728
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(18446743523953737726, 549755813888) = 18446742974197923840
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(18446742974197923838, 1099511627776) = 18446741874686296064
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(18446741874686296062, 2199023255552) = 18446739675663040512
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(18446739675663040510, 4398046511104) = 18446735277616529408
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(18446735277616529406, 8796093022208) = 18446726481523507200
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(18446726481523507198, 17592186044416) = 18446708889337462784
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(18446708889337462782, 35184372088832) = 18446673704965373952
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(18446673704965373950, 70368744177664) = 18446603336221196288
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(18446603336221196286, 140737488355328) = 18446462598732840960
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(18446462598732840958, 281474976710656) = 18446181123756130304
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(18446181123756130302, 562949953421312) = 18445618173802708992
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(18445618173802708990, 1125899906842624) = 18444492273895866368
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(18444492273895866366, 2251799813685248) = 18442240474082181120
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(18442240474082181118, 4503599627370496) = 18437736874454810624
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(18437736874454810622, 9007199254740992) = 18428729675200069632
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(18428729675200069630, 18014398509481984) = 18410715276690587648
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(18410715276690587646, 36028797018963968) = 18374686479671623680
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(18374686479671623678, 72057594037927936) = 18302628885633695744
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(18302628885633695742, 144115188075855872) = 18158513697557839872
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(18158513697557839870, 288230376151711744) = 17870283321406128128
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(17870283321406128126, 576460752303423488) = 17293822569102704640
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(17293822569102704638, 1152921504606846976) = 16140901064495857664
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(16140901064495857662, 2305843009213693952) = 13835058055282163712
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(13835058055282163710, 4611686018427387904) = 9223372036854775808
+floor2(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775806, 9223372036854775808) = 0
 
 
@@ -1196,400 +1196,400 @@
 
 signed char
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = -128, ceiling(-66, 64) = -64
-ceiling(-128, -128) = -128, ceiling(-126, -128) = 0, ceiling(126, -128) = -128
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = -128, ceiling2(-66, 64) = -64
+ceiling2(-128, -128) = -128, ceiling2(-126, -128) = 0, ceiling2(126, -128) = -128
 
 unsigned char
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(254, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(253, 1) = 253
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(252, 2) = 252
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(250, 4) = 252
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(246, 8) = 248
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(238, 16) = 240
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(222, 32) = 224
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(190, 64) = 192
-ceiling(128, 128) = 128, ceiling(130, 128) = 0, ceiling(126, 128) = 128
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(254, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(253, 1) = 253
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(252, 2) = 252
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(250, 4) = 252
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(246, 8) = 248
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(238, 16) = 240
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(222, 32) = 224
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(190, 64) = 192
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 0, ceiling2(126, 128) = 128
 
 short int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = -32768, ceiling(-16386, 16384) = -16384
-ceiling(-32768, -32768) = -32768, ceiling(-32766, -32768) = 0, ceiling(32766, -32768) = -32768
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = -32768, ceiling2(-16386, 16384) = -16384
+ceiling2(-32768, -32768) = -32768, ceiling2(-32766, -32768) = 0, ceiling2(32766, -32768) = -32768
 
 unsigned short int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(65534, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(65533, 1) = 65533
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(65532, 2) = 65532
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(65530, 4) = 65532
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(65526, 8) = 65528
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(65518, 16) = 65520
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(65502, 32) = 65504
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(65470, 64) = 65472
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(65406, 128) = 65408
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(65278, 256) = 65280
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(65022, 512) = 65024
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(64510, 1024) = 64512
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(63486, 2048) = 63488
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(61438, 4096) = 61440
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(57342, 8192) = 57344
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(49150, 16384) = 49152
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 0, ceiling(32766, 32768) = 32768
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(65534, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(65533, 1) = 65533
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(65532, 2) = 65532
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(65530, 4) = 65532
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(65526, 8) = 65528
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(65518, 16) = 65520
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(65502, 32) = 65504
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(65470, 64) = 65472
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(65406, 128) = 65408
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(65278, 256) = 65280
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(65022, 512) = 65024
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(64510, 1024) = 64512
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(63486, 2048) = 63488
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(61438, 4096) = 61440
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(57342, 8192) = 57344
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(49150, 16384) = 49152
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 0, ceiling2(32766, 32768) = 32768
 
 int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = -2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(-2147483648, -2147483648) = -2147483648, ceiling(-2147483646, -2147483648) = 0, ceiling(2147483646, -2147483648) = -2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = -2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(-2147483648, -2147483648) = -2147483648, ceiling2(-2147483646, -2147483648) = 0, ceiling2(2147483646, -2147483648) = -2147483648
 
 unsigned int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(4294967294, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(4294967293, 1) = 4294967293
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(4294967292, 2) = 4294967292
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(4294967290, 4) = 4294967292
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(4294967286, 8) = 4294967288
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(4294967278, 16) = 4294967280
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(4294967262, 32) = 4294967264
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(4294967230, 64) = 4294967232
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(4294967166, 128) = 4294967168
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(4294967038, 256) = 4294967040
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(4294966782, 512) = 4294966784
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(4294966270, 1024) = 4294966272
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(4294965246, 2048) = 4294965248
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(4294963198, 4096) = 4294963200
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(4294959102, 8192) = 4294959104
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(4294950910, 16384) = 4294950912
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(4294934526, 32768) = 4294934528
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(4294901758, 65536) = 4294901760
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(4294836222, 131072) = 4294836224
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(4294705150, 262144) = 4294705152
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(4294443006, 524288) = 4294443008
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(4293918718, 1048576) = 4293918720
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(4292870142, 2097152) = 4292870144
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(4290772990, 4194304) = 4290772992
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(4286578686, 8388608) = 4286578688
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(4278190078, 16777216) = 4278190080
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(4261412862, 33554432) = 4261412864
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(4227858430, 67108864) = 4227858432
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(4160749566, 134217728) = 4160749568
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(4026531838, 268435456) = 4026531840
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(3758096382, 536870912) = 3758096384
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(3221225470, 1073741824) = 3221225472
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 0, ceiling(2147483646, 2147483648) = 2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(4294967294, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(4294967293, 1) = 4294967293
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(4294967292, 2) = 4294967292
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(4294967290, 4) = 4294967292
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(4294967286, 8) = 4294967288
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(4294967278, 16) = 4294967280
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(4294967262, 32) = 4294967264
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(4294967230, 64) = 4294967232
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(4294967166, 128) = 4294967168
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(4294967038, 256) = 4294967040
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(4294966782, 512) = 4294966784
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(4294966270, 1024) = 4294966272
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(4294965246, 2048) = 4294965248
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(4294963198, 4096) = 4294963200
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(4294959102, 8192) = 4294959104
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(4294950910, 16384) = 4294950912
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(4294934526, 32768) = 4294934528
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(4294901758, 65536) = 4294901760
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(4294836222, 131072) = 4294836224
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(4294705150, 262144) = 4294705152
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(4294443006, 524288) = 4294443008
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(4293918718, 1048576) = 4293918720
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(4292870142, 2097152) = 4292870144
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(4290772990, 4194304) = 4290772992
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(4286578686, 8388608) = 4286578688
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(4278190078, 16777216) = 4278190080
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(4261412862, 33554432) = 4261412864
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(4227858430, 67108864) = 4227858432
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(4160749566, 134217728) = 4160749568
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(4026531838, 268435456) = 4026531840
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(3758096382, 536870912) = 3758096384
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(3221225470, 1073741824) = 3221225472
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 0, ceiling2(2147483646, 2147483648) = 2147483648
 
 long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(-2147483650, 2147483648) = -2147483648
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(-4294967298, 4294967296) = -4294967296
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(-8589934594, 8589934592) = -8589934592
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(-17179869186, 17179869184) = -17179869184
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(-34359738370, 34359738368) = -34359738368
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(-68719476738, 68719476736) = -68719476736
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(-137438953474, 137438953472) = -137438953472
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(-274877906946, 274877906944) = -274877906944
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(-549755813890, 549755813888) = -549755813888
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(-1099511627778, 1099511627776) = -1099511627776
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(-2199023255554, 2199023255552) = -2199023255552
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(-4398046511106, 4398046511104) = -4398046511104
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(-8796093022210, 8796093022208) = -8796093022208
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(-17592186044418, 17592186044416) = -17592186044416
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(-35184372088834, 35184372088832) = -35184372088832
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(-70368744177666, 70368744177664) = -70368744177664
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(-140737488355330, 140737488355328) = -140737488355328
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(-281474976710658, 281474976710656) = -281474976710656
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(-562949953421314, 562949953421312) = -562949953421312
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(-1125899906842626, 1125899906842624) = -1125899906842624
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(-2251799813685250, 2251799813685248) = -2251799813685248
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(-4503599627370498, 4503599627370496) = -4503599627370496
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(-9007199254740994, 9007199254740992) = -9007199254740992
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(-18014398509481986, 18014398509481984) = -18014398509481984
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(-36028797018963970, 36028797018963968) = -36028797018963968
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(-72057594037927938, 72057594037927936) = -72057594037927936
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(-144115188075855874, 144115188075855872) = -144115188075855872
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(-288230376151711746, 288230376151711744) = -288230376151711744
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(-576460752303423490, 576460752303423488) = -576460752303423488
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(-1152921504606846978, 1152921504606846976) = -1152921504606846976
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(-2305843009213693954, 2305843009213693952) = -2305843009213693952
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling(-4611686018427387906, 4611686018427387904) = -4611686018427387904
-ceiling(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling(-9223372036854775806, -9223372036854775808) = 0, ceiling(9223372036854775806, -9223372036854775808) = -9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(-2147483650, 2147483648) = -2147483648
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(-4294967298, 4294967296) = -4294967296
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(-8589934594, 8589934592) = -8589934592
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(-17179869186, 17179869184) = -17179869184
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(-34359738370, 34359738368) = -34359738368
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(-68719476738, 68719476736) = -68719476736
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(-137438953474, 137438953472) = -137438953472
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(-274877906946, 274877906944) = -274877906944
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(-549755813890, 549755813888) = -549755813888
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(-1099511627778, 1099511627776) = -1099511627776
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(-2199023255554, 2199023255552) = -2199023255552
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(-4398046511106, 4398046511104) = -4398046511104
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(-8796093022210, 8796093022208) = -8796093022208
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(-17592186044418, 17592186044416) = -17592186044416
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(-35184372088834, 35184372088832) = -35184372088832
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(-70368744177666, 70368744177664) = -70368744177664
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(-140737488355330, 140737488355328) = -140737488355328
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(-281474976710658, 281474976710656) = -281474976710656
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(-562949953421314, 562949953421312) = -562949953421312
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(-1125899906842626, 1125899906842624) = -1125899906842624
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(-2251799813685250, 2251799813685248) = -2251799813685248
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(-4503599627370498, 4503599627370496) = -4503599627370496
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(-9007199254740994, 9007199254740992) = -9007199254740992
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(-18014398509481986, 18014398509481984) = -18014398509481984
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(-36028797018963970, 36028797018963968) = -36028797018963968
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(-72057594037927938, 72057594037927936) = -72057594037927936
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(-144115188075855874, 144115188075855872) = -144115188075855872
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(-288230376151711746, 288230376151711744) = -288230376151711744
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(-576460752303423490, 576460752303423488) = -576460752303423488
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(-1152921504606846978, 1152921504606846976) = -1152921504606846976
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(-2305843009213693954, 2305843009213693952) = -2305843009213693952
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling2(-4611686018427387906, 4611686018427387904) = -4611686018427387904
+ceiling2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling2(-9223372036854775806, -9223372036854775808) = 0, ceiling2(9223372036854775806, -9223372036854775808) = -9223372036854775808
 
 unsigned long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(18446744073709551614, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(18446744073709551613, 1) = 18446744073709551613
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(18446744073709551612, 2) = 18446744073709551612
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(18446744073709551610, 4) = 18446744073709551612
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(18446744073709551606, 8) = 18446744073709551608
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(18446744073709551598, 16) = 18446744073709551600
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(18446744073709551582, 32) = 18446744073709551584
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(18446744073709551550, 64) = 18446744073709551552
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(18446744073709551486, 128) = 18446744073709551488
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(18446744073709551358, 256) = 18446744073709551360
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(18446744073709551102, 512) = 18446744073709551104
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(18446744073709550590, 1024) = 18446744073709550592
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(18446744073709549566, 2048) = 18446744073709549568
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(18446744073709547518, 4096) = 18446744073709547520
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(18446744073709543422, 8192) = 18446744073709543424
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(18446744073709535230, 16384) = 18446744073709535232
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(18446744073709518846, 32768) = 18446744073709518848
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(18446744073709486078, 65536) = 18446744073709486080
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(18446744073709420542, 131072) = 18446744073709420544
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(18446744073709289470, 262144) = 18446744073709289472
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(18446744073709027326, 524288) = 18446744073709027328
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(18446744073708503038, 1048576) = 18446744073708503040
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(18446744073707454462, 2097152) = 18446744073707454464
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(18446744073705357310, 4194304) = 18446744073705357312
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(18446744073701163006, 8388608) = 18446744073701163008
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(18446744073692774398, 16777216) = 18446744073692774400
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(18446744073675997182, 33554432) = 18446744073675997184
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(18446744073642442750, 67108864) = 18446744073642442752
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(18446744073575333886, 134217728) = 18446744073575333888
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(18446744073441116158, 268435456) = 18446744073441116160
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(18446744073172680702, 536870912) = 18446744073172680704
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(18446744072635809790, 1073741824) = 18446744072635809792
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(18446744071562067966, 2147483648) = 18446744071562067968
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(18446744069414584318, 4294967296) = 18446744069414584320
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(18446744065119617022, 8589934592) = 18446744065119617024
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(18446744056529682430, 17179869184) = 18446744056529682432
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(18446744039349813246, 34359738368) = 18446744039349813248
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(18446744004990074878, 68719476736) = 18446744004990074880
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(18446743936270598142, 137438953472) = 18446743936270598144
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(18446743798831644670, 274877906944) = 18446743798831644672
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(18446743523953737726, 549755813888) = 18446743523953737728
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(18446742974197923838, 1099511627776) = 18446742974197923840
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(18446741874686296062, 2199023255552) = 18446741874686296064
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(18446739675663040510, 4398046511104) = 18446739675663040512
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(18446735277616529406, 8796093022208) = 18446735277616529408
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(18446726481523507198, 17592186044416) = 18446726481523507200
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(18446708889337462782, 35184372088832) = 18446708889337462784
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(18446673704965373950, 70368744177664) = 18446673704965373952
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(18446603336221196286, 140737488355328) = 18446603336221196288
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(18446462598732840958, 281474976710656) = 18446462598732840960
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(18446181123756130302, 562949953421312) = 18446181123756130304
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(18445618173802708990, 1125899906842624) = 18445618173802708992
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(18444492273895866366, 2251799813685248) = 18444492273895866368
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(18442240474082181118, 4503599627370496) = 18442240474082181120
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(18437736874454810622, 9007199254740992) = 18437736874454810624
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(18428729675200069630, 18014398509481984) = 18428729675200069632
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(18410715276690587646, 36028797018963968) = 18410715276690587648
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(18374686479671623678, 72057594037927936) = 18374686479671623680
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(18302628885633695742, 144115188075855872) = 18302628885633695744
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(18158513697557839870, 288230376151711744) = 18158513697557839872
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(17870283321406128126, 576460752303423488) = 17870283321406128128
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(17293822569102704638, 1152921504606846976) = 17293822569102704640
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(16140901064495857662, 2305843009213693952) = 16140901064495857664
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling(13835058055282163710, 4611686018427387904) = 13835058055282163712
-ceiling(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling(9223372036854775810, 9223372036854775808) = 0, ceiling(9223372036854775806, 9223372036854775808) = 9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(18446744073709551614, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(18446744073709551613, 1) = 18446744073709551613
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(18446744073709551612, 2) = 18446744073709551612
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(18446744073709551610, 4) = 18446744073709551612
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(18446744073709551606, 8) = 18446744073709551608
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(18446744073709551598, 16) = 18446744073709551600
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(18446744073709551582, 32) = 18446744073709551584
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(18446744073709551550, 64) = 18446744073709551552
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(18446744073709551486, 128) = 18446744073709551488
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(18446744073709551358, 256) = 18446744073709551360
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(18446744073709551102, 512) = 18446744073709551104
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(18446744073709550590, 1024) = 18446744073709550592
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(18446744073709549566, 2048) = 18446744073709549568
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(18446744073709547518, 4096) = 18446744073709547520
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(18446744073709543422, 8192) = 18446744073709543424
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(18446744073709535230, 16384) = 18446744073709535232
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(18446744073709518846, 32768) = 18446744073709518848
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(18446744073709486078, 65536) = 18446744073709486080
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(18446744073709420542, 131072) = 18446744073709420544
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(18446744073709289470, 262144) = 18446744073709289472
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(18446744073709027326, 524288) = 18446744073709027328
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(18446744073708503038, 1048576) = 18446744073708503040
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(18446744073707454462, 2097152) = 18446744073707454464
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(18446744073705357310, 4194304) = 18446744073705357312
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(18446744073701163006, 8388608) = 18446744073701163008
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(18446744073692774398, 16777216) = 18446744073692774400
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(18446744073675997182, 33554432) = 18446744073675997184
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(18446744073642442750, 67108864) = 18446744073642442752
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(18446744073575333886, 134217728) = 18446744073575333888
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(18446744073441116158, 268435456) = 18446744073441116160
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(18446744073172680702, 536870912) = 18446744073172680704
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(18446744072635809790, 1073741824) = 18446744072635809792
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(18446744071562067966, 2147483648) = 18446744071562067968
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(18446744069414584318, 4294967296) = 18446744069414584320
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(18446744065119617022, 8589934592) = 18446744065119617024
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(18446744056529682430, 17179869184) = 18446744056529682432
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(18446744039349813246, 34359738368) = 18446744039349813248
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(18446744004990074878, 68719476736) = 18446744004990074880
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(18446743936270598142, 137438953472) = 18446743936270598144
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(18446743798831644670, 274877906944) = 18446743798831644672
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(18446743523953737726, 549755813888) = 18446743523953737728
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(18446742974197923838, 1099511627776) = 18446742974197923840
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(18446741874686296062, 2199023255552) = 18446741874686296064
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(18446739675663040510, 4398046511104) = 18446739675663040512
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(18446735277616529406, 8796093022208) = 18446735277616529408
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(18446726481523507198, 17592186044416) = 18446726481523507200
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(18446708889337462782, 35184372088832) = 18446708889337462784
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(18446673704965373950, 70368744177664) = 18446673704965373952
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(18446603336221196286, 140737488355328) = 18446603336221196288
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(18446462598732840958, 281474976710656) = 18446462598732840960
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(18446181123756130302, 562949953421312) = 18446181123756130304
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(18445618173802708990, 1125899906842624) = 18445618173802708992
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(18444492273895866366, 2251799813685248) = 18444492273895866368
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(18442240474082181118, 4503599627370496) = 18442240474082181120
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(18437736874454810622, 9007199254740992) = 18437736874454810624
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(18428729675200069630, 18014398509481984) = 18428729675200069632
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(18410715276690587646, 36028797018963968) = 18410715276690587648
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(18374686479671623678, 72057594037927936) = 18374686479671623680
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(18302628885633695742, 144115188075855872) = 18302628885633695744
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(18158513697557839870, 288230376151711744) = 18158513697557839872
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(17870283321406128126, 576460752303423488) = 17870283321406128128
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(17293822569102704638, 1152921504606846976) = 17293822569102704640
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(16140901064495857662, 2305843009213693952) = 16140901064495857664
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling2(13835058055282163710, 4611686018427387904) = 13835058055282163712
+ceiling2(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling2(9223372036854775810, 9223372036854775808) = 0, ceiling2(9223372036854775806, 9223372036854775808) = 9223372036854775808
 
 long long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(-2147483650, 2147483648) = -2147483648
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(-4294967298, 4294967296) = -4294967296
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(-8589934594, 8589934592) = -8589934592
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(-17179869186, 17179869184) = -17179869184
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(-34359738370, 34359738368) = -34359738368
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(-68719476738, 68719476736) = -68719476736
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(-137438953474, 137438953472) = -137438953472
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(-274877906946, 274877906944) = -274877906944
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(-549755813890, 549755813888) = -549755813888
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(-1099511627778, 1099511627776) = -1099511627776
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(-2199023255554, 2199023255552) = -2199023255552
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(-4398046511106, 4398046511104) = -4398046511104
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(-8796093022210, 8796093022208) = -8796093022208
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(-17592186044418, 17592186044416) = -17592186044416
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(-35184372088834, 35184372088832) = -35184372088832
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(-70368744177666, 70368744177664) = -70368744177664
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(-140737488355330, 140737488355328) = -140737488355328
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(-281474976710658, 281474976710656) = -281474976710656
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(-562949953421314, 562949953421312) = -562949953421312
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(-1125899906842626, 1125899906842624) = -1125899906842624
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(-2251799813685250, 2251799813685248) = -2251799813685248
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(-4503599627370498, 4503599627370496) = -4503599627370496
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(-9007199254740994, 9007199254740992) = -9007199254740992
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(-18014398509481986, 18014398509481984) = -18014398509481984
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(-36028797018963970, 36028797018963968) = -36028797018963968
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(-72057594037927938, 72057594037927936) = -72057594037927936
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(-144115188075855874, 144115188075855872) = -144115188075855872
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(-288230376151711746, 288230376151711744) = -288230376151711744
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(-576460752303423490, 576460752303423488) = -576460752303423488
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(-1152921504606846978, 1152921504606846976) = -1152921504606846976
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(-2305843009213693954, 2305843009213693952) = -2305843009213693952
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling(-4611686018427387906, 4611686018427387904) = -4611686018427387904
-ceiling(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling(-9223372036854775806, -9223372036854775808) = 0, ceiling(9223372036854775806, -9223372036854775808) = -9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(-2147483650, 2147483648) = -2147483648
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(-4294967298, 4294967296) = -4294967296
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(-8589934594, 8589934592) = -8589934592
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(-17179869186, 17179869184) = -17179869184
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(-34359738370, 34359738368) = -34359738368
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(-68719476738, 68719476736) = -68719476736
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(-137438953474, 137438953472) = -137438953472
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(-274877906946, 274877906944) = -274877906944
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(-549755813890, 549755813888) = -549755813888
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(-1099511627778, 1099511627776) = -1099511627776
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(-2199023255554, 2199023255552) = -2199023255552
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(-4398046511106, 4398046511104) = -4398046511104
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(-8796093022210, 8796093022208) = -8796093022208
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(-17592186044418, 17592186044416) = -17592186044416
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(-35184372088834, 35184372088832) = -35184372088832
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(-70368744177666, 70368744177664) = -70368744177664
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(-140737488355330, 140737488355328) = -140737488355328
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(-281474976710658, 281474976710656) = -281474976710656
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(-562949953421314, 562949953421312) = -562949953421312
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(-1125899906842626, 1125899906842624) = -1125899906842624
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(-2251799813685250, 2251799813685248) = -2251799813685248
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(-4503599627370498, 4503599627370496) = -4503599627370496
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(-9007199254740994, 9007199254740992) = -9007199254740992
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(-18014398509481986, 18014398509481984) = -18014398509481984
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(-36028797018963970, 36028797018963968) = -36028797018963968
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(-72057594037927938, 72057594037927936) = -72057594037927936
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(-144115188075855874, 144115188075855872) = -144115188075855872
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(-288230376151711746, 288230376151711744) = -288230376151711744
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(-576460752303423490, 576460752303423488) = -576460752303423488
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(-1152921504606846978, 1152921504606846976) = -1152921504606846976
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(-2305843009213693954, 2305843009213693952) = -2305843009213693952
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling2(-4611686018427387906, 4611686018427387904) = -4611686018427387904
+ceiling2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling2(-9223372036854775806, -9223372036854775808) = 0, ceiling2(9223372036854775806, -9223372036854775808) = -9223372036854775808
 
 unsigned long long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(18446744073709551614, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(18446744073709551613, 1) = 18446744073709551613
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(18446744073709551612, 2) = 18446744073709551612
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(18446744073709551610, 4) = 18446744073709551612
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(18446744073709551606, 8) = 18446744073709551608
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(18446744073709551598, 16) = 18446744073709551600
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(18446744073709551582, 32) = 18446744073709551584
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(18446744073709551550, 64) = 18446744073709551552
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(18446744073709551486, 128) = 18446744073709551488
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(18446744073709551358, 256) = 18446744073709551360
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(18446744073709551102, 512) = 18446744073709551104
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(18446744073709550590, 1024) = 18446744073709550592
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(18446744073709549566, 2048) = 18446744073709549568
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(18446744073709547518, 4096) = 18446744073709547520
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(18446744073709543422, 8192) = 18446744073709543424
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(18446744073709535230, 16384) = 18446744073709535232
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(18446744073709518846, 32768) = 18446744073709518848
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(18446744073709486078, 65536) = 18446744073709486080
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(18446744073709420542, 131072) = 18446744073709420544
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(18446744073709289470, 262144) = 18446744073709289472
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(18446744073709027326, 524288) = 18446744073709027328
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(18446744073708503038, 1048576) = 18446744073708503040
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(18446744073707454462, 2097152) = 18446744073707454464
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(18446744073705357310, 4194304) = 18446744073705357312
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(18446744073701163006, 8388608) = 18446744073701163008
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(18446744073692774398, 16777216) = 18446744073692774400
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(18446744073675997182, 33554432) = 18446744073675997184
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(18446744073642442750, 67108864) = 18446744073642442752
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(18446744073575333886, 134217728) = 18446744073575333888
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(18446744073441116158, 268435456) = 18446744073441116160
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(18446744073172680702, 536870912) = 18446744073172680704
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(18446744072635809790, 1073741824) = 18446744072635809792
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(18446744071562067966, 2147483648) = 18446744071562067968
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(18446744069414584318, 4294967296) = 18446744069414584320
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(18446744065119617022, 8589934592) = 18446744065119617024
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(18446744056529682430, 17179869184) = 18446744056529682432
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(18446744039349813246, 34359738368) = 18446744039349813248
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(18446744004990074878, 68719476736) = 18446744004990074880
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(18446743936270598142, 137438953472) = 18446743936270598144
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(18446743798831644670, 274877906944) = 18446743798831644672
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(18446743523953737726, 549755813888) = 18446743523953737728
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(18446742974197923838, 1099511627776) = 18446742974197923840
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(18446741874686296062, 2199023255552) = 18446741874686296064
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(18446739675663040510, 4398046511104) = 18446739675663040512
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(18446735277616529406, 8796093022208) = 18446735277616529408
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(18446726481523507198, 17592186044416) = 18446726481523507200
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(18446708889337462782, 35184372088832) = 18446708889337462784
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(18446673704965373950, 70368744177664) = 18446673704965373952
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(18446603336221196286, 140737488355328) = 18446603336221196288
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(18446462598732840958, 281474976710656) = 18446462598732840960
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(18446181123756130302, 562949953421312) = 18446181123756130304
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(18445618173802708990, 1125899906842624) = 18445618173802708992
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(18444492273895866366, 2251799813685248) = 18444492273895866368
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(18442240474082181118, 4503599627370496) = 18442240474082181120
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(18437736874454810622, 9007199254740992) = 18437736874454810624
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(18428729675200069630, 18014398509481984) = 18428729675200069632
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(18410715276690587646, 36028797018963968) = 18410715276690587648
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(18374686479671623678, 72057594037927936) = 18374686479671623680
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(18302628885633695742, 144115188075855872) = 18302628885633695744
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(18158513697557839870, 288230376151711744) = 18158513697557839872
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(17870283321406128126, 576460752303423488) = 17870283321406128128
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(17293822569102704638, 1152921504606846976) = 17293822569102704640
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(16140901064495857662, 2305843009213693952) = 16140901064495857664
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling(13835058055282163710, 4611686018427387904) = 13835058055282163712
-ceiling(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling(9223372036854775810, 9223372036854775808) = 0, ceiling(9223372036854775806, 9223372036854775808) = 9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(18446744073709551614, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(18446744073709551613, 1) = 18446744073709551613
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(18446744073709551612, 2) = 18446744073709551612
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(18446744073709551610, 4) = 18446744073709551612
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(18446744073709551606, 8) = 18446744073709551608
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(18446744073709551598, 16) = 18446744073709551600
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(18446744073709551582, 32) = 18446744073709551584
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(18446744073709551550, 64) = 18446744073709551552
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(18446744073709551486, 128) = 18446744073709551488
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(18446744073709551358, 256) = 18446744073709551360
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(18446744073709551102, 512) = 18446744073709551104
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(18446744073709550590, 1024) = 18446744073709550592
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(18446744073709549566, 2048) = 18446744073709549568
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(18446744073709547518, 4096) = 18446744073709547520
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(18446744073709543422, 8192) = 18446744073709543424
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(18446744073709535230, 16384) = 18446744073709535232
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(18446744073709518846, 32768) = 18446744073709518848
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(18446744073709486078, 65536) = 18446744073709486080
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(18446744073709420542, 131072) = 18446744073709420544
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(18446744073709289470, 262144) = 18446744073709289472
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(18446744073709027326, 524288) = 18446744073709027328
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(18446744073708503038, 1048576) = 18446744073708503040
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(18446744073707454462, 2097152) = 18446744073707454464
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(18446744073705357310, 4194304) = 18446744073705357312
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(18446744073701163006, 8388608) = 18446744073701163008
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(18446744073692774398, 16777216) = 18446744073692774400
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(18446744073675997182, 33554432) = 18446744073675997184
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(18446744073642442750, 67108864) = 18446744073642442752
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(18446744073575333886, 134217728) = 18446744073575333888
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(18446744073441116158, 268435456) = 18446744073441116160
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(18446744073172680702, 536870912) = 18446744073172680704
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(18446744072635809790, 1073741824) = 18446744072635809792
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(18446744071562067966, 2147483648) = 18446744071562067968
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(18446744069414584318, 4294967296) = 18446744069414584320
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(18446744065119617022, 8589934592) = 18446744065119617024
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(18446744056529682430, 17179869184) = 18446744056529682432
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(18446744039349813246, 34359738368) = 18446744039349813248
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(18446744004990074878, 68719476736) = 18446744004990074880
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(18446743936270598142, 137438953472) = 18446743936270598144
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(18446743798831644670, 274877906944) = 18446743798831644672
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(18446743523953737726, 549755813888) = 18446743523953737728
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(18446742974197923838, 1099511627776) = 18446742974197923840
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(18446741874686296062, 2199023255552) = 18446741874686296064
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(18446739675663040510, 4398046511104) = 18446739675663040512
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(18446735277616529406, 8796093022208) = 18446735277616529408
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(18446726481523507198, 17592186044416) = 18446726481523507200
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(18446708889337462782, 35184372088832) = 18446708889337462784
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(18446673704965373950, 70368744177664) = 18446673704965373952
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(18446603336221196286, 140737488355328) = 18446603336221196288
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(18446462598732840958, 281474976710656) = 18446462598732840960
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(18446181123756130302, 562949953421312) = 18446181123756130304
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(18445618173802708990, 1125899906842624) = 18445618173802708992
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(18444492273895866366, 2251799813685248) = 18444492273895866368
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(18442240474082181118, 4503599627370496) = 18442240474082181120
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(18437736874454810622, 9007199254740992) = 18437736874454810624
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(18428729675200069630, 18014398509481984) = 18428729675200069632
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(18410715276690587646, 36028797018963968) = 18410715276690587648
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(18374686479671623678, 72057594037927936) = 18374686479671623680
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(18302628885633695742, 144115188075855872) = 18302628885633695744
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(18158513697557839870, 288230376151711744) = 18158513697557839872
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(17870283321406128126, 576460752303423488) = 17870283321406128128
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(17293822569102704638, 1152921504606846976) = 17293822569102704640
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(16140901064495857662, 2305843009213693952) = 16140901064495857664
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling2(13835058055282163710, 4611686018427387904) = 13835058055282163712
+ceiling2(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling2(9223372036854775810, 9223372036854775808) = 0, ceiling2(9223372036854775806, 9223372036854775808) = 9223372036854775808
 
 
Index: tests/.expect/bitmanip3.x86.txt
===================================================================
--- tests/.expect/bitmanip3.x86.txt	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ tests/.expect/bitmanip3.x86.txt	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -340,336 +340,336 @@
 
 signed char
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(-128, -128) = -128, floor(-126, -128) = -128, floor(126, -128) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(-128, -128) = -128, floor2(-126, -128) = -128, floor2(126, -128) = 0
 
 unsigned char
-floor(0, 0) = 0, floor(2, 0) = 0, floor(254, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(253, 1) = 253
-floor(2, 2) = 2, floor(4, 2) = 4, floor(252, 2) = 252
-floor(4, 4) = 4, floor(6, 4) = 4, floor(250, 4) = 248
-floor(8, 8) = 8, floor(10, 8) = 8, floor(246, 8) = 240
-floor(16, 16) = 16, floor(18, 16) = 16, floor(238, 16) = 224
-floor(32, 32) = 32, floor(34, 32) = 32, floor(222, 32) = 192
-floor(64, 64) = 64, floor(66, 64) = 64, floor(190, 64) = 128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(126, 128) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(254, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(253, 1) = 253
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(252, 2) = 252
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(250, 4) = 248
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(246, 8) = 240
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(238, 16) = 224
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(222, 32) = 192
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(190, 64) = 128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(126, 128) = 0
 
 short int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(-32768, -32768) = -32768, floor(-32766, -32768) = -32768, floor(32766, -32768) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(-32768, -32768) = -32768, floor2(-32766, -32768) = -32768, floor2(32766, -32768) = 0
 
 unsigned short int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(65534, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(65533, 1) = 65533
-floor(2, 2) = 2, floor(4, 2) = 4, floor(65532, 2) = 65532
-floor(4, 4) = 4, floor(6, 4) = 4, floor(65530, 4) = 65528
-floor(8, 8) = 8, floor(10, 8) = 8, floor(65526, 8) = 65520
-floor(16, 16) = 16, floor(18, 16) = 16, floor(65518, 16) = 65504
-floor(32, 32) = 32, floor(34, 32) = 32, floor(65502, 32) = 65472
-floor(64, 64) = 64, floor(66, 64) = 64, floor(65470, 64) = 65408
-floor(128, 128) = 128, floor(130, 128) = 128, floor(65406, 128) = 65280
-floor(256, 256) = 256, floor(258, 256) = 256, floor(65278, 256) = 65024
-floor(512, 512) = 512, floor(514, 512) = 512, floor(65022, 512) = 64512
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(64510, 1024) = 63488
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(63486, 2048) = 61440
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(61438, 4096) = 57344
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(57342, 8192) = 49152
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(49150, 16384) = 32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(32766, 32768) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(65534, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(65533, 1) = 65533
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(65532, 2) = 65532
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(65530, 4) = 65528
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(65526, 8) = 65520
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(65518, 16) = 65504
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(65502, 32) = 65472
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(65470, 64) = 65408
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(65406, 128) = 65280
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(65278, 256) = 65024
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(65022, 512) = 64512
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(64510, 1024) = 63488
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(63486, 2048) = 61440
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(61438, 4096) = 57344
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(57342, 8192) = 49152
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(49150, 16384) = 32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(32766, 32768) = 0
 
 int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(-2147483648, -2147483648) = -2147483648, floor(-2147483646, -2147483648) = -2147483648, floor(2147483646, -2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(-2147483648, -2147483648) = -2147483648, floor2(-2147483646, -2147483648) = -2147483648, floor2(2147483646, -2147483648) = 0
 
 unsigned int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(4294967294, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(4294967293, 1) = 4294967293
-floor(2, 2) = 2, floor(4, 2) = 4, floor(4294967292, 2) = 4294967292
-floor(4, 4) = 4, floor(6, 4) = 4, floor(4294967290, 4) = 4294967288
-floor(8, 8) = 8, floor(10, 8) = 8, floor(4294967286, 8) = 4294967280
-floor(16, 16) = 16, floor(18, 16) = 16, floor(4294967278, 16) = 4294967264
-floor(32, 32) = 32, floor(34, 32) = 32, floor(4294967262, 32) = 4294967232
-floor(64, 64) = 64, floor(66, 64) = 64, floor(4294967230, 64) = 4294967168
-floor(128, 128) = 128, floor(130, 128) = 128, floor(4294967166, 128) = 4294967040
-floor(256, 256) = 256, floor(258, 256) = 256, floor(4294967038, 256) = 4294966784
-floor(512, 512) = 512, floor(514, 512) = 512, floor(4294966782, 512) = 4294966272
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(4294966270, 1024) = 4294965248
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(4294965246, 2048) = 4294963200
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(4294963198, 4096) = 4294959104
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(4294959102, 8192) = 4294950912
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(4294950910, 16384) = 4294934528
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(4294934526, 32768) = 4294901760
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(4294901758, 65536) = 4294836224
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(4294836222, 131072) = 4294705152
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(4294705150, 262144) = 4294443008
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(4294443006, 524288) = 4293918720
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(4293918718, 1048576) = 4292870144
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(4292870142, 2097152) = 4290772992
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(4290772990, 4194304) = 4286578688
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(4286578686, 8388608) = 4278190080
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(4278190078, 16777216) = 4261412864
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(4261412862, 33554432) = 4227858432
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(4227858430, 67108864) = 4160749568
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(4160749566, 134217728) = 4026531840
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(4026531838, 268435456) = 3758096384
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(3758096382, 536870912) = 3221225472
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(3221225470, 1073741824) = 2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(2147483646, 2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(4294967294, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(4294967293, 1) = 4294967293
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(4294967292, 2) = 4294967292
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(4294967290, 4) = 4294967288
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(4294967286, 8) = 4294967280
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(4294967278, 16) = 4294967264
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(4294967262, 32) = 4294967232
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(4294967230, 64) = 4294967168
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(4294967166, 128) = 4294967040
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(4294967038, 256) = 4294966784
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(4294966782, 512) = 4294966272
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(4294966270, 1024) = 4294965248
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(4294965246, 2048) = 4294963200
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(4294963198, 4096) = 4294959104
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(4294959102, 8192) = 4294950912
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(4294950910, 16384) = 4294934528
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(4294934526, 32768) = 4294901760
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(4294901758, 65536) = 4294836224
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(4294836222, 131072) = 4294705152
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(4294705150, 262144) = 4294443008
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(4294443006, 524288) = 4293918720
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(4293918718, 1048576) = 4292870144
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(4292870142, 2097152) = 4290772992
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(4290772990, 4194304) = 4286578688
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(4286578686, 8388608) = 4278190080
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(4278190078, 16777216) = 4261412864
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(4261412862, 33554432) = 4227858432
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(4227858430, 67108864) = 4160749568
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(4160749566, 134217728) = 4026531840
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(4026531838, 268435456) = 3758096384
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(3758096382, 536870912) = 3221225472
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(3221225470, 1073741824) = 2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(2147483646, 2147483648) = 0
 
 long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(-2147483648, -2147483648) = -2147483648, floor(-2147483646, -2147483648) = -2147483648, floor(2147483646, -2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(-2147483648, -2147483648) = -2147483648, floor2(-2147483646, -2147483648) = -2147483648, floor2(2147483646, -2147483648) = 0
 
 unsigned long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(4294967294, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(4294967293, 1) = 4294967293
-floor(2, 2) = 2, floor(4, 2) = 4, floor(4294967292, 2) = 4294967292
-floor(4, 4) = 4, floor(6, 4) = 4, floor(4294967290, 4) = 4294967288
-floor(8, 8) = 8, floor(10, 8) = 8, floor(4294967286, 8) = 4294967280
-floor(16, 16) = 16, floor(18, 16) = 16, floor(4294967278, 16) = 4294967264
-floor(32, 32) = 32, floor(34, 32) = 32, floor(4294967262, 32) = 4294967232
-floor(64, 64) = 64, floor(66, 64) = 64, floor(4294967230, 64) = 4294967168
-floor(128, 128) = 128, floor(130, 128) = 128, floor(4294967166, 128) = 4294967040
-floor(256, 256) = 256, floor(258, 256) = 256, floor(4294967038, 256) = 4294966784
-floor(512, 512) = 512, floor(514, 512) = 512, floor(4294966782, 512) = 4294966272
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(4294966270, 1024) = 4294965248
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(4294965246, 2048) = 4294963200
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(4294963198, 4096) = 4294959104
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(4294959102, 8192) = 4294950912
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(4294950910, 16384) = 4294934528
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(4294934526, 32768) = 4294901760
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(4294901758, 65536) = 4294836224
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(4294836222, 131072) = 4294705152
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(4294705150, 262144) = 4294443008
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(4294443006, 524288) = 4293918720
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(4293918718, 1048576) = 4292870144
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(4292870142, 2097152) = 4290772992
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(4290772990, 4194304) = 4286578688
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(4286578686, 8388608) = 4278190080
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(4278190078, 16777216) = 4261412864
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(4261412862, 33554432) = 4227858432
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(4227858430, 67108864) = 4160749568
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(4160749566, 134217728) = 4026531840
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(4026531838, 268435456) = 3758096384
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(3758096382, 536870912) = 3221225472
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(3221225470, 1073741824) = 2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(2147483646, 2147483648) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(4294967294, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(4294967293, 1) = 4294967293
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(4294967292, 2) = 4294967292
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(4294967290, 4) = 4294967288
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(4294967286, 8) = 4294967280
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(4294967278, 16) = 4294967264
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(4294967262, 32) = 4294967232
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(4294967230, 64) = 4294967168
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(4294967166, 128) = 4294967040
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(4294967038, 256) = 4294966784
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(4294966782, 512) = 4294966272
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(4294966270, 1024) = 4294965248
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(4294965246, 2048) = 4294963200
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(4294963198, 4096) = 4294959104
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(4294959102, 8192) = 4294950912
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(4294950910, 16384) = 4294934528
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(4294934526, 32768) = 4294901760
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(4294901758, 65536) = 4294836224
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(4294836222, 131072) = 4294705152
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(4294705150, 262144) = 4294443008
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(4294443006, 524288) = 4293918720
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(4293918718, 1048576) = 4292870144
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(4292870142, 2097152) = 4290772992
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(4290772990, 4194304) = 4286578688
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(4286578686, 8388608) = 4278190080
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(4278190078, 16777216) = 4261412864
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(4261412862, 33554432) = 4227858432
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(4227858430, 67108864) = 4160749568
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(4160749566, 134217728) = 4026531840
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(4026531838, 268435456) = 3758096384
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(3758096382, 536870912) = 3221225472
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(3221225470, 1073741824) = 2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(2147483646, 2147483648) = 0
 
 long long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(-2, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(-3, 1) = -3
-floor(2, 2) = 2, floor(4, 2) = 4, floor(-4, 2) = -4
-floor(4, 4) = 4, floor(6, 4) = 4, floor(-6, 4) = -8
-floor(8, 8) = 8, floor(10, 8) = 8, floor(-10, 8) = -16
-floor(16, 16) = 16, floor(18, 16) = 16, floor(-18, 16) = -32
-floor(32, 32) = 32, floor(34, 32) = 32, floor(-34, 32) = -64
-floor(64, 64) = 64, floor(66, 64) = 64, floor(-66, 64) = -128
-floor(128, 128) = 128, floor(130, 128) = 128, floor(-130, 128) = -256
-floor(256, 256) = 256, floor(258, 256) = 256, floor(-258, 256) = -512
-floor(512, 512) = 512, floor(514, 512) = 512, floor(-514, 512) = -1024
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(-1026, 1024) = -2048
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(-2050, 2048) = -4096
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(-4098, 4096) = -8192
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(-8194, 8192) = -16384
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(-16386, 16384) = -32768
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(-32770, 32768) = -65536
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(-65538, 65536) = -131072
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(-131074, 131072) = -262144
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(-262146, 262144) = -524288
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(-524290, 524288) = -1048576
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(-1048578, 1048576) = -2097152
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(-2097154, 2097152) = -4194304
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(-4194306, 4194304) = -8388608
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(-8388610, 8388608) = -16777216
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(-16777218, 16777216) = -33554432
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(-33554434, 33554432) = -67108864
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(-67108866, 67108864) = -134217728
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(-134217730, 134217728) = -268435456
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(-268435458, 268435456) = -536870912
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(-536870914, 536870912) = -1073741824
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(-1073741826, 1073741824) = -2147483648
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(-2147483650, 2147483648) = -4294967296
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(-4294967298, 4294967296) = -8589934592
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(-8589934594, 8589934592) = -17179869184
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(-17179869186, 17179869184) = -34359738368
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(-34359738370, 34359738368) = -68719476736
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(-68719476738, 68719476736) = -137438953472
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(-137438953474, 137438953472) = -274877906944
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(-274877906946, 274877906944) = -549755813888
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(-549755813890, 549755813888) = -1099511627776
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(-1099511627778, 1099511627776) = -2199023255552
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(-2199023255554, 2199023255552) = -4398046511104
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(-4398046511106, 4398046511104) = -8796093022208
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(-8796093022210, 8796093022208) = -17592186044416
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(-17592186044418, 17592186044416) = -35184372088832
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(-35184372088834, 35184372088832) = -70368744177664
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(-70368744177666, 70368744177664) = -140737488355328
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(-140737488355330, 140737488355328) = -281474976710656
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(-281474976710658, 281474976710656) = -562949953421312
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(-562949953421314, 562949953421312) = -1125899906842624
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(-1125899906842626, 1125899906842624) = -2251799813685248
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(-2251799813685250, 2251799813685248) = -4503599627370496
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(-4503599627370498, 4503599627370496) = -9007199254740992
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(-9007199254740994, 9007199254740992) = -18014398509481984
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(-18014398509481986, 18014398509481984) = -36028797018963968
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(-36028797018963970, 36028797018963968) = -72057594037927936
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(-72057594037927938, 72057594037927936) = -144115188075855872
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(-144115188075855874, 144115188075855872) = -288230376151711744
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(-288230376151711746, 288230376151711744) = -576460752303423488
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(-576460752303423490, 576460752303423488) = -1152921504606846976
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(-1152921504606846978, 1152921504606846976) = -2305843009213693952
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(-2305843009213693954, 2305843009213693952) = -4611686018427387904
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(-4611686018427387906, 4611686018427387904) = -9223372036854775808
-floor(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor(9223372036854775806, -9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(-2, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(-3, 1) = -3
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(-4, 2) = -4
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(-6, 4) = -8
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(-10, 8) = -16
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(-18, 16) = -32
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(-34, 32) = -64
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(-66, 64) = -128
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(-130, 128) = -256
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(-258, 256) = -512
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(-514, 512) = -1024
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(-1026, 1024) = -2048
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(-2050, 2048) = -4096
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(-4098, 4096) = -8192
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(-8194, 8192) = -16384
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(-16386, 16384) = -32768
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(-32770, 32768) = -65536
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(-65538, 65536) = -131072
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(-131074, 131072) = -262144
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(-262146, 262144) = -524288
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(-524290, 524288) = -1048576
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(-1048578, 1048576) = -2097152
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(-2097154, 2097152) = -4194304
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(-4194306, 4194304) = -8388608
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(-8388610, 8388608) = -16777216
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(-16777218, 16777216) = -33554432
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(-33554434, 33554432) = -67108864
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(-67108866, 67108864) = -134217728
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(-134217730, 134217728) = -268435456
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(-268435458, 268435456) = -536870912
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(-536870914, 536870912) = -1073741824
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(-1073741826, 1073741824) = -2147483648
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(-2147483650, 2147483648) = -4294967296
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(-4294967298, 4294967296) = -8589934592
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(-8589934594, 8589934592) = -17179869184
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(-17179869186, 17179869184) = -34359738368
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(-34359738370, 34359738368) = -68719476736
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(-68719476738, 68719476736) = -137438953472
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(-137438953474, 137438953472) = -274877906944
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(-274877906946, 274877906944) = -549755813888
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(-549755813890, 549755813888) = -1099511627776
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(-1099511627778, 1099511627776) = -2199023255552
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(-2199023255554, 2199023255552) = -4398046511104
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(-4398046511106, 4398046511104) = -8796093022208
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(-8796093022210, 8796093022208) = -17592186044416
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(-17592186044418, 17592186044416) = -35184372088832
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(-35184372088834, 35184372088832) = -70368744177664
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(-70368744177666, 70368744177664) = -140737488355328
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(-140737488355330, 140737488355328) = -281474976710656
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(-281474976710658, 281474976710656) = -562949953421312
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(-562949953421314, 562949953421312) = -1125899906842624
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(-1125899906842626, 1125899906842624) = -2251799813685248
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(-2251799813685250, 2251799813685248) = -4503599627370496
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(-4503599627370498, 4503599627370496) = -9007199254740992
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(-9007199254740994, 9007199254740992) = -18014398509481984
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(-18014398509481986, 18014398509481984) = -36028797018963968
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(-36028797018963970, 36028797018963968) = -72057594037927936
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(-72057594037927938, 72057594037927936) = -144115188075855872
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(-144115188075855874, 144115188075855872) = -288230376151711744
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(-288230376151711746, 288230376151711744) = -576460752303423488
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(-576460752303423490, 576460752303423488) = -1152921504606846976
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(-1152921504606846978, 1152921504606846976) = -2305843009213693952
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(-2305843009213693954, 2305843009213693952) = -4611686018427387904
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(-4611686018427387906, 4611686018427387904) = -9223372036854775808
+floor2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, floor2(-9223372036854775806, -9223372036854775808) = -9223372036854775808, floor2(9223372036854775806, -9223372036854775808) = 0
 
 unsigned long long int
-floor(0, 0) = 0, floor(2, 0) = 0, floor(18446744073709551614, 0) = 0
-floor(1, 1) = 1, floor(3, 1) = 3, floor(18446744073709551613, 1) = 18446744073709551613
-floor(2, 2) = 2, floor(4, 2) = 4, floor(18446744073709551612, 2) = 18446744073709551612
-floor(4, 4) = 4, floor(6, 4) = 4, floor(18446744073709551610, 4) = 18446744073709551608
-floor(8, 8) = 8, floor(10, 8) = 8, floor(18446744073709551606, 8) = 18446744073709551600
-floor(16, 16) = 16, floor(18, 16) = 16, floor(18446744073709551598, 16) = 18446744073709551584
-floor(32, 32) = 32, floor(34, 32) = 32, floor(18446744073709551582, 32) = 18446744073709551552
-floor(64, 64) = 64, floor(66, 64) = 64, floor(18446744073709551550, 64) = 18446744073709551488
-floor(128, 128) = 128, floor(130, 128) = 128, floor(18446744073709551486, 128) = 18446744073709551360
-floor(256, 256) = 256, floor(258, 256) = 256, floor(18446744073709551358, 256) = 18446744073709551104
-floor(512, 512) = 512, floor(514, 512) = 512, floor(18446744073709551102, 512) = 18446744073709550592
-floor(1024, 1024) = 1024, floor(1026, 1024) = 1024, floor(18446744073709550590, 1024) = 18446744073709549568
-floor(2048, 2048) = 2048, floor(2050, 2048) = 2048, floor(18446744073709549566, 2048) = 18446744073709547520
-floor(4096, 4096) = 4096, floor(4098, 4096) = 4096, floor(18446744073709547518, 4096) = 18446744073709543424
-floor(8192, 8192) = 8192, floor(8194, 8192) = 8192, floor(18446744073709543422, 8192) = 18446744073709535232
-floor(16384, 16384) = 16384, floor(16386, 16384) = 16384, floor(18446744073709535230, 16384) = 18446744073709518848
-floor(32768, 32768) = 32768, floor(32770, 32768) = 32768, floor(18446744073709518846, 32768) = 18446744073709486080
-floor(65536, 65536) = 65536, floor(65538, 65536) = 65536, floor(18446744073709486078, 65536) = 18446744073709420544
-floor(131072, 131072) = 131072, floor(131074, 131072) = 131072, floor(18446744073709420542, 131072) = 18446744073709289472
-floor(262144, 262144) = 262144, floor(262146, 262144) = 262144, floor(18446744073709289470, 262144) = 18446744073709027328
-floor(524288, 524288) = 524288, floor(524290, 524288) = 524288, floor(18446744073709027326, 524288) = 18446744073708503040
-floor(1048576, 1048576) = 1048576, floor(1048578, 1048576) = 1048576, floor(18446744073708503038, 1048576) = 18446744073707454464
-floor(2097152, 2097152) = 2097152, floor(2097154, 2097152) = 2097152, floor(18446744073707454462, 2097152) = 18446744073705357312
-floor(4194304, 4194304) = 4194304, floor(4194306, 4194304) = 4194304, floor(18446744073705357310, 4194304) = 18446744073701163008
-floor(8388608, 8388608) = 8388608, floor(8388610, 8388608) = 8388608, floor(18446744073701163006, 8388608) = 18446744073692774400
-floor(16777216, 16777216) = 16777216, floor(16777218, 16777216) = 16777216, floor(18446744073692774398, 16777216) = 18446744073675997184
-floor(33554432, 33554432) = 33554432, floor(33554434, 33554432) = 33554432, floor(18446744073675997182, 33554432) = 18446744073642442752
-floor(67108864, 67108864) = 67108864, floor(67108866, 67108864) = 67108864, floor(18446744073642442750, 67108864) = 18446744073575333888
-floor(134217728, 134217728) = 134217728, floor(134217730, 134217728) = 134217728, floor(18446744073575333886, 134217728) = 18446744073441116160
-floor(268435456, 268435456) = 268435456, floor(268435458, 268435456) = 268435456, floor(18446744073441116158, 268435456) = 18446744073172680704
-floor(536870912, 536870912) = 536870912, floor(536870914, 536870912) = 536870912, floor(18446744073172680702, 536870912) = 18446744072635809792
-floor(1073741824, 1073741824) = 1073741824, floor(1073741826, 1073741824) = 1073741824, floor(18446744072635809790, 1073741824) = 18446744071562067968
-floor(2147483648, 2147483648) = 2147483648, floor(2147483650, 2147483648) = 2147483648, floor(18446744071562067966, 2147483648) = 18446744069414584320
-floor(4294967296, 4294967296) = 4294967296, floor(4294967298, 4294967296) = 4294967296, floor(18446744069414584318, 4294967296) = 18446744065119617024
-floor(8589934592, 8589934592) = 8589934592, floor(8589934594, 8589934592) = 8589934592, floor(18446744065119617022, 8589934592) = 18446744056529682432
-floor(17179869184, 17179869184) = 17179869184, floor(17179869186, 17179869184) = 17179869184, floor(18446744056529682430, 17179869184) = 18446744039349813248
-floor(34359738368, 34359738368) = 34359738368, floor(34359738370, 34359738368) = 34359738368, floor(18446744039349813246, 34359738368) = 18446744004990074880
-floor(68719476736, 68719476736) = 68719476736, floor(68719476738, 68719476736) = 68719476736, floor(18446744004990074878, 68719476736) = 18446743936270598144
-floor(137438953472, 137438953472) = 137438953472, floor(137438953474, 137438953472) = 137438953472, floor(18446743936270598142, 137438953472) = 18446743798831644672
-floor(274877906944, 274877906944) = 274877906944, floor(274877906946, 274877906944) = 274877906944, floor(18446743798831644670, 274877906944) = 18446743523953737728
-floor(549755813888, 549755813888) = 549755813888, floor(549755813890, 549755813888) = 549755813888, floor(18446743523953737726, 549755813888) = 18446742974197923840
-floor(1099511627776, 1099511627776) = 1099511627776, floor(1099511627778, 1099511627776) = 1099511627776, floor(18446742974197923838, 1099511627776) = 18446741874686296064
-floor(2199023255552, 2199023255552) = 2199023255552, floor(2199023255554, 2199023255552) = 2199023255552, floor(18446741874686296062, 2199023255552) = 18446739675663040512
-floor(4398046511104, 4398046511104) = 4398046511104, floor(4398046511106, 4398046511104) = 4398046511104, floor(18446739675663040510, 4398046511104) = 18446735277616529408
-floor(8796093022208, 8796093022208) = 8796093022208, floor(8796093022210, 8796093022208) = 8796093022208, floor(18446735277616529406, 8796093022208) = 18446726481523507200
-floor(17592186044416, 17592186044416) = 17592186044416, floor(17592186044418, 17592186044416) = 17592186044416, floor(18446726481523507198, 17592186044416) = 18446708889337462784
-floor(35184372088832, 35184372088832) = 35184372088832, floor(35184372088834, 35184372088832) = 35184372088832, floor(18446708889337462782, 35184372088832) = 18446673704965373952
-floor(70368744177664, 70368744177664) = 70368744177664, floor(70368744177666, 70368744177664) = 70368744177664, floor(18446673704965373950, 70368744177664) = 18446603336221196288
-floor(140737488355328, 140737488355328) = 140737488355328, floor(140737488355330, 140737488355328) = 140737488355328, floor(18446603336221196286, 140737488355328) = 18446462598732840960
-floor(281474976710656, 281474976710656) = 281474976710656, floor(281474976710658, 281474976710656) = 281474976710656, floor(18446462598732840958, 281474976710656) = 18446181123756130304
-floor(562949953421312, 562949953421312) = 562949953421312, floor(562949953421314, 562949953421312) = 562949953421312, floor(18446181123756130302, 562949953421312) = 18445618173802708992
-floor(1125899906842624, 1125899906842624) = 1125899906842624, floor(1125899906842626, 1125899906842624) = 1125899906842624, floor(18445618173802708990, 1125899906842624) = 18444492273895866368
-floor(2251799813685248, 2251799813685248) = 2251799813685248, floor(2251799813685250, 2251799813685248) = 2251799813685248, floor(18444492273895866366, 2251799813685248) = 18442240474082181120
-floor(4503599627370496, 4503599627370496) = 4503599627370496, floor(4503599627370498, 4503599627370496) = 4503599627370496, floor(18442240474082181118, 4503599627370496) = 18437736874454810624
-floor(9007199254740992, 9007199254740992) = 9007199254740992, floor(9007199254740994, 9007199254740992) = 9007199254740992, floor(18437736874454810622, 9007199254740992) = 18428729675200069632
-floor(18014398509481984, 18014398509481984) = 18014398509481984, floor(18014398509481986, 18014398509481984) = 18014398509481984, floor(18428729675200069630, 18014398509481984) = 18410715276690587648
-floor(36028797018963968, 36028797018963968) = 36028797018963968, floor(36028797018963970, 36028797018963968) = 36028797018963968, floor(18410715276690587646, 36028797018963968) = 18374686479671623680
-floor(72057594037927936, 72057594037927936) = 72057594037927936, floor(72057594037927938, 72057594037927936) = 72057594037927936, floor(18374686479671623678, 72057594037927936) = 18302628885633695744
-floor(144115188075855872, 144115188075855872) = 144115188075855872, floor(144115188075855874, 144115188075855872) = 144115188075855872, floor(18302628885633695742, 144115188075855872) = 18158513697557839872
-floor(288230376151711744, 288230376151711744) = 288230376151711744, floor(288230376151711746, 288230376151711744) = 288230376151711744, floor(18158513697557839870, 288230376151711744) = 17870283321406128128
-floor(576460752303423488, 576460752303423488) = 576460752303423488, floor(576460752303423490, 576460752303423488) = 576460752303423488, floor(17870283321406128126, 576460752303423488) = 17293822569102704640
-floor(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor(17293822569102704638, 1152921504606846976) = 16140901064495857664
-floor(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor(16140901064495857662, 2305843009213693952) = 13835058055282163712
-floor(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor(13835058055282163710, 4611686018427387904) = 9223372036854775808
-floor(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor(9223372036854775806, 9223372036854775808) = 0
+floor2(0, 0) = 0, floor2(2, 0) = 0, floor2(18446744073709551614, 0) = 0
+floor2(1, 1) = 1, floor2(3, 1) = 3, floor2(18446744073709551613, 1) = 18446744073709551613
+floor2(2, 2) = 2, floor2(4, 2) = 4, floor2(18446744073709551612, 2) = 18446744073709551612
+floor2(4, 4) = 4, floor2(6, 4) = 4, floor2(18446744073709551610, 4) = 18446744073709551608
+floor2(8, 8) = 8, floor2(10, 8) = 8, floor2(18446744073709551606, 8) = 18446744073709551600
+floor2(16, 16) = 16, floor2(18, 16) = 16, floor2(18446744073709551598, 16) = 18446744073709551584
+floor2(32, 32) = 32, floor2(34, 32) = 32, floor2(18446744073709551582, 32) = 18446744073709551552
+floor2(64, 64) = 64, floor2(66, 64) = 64, floor2(18446744073709551550, 64) = 18446744073709551488
+floor2(128, 128) = 128, floor2(130, 128) = 128, floor2(18446744073709551486, 128) = 18446744073709551360
+floor2(256, 256) = 256, floor2(258, 256) = 256, floor2(18446744073709551358, 256) = 18446744073709551104
+floor2(512, 512) = 512, floor2(514, 512) = 512, floor2(18446744073709551102, 512) = 18446744073709550592
+floor2(1024, 1024) = 1024, floor2(1026, 1024) = 1024, floor2(18446744073709550590, 1024) = 18446744073709549568
+floor2(2048, 2048) = 2048, floor2(2050, 2048) = 2048, floor2(18446744073709549566, 2048) = 18446744073709547520
+floor2(4096, 4096) = 4096, floor2(4098, 4096) = 4096, floor2(18446744073709547518, 4096) = 18446744073709543424
+floor2(8192, 8192) = 8192, floor2(8194, 8192) = 8192, floor2(18446744073709543422, 8192) = 18446744073709535232
+floor2(16384, 16384) = 16384, floor2(16386, 16384) = 16384, floor2(18446744073709535230, 16384) = 18446744073709518848
+floor2(32768, 32768) = 32768, floor2(32770, 32768) = 32768, floor2(18446744073709518846, 32768) = 18446744073709486080
+floor2(65536, 65536) = 65536, floor2(65538, 65536) = 65536, floor2(18446744073709486078, 65536) = 18446744073709420544
+floor2(131072, 131072) = 131072, floor2(131074, 131072) = 131072, floor2(18446744073709420542, 131072) = 18446744073709289472
+floor2(262144, 262144) = 262144, floor2(262146, 262144) = 262144, floor2(18446744073709289470, 262144) = 18446744073709027328
+floor2(524288, 524288) = 524288, floor2(524290, 524288) = 524288, floor2(18446744073709027326, 524288) = 18446744073708503040
+floor2(1048576, 1048576) = 1048576, floor2(1048578, 1048576) = 1048576, floor2(18446744073708503038, 1048576) = 18446744073707454464
+floor2(2097152, 2097152) = 2097152, floor2(2097154, 2097152) = 2097152, floor2(18446744073707454462, 2097152) = 18446744073705357312
+floor2(4194304, 4194304) = 4194304, floor2(4194306, 4194304) = 4194304, floor2(18446744073705357310, 4194304) = 18446744073701163008
+floor2(8388608, 8388608) = 8388608, floor2(8388610, 8388608) = 8388608, floor2(18446744073701163006, 8388608) = 18446744073692774400
+floor2(16777216, 16777216) = 16777216, floor2(16777218, 16777216) = 16777216, floor2(18446744073692774398, 16777216) = 18446744073675997184
+floor2(33554432, 33554432) = 33554432, floor2(33554434, 33554432) = 33554432, floor2(18446744073675997182, 33554432) = 18446744073642442752
+floor2(67108864, 67108864) = 67108864, floor2(67108866, 67108864) = 67108864, floor2(18446744073642442750, 67108864) = 18446744073575333888
+floor2(134217728, 134217728) = 134217728, floor2(134217730, 134217728) = 134217728, floor2(18446744073575333886, 134217728) = 18446744073441116160
+floor2(268435456, 268435456) = 268435456, floor2(268435458, 268435456) = 268435456, floor2(18446744073441116158, 268435456) = 18446744073172680704
+floor2(536870912, 536870912) = 536870912, floor2(536870914, 536870912) = 536870912, floor2(18446744073172680702, 536870912) = 18446744072635809792
+floor2(1073741824, 1073741824) = 1073741824, floor2(1073741826, 1073741824) = 1073741824, floor2(18446744072635809790, 1073741824) = 18446744071562067968
+floor2(2147483648, 2147483648) = 2147483648, floor2(2147483650, 2147483648) = 2147483648, floor2(18446744071562067966, 2147483648) = 18446744069414584320
+floor2(4294967296, 4294967296) = 4294967296, floor2(4294967298, 4294967296) = 4294967296, floor2(18446744069414584318, 4294967296) = 18446744065119617024
+floor2(8589934592, 8589934592) = 8589934592, floor2(8589934594, 8589934592) = 8589934592, floor2(18446744065119617022, 8589934592) = 18446744056529682432
+floor2(17179869184, 17179869184) = 17179869184, floor2(17179869186, 17179869184) = 17179869184, floor2(18446744056529682430, 17179869184) = 18446744039349813248
+floor2(34359738368, 34359738368) = 34359738368, floor2(34359738370, 34359738368) = 34359738368, floor2(18446744039349813246, 34359738368) = 18446744004990074880
+floor2(68719476736, 68719476736) = 68719476736, floor2(68719476738, 68719476736) = 68719476736, floor2(18446744004990074878, 68719476736) = 18446743936270598144
+floor2(137438953472, 137438953472) = 137438953472, floor2(137438953474, 137438953472) = 137438953472, floor2(18446743936270598142, 137438953472) = 18446743798831644672
+floor2(274877906944, 274877906944) = 274877906944, floor2(274877906946, 274877906944) = 274877906944, floor2(18446743798831644670, 274877906944) = 18446743523953737728
+floor2(549755813888, 549755813888) = 549755813888, floor2(549755813890, 549755813888) = 549755813888, floor2(18446743523953737726, 549755813888) = 18446742974197923840
+floor2(1099511627776, 1099511627776) = 1099511627776, floor2(1099511627778, 1099511627776) = 1099511627776, floor2(18446742974197923838, 1099511627776) = 18446741874686296064
+floor2(2199023255552, 2199023255552) = 2199023255552, floor2(2199023255554, 2199023255552) = 2199023255552, floor2(18446741874686296062, 2199023255552) = 18446739675663040512
+floor2(4398046511104, 4398046511104) = 4398046511104, floor2(4398046511106, 4398046511104) = 4398046511104, floor2(18446739675663040510, 4398046511104) = 18446735277616529408
+floor2(8796093022208, 8796093022208) = 8796093022208, floor2(8796093022210, 8796093022208) = 8796093022208, floor2(18446735277616529406, 8796093022208) = 18446726481523507200
+floor2(17592186044416, 17592186044416) = 17592186044416, floor2(17592186044418, 17592186044416) = 17592186044416, floor2(18446726481523507198, 17592186044416) = 18446708889337462784
+floor2(35184372088832, 35184372088832) = 35184372088832, floor2(35184372088834, 35184372088832) = 35184372088832, floor2(18446708889337462782, 35184372088832) = 18446673704965373952
+floor2(70368744177664, 70368744177664) = 70368744177664, floor2(70368744177666, 70368744177664) = 70368744177664, floor2(18446673704965373950, 70368744177664) = 18446603336221196288
+floor2(140737488355328, 140737488355328) = 140737488355328, floor2(140737488355330, 140737488355328) = 140737488355328, floor2(18446603336221196286, 140737488355328) = 18446462598732840960
+floor2(281474976710656, 281474976710656) = 281474976710656, floor2(281474976710658, 281474976710656) = 281474976710656, floor2(18446462598732840958, 281474976710656) = 18446181123756130304
+floor2(562949953421312, 562949953421312) = 562949953421312, floor2(562949953421314, 562949953421312) = 562949953421312, floor2(18446181123756130302, 562949953421312) = 18445618173802708992
+floor2(1125899906842624, 1125899906842624) = 1125899906842624, floor2(1125899906842626, 1125899906842624) = 1125899906842624, floor2(18445618173802708990, 1125899906842624) = 18444492273895866368
+floor2(2251799813685248, 2251799813685248) = 2251799813685248, floor2(2251799813685250, 2251799813685248) = 2251799813685248, floor2(18444492273895866366, 2251799813685248) = 18442240474082181120
+floor2(4503599627370496, 4503599627370496) = 4503599627370496, floor2(4503599627370498, 4503599627370496) = 4503599627370496, floor2(18442240474082181118, 4503599627370496) = 18437736874454810624
+floor2(9007199254740992, 9007199254740992) = 9007199254740992, floor2(9007199254740994, 9007199254740992) = 9007199254740992, floor2(18437736874454810622, 9007199254740992) = 18428729675200069632
+floor2(18014398509481984, 18014398509481984) = 18014398509481984, floor2(18014398509481986, 18014398509481984) = 18014398509481984, floor2(18428729675200069630, 18014398509481984) = 18410715276690587648
+floor2(36028797018963968, 36028797018963968) = 36028797018963968, floor2(36028797018963970, 36028797018963968) = 36028797018963968, floor2(18410715276690587646, 36028797018963968) = 18374686479671623680
+floor2(72057594037927936, 72057594037927936) = 72057594037927936, floor2(72057594037927938, 72057594037927936) = 72057594037927936, floor2(18374686479671623678, 72057594037927936) = 18302628885633695744
+floor2(144115188075855872, 144115188075855872) = 144115188075855872, floor2(144115188075855874, 144115188075855872) = 144115188075855872, floor2(18302628885633695742, 144115188075855872) = 18158513697557839872
+floor2(288230376151711744, 288230376151711744) = 288230376151711744, floor2(288230376151711746, 288230376151711744) = 288230376151711744, floor2(18158513697557839870, 288230376151711744) = 17870283321406128128
+floor2(576460752303423488, 576460752303423488) = 576460752303423488, floor2(576460752303423490, 576460752303423488) = 576460752303423488, floor2(17870283321406128126, 576460752303423488) = 17293822569102704640
+floor2(1152921504606846976, 1152921504606846976) = 1152921504606846976, floor2(1152921504606846978, 1152921504606846976) = 1152921504606846976, floor2(17293822569102704638, 1152921504606846976) = 16140901064495857664
+floor2(2305843009213693952, 2305843009213693952) = 2305843009213693952, floor2(2305843009213693954, 2305843009213693952) = 2305843009213693952, floor2(16140901064495857662, 2305843009213693952) = 13835058055282163712
+floor2(4611686018427387904, 4611686018427387904) = 4611686018427387904, floor2(4611686018427387906, 4611686018427387904) = 4611686018427387904, floor2(13835058055282163710, 4611686018427387904) = 9223372036854775808
+floor2(9223372036854775808, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775810, 9223372036854775808) = 9223372036854775808, floor2(9223372036854775806, 9223372036854775808) = 0
 
 
@@ -1004,336 +1004,336 @@
 
 signed char
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = -128, ceiling(-66, 64) = -64
-ceiling(-128, -128) = -128, ceiling(-126, -128) = 0, ceiling(126, -128) = -128
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = -128, ceiling2(-66, 64) = -64
+ceiling2(-128, -128) = -128, ceiling2(-126, -128) = 0, ceiling2(126, -128) = -128
 
 unsigned char
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(254, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(253, 1) = 253
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(252, 2) = 252
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(250, 4) = 252
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(246, 8) = 248
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(238, 16) = 240
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(222, 32) = 224
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(190, 64) = 192
-ceiling(128, 128) = 128, ceiling(130, 128) = 0, ceiling(126, 128) = 128
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(254, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(253, 1) = 253
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(252, 2) = 252
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(250, 4) = 252
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(246, 8) = 248
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(238, 16) = 240
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(222, 32) = 224
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(190, 64) = 192
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 0, ceiling2(126, 128) = 128
 
 short int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = -32768, ceiling(-16386, 16384) = -16384
-ceiling(-32768, -32768) = -32768, ceiling(-32766, -32768) = 0, ceiling(32766, -32768) = -32768
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = -32768, ceiling2(-16386, 16384) = -16384
+ceiling2(-32768, -32768) = -32768, ceiling2(-32766, -32768) = 0, ceiling2(32766, -32768) = -32768
 
 unsigned short int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(65534, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(65533, 1) = 65533
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(65532, 2) = 65532
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(65530, 4) = 65532
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(65526, 8) = 65528
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(65518, 16) = 65520
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(65502, 32) = 65504
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(65470, 64) = 65472
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(65406, 128) = 65408
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(65278, 256) = 65280
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(65022, 512) = 65024
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(64510, 1024) = 64512
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(63486, 2048) = 63488
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(61438, 4096) = 61440
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(57342, 8192) = 57344
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(49150, 16384) = 49152
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 0, ceiling(32766, 32768) = 32768
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(65534, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(65533, 1) = 65533
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(65532, 2) = 65532
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(65530, 4) = 65532
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(65526, 8) = 65528
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(65518, 16) = 65520
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(65502, 32) = 65504
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(65470, 64) = 65472
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(65406, 128) = 65408
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(65278, 256) = 65280
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(65022, 512) = 65024
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(64510, 1024) = 64512
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(63486, 2048) = 63488
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(61438, 4096) = 61440
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(57342, 8192) = 57344
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(49150, 16384) = 49152
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 0, ceiling2(32766, 32768) = 32768
 
 int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = -2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(-2147483648, -2147483648) = -2147483648, ceiling(-2147483646, -2147483648) = 0, ceiling(2147483646, -2147483648) = -2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = -2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(-2147483648, -2147483648) = -2147483648, ceiling2(-2147483646, -2147483648) = 0, ceiling2(2147483646, -2147483648) = -2147483648
 
 unsigned int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(4294967294, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(4294967293, 1) = 4294967293
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(4294967292, 2) = 4294967292
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(4294967290, 4) = 4294967292
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(4294967286, 8) = 4294967288
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(4294967278, 16) = 4294967280
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(4294967262, 32) = 4294967264
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(4294967230, 64) = 4294967232
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(4294967166, 128) = 4294967168
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(4294967038, 256) = 4294967040
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(4294966782, 512) = 4294966784
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(4294966270, 1024) = 4294966272
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(4294965246, 2048) = 4294965248
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(4294963198, 4096) = 4294963200
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(4294959102, 8192) = 4294959104
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(4294950910, 16384) = 4294950912
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(4294934526, 32768) = 4294934528
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(4294901758, 65536) = 4294901760
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(4294836222, 131072) = 4294836224
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(4294705150, 262144) = 4294705152
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(4294443006, 524288) = 4294443008
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(4293918718, 1048576) = 4293918720
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(4292870142, 2097152) = 4292870144
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(4290772990, 4194304) = 4290772992
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(4286578686, 8388608) = 4286578688
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(4278190078, 16777216) = 4278190080
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(4261412862, 33554432) = 4261412864
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(4227858430, 67108864) = 4227858432
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(4160749566, 134217728) = 4160749568
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(4026531838, 268435456) = 4026531840
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(3758096382, 536870912) = 3758096384
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(3221225470, 1073741824) = 3221225472
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 0, ceiling(2147483646, 2147483648) = 2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(4294967294, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(4294967293, 1) = 4294967293
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(4294967292, 2) = 4294967292
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(4294967290, 4) = 4294967292
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(4294967286, 8) = 4294967288
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(4294967278, 16) = 4294967280
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(4294967262, 32) = 4294967264
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(4294967230, 64) = 4294967232
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(4294967166, 128) = 4294967168
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(4294967038, 256) = 4294967040
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(4294966782, 512) = 4294966784
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(4294966270, 1024) = 4294966272
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(4294965246, 2048) = 4294965248
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(4294963198, 4096) = 4294963200
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(4294959102, 8192) = 4294959104
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(4294950910, 16384) = 4294950912
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(4294934526, 32768) = 4294934528
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(4294901758, 65536) = 4294901760
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(4294836222, 131072) = 4294836224
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(4294705150, 262144) = 4294705152
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(4294443006, 524288) = 4294443008
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(4293918718, 1048576) = 4293918720
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(4292870142, 2097152) = 4292870144
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(4290772990, 4194304) = 4290772992
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(4286578686, 8388608) = 4286578688
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(4278190078, 16777216) = 4278190080
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(4261412862, 33554432) = 4261412864
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(4227858430, 67108864) = 4227858432
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(4160749566, 134217728) = 4160749568
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(4026531838, 268435456) = 4026531840
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(3758096382, 536870912) = 3758096384
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(3221225470, 1073741824) = 3221225472
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 0, ceiling2(2147483646, 2147483648) = 2147483648
 
 long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = -2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(-2147483648, -2147483648) = -2147483648, ceiling(-2147483646, -2147483648) = 0, ceiling(2147483646, -2147483648) = -2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = -2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(-2147483648, -2147483648) = -2147483648, ceiling2(-2147483646, -2147483648) = 0, ceiling2(2147483646, -2147483648) = -2147483648
 
 unsigned long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(4294967294, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(4294967293, 1) = 4294967293
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(4294967292, 2) = 4294967292
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(4294967290, 4) = 4294967292
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(4294967286, 8) = 4294967288
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(4294967278, 16) = 4294967280
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(4294967262, 32) = 4294967264
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(4294967230, 64) = 4294967232
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(4294967166, 128) = 4294967168
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(4294967038, 256) = 4294967040
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(4294966782, 512) = 4294966784
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(4294966270, 1024) = 4294966272
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(4294965246, 2048) = 4294965248
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(4294963198, 4096) = 4294963200
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(4294959102, 8192) = 4294959104
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(4294950910, 16384) = 4294950912
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(4294934526, 32768) = 4294934528
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(4294901758, 65536) = 4294901760
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(4294836222, 131072) = 4294836224
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(4294705150, 262144) = 4294705152
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(4294443006, 524288) = 4294443008
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(4293918718, 1048576) = 4293918720
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(4292870142, 2097152) = 4292870144
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(4290772990, 4194304) = 4290772992
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(4286578686, 8388608) = 4286578688
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(4278190078, 16777216) = 4278190080
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(4261412862, 33554432) = 4261412864
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(4227858430, 67108864) = 4227858432
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(4160749566, 134217728) = 4160749568
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(4026531838, 268435456) = 4026531840
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(3758096382, 536870912) = 3758096384
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(3221225470, 1073741824) = 3221225472
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 0, ceiling(2147483646, 2147483648) = 2147483648
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(4294967294, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(4294967293, 1) = 4294967293
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(4294967292, 2) = 4294967292
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(4294967290, 4) = 4294967292
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(4294967286, 8) = 4294967288
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(4294967278, 16) = 4294967280
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(4294967262, 32) = 4294967264
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(4294967230, 64) = 4294967232
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(4294967166, 128) = 4294967168
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(4294967038, 256) = 4294967040
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(4294966782, 512) = 4294966784
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(4294966270, 1024) = 4294966272
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(4294965246, 2048) = 4294965248
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(4294963198, 4096) = 4294963200
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(4294959102, 8192) = 4294959104
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(4294950910, 16384) = 4294950912
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(4294934526, 32768) = 4294934528
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(4294901758, 65536) = 4294901760
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(4294836222, 131072) = 4294836224
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(4294705150, 262144) = 4294705152
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(4294443006, 524288) = 4294443008
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(4293918718, 1048576) = 4293918720
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(4292870142, 2097152) = 4292870144
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(4290772990, 4194304) = 4290772992
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(4286578686, 8388608) = 4286578688
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(4278190078, 16777216) = 4278190080
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(4261412862, 33554432) = 4261412864
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(4227858430, 67108864) = 4227858432
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(4160749566, 134217728) = 4160749568
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(4026531838, 268435456) = 4026531840
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(3758096382, 536870912) = 3758096384
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(3221225470, 1073741824) = 3221225472
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 0, ceiling2(2147483646, 2147483648) = 2147483648
 
 long long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(-2, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(-3, 1) = -3
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(-4, 2) = -4
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(-6, 4) = -4
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(-10, 8) = -8
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(-18, 16) = -16
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(-34, 32) = -32
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(-66, 64) = -64
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(-130, 128) = -128
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(-258, 256) = -256
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(-514, 512) = -512
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(-1026, 1024) = -1024
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(-2050, 2048) = -2048
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(-4098, 4096) = -4096
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(-8194, 8192) = -8192
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(-16386, 16384) = -16384
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(-32770, 32768) = -32768
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(-65538, 65536) = -65536
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(-131074, 131072) = -131072
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(-262146, 262144) = -262144
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(-524290, 524288) = -524288
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(-1048578, 1048576) = -1048576
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(-2097154, 2097152) = -2097152
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(-4194306, 4194304) = -4194304
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(-8388610, 8388608) = -8388608
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(-16777218, 16777216) = -16777216
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(-33554434, 33554432) = -33554432
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(-67108866, 67108864) = -67108864
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(-134217730, 134217728) = -134217728
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(-268435458, 268435456) = -268435456
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(-536870914, 536870912) = -536870912
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(-1073741826, 1073741824) = -1073741824
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(-2147483650, 2147483648) = -2147483648
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(-4294967298, 4294967296) = -4294967296
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(-8589934594, 8589934592) = -8589934592
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(-17179869186, 17179869184) = -17179869184
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(-34359738370, 34359738368) = -34359738368
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(-68719476738, 68719476736) = -68719476736
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(-137438953474, 137438953472) = -137438953472
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(-274877906946, 274877906944) = -274877906944
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(-549755813890, 549755813888) = -549755813888
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(-1099511627778, 1099511627776) = -1099511627776
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(-2199023255554, 2199023255552) = -2199023255552
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(-4398046511106, 4398046511104) = -4398046511104
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(-8796093022210, 8796093022208) = -8796093022208
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(-17592186044418, 17592186044416) = -17592186044416
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(-35184372088834, 35184372088832) = -35184372088832
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(-70368744177666, 70368744177664) = -70368744177664
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(-140737488355330, 140737488355328) = -140737488355328
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(-281474976710658, 281474976710656) = -281474976710656
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(-562949953421314, 562949953421312) = -562949953421312
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(-1125899906842626, 1125899906842624) = -1125899906842624
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(-2251799813685250, 2251799813685248) = -2251799813685248
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(-4503599627370498, 4503599627370496) = -4503599627370496
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(-9007199254740994, 9007199254740992) = -9007199254740992
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(-18014398509481986, 18014398509481984) = -18014398509481984
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(-36028797018963970, 36028797018963968) = -36028797018963968
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(-72057594037927938, 72057594037927936) = -72057594037927936
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(-144115188075855874, 144115188075855872) = -144115188075855872
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(-288230376151711746, 288230376151711744) = -288230376151711744
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(-576460752303423490, 576460752303423488) = -576460752303423488
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(-1152921504606846978, 1152921504606846976) = -1152921504606846976
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(-2305843009213693954, 2305843009213693952) = -2305843009213693952
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling(-4611686018427387906, 4611686018427387904) = -4611686018427387904
-ceiling(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling(-9223372036854775806, -9223372036854775808) = 0, ceiling(9223372036854775806, -9223372036854775808) = -9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(-2, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(-3, 1) = -3
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(-4, 2) = -4
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(-6, 4) = -4
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(-10, 8) = -8
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(-18, 16) = -16
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(-34, 32) = -32
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(-66, 64) = -64
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(-130, 128) = -128
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(-258, 256) = -256
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(-514, 512) = -512
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(-1026, 1024) = -1024
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(-2050, 2048) = -2048
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(-4098, 4096) = -4096
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(-8194, 8192) = -8192
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(-16386, 16384) = -16384
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(-32770, 32768) = -32768
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(-65538, 65536) = -65536
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(-131074, 131072) = -131072
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(-262146, 262144) = -262144
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(-524290, 524288) = -524288
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(-1048578, 1048576) = -1048576
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(-2097154, 2097152) = -2097152
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(-4194306, 4194304) = -4194304
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(-8388610, 8388608) = -8388608
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(-16777218, 16777216) = -16777216
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(-33554434, 33554432) = -33554432
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(-67108866, 67108864) = -67108864
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(-134217730, 134217728) = -134217728
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(-268435458, 268435456) = -268435456
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(-536870914, 536870912) = -536870912
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(-1073741826, 1073741824) = -1073741824
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(-2147483650, 2147483648) = -2147483648
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(-4294967298, 4294967296) = -4294967296
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(-8589934594, 8589934592) = -8589934592
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(-17179869186, 17179869184) = -17179869184
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(-34359738370, 34359738368) = -34359738368
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(-68719476738, 68719476736) = -68719476736
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(-137438953474, 137438953472) = -137438953472
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(-274877906946, 274877906944) = -274877906944
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(-549755813890, 549755813888) = -549755813888
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(-1099511627778, 1099511627776) = -1099511627776
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(-2199023255554, 2199023255552) = -2199023255552
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(-4398046511106, 4398046511104) = -4398046511104
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(-8796093022210, 8796093022208) = -8796093022208
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(-17592186044418, 17592186044416) = -17592186044416
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(-35184372088834, 35184372088832) = -35184372088832
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(-70368744177666, 70368744177664) = -70368744177664
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(-140737488355330, 140737488355328) = -140737488355328
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(-281474976710658, 281474976710656) = -281474976710656
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(-562949953421314, 562949953421312) = -562949953421312
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(-1125899906842626, 1125899906842624) = -1125899906842624
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(-2251799813685250, 2251799813685248) = -2251799813685248
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(-4503599627370498, 4503599627370496) = -4503599627370496
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(-9007199254740994, 9007199254740992) = -9007199254740992
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(-18014398509481986, 18014398509481984) = -18014398509481984
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(-36028797018963970, 36028797018963968) = -36028797018963968
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(-72057594037927938, 72057594037927936) = -72057594037927936
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(-144115188075855874, 144115188075855872) = -144115188075855872
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(-288230376151711746, 288230376151711744) = -288230376151711744
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(-576460752303423490, 576460752303423488) = -576460752303423488
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(-1152921504606846978, 1152921504606846976) = -1152921504606846976
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(-2305843009213693954, 2305843009213693952) = -2305843009213693952
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = -9223372036854775808, ceiling2(-4611686018427387906, 4611686018427387904) = -4611686018427387904
+ceiling2(-9223372036854775808, -9223372036854775808) = -9223372036854775808, ceiling2(-9223372036854775806, -9223372036854775808) = 0, ceiling2(9223372036854775806, -9223372036854775808) = -9223372036854775808
 
 unsigned long long int
-ceiling(0, 0) = 0, ceiling(2, 0) = 0, ceiling(18446744073709551614, 0) = 0
-ceiling(1, 1) = 1, ceiling(3, 1) = 3, ceiling(18446744073709551613, 1) = 18446744073709551613
-ceiling(2, 2) = 2, ceiling(4, 2) = 4, ceiling(18446744073709551612, 2) = 18446744073709551612
-ceiling(4, 4) = 4, ceiling(6, 4) = 8, ceiling(18446744073709551610, 4) = 18446744073709551612
-ceiling(8, 8) = 8, ceiling(10, 8) = 16, ceiling(18446744073709551606, 8) = 18446744073709551608
-ceiling(16, 16) = 16, ceiling(18, 16) = 32, ceiling(18446744073709551598, 16) = 18446744073709551600
-ceiling(32, 32) = 32, ceiling(34, 32) = 64, ceiling(18446744073709551582, 32) = 18446744073709551584
-ceiling(64, 64) = 64, ceiling(66, 64) = 128, ceiling(18446744073709551550, 64) = 18446744073709551552
-ceiling(128, 128) = 128, ceiling(130, 128) = 256, ceiling(18446744073709551486, 128) = 18446744073709551488
-ceiling(256, 256) = 256, ceiling(258, 256) = 512, ceiling(18446744073709551358, 256) = 18446744073709551360
-ceiling(512, 512) = 512, ceiling(514, 512) = 1024, ceiling(18446744073709551102, 512) = 18446744073709551104
-ceiling(1024, 1024) = 1024, ceiling(1026, 1024) = 2048, ceiling(18446744073709550590, 1024) = 18446744073709550592
-ceiling(2048, 2048) = 2048, ceiling(2050, 2048) = 4096, ceiling(18446744073709549566, 2048) = 18446744073709549568
-ceiling(4096, 4096) = 4096, ceiling(4098, 4096) = 8192, ceiling(18446744073709547518, 4096) = 18446744073709547520
-ceiling(8192, 8192) = 8192, ceiling(8194, 8192) = 16384, ceiling(18446744073709543422, 8192) = 18446744073709543424
-ceiling(16384, 16384) = 16384, ceiling(16386, 16384) = 32768, ceiling(18446744073709535230, 16384) = 18446744073709535232
-ceiling(32768, 32768) = 32768, ceiling(32770, 32768) = 65536, ceiling(18446744073709518846, 32768) = 18446744073709518848
-ceiling(65536, 65536) = 65536, ceiling(65538, 65536) = 131072, ceiling(18446744073709486078, 65536) = 18446744073709486080
-ceiling(131072, 131072) = 131072, ceiling(131074, 131072) = 262144, ceiling(18446744073709420542, 131072) = 18446744073709420544
-ceiling(262144, 262144) = 262144, ceiling(262146, 262144) = 524288, ceiling(18446744073709289470, 262144) = 18446744073709289472
-ceiling(524288, 524288) = 524288, ceiling(524290, 524288) = 1048576, ceiling(18446744073709027326, 524288) = 18446744073709027328
-ceiling(1048576, 1048576) = 1048576, ceiling(1048578, 1048576) = 2097152, ceiling(18446744073708503038, 1048576) = 18446744073708503040
-ceiling(2097152, 2097152) = 2097152, ceiling(2097154, 2097152) = 4194304, ceiling(18446744073707454462, 2097152) = 18446744073707454464
-ceiling(4194304, 4194304) = 4194304, ceiling(4194306, 4194304) = 8388608, ceiling(18446744073705357310, 4194304) = 18446744073705357312
-ceiling(8388608, 8388608) = 8388608, ceiling(8388610, 8388608) = 16777216, ceiling(18446744073701163006, 8388608) = 18446744073701163008
-ceiling(16777216, 16777216) = 16777216, ceiling(16777218, 16777216) = 33554432, ceiling(18446744073692774398, 16777216) = 18446744073692774400
-ceiling(33554432, 33554432) = 33554432, ceiling(33554434, 33554432) = 67108864, ceiling(18446744073675997182, 33554432) = 18446744073675997184
-ceiling(67108864, 67108864) = 67108864, ceiling(67108866, 67108864) = 134217728, ceiling(18446744073642442750, 67108864) = 18446744073642442752
-ceiling(134217728, 134217728) = 134217728, ceiling(134217730, 134217728) = 268435456, ceiling(18446744073575333886, 134217728) = 18446744073575333888
-ceiling(268435456, 268435456) = 268435456, ceiling(268435458, 268435456) = 536870912, ceiling(18446744073441116158, 268435456) = 18446744073441116160
-ceiling(536870912, 536870912) = 536870912, ceiling(536870914, 536870912) = 1073741824, ceiling(18446744073172680702, 536870912) = 18446744073172680704
-ceiling(1073741824, 1073741824) = 1073741824, ceiling(1073741826, 1073741824) = 2147483648, ceiling(18446744072635809790, 1073741824) = 18446744072635809792
-ceiling(2147483648, 2147483648) = 2147483648, ceiling(2147483650, 2147483648) = 4294967296, ceiling(18446744071562067966, 2147483648) = 18446744071562067968
-ceiling(4294967296, 4294967296) = 4294967296, ceiling(4294967298, 4294967296) = 8589934592, ceiling(18446744069414584318, 4294967296) = 18446744069414584320
-ceiling(8589934592, 8589934592) = 8589934592, ceiling(8589934594, 8589934592) = 17179869184, ceiling(18446744065119617022, 8589934592) = 18446744065119617024
-ceiling(17179869184, 17179869184) = 17179869184, ceiling(17179869186, 17179869184) = 34359738368, ceiling(18446744056529682430, 17179869184) = 18446744056529682432
-ceiling(34359738368, 34359738368) = 34359738368, ceiling(34359738370, 34359738368) = 68719476736, ceiling(18446744039349813246, 34359738368) = 18446744039349813248
-ceiling(68719476736, 68719476736) = 68719476736, ceiling(68719476738, 68719476736) = 137438953472, ceiling(18446744004990074878, 68719476736) = 18446744004990074880
-ceiling(137438953472, 137438953472) = 137438953472, ceiling(137438953474, 137438953472) = 274877906944, ceiling(18446743936270598142, 137438953472) = 18446743936270598144
-ceiling(274877906944, 274877906944) = 274877906944, ceiling(274877906946, 274877906944) = 549755813888, ceiling(18446743798831644670, 274877906944) = 18446743798831644672
-ceiling(549755813888, 549755813888) = 549755813888, ceiling(549755813890, 549755813888) = 1099511627776, ceiling(18446743523953737726, 549755813888) = 18446743523953737728
-ceiling(1099511627776, 1099511627776) = 1099511627776, ceiling(1099511627778, 1099511627776) = 2199023255552, ceiling(18446742974197923838, 1099511627776) = 18446742974197923840
-ceiling(2199023255552, 2199023255552) = 2199023255552, ceiling(2199023255554, 2199023255552) = 4398046511104, ceiling(18446741874686296062, 2199023255552) = 18446741874686296064
-ceiling(4398046511104, 4398046511104) = 4398046511104, ceiling(4398046511106, 4398046511104) = 8796093022208, ceiling(18446739675663040510, 4398046511104) = 18446739675663040512
-ceiling(8796093022208, 8796093022208) = 8796093022208, ceiling(8796093022210, 8796093022208) = 17592186044416, ceiling(18446735277616529406, 8796093022208) = 18446735277616529408
-ceiling(17592186044416, 17592186044416) = 17592186044416, ceiling(17592186044418, 17592186044416) = 35184372088832, ceiling(18446726481523507198, 17592186044416) = 18446726481523507200
-ceiling(35184372088832, 35184372088832) = 35184372088832, ceiling(35184372088834, 35184372088832) = 70368744177664, ceiling(18446708889337462782, 35184372088832) = 18446708889337462784
-ceiling(70368744177664, 70368744177664) = 70368744177664, ceiling(70368744177666, 70368744177664) = 140737488355328, ceiling(18446673704965373950, 70368744177664) = 18446673704965373952
-ceiling(140737488355328, 140737488355328) = 140737488355328, ceiling(140737488355330, 140737488355328) = 281474976710656, ceiling(18446603336221196286, 140737488355328) = 18446603336221196288
-ceiling(281474976710656, 281474976710656) = 281474976710656, ceiling(281474976710658, 281474976710656) = 562949953421312, ceiling(18446462598732840958, 281474976710656) = 18446462598732840960
-ceiling(562949953421312, 562949953421312) = 562949953421312, ceiling(562949953421314, 562949953421312) = 1125899906842624, ceiling(18446181123756130302, 562949953421312) = 18446181123756130304
-ceiling(1125899906842624, 1125899906842624) = 1125899906842624, ceiling(1125899906842626, 1125899906842624) = 2251799813685248, ceiling(18445618173802708990, 1125899906842624) = 18445618173802708992
-ceiling(2251799813685248, 2251799813685248) = 2251799813685248, ceiling(2251799813685250, 2251799813685248) = 4503599627370496, ceiling(18444492273895866366, 2251799813685248) = 18444492273895866368
-ceiling(4503599627370496, 4503599627370496) = 4503599627370496, ceiling(4503599627370498, 4503599627370496) = 9007199254740992, ceiling(18442240474082181118, 4503599627370496) = 18442240474082181120
-ceiling(9007199254740992, 9007199254740992) = 9007199254740992, ceiling(9007199254740994, 9007199254740992) = 18014398509481984, ceiling(18437736874454810622, 9007199254740992) = 18437736874454810624
-ceiling(18014398509481984, 18014398509481984) = 18014398509481984, ceiling(18014398509481986, 18014398509481984) = 36028797018963968, ceiling(18428729675200069630, 18014398509481984) = 18428729675200069632
-ceiling(36028797018963968, 36028797018963968) = 36028797018963968, ceiling(36028797018963970, 36028797018963968) = 72057594037927936, ceiling(18410715276690587646, 36028797018963968) = 18410715276690587648
-ceiling(72057594037927936, 72057594037927936) = 72057594037927936, ceiling(72057594037927938, 72057594037927936) = 144115188075855872, ceiling(18374686479671623678, 72057594037927936) = 18374686479671623680
-ceiling(144115188075855872, 144115188075855872) = 144115188075855872, ceiling(144115188075855874, 144115188075855872) = 288230376151711744, ceiling(18302628885633695742, 144115188075855872) = 18302628885633695744
-ceiling(288230376151711744, 288230376151711744) = 288230376151711744, ceiling(288230376151711746, 288230376151711744) = 576460752303423488, ceiling(18158513697557839870, 288230376151711744) = 18158513697557839872
-ceiling(576460752303423488, 576460752303423488) = 576460752303423488, ceiling(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling(17870283321406128126, 576460752303423488) = 17870283321406128128
-ceiling(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling(17293822569102704638, 1152921504606846976) = 17293822569102704640
-ceiling(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling(16140901064495857662, 2305843009213693952) = 16140901064495857664
-ceiling(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling(13835058055282163710, 4611686018427387904) = 13835058055282163712
-ceiling(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling(9223372036854775810, 9223372036854775808) = 0, ceiling(9223372036854775806, 9223372036854775808) = 9223372036854775808
+ceiling2(0, 0) = 0, ceiling2(2, 0) = 0, ceiling2(18446744073709551614, 0) = 0
+ceiling2(1, 1) = 1, ceiling2(3, 1) = 3, ceiling2(18446744073709551613, 1) = 18446744073709551613
+ceiling2(2, 2) = 2, ceiling2(4, 2) = 4, ceiling2(18446744073709551612, 2) = 18446744073709551612
+ceiling2(4, 4) = 4, ceiling2(6, 4) = 8, ceiling2(18446744073709551610, 4) = 18446744073709551612
+ceiling2(8, 8) = 8, ceiling2(10, 8) = 16, ceiling2(18446744073709551606, 8) = 18446744073709551608
+ceiling2(16, 16) = 16, ceiling2(18, 16) = 32, ceiling2(18446744073709551598, 16) = 18446744073709551600
+ceiling2(32, 32) = 32, ceiling2(34, 32) = 64, ceiling2(18446744073709551582, 32) = 18446744073709551584
+ceiling2(64, 64) = 64, ceiling2(66, 64) = 128, ceiling2(18446744073709551550, 64) = 18446744073709551552
+ceiling2(128, 128) = 128, ceiling2(130, 128) = 256, ceiling2(18446744073709551486, 128) = 18446744073709551488
+ceiling2(256, 256) = 256, ceiling2(258, 256) = 512, ceiling2(18446744073709551358, 256) = 18446744073709551360
+ceiling2(512, 512) = 512, ceiling2(514, 512) = 1024, ceiling2(18446744073709551102, 512) = 18446744073709551104
+ceiling2(1024, 1024) = 1024, ceiling2(1026, 1024) = 2048, ceiling2(18446744073709550590, 1024) = 18446744073709550592
+ceiling2(2048, 2048) = 2048, ceiling2(2050, 2048) = 4096, ceiling2(18446744073709549566, 2048) = 18446744073709549568
+ceiling2(4096, 4096) = 4096, ceiling2(4098, 4096) = 8192, ceiling2(18446744073709547518, 4096) = 18446744073709547520
+ceiling2(8192, 8192) = 8192, ceiling2(8194, 8192) = 16384, ceiling2(18446744073709543422, 8192) = 18446744073709543424
+ceiling2(16384, 16384) = 16384, ceiling2(16386, 16384) = 32768, ceiling2(18446744073709535230, 16384) = 18446744073709535232
+ceiling2(32768, 32768) = 32768, ceiling2(32770, 32768) = 65536, ceiling2(18446744073709518846, 32768) = 18446744073709518848
+ceiling2(65536, 65536) = 65536, ceiling2(65538, 65536) = 131072, ceiling2(18446744073709486078, 65536) = 18446744073709486080
+ceiling2(131072, 131072) = 131072, ceiling2(131074, 131072) = 262144, ceiling2(18446744073709420542, 131072) = 18446744073709420544
+ceiling2(262144, 262144) = 262144, ceiling2(262146, 262144) = 524288, ceiling2(18446744073709289470, 262144) = 18446744073709289472
+ceiling2(524288, 524288) = 524288, ceiling2(524290, 524288) = 1048576, ceiling2(18446744073709027326, 524288) = 18446744073709027328
+ceiling2(1048576, 1048576) = 1048576, ceiling2(1048578, 1048576) = 2097152, ceiling2(18446744073708503038, 1048576) = 18446744073708503040
+ceiling2(2097152, 2097152) = 2097152, ceiling2(2097154, 2097152) = 4194304, ceiling2(18446744073707454462, 2097152) = 18446744073707454464
+ceiling2(4194304, 4194304) = 4194304, ceiling2(4194306, 4194304) = 8388608, ceiling2(18446744073705357310, 4194304) = 18446744073705357312
+ceiling2(8388608, 8388608) = 8388608, ceiling2(8388610, 8388608) = 16777216, ceiling2(18446744073701163006, 8388608) = 18446744073701163008
+ceiling2(16777216, 16777216) = 16777216, ceiling2(16777218, 16777216) = 33554432, ceiling2(18446744073692774398, 16777216) = 18446744073692774400
+ceiling2(33554432, 33554432) = 33554432, ceiling2(33554434, 33554432) = 67108864, ceiling2(18446744073675997182, 33554432) = 18446744073675997184
+ceiling2(67108864, 67108864) = 67108864, ceiling2(67108866, 67108864) = 134217728, ceiling2(18446744073642442750, 67108864) = 18446744073642442752
+ceiling2(134217728, 134217728) = 134217728, ceiling2(134217730, 134217728) = 268435456, ceiling2(18446744073575333886, 134217728) = 18446744073575333888
+ceiling2(268435456, 268435456) = 268435456, ceiling2(268435458, 268435456) = 536870912, ceiling2(18446744073441116158, 268435456) = 18446744073441116160
+ceiling2(536870912, 536870912) = 536870912, ceiling2(536870914, 536870912) = 1073741824, ceiling2(18446744073172680702, 536870912) = 18446744073172680704
+ceiling2(1073741824, 1073741824) = 1073741824, ceiling2(1073741826, 1073741824) = 2147483648, ceiling2(18446744072635809790, 1073741824) = 18446744072635809792
+ceiling2(2147483648, 2147483648) = 2147483648, ceiling2(2147483650, 2147483648) = 4294967296, ceiling2(18446744071562067966, 2147483648) = 18446744071562067968
+ceiling2(4294967296, 4294967296) = 4294967296, ceiling2(4294967298, 4294967296) = 8589934592, ceiling2(18446744069414584318, 4294967296) = 18446744069414584320
+ceiling2(8589934592, 8589934592) = 8589934592, ceiling2(8589934594, 8589934592) = 17179869184, ceiling2(18446744065119617022, 8589934592) = 18446744065119617024
+ceiling2(17179869184, 17179869184) = 17179869184, ceiling2(17179869186, 17179869184) = 34359738368, ceiling2(18446744056529682430, 17179869184) = 18446744056529682432
+ceiling2(34359738368, 34359738368) = 34359738368, ceiling2(34359738370, 34359738368) = 68719476736, ceiling2(18446744039349813246, 34359738368) = 18446744039349813248
+ceiling2(68719476736, 68719476736) = 68719476736, ceiling2(68719476738, 68719476736) = 137438953472, ceiling2(18446744004990074878, 68719476736) = 18446744004990074880
+ceiling2(137438953472, 137438953472) = 137438953472, ceiling2(137438953474, 137438953472) = 274877906944, ceiling2(18446743936270598142, 137438953472) = 18446743936270598144
+ceiling2(274877906944, 274877906944) = 274877906944, ceiling2(274877906946, 274877906944) = 549755813888, ceiling2(18446743798831644670, 274877906944) = 18446743798831644672
+ceiling2(549755813888, 549755813888) = 549755813888, ceiling2(549755813890, 549755813888) = 1099511627776, ceiling2(18446743523953737726, 549755813888) = 18446743523953737728
+ceiling2(1099511627776, 1099511627776) = 1099511627776, ceiling2(1099511627778, 1099511627776) = 2199023255552, ceiling2(18446742974197923838, 1099511627776) = 18446742974197923840
+ceiling2(2199023255552, 2199023255552) = 2199023255552, ceiling2(2199023255554, 2199023255552) = 4398046511104, ceiling2(18446741874686296062, 2199023255552) = 18446741874686296064
+ceiling2(4398046511104, 4398046511104) = 4398046511104, ceiling2(4398046511106, 4398046511104) = 8796093022208, ceiling2(18446739675663040510, 4398046511104) = 18446739675663040512
+ceiling2(8796093022208, 8796093022208) = 8796093022208, ceiling2(8796093022210, 8796093022208) = 17592186044416, ceiling2(18446735277616529406, 8796093022208) = 18446735277616529408
+ceiling2(17592186044416, 17592186044416) = 17592186044416, ceiling2(17592186044418, 17592186044416) = 35184372088832, ceiling2(18446726481523507198, 17592186044416) = 18446726481523507200
+ceiling2(35184372088832, 35184372088832) = 35184372088832, ceiling2(35184372088834, 35184372088832) = 70368744177664, ceiling2(18446708889337462782, 35184372088832) = 18446708889337462784
+ceiling2(70368744177664, 70368744177664) = 70368744177664, ceiling2(70368744177666, 70368744177664) = 140737488355328, ceiling2(18446673704965373950, 70368744177664) = 18446673704965373952
+ceiling2(140737488355328, 140737488355328) = 140737488355328, ceiling2(140737488355330, 140737488355328) = 281474976710656, ceiling2(18446603336221196286, 140737488355328) = 18446603336221196288
+ceiling2(281474976710656, 281474976710656) = 281474976710656, ceiling2(281474976710658, 281474976710656) = 562949953421312, ceiling2(18446462598732840958, 281474976710656) = 18446462598732840960
+ceiling2(562949953421312, 562949953421312) = 562949953421312, ceiling2(562949953421314, 562949953421312) = 1125899906842624, ceiling2(18446181123756130302, 562949953421312) = 18446181123756130304
+ceiling2(1125899906842624, 1125899906842624) = 1125899906842624, ceiling2(1125899906842626, 1125899906842624) = 2251799813685248, ceiling2(18445618173802708990, 1125899906842624) = 18445618173802708992
+ceiling2(2251799813685248, 2251799813685248) = 2251799813685248, ceiling2(2251799813685250, 2251799813685248) = 4503599627370496, ceiling2(18444492273895866366, 2251799813685248) = 18444492273895866368
+ceiling2(4503599627370496, 4503599627370496) = 4503599627370496, ceiling2(4503599627370498, 4503599627370496) = 9007199254740992, ceiling2(18442240474082181118, 4503599627370496) = 18442240474082181120
+ceiling2(9007199254740992, 9007199254740992) = 9007199254740992, ceiling2(9007199254740994, 9007199254740992) = 18014398509481984, ceiling2(18437736874454810622, 9007199254740992) = 18437736874454810624
+ceiling2(18014398509481984, 18014398509481984) = 18014398509481984, ceiling2(18014398509481986, 18014398509481984) = 36028797018963968, ceiling2(18428729675200069630, 18014398509481984) = 18428729675200069632
+ceiling2(36028797018963968, 36028797018963968) = 36028797018963968, ceiling2(36028797018963970, 36028797018963968) = 72057594037927936, ceiling2(18410715276690587646, 36028797018963968) = 18410715276690587648
+ceiling2(72057594037927936, 72057594037927936) = 72057594037927936, ceiling2(72057594037927938, 72057594037927936) = 144115188075855872, ceiling2(18374686479671623678, 72057594037927936) = 18374686479671623680
+ceiling2(144115188075855872, 144115188075855872) = 144115188075855872, ceiling2(144115188075855874, 144115188075855872) = 288230376151711744, ceiling2(18302628885633695742, 144115188075855872) = 18302628885633695744
+ceiling2(288230376151711744, 288230376151711744) = 288230376151711744, ceiling2(288230376151711746, 288230376151711744) = 576460752303423488, ceiling2(18158513697557839870, 288230376151711744) = 18158513697557839872
+ceiling2(576460752303423488, 576460752303423488) = 576460752303423488, ceiling2(576460752303423490, 576460752303423488) = 1152921504606846976, ceiling2(17870283321406128126, 576460752303423488) = 17870283321406128128
+ceiling2(1152921504606846976, 1152921504606846976) = 1152921504606846976, ceiling2(1152921504606846978, 1152921504606846976) = 2305843009213693952, ceiling2(17293822569102704638, 1152921504606846976) = 17293822569102704640
+ceiling2(2305843009213693952, 2305843009213693952) = 2305843009213693952, ceiling2(2305843009213693954, 2305843009213693952) = 4611686018427387904, ceiling2(16140901064495857662, 2305843009213693952) = 16140901064495857664
+ceiling2(4611686018427387904, 4611686018427387904) = 4611686018427387904, ceiling2(4611686018427387906, 4611686018427387904) = 9223372036854775808, ceiling2(13835058055282163710, 4611686018427387904) = 13835058055282163712
+ceiling2(9223372036854775808, 9223372036854775808) = 9223372036854775808, ceiling2(9223372036854775810, 9223372036854775808) = 0, ceiling2(9223372036854775806, 9223372036854775808) = 9223372036854775808
 
 
Index: tests/bitmanip3.cfa
===================================================================
--- tests/bitmanip3.cfa	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ tests/bitmanip3.cfa	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -10,6 +10,6 @@
 // Created On       : Tue Apr  7 21:22:59 2020
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 14 23:07:15 2020
-// Update Count     : 57
+// Last Modified On : Tue Apr 21 16:25:09 2020
+// Update Count     : 61
 // 
 
@@ -136,8 +136,8 @@
 	sc = 0;
 	scr1 = floor2( sc, sc ), scr2 = floor2( sc + 2hh, sc ), scr3 = floor2( -sc - 2hh, sc );
-	printf( "floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
-	for ( sc = 1; sc != 0; sc += sc ) {
+	printf( "floor2(%hhd, %hhd) = %hhd, floor2(%hhd, %hhd) = %hhd, floor2(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
+	for ( sc = 1; sc != 0; sc <<= 1 ) {
 		scr1 = floor2( sc, sc ); scr2 = floor2( sc + 2hh, sc ); scr3 = floor2( -sc - 2hh, sc );
-		printf( "floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
+		printf( "floor2(%hhd, %hhd) = %hhd, floor2(%hhd, %hhd) = %hhd, floor2(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
 	} // for
 	printf( "\n" );
@@ -146,8 +146,8 @@
 	uc = 0;
 	ucr1 = floor2( uc, uc ), ucr2 = floor2( uc + 2hh, uc ), ucr3 = floor2( -uc - 2hh, uc );
-	printf( "floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
-	for ( uc = 1; uc != 0; uc += uc ) {
+	printf( "floor2(%hhu, %hhu) = %hhu, floor2(%hhu, %hhu) = %hhu, floor2(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
+	for ( uc = 1; uc != 0; uc <<= 1 ) {
 		ucr1 = floor2( uc, uc ); ucr2 = floor2( uc + 2hh, uc ); ucr3 = floor2( -uc - 2hh, uc );
-		printf( "floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
+		printf( "floor2(%hhu, %hhu) = %hhu, floor2(%hhu, %hhu) = %hhu, floor2(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
 	} // for
 	printf( "\n" );
@@ -156,8 +156,8 @@
 	si = 0;
 	sir1 = floor2( si, si ), sir2 = floor2( si + 2hh, si ), sir3 = floor2( -si - 2hh, si );
-	printf( "floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
-	for ( si = 1; si != 0; si += si ) {
+	printf( "floor2(%hd, %hd) = %hd, floor2(%hd, %hd) = %hd, floor2(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
+	for ( si = 1; si != 0; si <<= 1 ) {
 		sir1 = floor2( si, si ); sir2 = floor2( si + 2hh, si ); sir3 = floor2( -si - 2hh, si );
-		printf( "floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
+		printf( "floor2(%hd, %hd) = %hd, floor2(%hd, %hd) = %hd, floor2(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
 	} // for
 	printf( "\n" );
@@ -166,8 +166,8 @@
 	usi = 0;
 	usir1 = floor2( usi, usi ), usir2 = floor2( usi + 2hh, usi ), usir3 = floor2( -usi - 2hh, usi );
-	printf( "floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
-	for ( usi = 1; usi != 0; usi += usi ) {
+	printf( "floor2(%hu, %hu) = %hu, floor2(%hu, %hu) = %hu, floor2(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
+	for ( usi = 1; usi != 0; usi <<= 1 ) {
 		usir1 = floor2( usi, usi ); usir2 = floor2( usi + 2hh, usi ); usir3 = floor2( -usi - 2hh, usi );
-		printf( "floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
+		printf( "floor2(%hu, %hu) = %hu, floor2(%hu, %hu) = %hu, floor2(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
 	} // for
 	printf( "\n" );
@@ -176,8 +176,8 @@
 	i = 0;
 	ir1 = floor2( i, i ), ir2 = floor2( i + 2hh, i ), ir3 = floor2( -i - 2hh, i );
-	printf( "floor(%d, %d) = %d, floor(%d, %d) = %d, floor(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
-	for ( i = 1; i != 0; i += i ) {
+	printf( "floor2(%d, %d) = %d, floor2(%d, %d) = %d, floor2(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
+	for ( i = 1; i != 0; i <<= 1 ) {
 		ir1 = floor2( i, i ); ir2 = floor2( i + 2hh, i ); ir3 = floor2( -i - 2hh, i );
-		printf( "floor(%d, %d) = %d, floor(%d, %d) = %d, floor(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
+		printf( "floor2(%d, %d) = %d, floor2(%d, %d) = %d, floor2(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
 	} // for
 	printf( "\n" );
@@ -186,8 +186,8 @@
 	ui = 0;
 	uir1 = floor2( ui, ui ), uir2 = floor2( ui + 2hh, ui ), uir3 = floor2( -ui - 2hh, ui );
-	printf( "floor(%u, %u) = %u, floor(%u, %u) = %u, floor(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
-	for ( ui = 1; ui != 0; ui += ui ) {
+	printf( "floor2(%u, %u) = %u, floor2(%u, %u) = %u, floor2(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
+	for ( ui = 1; ui != 0; ui <<= 1 ) {
 		uir1 = floor2( ui, ui ); uir2 = floor2( ui + 2hh, ui ); uir3 = floor2( -ui - 2hh, ui );
-		printf( "floor(%u, %u) = %u, floor(%u, %u) = %u, floor(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
+		printf( "floor2(%u, %u) = %u, floor2(%u, %u) = %u, floor2(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
 	} // for
 	printf( "\n" );
@@ -196,8 +196,8 @@
 	li = 0;
 	lir1 = floor2( li, li ), lir2 = floor2( li + 2hh, li ), lir3 = floor2( -li - 2hh, li );
-	printf( "floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
-	for ( li = 1; li != 0; li += li ) {
+	printf( "floor2(%ld, %ld) = %ld, floor2(%ld, %ld) = %ld, floor2(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
+	for ( li = 1; li != 0; li <<= 1 ) {
 		lir1 = floor2( li, li ); lir2 = floor2( li + 2hh, li ); lir3 = floor2( -li - 2hh, li );
-		printf( "floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
+		printf( "floor2(%ld, %ld) = %ld, floor2(%ld, %ld) = %ld, floor2(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
 	} // for
 	printf( "\n" );
@@ -206,8 +206,8 @@
 	uli = 0;
 	ulir1 = floor2( uli, uli ), ulir2 = floor2( uli + 2hh, uli ), ulir3 = floor2( -uli - 2hh, uli );
-	printf( "floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
-	for ( uli = 1; uli != 0; uli += uli ) {
+	printf( "floor2(%lu, %lu) = %lu, floor2(%lu, %lu) = %lu, floor2(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
+	for ( uli = 1; uli != 0; uli <<= 1 ) {
 		ulir1 = floor2( uli, uli ); ulir2 = floor2( uli + 2hh, uli ); ulir3 = floor2( -uli - 2hh, uli );
-		printf( "floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
+		printf( "floor2(%lu, %lu) = %lu, floor2(%lu, %lu) = %lu, floor2(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
 	} // for
 	printf( "\n" );
@@ -216,8 +216,8 @@
 	lli = 0;
 	llir1 = floor2( lli, lli ), llir2 = floor2( lli + 2hh, lli ), llir3 = floor2( -lli - 2hh, lli );
-	printf( "floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
-	for ( lli = 1; lli != 0; lli += lli ) {
+	printf( "floor2(%lld, %lld) = %lld, floor2(%lld, %lld) = %lld, floor2(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
+	for ( lli = 1; lli != 0; lli <<= 1 ) {
 		llir1 = floor2( lli, lli ); llir2 = floor2( lli + 2hh, lli ); llir3 = floor2( -lli - 2hh, lli );
-		printf( "floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
+		printf( "floor2(%lld, %lld) = %lld, floor2(%lld, %lld) = %lld, floor2(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
 	} // for
 	printf( "\n" );
@@ -226,8 +226,8 @@
 	ulli = 0;
 	ullir1 = floor2( ulli, ulli ), ullir2 = floor2( ulli + 2hh, ulli ), ullir3 = floor2( -ulli - 2hh, ulli );
-	printf( "floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
-	for ( ulli = 1; ulli != 0; ulli += ulli ) {
+	printf( "floor2(%llu, %llu) = %llu, floor2(%llu, %llu) = %llu, floor2(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
+	for ( ulli = 1; ulli != 0; ulli <<= 1 ) {
 		ullir1 = floor2( ulli, ulli ); ullir2 = floor2( ulli + 2hh, ulli ); ullir3 = floor2( -ulli - 2hh, ulli );
-		printf( "floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
+		printf( "floor2(%llu, %llu) = %llu, floor2(%llu, %llu) = %llu, floor2(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
 	} // for
 	printf( "\n" );
@@ -238,5 +238,5 @@
 
 	printf( "signed char\n" );
-	for ( sc = 1; sc != 0; sc += sc ) {
+	for ( sc = 1; sc != 0; sc <<= 1 ) {
 		scr1 = floor( sc, sc ); scr2 = floor( sc + 2hh, sc ); scr3 = floor( -sc - 2hh, sc );
 		printf( "floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd, floor(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
@@ -245,5 +245,5 @@
 
 	printf( "unsigned char\n" );
-	for ( uc = 1; uc != 0; uc += uc ) {
+	for ( uc = 1; uc != 0; uc <<= 1 ) {
 		ucr1 = floor( uc, uc ); ucr2 = floor( uc + 2hh, uc ); ucr3 = floor( -uc - 2hh, uc );
 		printf( "floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu, floor(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
@@ -252,5 +252,5 @@
 
 	printf( "short int\n" );
-	for ( si = 1; si != 0; si += si ) {
+	for ( si = 1; si != 0; si <<= 1 ) {
 		sir1 = floor( si, si ); sir2 = floor( si + 2hh, si ); sir3 = floor( -si - 2hh, si );
 		printf( "floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd, floor(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
@@ -259,5 +259,5 @@
 
 	printf( "unsigned short int\n" );
-	for ( usi = 1; usi != 0; usi += usi ) {
+	for ( usi = 1; usi != 0; usi <<= 1 ) {
 		usir1 = floor( usi, usi ); usir2 = floor( usi + 2hh, usi ); usir3 = floor( -usi - 2hh, usi );
 		printf( "floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu, floor(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
@@ -266,5 +266,5 @@
 
 	printf( "int\n" );
-	for ( i = 1; i != 0; i += i ) {
+	for ( i = 1; i != 0; i <<= 1 ) {
 		ir1 = floor( i, i ); ir2 = floor( i + 2hh, i ); ir3 = floor( -i - 2hh, i );
 		printf( "floor(%d, %d) = %d, floor(%d, %d) = %d, floor(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
@@ -273,5 +273,5 @@
 
 	printf( "unsigned int\n" );
-	for ( ui = 1; ui != 0; ui += ui ) {
+	for ( ui = 1; ui != 0; ui <<= 1 ) {
 		uir1 = floor( ui, ui ); uir2 = floor( ui + 2hh, ui ); uir3 = floor( -ui - 2hh, ui );
 		printf( "floor(%u, %u) = %u, floor(%u, %u) = %u, floor(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
@@ -280,5 +280,5 @@
 
 	printf( "long int\n" );
-	for ( li = 1; li != 0; li += li ) {
+	for ( li = 1; li != 0; li <<= 1 ) {
 		lir1 = floor( li, li ); lir2 = floor( li + 2hh, li ); lir3 = floor( -li - 2hh, li );
 		printf( "floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld, floor(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
@@ -287,5 +287,5 @@
 
 	printf( "unsigned long int\n" );
-	for ( uli = 1; uli != 0; uli += uli ) {
+	for ( uli = 1; uli != 0; uli <<= 1 ) {
 		ulir1 = floor( uli, uli ); ulir2 = floor( uli + 2hh, uli ); ulir3 = floor( -uli - 2hh, uli );
 		printf( "floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu, floor(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
@@ -294,5 +294,5 @@
 
 	printf( "long long int\n" );
-	for ( lli = 1; lli != 0; lli += lli ) {
+	for ( lli = 1; lli != 0; lli <<= 1 ) {
 		llir1 = floor( lli, lli ); llir2 = floor( lli + 2hh, lli ); llir3 = floor( -lli - 2hh, lli );
 		printf( "floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld, floor(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
@@ -301,5 +301,5 @@
 
 	printf( "unsigned long long int\n" );
-	for ( ulli = 1; ulli != 0; ulli += ulli ) {
+	for ( ulli = 1; ulli != 0; ulli <<= 1 ) {
 		ullir1 = floor( ulli, ulli ); ullir2 = floor( ulli + 2hh, ulli ); ullir3 = floor( -ulli - 2hh, ulli );
 		printf( "floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu, floor(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
@@ -314,8 +314,8 @@
 	sc = 0;
 	scr1 = ceiling2( sc, sc ), scr2 = ceiling2( sc + 2hh, sc ), scr3 = ceiling2( -sc - 2hh, sc );
-	printf( "ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
-	for ( sc = 1; sc != 0; sc += sc ) {
+	printf( "ceiling2(%hhd, %hhd) = %hhd, ceiling2(%hhd, %hhd) = %hhd, ceiling2(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
+	for ( sc = 1; sc != 0; sc <<= 1 ) {
 		scr1 = ceiling2( sc, sc ); scr2 = ceiling2( sc + 2hh, sc ); scr3 = ceiling2( -sc - 2hh, sc );
-		printf( "ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
+		printf( "ceiling2(%hhd, %hhd) = %hhd, ceiling2(%hhd, %hhd) = %hhd, ceiling2(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
 	} // for
 	printf( "\n" );
@@ -324,8 +324,8 @@
 	uc = 0;
 	ucr1 = ceiling2( uc, uc ), ucr2 = ceiling2( uc + 2hh, uc ), ucr3 = ceiling2( -uc - 2hh, uc );
-	printf( "ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
-	for ( uc = 1; uc != 0; uc += uc ) {
+	printf( "ceiling2(%hhu, %hhu) = %hhu, ceiling2(%hhu, %hhu) = %hhu, ceiling2(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
+	for ( uc = 1; uc != 0; uc <<= 1 ) {
 		ucr1 = ceiling2( uc, uc ); ucr2 = ceiling2( uc + 2hh, uc ); ucr3 = ceiling2( -uc - 2hh, uc );
-		printf( "ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
+		printf( "ceiling2(%hhu, %hhu) = %hhu, ceiling2(%hhu, %hhu) = %hhu, ceiling2(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
 	} // for
 	printf( "\n" );
@@ -334,8 +334,8 @@
 	si = 0;
 	sir1 = ceiling2( si, si ), sir2 = ceiling2( si + 2hh, si ), sir3 = ceiling2( -si - 2hh, si );
-	printf( "ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
-	for ( si = 1; si != 0; si += si ) {
+	printf( "ceiling2(%hd, %hd) = %hd, ceiling2(%hd, %hd) = %hd, ceiling2(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
+	for ( si = 1; si != 0; si <<= 1 ) {
 		sir1 = ceiling2( si, si ); sir2 = ceiling2( si + 2hh, si ); sir3 = ceiling2( -si - 2hh, si );
-		printf( "ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
+		printf( "ceiling2(%hd, %hd) = %hd, ceiling2(%hd, %hd) = %hd, ceiling2(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
 	} // for
 	printf( "\n" );
@@ -344,8 +344,8 @@
 	usi = 0;
 	usir1 = ceiling2( usi, usi ), usir2 = ceiling2( usi + 2hh, usi ), usir3 = ceiling2( -usi - 2hh, usi );
-	printf( "ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
-	for ( usi = 1; usi != 0; usi += usi ) {
+	printf( "ceiling2(%hu, %hu) = %hu, ceiling2(%hu, %hu) = %hu, ceiling2(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
+	for ( usi = 1; usi != 0; usi <<= 1 ) {
 		usir1 = ceiling2( usi, usi ); usir2 = ceiling2( usi + 2hh, usi ); usir3 = ceiling2( -usi - 2hh, usi );
-		printf( "ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
+		printf( "ceiling2(%hu, %hu) = %hu, ceiling2(%hu, %hu) = %hu, ceiling2(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
 	} // for
 	printf( "\n" );
@@ -354,8 +354,8 @@
 	i = 0;
 	ir1 = ceiling2( i, i ), ir2 = ceiling2( i + 2hh, i ), ir3 = ceiling2( -i - 2hh, i );
-	printf( "ceiling(%d, %d) = %d, ceiling(%d, %d) = %d, ceiling(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
-	for ( i = 1; i != 0; i += i ) {
+	printf( "ceiling2(%d, %d) = %d, ceiling2(%d, %d) = %d, ceiling2(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
+	for ( i = 1; i != 0; i <<= 1 ) {
 		ir1 = ceiling2( i, i ); ir2 = ceiling2( i + 2hh, i ); ir3 = ceiling2( -i - 2hh, i );
-		printf( "ceiling(%d, %d) = %d, ceiling(%d, %d) = %d, ceiling(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
+		printf( "ceiling2(%d, %d) = %d, ceiling2(%d, %d) = %d, ceiling2(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
 	} // for
 	printf( "\n" );
@@ -364,8 +364,8 @@
 	ui = 0;
 	uir1 = ceiling2( ui, ui ), uir2 = ceiling2( ui + 2hh, ui ), uir3 = ceiling2( -ui - 2hh, ui );
-	printf( "ceiling(%u, %u) = %u, ceiling(%u, %u) = %u, ceiling(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
-	for ( ui = 1; ui != 0; ui += ui ) {
+	printf( "ceiling2(%u, %u) = %u, ceiling2(%u, %u) = %u, ceiling2(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
+	for ( ui = 1; ui != 0; ui <<= 1 ) {
 		uir1 = ceiling2( ui, ui ); uir2 = ceiling2( ui + 2hh, ui ); uir3 = ceiling2( -ui - 2hh, ui );
-		printf( "ceiling(%u, %u) = %u, ceiling(%u, %u) = %u, ceiling(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
+		printf( "ceiling2(%u, %u) = %u, ceiling2(%u, %u) = %u, ceiling2(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
 	} // for
 	printf( "\n" );
@@ -374,8 +374,8 @@
 	li = 0;
 	lir1 = ceiling2( li, li ), lir2 = ceiling2( li + 2hh, li ), lir3 = ceiling2( -li - 2hh, li );
-	printf( "ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
-	for ( li = 1; li != 0; li += li ) {
+	printf( "ceiling2(%ld, %ld) = %ld, ceiling2(%ld, %ld) = %ld, ceiling2(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
+	for ( li = 1; li != 0; li <<= 1 ) {
 		lir1 = ceiling2( li, li ); lir2 = ceiling2( li + 2hh, li ); lir3 = ceiling2( -li - 2hh, li );
-		printf( "ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
+		printf( "ceiling2(%ld, %ld) = %ld, ceiling2(%ld, %ld) = %ld, ceiling2(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
 	} // for
 	printf( "\n" );
@@ -384,8 +384,8 @@
 	uli = 0;
 	ulir1 = ceiling2( uli, uli ), ulir2 = ceiling2( uli + 2hh, uli ), ulir3 = ceiling2( -uli - 2hh, uli );
-	printf( "ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
-	for ( uli = 1; uli != 0; uli += uli ) {
+	printf( "ceiling2(%lu, %lu) = %lu, ceiling2(%lu, %lu) = %lu, ceiling2(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
+	for ( uli = 1; uli != 0; uli <<= 1 ) {
 		ulir1 = ceiling2( uli, uli ); ulir2 = ceiling2( uli + 2hh, uli ); ulir3 = ceiling2( -uli - 2hh, uli );
-		printf( "ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
+		printf( "ceiling2(%lu, %lu) = %lu, ceiling2(%lu, %lu) = %lu, ceiling2(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
 	} // for
 	printf( "\n" );
@@ -394,8 +394,8 @@
 	lli = 0;
 	llir1 = ceiling2( lli, lli ), llir2 = ceiling2( lli + 2hh, lli ), llir3 = ceiling2( -lli - 2hh, lli );
-	printf( "ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
-	for ( lli = 1; lli != 0; lli += lli ) {
+	printf( "ceiling2(%lld, %lld) = %lld, ceiling2(%lld, %lld) = %lld, ceiling2(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
+	for ( lli = 1; lli != 0; lli <<= 1 ) {
 		llir1 = ceiling2( lli, lli ); llir2 = ceiling2( lli + 2hh, lli ); llir3 = ceiling2( -lli - 2hh, lli );
-		printf( "ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
+		printf( "ceiling2(%lld, %lld) = %lld, ceiling2(%lld, %lld) = %lld, ceiling2(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
 	} // for
 	printf( "\n" );
@@ -404,8 +404,8 @@
 	ulli = 0;
 	ullir1 = ceiling2( ulli, ulli ), ullir2 = ceiling2( ulli + 2hh, ulli ), ullir3 = ceiling2( -ulli - 2hh, ulli );
-	printf( "ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
-	for ( ulli = 1; ulli != 0; ulli += ulli ) {
+	printf( "ceiling2(%llu, %llu) = %llu, ceiling2(%llu, %llu) = %llu, ceiling2(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
+	for ( ulli = 1; ulli != 0; ulli <<= 1 ) {
 		ullir1 = ceiling2( ulli, ulli ); ullir2 = ceiling2( ulli + 2hh, ulli ); ullir3 = ceiling2( -ulli - 2hh, ulli );
-		printf( "ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
+		printf( "ceiling2(%llu, %llu) = %llu, ceiling2(%llu, %llu) = %llu, ceiling2(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
 	} // for
 	printf( "\n" );
@@ -416,5 +416,5 @@
 
 	printf( "signed char\n" );
-	for ( sc = 1; sc != 0; sc += sc ) {
+	for ( sc = 1; sc != 0; sc <<= 1 ) {
 		scr1 = ceiling( sc, sc ); scr2 = ceiling( sc + 2hh, sc ); scr3 = ceiling( -sc - 2hh, sc );
 		printf( "ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd, ceiling(%hhd, %hhd) = %hhd\n", sc, sc, scr1, sc + 2hh, sc, scr2, -sc - 2hh, sc, scr3 );
@@ -423,5 +423,5 @@
 
 	printf( "unsigned char\n" );
-	for ( uc = 1; uc != 0; uc += uc ) {
+	for ( uc = 1; uc != 0; uc <<= 1 ) {
 		ucr1 = ceiling( uc, uc ); ucr2 = ceiling( uc + 2hh, uc ); ucr3 = ceiling( -uc - 2hh, uc );
 		printf( "ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu, ceiling(%hhu, %hhu) = %hhu\n", uc, uc, ucr1, uc + 2uhh, uc, ucr2, -uc - 2uhh, uc, ucr3 );
@@ -430,5 +430,5 @@
 
 	printf( "short int\n" );
-	for ( si = 1; si != 0; si += si ) {
+	for ( si = 1; si != 0; si <<= 1 ) {
 		sir1 = ceiling( si, si ); sir2 = ceiling( si + 2hh, si ); sir3 = ceiling( -si - 2hh, si );
 		printf( "ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd, ceiling(%hd, %hd) = %hd\n", si, si, sir1, si + 2h, si, sir2, -si - 2h, si, sir3 );
@@ -437,5 +437,5 @@
 
 	printf( "unsigned short int\n" );
-	for ( usi = 1; usi != 0; usi += usi ) {
+	for ( usi = 1; usi != 0; usi <<= 1 ) {
 		usir1 = ceiling( usi, usi ); usir2 = ceiling( usi + 2hh, usi ); usir3 = ceiling( -usi - 2hh, usi );
 		printf( "ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu, ceiling(%hu, %hu) = %hu\n", usi, usi, usir1, usi + 2uh, usi, usir2, -usi - 2uh, usi, usir3 );
@@ -444,5 +444,5 @@
 
 	printf( "int\n" );
-	for ( i = 1; i != 0; i += i ) {
+	for ( i = 1; i != 0; i <<= 1 ) {
 		ir1 = ceiling( i, i ); ir2 = ceiling( i + 2hh, i ); ir3 = ceiling( -i - 2hh, i );
 		printf( "ceiling(%d, %d) = %d, ceiling(%d, %d) = %d, ceiling(%d, %d) = %d\n", i, i, ir1, i + 2h, i, ir2, -i - 2h, i, ir3 );
@@ -451,5 +451,5 @@
 
 	printf( "unsigned int\n" );
-	for ( ui = 1; ui != 0; ui += ui ) {
+	for ( ui = 1; ui != 0; ui <<= 1 ) {
 		uir1 = ceiling( ui, ui ); uir2 = ceiling( ui + 2hh, ui ); uir3 = ceiling( -ui - 2hh, ui );
 		printf( "ceiling(%u, %u) = %u, ceiling(%u, %u) = %u, ceiling(%u, %u) = %u\n", ui, ui, uir1, ui + 2h, ui, uir2, -ui - 2h, ui, uir3 );
@@ -458,5 +458,5 @@
 
 	printf( "long int\n" );
-	for ( li = 1; li != 0; li += li ) {
+	for ( li = 1; li != 0; li <<= 1 ) {
 		lir1 = ceiling( li, li ); lir2 = ceiling( li + 2hh, li ); lir3 = ceiling( -li - 2hh, li );
 		printf( "ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld, ceiling(%ld, %ld) = %ld\n", li, li, lir1, li + 2h, li, lir2, -li - 2h, li, lir3 );
@@ -465,5 +465,5 @@
 
 	printf( "unsigned long int\n" );
-	for ( uli = 1; uli != 0; uli += uli ) {
+	for ( uli = 1; uli != 0; uli <<= 1 ) {
 		ulir1 = ceiling( uli, uli ); ulir2 = ceiling( uli + 2hh, uli ); ulir3 = ceiling( -uli - 2hh, uli );
 		printf( "ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu, ceiling(%lu, %lu) = %lu\n", uli, uli, ulir1, uli + 2h, uli, ulir2, -uli - 2h, uli, ulir3 );
@@ -472,5 +472,5 @@
 
 	printf( "long long int\n" );
-	for ( lli = 1; lli != 0; lli += lli ) {
+	for ( lli = 1; lli != 0; lli <<= 1 ) {
 		llir1 = ceiling( lli, lli ); llir2 = ceiling( lli + 2hh, lli ); llir3 = ceiling( -lli - 2hh, lli );
 		printf( "ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld, ceiling(%lld, %lld) = %lld\n", lli, lli, llir1, lli + 2h, lli, llir2, -lli - 2h, lli, llir3 );
@@ -479,5 +479,5 @@
 
 	printf( "unsigned long long int\n" );
-	for ( ulli = 1; ulli != 0; ulli += ulli ) {
+	for ( ulli = 1; ulli != 0; ulli <<= 1 ) {
 		ullir1 = ceiling( ulli, ulli ); ullir2 = ceiling( ulli + 2hh, ulli ); ullir3 = ceiling( -ulli - 2hh, ulli );
 		printf( "ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu, ceiling(%llu, %llu) = %llu\n", ulli, ulli, ullir1, ulli + 2h, ulli, ullir2, -ulli - 2h, ulli, ullir3 );
Index: tests/manipulatorsOutput3.cfa
===================================================================
--- tests/manipulatorsOutput3.cfa	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
+++ tests/manipulatorsOutput3.cfa	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -0,0 +1,107 @@
+#include <fstream.hfa>
+int main() {
+    int128 x = 0xffff;
+    x <<= 64;;
+    x += 0xffff;
+    x = -x;
+    sout | x;
+    sout | sign(x);
+    x = -x;
+    sout | sign(x);
+    sout | nl;
+#if 1
+    sout | bin(x);
+    sout | upcase(bin(x));
+    sout | nobase(bin(x));
+    sout | wd( 95, upcase(bin(x)) );
+    sout | wd( 95,90, upcase(bin(x)) );
+    sout | wd( 25,30, upcase(hex(x)) );
+    sout | nl;
+
+    sout | oct(x);
+    sout | nobase(oct(x));
+    sout | wd( 45, upcase(oct(123)) );
+    sout | wd( 45,40, upcase(oct(123)) );
+    sout | wd( 40,45, upcase(oct(123)) );
+    sout | wd( 45, upcase(oct(x)) );
+    sout | wd( 45,40, upcase(oct(x)) );
+    sout | wd( 40,45, upcase(oct(x)) );
+    sout | left(wd( 45, upcase(oct(x)) )) | 'X';
+    int128 y = 123456789;
+    sout | left(wd( 45, 49, upcase(oct(y)) )) | 'X';
+    sout | nl;
+
+    sout | hex(x);
+    sout | upcase(hex(x));
+    sout | nobase(hex(x));
+    sout | wd( 45, upcase(hex(x)) );
+    sout | wd( 45,40, upcase(hex(x)) );
+    sout | wd( 45,49, upcase(hex(x)) );
+    sout | left(wd( 45, upcase(hex(x)) )) | 'X';
+    sout | left(wd( 45,40, upcase(hex(x)) )) | 'X';
+    sout | left(wd( 45,49, upcase(hex(x)) )) | 'X';
+
+    sout | nl | nl;
+
+    int128 divisor = 0x4b3b4ca85a86c47a;
+    divisor <<= 16;
+    divisor += 0x98a224000000000;
+
+    // base 10
+    sout | divisor;
+    sout | wd(2, divisor);
+    sout | wd(3, divisor);
+    sout | wd(10, divisor);
+    sout | wd(24, divisor);
+    sout | wd(38, divisor);
+    sout | wd(39, divisor);
+    sout | wd(40, divisor);
+    
+    sout | wd(40, 30, divisor);
+    sout | wd(40, 38, divisor);
+    sout | wd(40, 40, divisor);
+    sout | pad0(wd(40, divisor));
+    sout | pad0(sign(wd(40,divisor)));
+    
+    // base 2
+    sout | upcase(bin(divisor));
+    sout | wd(38, upcase(bin(divisor)));
+    sout | wd(40, upcase(bin(divisor)));
+    sout | wd(40, 38, upcase(bin(divisor)));
+    sout | wd(40, 30, upcase(bin(divisor)));
+    sout | pad0(sign(wd(40, 38, upcase(bin(divisor)))));
+    
+    // oct
+    sout | upcase(oct(divisor));
+    sout | wd(38, upcase(oct(divisor)));
+    sout | wd(40, upcase(oct(divisor)));
+    sout | wd(40, 38, upcase(oct(divisor)));
+    sout | wd(40, 30, upcase(oct(divisor)));
+    sout | pad0(sign(wd(40, 38, upcase(oct(divisor)))));
+    
+    // hex
+    sout | upcase(hex(divisor));
+    sout | wd(38, upcase(hex(divisor)));
+    sout | wd(40, upcase(hex(divisor)));
+    sout | wd(40, 38, upcase(hex(divisor)));
+    sout | wd(40, 30, upcase(hex(divisor)));
+    sout | pad0(sign(wd(40, 38, upcase(hex(divisor)))));
+
+    
+    sout | bin(divisor);
+    sout | upcase(bin(divisor));
+    sout | oct(divisor);
+    sout | hex(divisor);
+    sout | upcase(hex(divisor));
+    sout | nobase(bin(divisor)) | nobase(oct(divisor)) | nobase(hex(divisor));
+    sout | sign(divisor);
+    sout | -divisor;
+    sout | sign(-divisor);
+    sout | wd(2, divisor);
+    sout | wd(3,10,divisor);
+    sout | left(wd(40,divisor)) | 'X';
+    sout | left(sign(wd(40, divisor))) | 'X';
+    sout | left(sign(wd(0,40, divisor))) | 'X';
+    printf( "%-+1.40dX\n", 123456789 );
+#endif // 0
+}
Index: tests/test.py
===================================================================
--- tests/test.py	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ tests/test.py	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -206,6 +206,9 @@
 
 		else:
-			with open (out_file, "r") as myfile:
-				error = myfile.read()
+			if os.stat(out_file).st_size < 1048576:
+				with open (out_file, "r") as myfile:
+					error = myfile.read()
+			else:
+				error = "Output log can't be read, file is bigger than 1MB, see {} for actual error\n".format(out_file)
 
 			ret, info = core_info(exe_file)
Index: tests/vector.cfa
===================================================================
--- tests/vector.cfa	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
+++ tests/vector.cfa	(revision 6d5b85aee6d0e38bef5ef530f6b7b5b12b8bdd02)
@@ -14,6 +14,6 @@
 //
 
+#include <vector.hfa>
 #include <fstream.hfa>
-#include <vector.hfa>
 
 #undef assert
@@ -28,4 +28,8 @@
 int main() {
 	vector( int ) iv;
+
+	assert( ((uintptr_t)&iv.storage.storage ) == (((uintptr_t)&iv)) );
+	assert( ((uintptr_t)&iv.storage.capacity) == (((uintptr_t)&iv) + sizeof(void *)) );
+	assert( ((uintptr_t)&iv.size            ) == (((uintptr_t)&iv) + sizeof(void *) + sizeof(size_t)) );
 
 	assert( empty( &iv ) );
