본문 바로가기
개발/C, C++

원주율 Pi : 라이프니츠 공식 (Leibniz Formula for π)

by 피로물든딸기 2022. 8. 1.
반응형

C, C++ 전체 링크

 

라이프니트 원주율 공식은 아래와 같은 분모가 홀수인 값의 교대 급수에서 유도된다.

 

따라서 원주율 π (pi)는 교대 급수에 4를 곱한 값이 된다.

 

precisionCount를 넘겨 받는 메서드를 만들어서 정밀도를 확인해보자.

#include <stdio.h>

double pi(int precisionCount)
{
	double leibniz = 0;
    
	int odd = 1;
	int inverse = 1;

	for (int i = 0; i < precisionCount; i++, odd += 2, inverse *= -1)
	{
		leibniz += 1 / (double)(odd * inverse);
	}

	return 4.0 * leibniz;
}

int main()
{
	printf("%.15f\n", pi(2));
	printf("%.15f\n", pi(3));
	printf("%.15f\n", pi(10));
	printf("%.15f\n", pi(50));
	printf("%.15f\n", pi(100));	
	printf("%.15f\n", pi(1000));
	printf("%.15f\n", pi(10000));
	printf("%.15f\n", pi(100000));
	printf("%.15f\n", pi(1000000));

	return 0;
}

 

실제 원주율의 값(위)100만번 연산한 값(아래)을 비교하면 꽤 차이가 많이 난다.

 

3.1415926535897932384626433832795028841971693993751058209749

3.1415916535897740000000000000000000000000000000000000000000

 

루트 값을 구하는 바빌로니아 법에 비해 꽤 많은 연산을 필요로 하니, 사용할 때는 주의를 하자.

반응형

댓글