⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intsin.c

📁 是codic算法实现Sin的浮点C程序
💻 C
字号:

#include "headDefine.h"
//Use the Sine functoid () to return the sine of an angle.
//producing value of sine  by accessing the table of sine
  int intSin(unsigned long Theta)//Theta is expressed by 32 bit
{

	int thetaShort;    //thetaShort is expressed by 10 bit
	int sineResult;    //the value of Sine(Theta).
    int sinTable[SHORT_PI /2]; //defining a table of sine that include SHORT_PI /2 numbers. 
    int thetaQuadrant; // the Theta's Quadrant
    //making a accessing table of sine
	//The value 0 is sineResult of floor(sin(((pi)*0)/2^8)*2^8) in matlab
	sinTable[0] = 0;
    //The value 3 is sineResult of floor(sin(((pi)*1)/2^8)*2^8) in matlab
	sinTable[1] = 3;
    //The value 6 is sineResult of floor(sin(((pi)*2)/2^87)*2^8) in matlab
	sinTable[2] = 6;
	sinTable[3] = 9;
	sinTable[4] = 12;
	sinTable[5] = 15;
	sinTable[6] = 18;
	sinTable[7] = 21;
	sinTable[8] = 25;
	sinTable[9] = 28;
	sinTable[10] = 31;
	sinTable[11] = 34;
	sinTable[12] = 37;
	sinTable[13] = 40;
	sinTable[14] = 43;
	sinTable[15] = 46;
	sinTable[16] = 49;
	sinTable[17] = 53;
	sinTable[18] = 56;
	sinTable[19] = 59;
	sinTable[20] = 62;
	sinTable[21] = 65;
	sinTable[22] = 68;
	sinTable[23] = 71;
	sinTable[24] = 74;
	sinTable[25] = 77;
	sinTable[26] = 80;
	sinTable[27] = 83;
	sinTable[28] = 86;
	sinTable[29] = 89;
	sinTable[30] = 92;
	sinTable[31] = 95;
	sinTable[32] = 97;
	sinTable[33] = 100;
	sinTable[34] = 103;
	sinTable[35] = 106;
	sinTable[36] = 109;
	sinTable[37] = 112;
	sinTable[38] = 115;
	sinTable[39] = 117;
	sinTable[40] = 120;
	sinTable[41] = 123;
	sinTable[42] = 126;
	sinTable[43] = 128;
	sinTable[44] = 131;
	sinTable[45] = 134;
	sinTable[46] = 136;
	sinTable[47] = 139;
	sinTable[48] = 142;
	sinTable[49] = 144;
	sinTable[50] = 147;
	sinTable[51] = 149;
	sinTable[52] = 152;
	sinTable[53] = 155;
	sinTable[54] = 157;
	sinTable[55] = 159;
	sinTable[56] = 162;
	sinTable[57] = 164;
	sinTable[58] = 167;
	sinTable[59] = 169;
	sinTable[60] = 171;
	sinTable[61] = 174;
	sinTable[62] = 176;
	sinTable[63] = 178;
	sinTable[64] = 181;
	sinTable[65] = 183;
	sinTable[66] = 185;
	sinTable[67] = 187;
	sinTable[68] = 189;
	sinTable[69] = 191;
	sinTable[70] = 193;
	sinTable[71] = 195;
	sinTable[72] = 197;
	sinTable[73] = 199;
	sinTable[74] = 201;
	sinTable[75] = 203;
	sinTable[76] = 205;
	sinTable[77] = 207;
	sinTable[78] = 209;
	sinTable[79] = 211;
	sinTable[80] = 212;
	sinTable[81] = 214;
	sinTable[82] = 216;
	sinTable[83] = 217;
	sinTable[84] = 219;
	sinTable[85] = 221;
	sinTable[86] = 222;
	sinTable[87] = 224;
	sinTable[88] = 225;
	sinTable[89] = 227;
	sinTable[90] = 228;
	sinTable[91] = 230;
	sinTable[92] = 231;
	sinTable[93] = 232;
	sinTable[94] = 234;
	sinTable[95] = 235;
	sinTable[96] = 236;
	sinTable[97] = 237;
	sinTable[98] = 238;
	sinTable[99] = 239;
	sinTable[100] = 241;
	sinTable[101] = 242;
	sinTable[102] = 243;
	sinTable[103] = 244;
	sinTable[104] = 244;
	sinTable[105] = 245;
	sinTable[106] = 246;
	sinTable[107] = 247;
	sinTable[108] = 248;
	sinTable[109] = 249;
	sinTable[110] = 249;
	sinTable[111] = 250;
	sinTable[112] = 251;
	sinTable[113] = 251;
	sinTable[114] = 252;
	sinTable[115] = 252;
	sinTable[116] = 253;
	sinTable[117] = 253;
	sinTable[118] = 254;
	sinTable[119] = 254;
	sinTable[120] = 254;
	sinTable[121] = 255;
	sinTable[122] = 255;
	sinTable[123] = 255;
	sinTable[124] = 255;
	sinTable[125] = 255;
	sinTable[126] = 255;
	sinTable[127] = 255;



  //cuting the back 23 bit from Theta of 32 bit.(BACK_BIT=23)
     thetaShort=Theta >> BACK_BIT;
  //judging which Quadrant the Theta is
	if(thetaShort >= 0 && thetaShort < SHORT_PI /2)                 {
		thetaQuadrant=1; 
	}else if(thetaShort >= SHORT_PI /2    && thetaShort < SHORT_PI )    {
		thetaQuadrant=2;
	}else if(thetaShort >= SHORT_PI       && thetaShort < SHORT_PI * 3/2){
		thetaQuadrant=3;
	}else if(thetaShort >= SHORT_PI * 3/2 && thetaShort <SHORT_PI * 2)   {
		thetaQuadrant=4;
	}
  
	switch (thetaQuadrant)   {
        case 1: sineResult = sinTable[thetaShort];							break;
        case 2: sineResult = sinTable[(SHORT_PI  - 1) - thetaShort];		break;
        case 3: sineResult = - sinTable[thetaShort - SHORT_PI];				break;
        case 4: sineResult = - sinTable[(SHORT_PI  * 2 - 1) - thetaShort];	break;
		default: sineResult = 0;
	} 
         
    
	return(sineResult);
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -