2012/12 15

윈도우에 MinGW, gmp, mpfr 설치하고 테스트하기

이전에는 MinGW 의 gcc 버전이 낮아서 gmp, mpfr 을 사용하는데 핸디캡이 있었지만, 지금은 MinGW 의 gcc 버전이 4.6.x 대로 높아져서 꽤 쓸만한 개발도구가 되었다. 그래서 MinGW 의 설치 방법과 gmp, mpfr 라이브러리를 사용하는 방법을 남겨 둔다. MinGW 는 Minimalist GNU for Windows 를 줄인 굴이라고 보면 이애하기가 쉬울 것이다. * 윈도우 환경에 MinGW 및 MSYS 설치하기 무료로 쓰는 GNU C/C++ 컴파일러를 사용하기 위해서, 윈도우에 cygwin을 설치하는 일은 다소 무겁다는 생각이 든다. 이럴 때는 MinGW와 MSYS를 설치하면 간단한 C/C++ 개발 환경이 구축된다. MinGW는 윈도우용 GCC Compiler Toolchain..

프로그래밍/C++ 2012.12.31

Ubuntu에 설치된 xmaxima를 이용하여 그린 감마함수(gamma function)의 그래프

감마함수 Γ(x)의 정의 (i) \textrm{$\alpha > 0$일 때는} \Gamma (\alpha) = \int_0^\infty e^{-t} t^{\alpha - 1} \ dt (ii) \textrm{$\alpha 0$ 이 되는 최소의 양의 정수 $k$를 찾아서} \Gamma (\alpha) = \dfrac{\Gamma(\alpha + k)}{\alpha (\alpha + 1) \cdots (\alpha +k - 1)} [감마함수 Γ(x)의 특징] (1) \Gamma (\alpha + 1) = \alpha \cdot \Gamma(\alpha) (2) \textrm{특히 $n$이 양의 정수일 때는 \ } \Ga..

학습/수학 2012.12.13

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

Lanczos 알고리즘은 Stirlng 공식에 의한 알고리즘 보다 정밀하며, 십진수로 유효숫자 약 15자리 까지는 정확하게 계산해 준다. 단지 exp 함수를 이용하는 부분에서는 exp, sin, pow 함수들의 구현에 따라 오차가 더 있을 수 있다. C 언어에는 long double 타입이 있어서 좀 더 정밀한 계산을 할 수 있지만. Java 언어에는 그렇지 못하여 그냥 double 타입을 사용하였다. 비교를 위해 아파치의 commons의 Math 라이브러라에서 지원하는 Gamma.logGamma 함수를 사용한 결과도 함께 출력하도록 하였다. (commons 라이브러리는 http://commons.apache.org/math/download_math.cgi 에서 다운로드할 수 있다. commons 2.2..

감마함수(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

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

Lanczos 알고리즘은 Stirlng 공식에 의한 알고리즘 보다 정밀하며, 십진수로 유효숫자 약 15자리 까지는 정확하게 계산해 준다. 단지 exp 함수를 이용하는 부분에서는 exp 함수의 구현에 따라 오차가 더 있을 수 있다. #!/usr/bin/env python # -*- encoding:utf-8 -*- # Filename: testLanczos-01.py # # An approximation for the gamma function by using the Lanczos algorithm # # Execute: python testLanczos-01.py # or # Execute: ./testLanczos-01.py # # See: http://en.wikipedia.org/wiki/Lancz..

Ubuntu에서 gnuplot 을 이용하여 그린 감마함수(gamma function)의 그래프

감마함수 Γ(x)의 정의 (i) \textrm{$\alpha > 0$일 때는} \Gamma (\alpha) = \int_0^\infty e^{-t} t^{\alpha - 1} \ dt (ii) \textrm{$\alpha 0$ 이 되는 최소의 양의 정수 $k$를 찾아서} \Gamma (\alpha) = \dfrac{\Gamma(\alpha + k)}{\alpha (\alpha + 1) \cdots (\alpha +k - 1)} [감마함수 Γ(x)의 특징] (1) \Gamma (\alpha + 1) = \alpha \cdot \Gamma(\alpha) (2) \textrm{특히 $n$이 양의 정수일 때는 \ } \Ga..

학습/수학 2012.12.12

Ubuntu 에 설치된 KmPlot 을 이용하여 그린 감마함수(gamma function)의 그래프

감마함수 Γ(x)의 정의 (i) \textrm{$\alpha > 0$일 때는} \Gamma (\alpha) = \int_0^\infty e^{-t} t^{\alpha - 1} \ dt (ii) \textrm{$\alpha 0$ 이 되는 최소의 양의 정수 $k$를 찾아서} \Gamma (\alpha) = \dfrac{\Gamma(\alpha + k)}{\alpha (\alpha + 1) \cdots (\alpha +k - 1)} [감마함수 Γ(x)의 특징] (1) \Gamma (\alpha + 1) = \alpha \cdot \Gamma(\alpha) (2) \textrm{특히 $n$이 양의 정수일 때는 \ } \Ga..

학습/수학 2012.12.12

Python 2.6, 2.6 및 3.2 로 복소수의 포맷(format) 출력

* 리눅스의 Python 2.6 으로 실행한 결과 Python 2.6.5 (r265:79063, Oct 1 2012, 22:04:36) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> x = complex(1, 2./3) >>> x (1+0.66666666666666663j) >>> "{0.real:.5}+{0.imag:.5}j".format(x) '1.0+0.66667j' >>> "{0.real:.5f}{0.imag:+.5f}j".format(x) '1.00000+0.66667j' >>> print "{0.real:.5f}{0.imag:+.5f}j".format(x) 1.0000..

높은 버전(1.9.2 이상)의 Ruby 언어에서 (UTF-8 인코딩) 한글 문자열 거꾸로 하기

* 아래는 높은 버전(1.9.2 이상)의 Ruby를 사용할 때 적용된다. UTF--8 인코딩이면 영문이든 한글이든 모두 문자열을 거꾸로 하기가 잘된다.String.reverse 또는 Strig.reverse() 하면 거꾸로 된 문자열을 얻는다. 예제 1. UTF-8 한글 문자열을 잘 처리하는 예제 # -*- encoding: utf-8 -*- a = "Hello, world!" b = "안녕하세요? 아햏햏" puts "%s --> %s" % [a, a.reverse()] puts "%s --> %s" % [b, b.reverse()] #################### # Expected: # Hello, world! --> !dlrow ,olleH # 안녕하세요? 아햏햏 --> 햏햏아 ?요세하녕안 #..

리눅스용 계산기 bc를 이용한 간단한 계산

bc는 유닉스/리눅스가 설치된 한경이면 어디든 있는 계산기 프로그램이다. bc 사용 메뉴얼 $ man bc NAME bc - An arbitrary precision calculator language SYNTAX bc [ -hlwsqv ] [long-options] [ file ... ] DESCRIPTION bc is a language that supports arbitrary precision numbers with inter‐ active execution of statements. There are some similarities in the syntax to the C programming language. A standard math library is available by command..

프로그래밍/BC 2012.12.05