Skip to content
Snippets Groups Projects
Commit c3d35bdc authored by root's avatar root
Browse files

updated test.c

parent 24c62c31
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -18,11 +18,11 @@ void fx_sub(fx_s4716 a, fx_s4716 b){
}
void fx_mul(fx_s4716 a, fx_s4716 b){
double mul=FX_S4716_DOUBLE_MUL(a,b);
printf("fx mul : %.16lf\n",mul);
printf("fx mul : %.16lf\n",DOUBLE_TO_FX(mul));
}
void fx_div(fx_s4716 a, fx_s4716 b){
double div=FX_S4716_DOUBLE_DIV(a,b);
printf("fx div : %.16lf\n",div);
printf("fx div : %.16lf\n",DOUBLE_TO_FX(div));
}
void fx_pi(){
printf("pi : %.16lf\n",FX_PI);
......
......@@ -13,31 +13,31 @@ long long fx_to_longlong(fx_s4716 a){
fx_s4716 longlong_to_fx(long long a){
return a << 16;
}
fx_s4716 fx_s4716_longlong_mul(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_mul1(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_MUL1(a, b);
return result;
return longlong_to_fx(result);
}
fx_s4716 fx_s4716_longlong_mul1(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_mul2(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_MUL2(a, b);
return result;
return longlong_to_fx(result);
}
fx_s4716 fx_s4716_longlong_mul2(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_mul3(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_MUL3(a, b);
return result;
return longlong_to_fx(result);
}
fx_s4716 fx_s4716_longlong_div(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_div1(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_DIV1(a, b);
return result;
return fx_to_longlong(result);
}
fx_s4716 fx_s4716_longlong_div1(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_div2(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_DIV2(a, b);
return result;
return fx_to_longlong(result);
}
fx_s4716 fx_s4716_longlong_div2(fx_s4716 a, fx_s4716 b){
fx_s4716 fx_s4716_longlong_div3(fx_s4716 a, fx_s4716 b){
long long result=FX_S4716_LONGLONG_DIV3(a, b);
return result;
return fx_to_longlong(result);
}
fx_s4716 fx_s4716_longlong_sin(fx_s4716 a){
long long result=sinTable[a];
return result;
return fx_to_longlong(result);
}
#define FX_S4716_LONGLONG_MUL(a, b) (((a) * (b)) >> 16)
#define FX_S4716_LONGLONG_MUL1(a, b) ((a >> 8) * (b >> 8))
#define FX_S4716_LONGLONG_MUL2(a, b) (((a >> 4) * (b >> 4)) >> 8)
typedef long long fx_s4716;
#define FX_S4716_LONGLONG_DIV(a, b) ((a << 16) / (b))
#define FX_S4716_LONGLONG_DIV1(a, b) (((a << 8) / (b)) << 8)
#define FX_S4716_LONGLONG_DIV2(a, b) (((a << 4) / (b >> 4)) << 8)
#define FX_S4716_LONGLONG_MUL1(a, b) (((a) * (b)) >> 16)
#define FX_S4716_LONGLONG_MUL2(a, b) ((a >> 8) * (b >> 8))
#define FX_S4716_LONGLONG_MUL3(a, b) (((a >> 4) * (b >> 4)) >> 8)
#define FX_S4716_LONGLONG_DIV1(a, b) ((a << 16) / (b))
#define FX_S4716_LONGLONG_DIV2(a, b) (((a << 8) / (b)) << 8)
#define FX_S4716_LONGLONG_DIV3(a, b) (((a << 4) / (b >> 4)) << 8)
......@@ -13,6 +13,16 @@ extern void fx_inv_pi();
extern void fx_sqrt(fx_s4716 a);
extern void fx_pow(fx_s4716 a);
extern void fx_sine(fx_s4716 a);
extern fx_s4716 longlong_to_fx(long long a);
extern long long fx_to_longlong(fx_s4716 a);
extern fx_s4716 fx_s4716_longlong_mul1(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_mul2(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_mul3(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_div1(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_div2(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_div3(fx_s4716 a, fx_s4716 b);
extern fx_s4716 fx_s4716_longlong_sin(fx_s4716 a);
int main()
{
......@@ -33,76 +43,76 @@ int main()
else if(option == 1)
{
printf(" OPTION \n");
printf("0. add \n");
printf("1. subtract \n");
printf("2. multiply \n");
printf("3. divide \n");
printf("4. square root \n");
printf("5. power \n");
printf("6. print PI \n");
printf("7. print inverse PI \n");
printf("8. fix to double \n");
printf("9. double to fix \n");
printf("10 get sine value \n");
printf("11. quit\n\n");
printf("1. add \n");
printf("2. subtract \n");
printf("3. multiply \n");
printf("4. divide \n");
printf("5. square root \n");
printf("6. power \n");
printf("7. print PI \n");
printf("8. print inverse PI \n");
printf("9. fix to double \n");
printf("10. double to fix \n");
printf("11. get sine value \n");
printf("0. quit\n\n");
while (1) {
printf("Type option : ");
fflush(stdout);
scanf("%d", &option);
switch (option)
{
case 0:
case 1:
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
fx_add(a, b);
break;
case 1:
case 2:
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
fx_sub(a, b);
break;
case 2:
case 3:
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
fx_mul(a, b);
break;
case 3:
case 4:
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
fx_div(a, b);
break;
case 4:
case 5:
printf("Input one number : "); fflush(stdout);
scanf("%lld", &a);
fx_sqrt(a);
break;
case 5:
case 6:
printf("Input one number : "); fflush(stdout);
scanf("%lld", &a);
fx_pow(a);
break;
case 6:
case 7:
fx_pi();
break;
case 7:
case 8:
fx_inv_pi();
break;
case 8:
case 9:
printf("Input fix number : "); fflush(stdout);
scanf("%lld", &a);
fx_to_double(a);
break;
case 9:
case 10:
printf("Input double number : "); fflush(stdout);
scanf("%lf", &c);
double_to_fx(c);
break;
case 10:
case 11:
printf("Input one number : "); fflush(stdout);
scanf("%lld", &a);
fx_sine(a);
break;
case 11:
case 0:
quit = 1;
default:
break;
......@@ -131,21 +141,22 @@ int main()
case 1 :
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
t = fx_s4716_longlong_mul(a,b);
tt = fx_s4716_longlong_mul1(a,b);
ttt = fx_s4716_longlong_mul2(a,b);
t = fx_s4716_longlong_mul1(a,b);
tt = fx_s4716_longlong_mul2(a,b);
ttt = fx_s4716_longlong_mul3(a,b);
printf("%lld %lld %lld\n", t, tt, ttt);
break;
case 2 :
printf("Input two number : "); fflush(stdout);
scanf("%lld %lld", &a, &b);
t = fx_s4716_longlong_div(a,b);
tt = fx_s4716_longlong_div1(a,b);
ttt = fx_s4716_longlong_div2(a,b);
t = fx_s4716_longlong_div1(a,b);
tt = fx_s4716_longlong_div2(a,b);
ttt = fx_s4716_longlong_div3(a,b);
printf("%lld %lld %lld\n", t, tt, ttt);
break;
}
}
}
else {}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment