C Language                
            표준 수학
        
        
            
    수색…
통사론
- #include <math.h>
- double pow (double x, double y);
- float powf (float x, float y);
- long double powl (long double x, long double y);
비고
-  수학 라이브러리와 연결하려면 -lm을 gcc 플래그와 함께 사용하십시오.
-  수학 함수로부터 오류를 검사해야하는 이식 가능한 프로그램은 errno를 0으로 설정하고 다음과 같은 호출을해야합니다.feclearexcept(FE_ALL_EXCEPT);수학 함수를 호출하기 전에. 수학 함수로부터 돌아 왔을 때,errno가 0이 아니면 다음 호출은 0이 아닌fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW);반환합니다fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW);수학 함수에서 오류가 발생했습니다. 자세한 내용은 math_error의 맨 페이지를 참조하십시오.
배정도 부동 소수점 나머지 : fmod ()
 이 함수는 x/y 의 나눗셈에서 부동 소수점 나머지를 반환합니다. 반환 값은 x와 같은 부호를가집니다. 
#include <math.h> /* for fmod() */
#include <stdio.h> /* for printf() */
int main(void)
{
    double x = 10.0;
    double y = 5.1;
    double modulus = fmod(x, y);
    printf("%lf\n", modulus); /* f is the same as lf. */
    return 0;
}
산출:
4.90000
중요 : 이 함수는 부동 소수점 값의 연산으로 인해 예기치 않은 값을 반환 할 수 있으므로주의해서 사용해야합니다.
#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("%f\n", fmod(1, 0.1));
    printf("%19.17f\n", fmod(1, 0.1));
    return 0;
}
산출:
0.1
0.09999999999999995
단 정밀도 및 long 배정도 부동 소수점 나머지 : fmodf (), fmodl ()
 C99 
         이 함수는 x/y 의 나눗셈에서 부동 소수점 나머지를 반환합니다. 반환 값은 x와 같은 부호를가집니다. 
단일 정밀도 :
#include <math.h> /* for fmodf() */
#include <stdio.h> /* for printf() */
int main(void)
{
    float x = 10.0;
    float y = 5.1;
    float modulus = fmodf(x, y);
    printf("%f\n", modulus); /* lf would do as well as modulus gets promoted to double. */
}
산출:
4.90000
더블 더블 정밀도 :
#include <math.h> /* for fmodl() */
#include <stdio.h> /* for printf() */
int main(void)
{
    long double x = 10.0;
    long double y = 5.1;
    long double modulus = fmodl(x, y);
    printf("%Lf\n", modulus); /* Lf is for long double. */
}
산출:
4.90000
전원 함수 - pow (), powf (), powl ()
다음 예제 코드는 표준 수학 라이브러리 pow () 패밀리를 사용하여 1 + 4 (3 + 3 ^ 2 + 3 ^ 3 + 3 ^ 4 + ... + 3 ^ N) 시리즈의 합계를 계산합니다.
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <fenv.h>
int main()
{
        double pwr, sum=0;
        int i, n;
        printf("\n1+4(3+3^2+3^3+3^4+...+3^N)=?\nEnter N:");
        scanf("%d",&n);
        if (n<=0) {
                printf("Invalid power N=%d", n);
                return -1;
        }
        for (i=0; i<n+1; i++) {
                errno = 0;
                feclearexcept(FE_ALL_EXCEPT);
                pwr = powl(3,i);
                if (fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW |
                        FE_UNDERFLOW)) {
                        perror("Math Error");
                }
                sum += i ? pwr : 0;
                printf("N= %d\tS= %g\n", i, 1+4*sum);
        }
        return 0;
}
출력 예 :
1+4(3+3^2+3^3+3^4+...+3^N)=?
Enter N:10
N= 0    S= 1
N= 1    S= 13
N= 2    S= 49
N= 3    S= 157
N= 4    S= 481
N= 5    S= 1453
N= 6    S= 4369
N= 7    S= 13117
N= 8    S= 39361
N= 9    S= 118093
N= 10    S= 354289
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow