sincos
同时计算输入弧度的正弦值和余弦值。
接口定义
C interface:
void sincosf(float x, float* sinx, float* cosx);
void sincosf_18(float x, float* sinx, float* cosx);
void sincos(double x, double* sinx, double* cosx);
void sincosl(long double x, long double* sinx, long double* cosx);
 sincosf_18仅在高精度版本提供。
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, cos(1.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 
    !
父主题: 三角函数