import struct
def fast_inverse_sqrt(x):
i = struct.unpack('<I', struct.pack('<f', x))[0]
i = 0x5f3759df - (i >> 1)
y = struct.unpack('<f', struct.pack('<I', i))[0]
# 牛顿迭代一次提高精度
y = y * (1.5 - 0.5 * x * y * y)
return y
def fast_sqrt_quake(x):
return x * fast_inverse_sqrt(x)
# 测试
num = 9
result = fast_sqrt_quake(num)
print(f"Quake III算法计算的平方根: {result}") |