Example #1
0
FLOAT sqrt(FLOAT x) {
	FLOAT dt, t = int2F(2);

	do {
		dt = F_div_int((F_div_F(x, t) - t), 2);
		t += dt;
	} while(Fabs(dt) > f2F(1e-4));

	return t;
}
Example #2
0
FLOAT pow(FLOAT x, FLOAT y) {
	/* we only compute x^0.333 */
	FLOAT t2, dt, t = int2F(2);

	do {
		t2 = F_mul_F(t, t);
		dt = (F_div_F(x, t2) - t) / 3;
		t += dt;
	} while(Fabs(dt) > f2F(1e-4));

	return t;
}
Example #3
0
/* 在屏幕上创建一个新的字母 */
void
create_new_letter(void) {
	if (head == NULL) {
		head = fly_new(); /* 当前没有任何字母,创建新链表 */
	} else {
		fly_t now = fly_new();
		fly_insert(NULL, head, now); /* 插入到链表的头部 */
		head = now;
	}
	/* 字母、初始位置、掉落速度均为随机设定 */
	head->x = 0;
	head->y = rand() % (SCR_WIDTH / 8 - 2) * 8 + 8;
	head->v = F_div_F(int2F(rand() % 1000), int2F(2000)) + f2F(0.5);
	head->text = rand() % 26;
	release_key(head->text); /* 清除过往的按键 */
}
Example #4
0
FLOAT f(FLOAT x) { 
	return F_div_F(int2F(1),int2F(1) + F_mul_int(F_mul_F(x,x),25));
	/* f(x) = 1/(1+25x^2) */
/*	FLOAT a = int2F(1);
	FLOAT b = F_mul_F(x,x);
	FLOAT c = F_mul_int(b ,25);
	FLOAT d = int2F(1) + c;*/
//	nemu_assert(x == f2F(0.8));
//	nemu_assert(b < f2F(0));
/*
    a ++ ;
	a -- ;
	b ++ ;
	b -- ;	
	c ++ ;
	c -- ;
	d ++ ;
	d -- ;
	return F_div_F(a,d);*/
}
Example #5
0
FLOAT f(FLOAT x) { 
	/* f(x) = 1/(1+25x^2) */
	return F_div_F(int2F(1), int2F(1) + F_mul_int(F_mul_F(x, x), 25));
}