Exemple #1
0
void startplotting_succ(){
	FILE *gnuplot_ins = popen("`which gnuplot`", "w");
	FILE *gnuplot_succ = popen("`which gnuplot`", "w");
	FILE *gnuplot_total = popen("`which gnuplot`", "w");
	
	if (gnuplot_ins){
		fprintf(gnuplot_ins, "set terminal png #FFFFFF nocrop enhanced font helvetica 12 size 1200,900\n");
		fprintf(gnuplot_ins, "set output 'succ_ins.png'\n");
		fprintf(gnuplot_ins, "set title 'Successor test: insert avg'\n");
		fprintf(gnuplot_ins, "set ylabel 'Time (nano seconds)'\n");
		//fprintf(gnuplot_ins, "set logscale x\n");
		fprintf(gnuplot_ins, "plot '-' title 'vEB','-' title 'RB'\n");
	}
	if (gnuplot_succ){
		fprintf(gnuplot_succ, "set terminal png #FFFFFF nocrop enhanced font helvetica 12 size 1200,900\n");
		fprintf(gnuplot_succ, "set output 'succ_succ.png'\n");
		fprintf(gnuplot_succ, "set title 'Successor test: successor avg'\n");
		fprintf(gnuplot_succ, "set ylabel 'Time (nano seconds)'\n");
		//fprintf(gnuplot_succ, "set logscale x\n");
		fprintf(gnuplot_succ, "plot '-' title 'vEB','-' title 'RB'\n");
	}
	if (gnuplot_total){
		fprintf(gnuplot_total, "set terminal png #FFFFFF nocrop enhanced font helvetica 12 size 1200,900\n");
		fprintf(gnuplot_total, "set output 'succ_total.png'\n");
		fprintf(gnuplot_total, "set title 'Successor test: total running time'\n");
		fprintf(gnuplot_total, "set ylabel 'Time (mili seconds)'\n");
		fprintf(gnuplot_total, "plot '-' title 'vEB','-' title 'RB'\n");
	printf("\nTesting vEB succ\n");
	int i;
	for (i = 1000; i < 10000; i += 100)
		plot_succ_veb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 10000; i < 100000; i += 1000)
		plot_succ_veb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 100000; i < 1000000; i += 10000)
		plot_succ_veb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 1000000; i <= 14000000; i += 100000)
		plot_succ_veb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	if (gnuplot_ins)   fprintf(gnuplot_ins, "e\n");
	if (gnuplot_succ)    fprintf(gnuplot_succ, "e\n");
	if (gnuplot_total) fprintf(gnuplot_total, "e\n");
	
	printf("\nTesting RB succ\n");
	for (i = 1000; i < 10000; i += 100)
		plot_succ_rb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 10000; i < 100000; i += 1000)
		plot_succ_rb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 100000; i < 1000000; i += 10000)
		plot_succ_rb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	for (i = 1000000; i <= 14000000; i += 100000)
		plot_succ_rb(i, calc_log2(i), gnuplot_ins, gnuplot_succ, gnuplot_total);
	if (gnuplot_ins){  fprintf(gnuplot_ins, "e\n");   fclose(gnuplot_ins);}
	if (gnuplot_succ){   fprintf(gnuplot_succ, "e\n");    fclose(gnuplot_succ);}
	if (gnuplot_total){fprintf(gnuplot_total, "e\n"); fclose(gnuplot_total);}}
}
Exemple #2
0
const T& get_constant_ln2()
{
   static T result;
   static bool b = false;
   if(!b)
   {
      calc_log2(result, geofeatures_boost::multiprecision::detail::digits2<number<T, et_on> >::value);
      b = true;
   }

   constant_initializer<T, &get_constant_ln2<T> >::do_nothing();

   return result;
}
Exemple #3
0
const T& get_constant_ln2()
{
   static BOOST_MP_THREAD_LOCAL T result;
   static BOOST_MP_THREAD_LOCAL long digits = 0;
#ifndef BOOST_MP_USING_THREAD_LOCAL
   static BOOST_MP_THREAD_LOCAL bool b = false;
   constant_initializer<T, &get_constant_ln2<T> >::do_nothing();

   if(!b || (digits != boost::multiprecision::detail::digits2<number<T> >::value()))
   {
      b = true;
#else
   if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
   {
#endif
      calc_log2(result, boost::multiprecision::detail::digits2<number<T, et_on> >::value());
      digits = boost::multiprecision::detail::digits2<number<T> >::value();
   }

   return result;
}
Exemple #4
0
static block_info_t *init_block(int block_size, uint16_t unit_flags){
    
	f3s_extptr_t		extptr,
						next;
	f3s_unit_t			unit;
	block_info_t **		binfo;
	uint32_t			position;
	uint16_t			extent_flags;
	uint8_t				*init_blk_ptr;
    
	//
	//	setup the block allocation structure
	//

	binfo = realloc (block_info, (block_index + 1) * sizeof(block_info_t *));
	if (binfo == NULL) return (NULL);
	block_info = binfo;

	block_info[block_index] = (block_info_t *)malloc(sizeof(block_info_t));
	if (block_info[block_index] == NULL)
		mk_flash_exit("malloc failed: %s\n", strerror(errno));	

	block_info[block_index]->block_index = block_index;
	block_info[block_index]->available_space = block_size;
	block_info[block_index]->offset_top = 0;
	block_info[block_index]->block_size = block_size;
	block_info[block_index]->offset_bottom = block_size;
	block_info[block_index]->extent_index = 0;
	block_info[block_index]->next = NULL;

	// 
	//	every block will contain a unit header information  
	//	structure
	//

	unit.status = swap16(target_endian,unit_flags);
	unit.struct_size = swap16(target_endian,sizeof(unit));
	unit.endian = target_endian ? 'B' : 'L';
	unit.age = 0;					//	hard coded, does not apply here
        if (unit_flags&F3S_UNIT_NO_LOGI)
	 unit.logi = ~0;
        else
	 unit.logi = swap16(target_endian,block_index+1);
	unit.unit_pow2 = swap16(target_endian,calc_log2(block_size));
	unit.reserve = 0xffff;
	unit.erase_count = 0;			//	hard coded, does not apply here

	//
	//	setup the f3s_extptr_t to boot structure
	//	these values are hard coded since they should not change
	//

	extptr.logi_unit = swap16(target_endian,F3S_FIRST_LOGI);
	extptr.index = swap16(target_endian,F3S_BOOT_INDEX);

	unit.boot = extptr;

	//
	//	create a memory region to build our block
	//	

	if ((init_blk_ptr = (char *) malloc(block_size)) == NULL)
		mk_flash_exit("memory allocation failed: %s\n",strerror(errno));

	//
	//	initialize block
	//

	memset(init_blk_ptr,0xff,block_size);

	//
	// the unit header info is written at the start of each block
	//

	memcpy(init_blk_ptr,&unit,sizeof(unit));

	position = (block_info[block_index]->block_index) * block_info[block_index]->block_size;

	lseek(flashimage, position,SEEK_SET);

	if (write(flashimage,init_blk_ptr,block_size) != block_size)
		mk_flash_exit("write failed: %s\n",strerror(errno));
	

	//
	//	write extent information
	//
	
	next.logi_unit = FNULL;
	next.index = FNULL;
	
	extent_flags = ~F3S_EXT_TYPE & 0xff00;
	extent_flags |=	(F3S_EXT_SYS | F3S_EXT_NO_NEXT | F3S_EXT_NO_SUPER | F3S_EXT_NO_SPLIT | F3S_EXT_ALLOC |F3S_EXT_LAST);

	write_extent(block_info[block_index], next, extent_flags, sizeof(unit));
                                       
	//
	//	update block information structure
	//

	block_info[block_index]->available_space -= sizeof(unit);
	block_info[block_index]->offset_top = sizeof(unit);

	//
	//	free our malloc'd memory
	//

	block_index++;

	free(init_blk_ptr);

	return block_info[block_index-1];
}