标题: [讨论]用批处理开方倒数的可行性讨论
[打印本页]
作者: electronixtar
时间: 2006-10-15 09:25
标题: [讨论]用批处理开方倒数的可行性讨论
Quake3引擎里用了这么一种火星算法:
//
// 计算参数x的平方根的倒数
//
float InvSqrt (float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i >> 1); // 计算第一个近似根
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x); // 牛顿迭代法
return x;
}
个人觉得 set /a 支持位运算,应该可以实现开方倒数的
作者: namejm
时间: 2006-10-15 09:40
在 SET 命令中添加了两个新命令行开关:
SET /A expression
SET /P variable=
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
- 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
微软的解释一直是语焉不详,除了算术运算符和赋值符号能熟练使用外,我一直没搞懂其余的究竟怎么使用,哪位使用过的请解释一下。
CMD下不能直接计算小数乘法,还是得按位来操作。如果能理解以上的 set /a 符号是如何使用的话,开方的问题估计会迎刃而解。
作者: 不得不爱
时间: 2006-10-15 11:08
开方可以使用杨辉三角来解
作者: vkill
时间: 2006-10-16 00:08
用 set /a 太麻烦了,除法反正是麻烦
Last edited by he200377 on 2006-10-16 at 00:34 ]