Esempio n. 1
0
char			*ft_s_itoa(int nb)
{
	int		div;
	char	*ret;
	int		len;
	int		i;

	i = 0;
	len = calc_len(nb);
	div = calc_div(len);
	ret = ft_strnew(len + 1);
	if (nb < 0)
	{
		ret[i] = '-';
		nb *= -1;
		i++;
	}
	else if (nb == 0)
		return ("0");
	while (len--)
	{
		ret[i] = ((nb / div) + 48);
		nb -= ((nb / div) * div);
		div /= 10;
		i++;
	}
	return (ret);
}
Esempio n. 2
0
void calc_compute(op_t *op)
{
  if (op->type != OP_CMP)
    return;
  op_t *cop = (op_t *) op->arg1;
  switch (cop->type)
  {
    case OP_ADD:
      calc_add(cop);
      break;
    case OP_SUB:
      calc_sub(cop);
      break;
    case OP_MUL:
      calc_mul(cop);
      break;
    case OP_DIV:
      calc_div(cop);
      break;
    case OP_MOD:
      calc_mod(cop);
      break;
    default:
      break;
  }
}
Esempio n. 3
0
void
avx512f_test (void)
{
  int i, sign;
  union128 res1, res2, res3, res4, src1, src2;
  MASK_TYPE mask = 0;
  float res_ref[SIZE];

  sign = -1;
  for (i = 0; i < SIZE; i++)
    {
      src1.a[i] = 1.5 + 34.67 * i * sign;
      src2.a[i] = -22.17 * i * sign + 1.0;
      res1.a[i] = DEFAULT_VALUE;
      res3.a[i] = DEFAULT_VALUE;
      sign = sign * -1;
    }

  res1.x = _mm_mask_div_ss (res1.x, mask, src1.x, src2.x);
  res2.x = _mm_maskz_div_ss (mask, src1.x, src2.x);
  res3.x = _mm_mask_div_round_ss (res3.x, mask, src1.x, src2.x, _MM_FROUND_NO_EXC);
  res4.x = _mm_maskz_div_round_ss (mask, src1.x, src2.x, _MM_FROUND_NO_EXC);

  calc_div (res_ref, src1.a, src2.a);

  MASK_MERGE () (res_ref, mask, 1);
  if (check_union128 (res1, res_ref))
    abort ();

  MASK_ZERO () (res_ref, mask, 1);
  if (check_union128 (res2, res_ref))
    abort ();

  calc_div (res_ref, src1.a, src2.a);
  
  MASK_MERGE () (res_ref, mask, 1);
  if (check_union128 (res3, res_ref))
    abort ();

  MASK_ZERO () (res_ref, mask, 1);
  if (check_union128 (res4, res_ref))
    abort ();
}
Esempio n. 4
0
static void prepare_root_dentry(char *buf)
{
	int bitmap_size = 0;
	int extend_size;
	int dir_cnt = 0;
	char *pos = NULL;
	struct vbfs_dirent_header dir_header;
	struct vbfs_dirent dirent;

	extend_size = vbfs_params.extend_size_kb * 1024;
	memset(buf, 0, extend_size);
	memset(&dirent, 0, sizeof(dirent));

	/* write dir header */
	dir_cnt = (extend_size - VBFS_DIR_META_SIZE) / VBFS_DIR_SIZE;
	dir_header.bitmap_size = calc_div(dir_cnt, VBFS_DIR_SIZE * CHAR_BIT);
	dir_header.dir_capacity = dir_cnt - bitmap_size;
	dir_header.group_no = 0;
	dir_header.total_extends = 0;
	dir_header.dir_self_count = 1;
	dir_header.dir_total_count = 1;
	dir_header.next_extend = 0;
	pos = buf;
	save_dirent_header((vbfs_dir_header_dk_t *) pos, &dir_header);

	/* write dir bitmap */
	pos = buf + VBFS_DIR_META_SIZE;
	set_first_bits(pos, 1);

	/* write dir */
	dirent.i_ino = ROOT_INO;
	dirent.i_pino = ROOT_INO;
	dirent.i_mode = VBFS_FT_DIR;
	dirent.i_size = extend_size;
	dirent.i_atime = time(NULL);
	dirent.i_ctime = time(NULL);
	dirent.i_mtime = time(NULL);
	dirent.padding = 0;
	memset(dirent.name, 0, NAME_LEN);
	pos = buf + VBFS_DIR_META_SIZE + dir_header.bitmap_size * VBFS_DIR_SIZE;
	save_dirent((struct vbfs_dirent_disk *) pos, &dirent);
}
Esempio n. 5
0
int main() {
	int i,j,temp;
	long sum=0;
	for(i=3;i<=30000;i++) {
		arr[i]=calc_div(i);
		//printf("%d %d\n",i,arr[i]);
	}
//	prnt();
	for(i=3;i<=10000;i++) {
		temp=arr[i];
		if(temp==i)
			continue;
		if(arr[temp]==i) {
			sum+=i;
			//printf("%d %d\n",i,temp);
		}
	}
	printf("%ld",sum);
	return 0;
}
Esempio n. 6
0
int test(int argc, char* argv[])
{
    if ( argc != 3 ) {
        std::cout << "error."    << std::endl;
        std::cout << "./run <n> <endtimestep>" << std::endl;
        return 1;
    }

    const int n = std::atoi(argv[1]); 
    
    //----------------------------------------------
    // define space domain
    //----------------------------------------------
    const int  D = 2;
    const real l = 1.0;
    const int hn = 3;
    //const int hn = 2;

    //----------------------------------------------
    // define mesh
    //----------------------------------------------
    const Mesh mesh( hn, l, n, l, n );
    //mesh.print_mesh_data();

    //----------------------------------------------
    // define time domain
    //----------------------------------------------
    const real      dt = 0.1 * mesh.delta(0) / 1.0; 
    //const real dt = 1.0e-5;
    const real endtime = 200 * 1.0 / 1.0;
    const int  endstep = static_cast<int>(endtime / dt);
    //const int  endstep = std::atoi(argv[2]);

    real * u = new real[mesh.size()];
    real * v = new real[mesh.size()];
    real * p = new real[mesh.size()];

    real * nu = new real[mesh.size()];
    real * nv = new real[mesh.size()];

    uniform_value(  u, 0.0, mesh );
    uniform_value(  v, 0.0, mesh );
    uniform_value( nu, 0.0, mesh );
    uniform_value( nv, 0.0, mesh );
    uniform_value(  p, 0.0, mesh );

    boundary_update_u_v( u, v, mesh );

    for ( int timestep = 0 ; timestep < endstep ; timestep++ ) {

        const Iter iter = time_marching_RK1_cavity( nu, nv, p, u, v, dt, mesh );

        swap( &nu, &u );
        swap( &nv, &v );
        //const Iter iter = time_marching_RK2_cavity( &u, &v, &p, dt, mesh );

        if ( timestep % 100 == 0 ) {

            real * const div = new real[mesh.size()];
            uniform_value( div, 0.0, mesh );

            calc_div( div, u, v, mesh );

            const std::string div_filename( "div.dat" );
            const std::string div_position( "cell_center" );
            //save_array( D, div, div_filename, div_position, mesh );

            abs_array( div, mesh );
            const real max_abs_div_value = max_from_array( div, mesh );
            delete[] div;
            
            std::cout << timestep / static_cast<real>(endstep) * 100 << " %";
            std::cout << "\t timestep = " << timestep;
            std::cout << "\titer = " << iter.get_iter() << "\terr = " << iter.get_error();
            std::cout << "\tdiv = " << std::scientific << std::showpos << max_abs_div_value << std::endl;
        }
    }

    const std::string u_filename( "u.dat" );
    const std::string u_position( "staggered_x" );
    save_array( D, u, u_filename, u_position, mesh );

    const std::string v_filename( "v.dat" );
    const std::string v_position( "staggered_y" );
    save_array( D, v, v_filename, v_position, mesh );

    const std::string p_filename( "p.dat" );
    const std::string p_position( "cell_center" );
    save_array( D, p, p_filename, p_position, mesh );

    output_result( "result_u.dat", "result_v.dat", u, v, mesh );

    delete[] u;
    delete[] v;
    delete[] p;
    delete[] nu;
    delete[] nv;

    return 0;
}
Esempio n. 7
0
File: IO.cpp Progetto: cran/rtk
double smplVec::calc_eveness(rare_map& cnts){
    //double sha = calc_div(vec,1);
    if (Shannon == -1.f){ vector<double> tm = calc_div(cnts, 1); }
    return(Shannon / log((double)richness));
}
Esempio n. 8
0
File: IO.cpp Progetto: cran/rtk
double smplVec::calc_eveness(const vector<uint>& vec){
    //double sha = calc_div(vec,1);
    if (Shannon == -1.f){ vector<double> tm = calc_div(vec, 1); }
    return(Shannon / log((double)richness));
}
Esempio n. 9
0
/* main */
int main (int argc, char** argv)   
{
    unsigned int calc_mod = 0;
    double idata  = 0;
    double kdata  = 0;
    double result = 0;
    
    if(argc < 2 || argc > 4)
    {
        printf("enter cmd numbers must greater than 2 and less than 5!!!\n\n");
	    printf("命令格式如下所示:\n");
    	printf("./calc_sim 1 xxx xxx      add\n");
    	printf("./calc_sim 2 xxx xxx      sub\n");
    	printf("./calc_sim 3 xxx xxx      multi\n");
    	printf("./calc_sim 4 xxx xxx      div\n");
    	printf("./calc_sim 5              PI\n");
    	printf("./calc_sim 6 xxx          sin\n");
    	printf("./calc_sim 7 xxx          cos\n");
    	printf("./calc_sim 8 xxx          tan\n");
    	printf("./calc_sim 9 xxx          fabs\n");
    	printf("./calc_sim 10 xxx         exp\n");
    	printf("./calc_sim 11 xxx         log\n");
    	printf("./calc_sim 12 xxx         log10\n");
   	    printf("./calc_sim 13 xxx xxx     pow\n");
    	printf("./calc_sim 14             rand\n");

    	return -1;
    }

    argv++;
    calc_mod=atoi(*argv);

    if(calc_mod < 1 || calc_mod > 14){
	     printf("命令格式如下所示:\n");
    	     printf("./calc_sim 1 xxx xxx      add\n");
    	     printf("./calc_sim 2 xxx xxx      sub\n");
    	     printf("./calc_sim 3 xxx xxx      multi\n");
    	     printf("./calc_sim 4 xxx xxx      div\n");
    	     printf("./calc_sim 5              PI\n");
    	     printf("./calc_sim 6 xxx          sin\n");
    	     printf("./calc_sim 7 xxx          cos\n");
    	     printf("./calc_sim 8 xxx          tan\n");
    	     printf("./calc_sim 9 xxx          fabs\n");
    	     printf("./calc_sim 10 xxx         exp\n");
    	     printf("./calc_sim 11 xxx         log\n");
    	     printf("./calc_sim 12 xxx         log10\n");
   	     printf("./calc_sim 13 xxx xxx     pow\n");
    	     printf("./calc_sim 14             rand\n");
	return -1;
	
        }

    
    if(argc==2){
	
	    printf("Enter is mod<%d>  \n", calc_mod);
    
        switch(calc_mod){
            case 5:
                result = calc_PI();
                printf("calc PI result is %f\n",result);
                break;
	        case 14:
                result = calc_rand();
                printf("calc rand result is %f\n",result);
                break;
            default:
                if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
	
        }   
    }

    if(argc==3){

        argv ++;
        idata = atof(*argv);

	    printf("Enter is mod<%d> data_f<%f> \n", calc_mod, idata);

	    switch(calc_mod){
	        case 6:
                result = calc_sin(idata);
                printf("calc sin (%f) result is %f\n",idata,result);
                break;

            case 7:
                result = calc_cos(idata);
                printf("calc cos (%f) result is %f\n",idata,result);
                break;

            case 8:
                result = calc_tan(idata);
                printf("calc tan (%f) result is %f\n",idata,result);
                break;

            case 9:
                result = calc_fabs(idata);
                printf("calc fabs (%f) result is %f\n",idata,result);
                break;

            case 10:
                result = calc_exp(idata);
                printf("calc exp (%f) result is %f\n",idata,result);
                break;

            case 11:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log(idata);
                printf("calc log (%f) result is %f\n",idata,result);
	            break;

            case 12:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log10(idata);
                printf("calc log10 (%f) result is %f\n",idata,result);
                break;
            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
        }
	}

    if(argc==4){

        argv ++;
        idata = atof(*argv);
        argv ++;    
        kdata = atof(*argv);    
    
        printf("Enter is mod<%d> data_f<%f> data_b<%f> \n", calc_mod, idata, kdata);
    
        switch(calc_mod)
        {
    	    case 1:
    	        result = calc_add(idata, kdata);   
                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result);  	    	
    	        break;
    	    	
    	    case 2:
    	        result = calc_sub(idata, kdata);
                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	        break;
    	    
	        case 3:
	            result = calc_multi(idata,kdata);
	            printf("calc multi(%f * %f) result is %f\n",idata,kdata,result);
	            break;
		
	        case 4:
                if(kdata==0){
                    printf("除数不能为0\n");
                    break;}
                else
	            result = calc_div(idata,kdata);
	            printf("calc div(%f / %f) result is %f\n",idata,kdata,result);             
	            break;

            case 13:
                result = calc_pow(idata,kdata);
                printf("calc pow (%f , %f) result is %f\n",idata,kdata,result);
                break;

            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
    	     
    	        break;
        }
    }
    
    return 0;
}
Esempio n. 10
0
int main(int argc,char **argv){
	
	unsigned int calc_mod = 0;
	double idata  = 0;
        double kdata  = 0;
        double result = 0;
	
	

	if(argc <2){
	
	 printf("enter cmd numbers must >= 2!!\n");
	 return -1;
}
       
       if(2 == argc){
  		argv++;	
		calc_mod = atoi(*argv);

	switch(calc_mod){
		case 5:
			printf("Calc PI is %f\n",calc_pi());
			break;

		case 14:
			result = calc_rand();
			printf("Calc rand result is %f\n", result);
			break;
		default:
			printf("Input abnormally\n");
			break;
}
}
	if(3 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
	switch(calc_mod){
		case 6:
			result = calc_sin((double) idata);
			printf("Calc sin (%f) result is %f\n",idata,result);			
				break;
		case 7: 
			result= calc_cos((double) idata);
			printf("Calc cos (%f) result is %f\n",idata,result);
				break;
		case 8:
			if(PI/2 == idata ||-PI/2 == idata){
				printf("Input abnormally\n");
				break; 			
			}
			result = calc_tan((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);				
				break;
		case 9:
			result = calc_fabs((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);
				break;
		case 10:
			result = calc_exp((double) idata);
			printf("Calc exp (%f) result is %f\n",idata,result);
				break;
		case 11:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_ln((double) idata);
			printf("Calc ln (%f) result is %f\n",idata,result);
				break;
		case 12:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_log10((double) idata);
			printf("Calc log10 (%f) result is %f\n",idata,result);
				break;	
		default:
			printf("Input abnormally\n");
				break;
}
}

	if(4 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
		argv++;
  		kdata = atof(*argv); 
	switch(calc_mod){
		case 1:
			result = calc_add(idata, kdata);   
	                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result); 
			break;
		case 2:
  			result = calc_sub(idata, kdata);
 	                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	 			break;
		case 3: 
			result = calc_mul(idata,kdata);
			printf("Calc mul (%f * %f) result is %f\n", idata, kdata, result);
				break;
		case 4:
			if(0 == kdata){
				printf("Input abnormaly\n");
				break;
			}	
			result = calc_div(idata,kdata);
			printf("Calc div (%f / %f) result is %f\n", idata, kdata, result);
		case 13:
			result = calc_pow(idata,kdata);
			printf("Calc pow (%f / %f) result is %f\n", idata, kdata, result);
				break;
		default:
			printf("Input abnormally\n");
				break;
} 
}
  
return 0;

}
Esempio n. 11
0
static int vbfs_prepare_superblock()
{
	__u32 extend_size = 0;
	__u64 disk_size = 0;

	__u32 extend_count = 0;
	__u32 bad_max_count = 0;
	__u32 bad_extend_count = 0;
	__u32 bm_capacity = 0;
	__u32 bitmap_cnt = 0;

	extend_size = vbfs_params.extend_size_kb * 1024;
	disk_size = vbfs_params.total_size;

	printf("disk size %llu, extend size %u\n", disk_size, extend_size);

	/* extend_count */
	extend_count = disk_size / extend_size;

	printf("extend count %u\n", extend_count);

	/* bad extend (record bad extend number)*/
	bad_max_count = calc_div(extend_count, vbfs_params.bad_ratio);
	bad_extend_count = calc_div(bad_max_count, extend_size / 8);

	printf("bad use %u extends\n", bad_extend_count);

	/* bitmap */
	bm_capacity = (extend_size - BITMAP_META_SIZE) * 8;
	bitmap_cnt = calc_div(extend_count, bm_capacity);

	memset(&vbfs_superblk, 0, sizeof(vbfs_superblk));

	/* 
 	 * generate superblock 
 	 * */
	vbfs_superblk.s_magic = VBFS_SUPER_MAGIC;
	vbfs_superblk.s_extend_size = extend_size;
	vbfs_superblk.s_extend_count = extend_count;
	vbfs_superblk.s_file_idx_len = vbfs_params.file_idx_len * 1024;

	/* bad extend */
	vbfs_superblk.bad_count = 0;
	vbfs_superblk.bad_extend_count = bad_extend_count;
	vbfs_superblk.bad_extend_current = 0;
	/* first extend is used by superblock*/
	vbfs_superblk.bad_extend_offset = 1;

	/* bitmap */
	vbfs_superblk.bitmap_count = bitmap_cnt;
	vbfs_superblk.bitmap_offset = bad_extend_count + 1;
	vbfs_superblk.bitmap_current = 0;

	vbfs_superblk.s_ctime = time(NULL);
	vbfs_superblk.s_mount_time = 0;
	/* 0 represent clean, 1 unclean */
	vbfs_superblk.s_state = 0;

	uuid_generate(vbfs_superblk.uuid);

	return 0;
}