프로그래밍/C 44

C 언어와 GSL 라이브러리로 역삼각함수, 역쌍곡선함수 값을 구하는 예제

역삼각함수란 삼각함수의 역함수를 의미하고, 역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다. 수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, C 언어나 C++ 언어에서는 asin 함수로 구현되어 있다. 를 인클루드하면 gsl_math.h 가 자체적으로 를 또 인클루드하므로, 를 별도로 인크루드할 필요가 없다. sinh 와 cosh 의 역함수로 그냥 C 언어의 에서 정의된 asinh 와 acosh 를 써도 되지만. 여기서는 에서 정의된 gsl_asinh 와 gsl_acosh 를 써 보았다. 참고로 gsl 이라 함은 GNU Scientific Library 의 줄임글이다. 아래의 소스는 Visual C++ 또는 gcc 로 컴파일되는 소스이다. 실행 결과는 같다. /* * Filename: test..

프로그래밍/C 2013.01.10

C 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제

역삼각함수란 삼각함수의 역함수를 의미하고, 역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다. 수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, C 언어나 C++ 언어에서는 asin 함수로 구현되어 있다. 아래의 소스는 Visual C++ 또는 gcc 로 컴파일되는 소스이다. 실행 결과는 같다. /* * Filename: testArcSine.c * * Compile: cl testArcSine.c * Execute: testArcSine * * Or * * Cpmpile: gcc -o testArcSine testArcSine.c * Execute: ./testArcSine * * Date: 2013. 1. 1. * Copyright (c) pkim _AT_ scripts.pe.kr */ #in..

프로그래밍/C 2013.01.01

감마함수(gamma function)의 값을 (유효수자 15자리 까지 정밀하게) 계산하는 C 언어 소스

Lanczos 알고리즘은 Stirling 공식에 의한 알고리즘 보다 정밀하며, 십진수로 유효숫자 약 15자리 까지는 정확하게 계산해 준다. 단지 exp 함수를 이용하는 부분에서는 exp, sin, pow 함수들의 구현에 따라 오차가 더 있을 수 있다. 소스를 보면 (조금이라도 유효수자의 개수가 더 많은 계산을 하기 위해) double 타입이 아니라 long double 타입으로 처리하고 있음을 알 수 있다. long double frac(long double x) long double gamma2(long double y) Unix/Linux의 C 컴파일러 gcc 를 사용하면 math 라이브러리에 tgamma 라는 함수가 이미 있다. 이 함수와 (자체 구현된) gamma2 함수에 의한 계산 결과를 비교하..

프로그래밍/C 2012.12.12

리눅스 환경에 MPFR 설치와 테스트

우선 위키피디아에서 소개하는 MPFR의 설명을 보자 GNU MPFR (for GNU Multiple Precision Floating-Point Reliably[1]) is a portable C library for arbitrary-precision binary floating-point computation with correct rounding, based on GNU Multi-Precision Library. 또 다음은 MPFR 홈페이지에서 소개하는 MPFR의 의미이다. The main goal of MPFR is to provide a library for multiple-precision floating-point computation which is both efficient and ha..

프로그래밍/C 2012.04.30

long long 타입의 정수 계산을 100경 까지 테스트하는 C 소스

C 언어에서 long long 타입은 (부호가 있는) 64비트 정수 타입입니다. win32 환경이라도 long long 타입을 C 언어에서 쓸 수 있습니다. 아래의 소스는 Visual C++ 2010 Express Dev-C++ LCC 컴파일러 또는 LCC-win32 컴파일러 GCC 컴파일러 TCC (Tiny-CC) 컴파일러 중 하나면 컴파일하여 실행시킬 수 있습니다. TCC 로는 -run 옵션을 사용하여 프롬프트> tcc -run testLongLong.c 하면 (실행 파일 만들지 않고) 소스를 직접 실행시킬 수 있습니다. // Filename: testLongLong_001.c // // Compile & Link: gcc -o testComplexISOC99_002 testLongLong_001.c..

프로그래밍/C 2012.04.28

ISOC99 를 지원하는 C 컴파일러로 복소수 계산하는 C 예제

컴파일은 ANSI/ISOC99 를 (대부분) 지원하는 C 컴파일러 GCC 컴파일러 또는 LCC 컴파일러 (또는 기타 컴파일러) 를 쓰면 됩니다. Visual C++ 2010 은 ANSI/ISOC99 를 지원하지 않습니다. [참고] ANSI/ISOC99 (Wikipedia) // Filename: testComplexISOC99.c // // Compile & Link: gcc -o testComplexISOC99 testComplexISOC99.c // Execute: ./testComplexISOC99 // // Or // // Compile & Link: lc testComplexISOC99.c // Execute: testComplexISOC99 // // Or // // Compile: lcc -..

프로그래밍/C 2012.04.28

C 언어로 GMP 라이브러리를 이용하여 30! 까지 정확하게 계산하기

아래의 소스는 윈도우에서 Luna MinGW & GNU C 4.5.0 (gcc), 로 테스트되었다. long 타입으로는 13! 까지만 정확하계 계산되지만 GMP 를 이용한 계산은 아무리 큰 수의 곱셈이라도 정확히 계산해준다. 윈도우에 Luna MinGW (with GCC 4.5.0) 설치하기: 1) Luna MinGW 홈페이지(MinGW GCC C/C++ Compiler package with installer) 2) Luna MinGW 설치파일 다운로드 * 소스 파일명: recFactGMP01.c /* * Filename: recFactGMP01.c * * Compile: gcc -o recFactGMP01 recFactGMP01.c -lgmp */ #include #include void factor..

프로그래밍/C 2010.08.13

손으로 계산하는 긴 자리 곱셈표 만들기 with C

초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 C 소스이다. /* * Filename: makeMultTable.c * * Print a multiplication table. * * Compile: cl makeMultTable.c * Execute: makeMultTable 230 5100 * * Date: 2009/03/06 * Author: pkim (AT) scripts.pe.kr */ #include #include #include void printUsing(); void printMultTable(int x, int y); int main(int argc, char *argv[]) { long x, y; if (argc >= 3) { x = atoi(argv[1]); y = atoi(..

프로그래밍/C 2009.03.07