//-------------------------------------------------------- /* 株式会社数理設計研究所 Hal.T PPC 複素数の絶対値 ±32768まで計算できる 2009/12/21 */ //-------------------------------------------------------- #define debug 1 const int FIX1=1000; //-------------------------------------------------------- int abs_int_tbl[FIX1+1]; int abs_int_init(void) { int n; for(n=0; n<=FIX1; n++) { abs_int_tbl[n] = (int)sqrt(FIX1*FIX1 + n*n); } } //-------------------------------------------------------- int abs_int(int x, int y) { int k, r; if(x==0 && y==0) return 0; //両方ともゼロならゼロ x = abs(x); y=abs(y); if(x > y) { k = (FIX1 * y)/x; //k<=FIX1 r = abs_int_tbl[k]; r = (r*x)/FIX1; } else { k = (FIX1 * x)/y; //k<=FIX1 r = abs_int_tbl[k]; r = (r*y)/FIX1; } return r; } //-------------------------------------------------------- //ここから下は試験用 #if debug #include main() { int X, Y, A; int n, nm; nm=10000000; abs_int_init(); //初期化 for(n=0; n