有没有一种简单的方法,可以在对一个值进行平方后保留符号。我目前有以下代码:
float signed_square(float x) {
if (x > 0) {
return x * x;
} else {
return -(x * x);
}
}
正如我在评论中所说:
float signed_square(float x){
return x * fabs(x);
}
fabs()
还是 fabsf()
呢?abs()
不是整数函数吗? - Jonathan LefflerC++
STL 放入了我的 C
思维模式中。 - druckermanlyfabsf
。 - ouahC99提供double copysign(double x, double y)
copysign
函数生成一个具有x
的绝对值和y
的符号的值。
float signed_square(float x) {
return copysignf(x*x, x);
}
x*x
并为其生成高效的代码。考虑尝试各种方法并查看您获得的性能。 - chux - Reinstate Monica
x * abs(x)
。 - druckermanlyfabs
在我看来并不能改进它。 - Keith Thompson