sincos
同时计算实数的正弦值和余弦值。
接口定义
C interface:
void sincosf(float x, float* sinx, float* cosx);
void sincos(double x, double* sinx, double* cosx);
Fortran interface:
CALL SINCOSF(X, SINX, COSX);
CALL SINCOS(X, SINX, COSX);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
x |
|
表示弧度角的浮点值。 |
输入 |
sinx |
|
输出指针sinx。 若为空指针,会出现未定义的行为,接口不会对输出指针进行校验。 |
输出 |
cosx |
|
输出指针cosx。 若为空指针,会出现未定义的行为,接口不会对输出指针进行校验。 |
输出 |
返回值
- 返回弧度角x的正选数值sinx和余弦函数值cosx,sinx ∈ [-1, +1],cosx ∈ [-1, +1]。
- 输入+0,返回正弦值+0和余弦值+1。
- 输入-0,返回正弦值-0和余弦值+1。
- 输入±∞,均返回nan。
- 输入nan,均返回nan。
依赖
#include "km.h"
示例
C interface:
double pi = acos(-1); // typical usage double a = pi/6, b = 1.0, c = -3*pi/4, d = pi/3; // special handling double e = INFINITY, f = -INFINITY, g = NAN; // print result double sinx, cosx; sincos(a, &sinx, &cosx); printf("sin(pi/6) = %.15f, cos(pi/6) = %.15f\n", sinx, cosx); sincos(b, &sinx,&cosx); printf("sin(1.0) = %.15f, cos1.0) = %.15f\n", sinx, cosx); sincos(c, &sinx,&cosx); printf("sin(-3*pi/4) = %.15f, cos(-3*pi/4) = %.15f\n", sinx, cosx); sincos(d, &sinx,&cosx); printf("sin(pi/3) = %.15f, cos(pi/3) = %.15f\n", sinx, cosx); sincos(e, &sinx,&cosx); printf("sin(INFINITY) = %.15f, cos(INFINITY) = %.15f\n", sinx, cosx); sincos(f, &sinx,&cosx); printf("sin(-INFINITY) = %.15f, cos(-INFINITY) = %.15f\n", sinx, cosx); sincos(g, &sinx,&cosx); printf("sin(NAN) = %.15f, cos(NAN) = %.15f\n", sinx, cosx); /* * sin(pi/6) = 0.500000000000000, cos(pi/6) = 0.866025403784439 * sin(1.0) = 0.841470984807897, cos(1.0) = 0.540302305868140 * sin(-3*pi/4) = -0.707106781186548, cos(-3*pi/4) = -0.707106781186547 * sin(pi/3) = 0.866025403784439, cos(pi/3) = 0.500000000000000 * sin(INFINITY) = -nan, cos(INFINITY) = nan * sin(-INFINITY) = -nan, cos(-INFINITY) = nan * sin(NAN) = nan, cos(NAN) = -nan * * */
Fortran interface:
REAL(8) :: X = 1.0 REAL(8), TARGET :: SINX, COSX TYPE(C_PTR) :: PSINX, PCOSX PSINX = C_LOC(SINX) PCOSX = C_LOC(COSX) CALL SINCOS(X, PSINX, PCOSX) PRINT*, SINX, COSX ! ! OUTPUT ! 0.841470984807897 0.540302305868140 !
父主题: KML_MATH库函数说明