Avatar ·

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