抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

有意思的代码

记录一下平时遇到的有意思的代码,不定期更新

在注释中的立方体

   001------101
/ | / |
/ | / |
011------111 |
| 000--|--100
| / | /
| / | /
010------110

消除未使用变量

有人会认为C++的警告(Warming)等同于报错,于是会通过一些宏关掉一些警告

将变量转化为void类型,相当于明确告诉编译器我不打算使用这个变量,消除“变量未使用”的警告

#define UNUSED(x) (void)(x)

int main(){
int x;
UNUSED(x); // 不使用x
...
return 0;
}

快速Acos

Acos是一个常见的三角函数,其作用是将[-1, 1]的值转换为所对应的弧度

这个是一个使用Eberly的一阶多项式逼近计算反余弦函数

// max absolute error 9.0x10^-3
// Eberly's polynomial degree 1 - respect bounds
// 4 VGPR, 12 FR (8 FR, 1 QR), 1 scalar
// input [-1, 1] and output [0, PI]
float acosFast(float inX)
{
float x = abs(inX);
float res = -0.156583f * x + (0.5 * PI);
res *= sqrt(1.0f - x);
return (inX >= 0) ? res : PI - res;
}

评论