- int32_t fxexp(int32_t x) {
- int32_t t,y;
- y=0x00010000;
- t=x-0x58b91;if(t>=0) x=t,y<<=8;
- t=x-0x2c5c8;if(t>=0) x=t,y<<=4;
- t=x-0x162e4;if(t>=0) x=t,y<<=2;
- t=x-0x0b172;if(t>=0) x=t,y<<=1;
- t=x-0x067cd;if(t>=0) x=t,y+=y>>1;
- t=x-0x03920;if(t>=0) x=t,y+=y>>2;
- t=x-0x01e27;if(t>=0) x=t,y+=y>>3;
- t=x-0x00f85;if(t>=0) x=t,y+=y>>4;
- t=x-0x007e1;if(t>=0) x=t,y+=y>>5;
- t=x-0x003f8;if(t>=0) x=t,y+=y>>6;
- t=x-0x001fe;if(t>=0) x=t,y+=y>>7;
- if(x&0x100) y+=y>>8;
- if(x&0x080) y+=y>>9;
- if(x&0x040) y+=y>>10;
- if(x&0x020) y+=y>>11;
- if(x&0x010) y+=y>>12;
- if(x&0x008) y+=y>>13;
- if(x&0x004) y+=y>>14;
- if(x&0x002) y+=y>>15;
- if(x&0x001) y+=y>>16;
- return y;
- }
复制代码
给你贴个定点数exp()算法吧,32位,小数点在16位,也就是说0x10000表示1,0x7fffffff表示32768。函数的入口和出口都是这种定点格式。 |