Função padrão sign (signum, sgn) em C++: ela existe e como implementá-la?
Olá, colegas! Estou escrevendo um pequeno programa em C++ para análise numérica e precisei de uma função que retorna o sinal de um número: -1 para negativos, 0 para zero e 1 para positivos. Em matemática, isso é chamado de signum ou sgn.
Eu vasculhei a documentação de e , mas não encontrei nada parecido. Em Python existe numpy.sign(), em MATLAB existe sign(), e em C++ — silêncio. Será que na biblioteca padrão de C++ não tem algo tão elementar?
Aqui está um exemplo do que quero fazer:
```cpp
#include
#include // talvez aqui?
int main() {
double x = -5.7;
// Gostaria de escrever algo como:
// int s = sign(x);
// Mas o compilador reclama que sign não foi declarado.
// Tenho que usar gambiarras:
int s;
if (x > 0) s = 1;
else if (x < 0) s = -1;
else s = 0;
std::cout << "sign(" << x << ") = " << s << std::endl;
return 0;
}
```
Isso funciona, mas parece horrível. Para inteiros, posso usar um truque