std:: sin, std:: sinf, std:: sinl
|
Definido en el encabezado
<cmath>
|
||
| (1) | ||
|
float
sin
(
float
num
)
;
double
sin
(
double
num
)
;
|
(hasta C++23) | |
|
/*floating-point-type*/
sin ( /*floating-point-type*/ num ) ; |
(desde C++23)
(constexpr desde C++26) |
|
|
float
sinf
(
float
num
)
;
|
(2) |
(desde C++11)
(constexpr desde C++26) |
|
long
double
sinl
(
long
double
num
)
;
|
(3) |
(desde C++11)
(constexpr desde C++26) |
|
Sobrecarga SIMD
(desde C++26)
|
||
|
Definido en el encabezado
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (desde C++26) |
|
Sobrecargas adicionales
(desde C++11)
|
||
|
Definido en el encabezado
<cmath>
|
||
|
template
<
class
Integer
>
double sin ( Integer num ) ; |
(A) | (constexpr desde C++26) |
std::sin
para todos los tipos de punto flotante sin calificación cv como tipo del parámetro.
(since C++23)
|
S)
La sobrecarga SIMD realiza un
std::sin
elemento por elemento en
v_num
.
|
(desde C++26) |
|
A)
Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como
double
.
|
(since C++11) |
Contenidos |
Parámetros
| num | - | valor de punto flotante o entero que representa el ángulo en radianes |
Valor de retorno
Si no ocurren errores, se devuelve el seno de
num
(
sin(num)
) en el rango
[
-
1
,
+
1
]
.
|
El resultado puede tener poca o ninguna significancia si la magnitud de num es grande. |
(until C++11) |
Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).
Si ocurre un error de rango debido a desbordamiento inferior, se devuelve el resultado correcto (después del redondeo).
Manejo de errores
Los errores se reportan como se especifica en math_errhandling .
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- si el argumento es ±0, se devuelve sin modificación.
- si el argumento es ±∞, se devuelve NaN y FE_INVALID se activa.
- si el argumento es NaN, se devuelve NaN.
Notas
El caso donde el argumento es infinito no está especificado como un error de dominio en C (a lo cual C++ se remite), pero está definido como un error de dominio en POSIX .
POSIX también especifica que en caso de subdesbordamiento, num se devuelve sin modificar, y si esto no es compatible, se devuelve un valor definido por la implementación no mayor que DBL_MIN , FLT_MIN , y LDBL_MIN .
Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: sin ( num ) tenga el mismo efecto que std :: sin ( static_cast < double > ( num ) ) .
Ejemplo
#include <cerrno> #include <cfenv> #include <cmath> #include <iomanip> #include <iostream> // #pragma STDC FENV_ACCESS ON const double pi = std::acos(-1); // or std::numbers::pi since C++20 constexpr double your_sin(double x) { double sin{0}, pow{x}; for (auto fac{1LLU}, n{1ULL}; n != 20; fac *= ++n, pow *= x) if (n & 1) sin += (n & 2 ? -pow : pow) / fac; return sin; } int main() { std::cout << std::setprecision(10) << std::showpos << "Uso típico:\n" << "std::sin(pi/6) = " << std::sin(pi / 6) << '\n' << "your sin(pi/6) = " << your_sin(pi / 6) << '\n' << "std::sin(pi/2) = " << std::sin(pi / 2) << '\n' << "your sin(pi/2) = " << your_sin(pi / 2) << '\n' << "std::sin(-3*pi/4) = " << std::sin(-3 * pi / 4) << '\n' << "your sin(-3*pi/4) = " << your_sin(-3 * pi / 4) << '\n' << "Valores especiales:\n" << "std::sin(+0) = " << std::sin(0.0) << '\n' << "std::sin(-0) = " << std::sin(-0.0) << '\n'; // manejo de errores std::feclearexcept(FE_ALL_EXCEPT); std::cout << "std::sin(INFINITY) = " << std::sin(INFINITY) << '\n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID generada\n"; }
Salida posible:
Uso típico:
std::sin(pi/6) = +0.5
your sin(pi/6) = +0.5
std::sin(pi/2) = +1
your sin(pi/2) = +1
std::sin(-3*pi/4) = -0.7071067812
your sin(-3*pi/4) = -0.7071067812
Valores especiales:
std::sin(+0) = +0
std::sin(-0) = -0
std::sin(INFINITY) = -nan
FE_INVALID generada
Véase también
|
(C++11)
(C++11)
|
calcula el coseno (
cos(x)
)
(función) |
|
(C++11)
(C++11)
|
calcula la tangente (
tan(x)
)
(función) |
|
(C++11)
(C++11)
|
calcula el arco seno (
arcsin(x)
)
(función) |
|
calcula el seno de un número complejo (
sin(z)
)
(plantilla de función) |
|
|
aplica la función
std::sin
a cada elemento del valarray
(plantilla de función) |
|
|
Documentación de C
para
sin
|
|