📄 fsqrt.cpp
字号:
#include "FSqrt.h"
#include "Sysdef.h"
static const int SqrtTab[256+1] = {
0x0000,0x1000,0x16a0,0x1bb6,0x2000,0x23c6,0x2731,0x2a54,0x2d41,0x3000,0x3298,0x3510,0x376c,0x39b0,0x3bdd,0x3df7,
0x4000,0x41f8,0x43e1,0x45be,0x478d,0x4952,0x4b0b,0x4cbb,0x4e62,0x5000,0x5195,0x5323,0x54a9,0x5629,0x57a2,0x5915,
0x5a82,0x5be9,0x5d4b,0x5ea8,0x6000,0x6152,0x62a1,0x63eb,0x6531,0x6673,0x67b1,0x68eb,0x6a21,0x6b54,0x6c84,0x6db0,
0x6ed9,0x7000,0x7123,0x7243,0x7360,0x747b,0x7593,0x76a8,0x77bb,0x78cc,0x79da,0x7ae5,0x7bef,0x7cf6,0x7dfb,0x7efe,
0x8000,0x80ff,0x81fc,0x82f7,0x83f0,0x84e7,0x85dd,0x86d1,0x87c3,0x88b4,0x89a3,0x8a90,0x8b7c,0x8c66,0x8d4e,0x8e36,
0x8f1b,0x9000,0x90e2,0x91c4,0x92a4,0x9383,0x9460,0x953c,0x9617,0x96f1,0x97ca,0x98a1,0x9977,0x9a4c,0x9b20,0x9bf2,
0x9cc4,0x9d94,0x9e64,0x9f32,0xa000,0xa0cc,0xa197,0xa261,0xa32b,0xa3f3,0xa4ba,0xa581,0xa646,0xa70b,0xa7cf,0xa892,
0xa953,0xaa15,0xaad5,0xab94,0xac53,0xad11,0xadcd,0xae8a,0xaf45,0xb000,0xb0b9,0xb172,0xb22b,0xb2e2,0xb399,0xb44f,
0xb504,0xb5b9,0xb66d,0xb720,0xb7d3,0xb885,0xb936,0xb9e7,0xba97,0xbb46,0xbbf5,0xbca3,0xbd50,0xbdfd,0xbea9,0xbf55,
0xc000,0xc0aa,0xc154,0xc1fd,0xc2a5,0xc34e,0xc3f5,0xc49c,0xc542,0xc5e8,0xc68e,0xc732,0xc7d7,0xc87a,0xc91d,0xc9c0,
0xca62,0xcb04,0xcba5,0xcc46,0xcce6,0xcd86,0xce25,0xcec3,0xcf62,0xd000,0xd09d,0xd13a,0xd1d6,0xd272,0xd30d,0xd3a8,
0xd443,0xd4dd,0xd577,0xd610,0xd6a9,0xd742,0xd7da,0xd871,0xd908,0xd99f,0xda35,0xdacb,0xdb61,0xdbf6,0xdc8b,0xdd1f,
0xddb3,0xde47,0xdeda,0xdf6d,0xe000,0xe092,0xe123,0xe1b5,0xe246,0xe2d6,0xe367,0xe3f7,0xe486,0xe515,0xe5a4,0xe633,
0xe6c1,0xe74f,0xe7dc,0xe869,0xe8f6,0xe983,0xea0f,0xea9b,0xeb26,0xebb1,0xec3c,0xecc7,0xed51,0xeddb,0xee65,0xeeee,
0xef77,0xf000,0xf088,0xf110,0xf198,0xf21f,0xf2a6,0xf32d,0xf3b4,0xf43a,0xf4c0,0xf546,0xf5cb,0xf651,0xf6d6,0xf75a,
0xf7de,0xf863,0xf8e6,0xf96a,0xf9ed,0xfa70,0xfaf3,0xfb75,0xfbf7,0xfc79,0xfcfb,0xfd7c,0xfdfd,0xfe7e,0xfeff,0xff7f,
0x10000};
// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
int FSqrt(unsigned int p, int& shift)
{
unsigned int i, j, k;
if (p == 0)
return 0;
shift = 0;
while (!(p & 0xff000000)) {
p <<= 8;
shift += 4;
}
i = p>>24;
j = SqrtTab[i+1];
i = SqrtTab[i];
while (j > i+1) {
k = (i+j) >> 1;
if (k*k <= p)
i = k;
else
j = k;
}
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -