#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <omp.h>
#include <unistd.h>
#include <time.h>
#include <math.h>
#define N 100000
void pi1( )
{
long double pi = ( double ) 4 / 3 ;
long double tmp2;
long long int i = 2 ;
long int limit = N;
for ( i= 2 ; i< limit; ++ i)
{
tmp2 = ( double ) ( 4 * i* i) / ( 4 * i* i- 1 ) ;
pi = pi * tmp2;
}
printf ( "liczba pi (mnozenie) = %.30Lf\n " , 2.0 * pi
) ; }
void pi2( )
{
long double pi = 0 ;
long double tmp1;
long int i = 0 ;
long int limit = N;
for ( i = 0 ; i< limit; ++ i)
{
if ( i % 2 == 0 )
{
tmp1 = ( double ) ( 1 ) / ( 2 * i+ 1 ) ;
}
else
{
tmp1 = ( double ) ( - 1 ) / ( 2 * i+ 1 ) ;
}
pi = pi + tmp1;
}
printf ( "liczba pi (dodawanie) = %.30Lf\n " , 4.0 * pi
) ; }
void pi3( )
{
long double pi_mnoz = ( double ) 4 / 3 ;
long double pi_dod = 0 ;
long double tmp1, tmp2;
long long int i = 0 ;
long int limit = N;
for ( i = 0 ; i< limit; ++ i)
{
if ( i % 2 == 0 )
{
tmp1 = ( double ) ( 1 ) / ( 2 * i+ 1 ) ;
}
else
{
tmp1 = ( double ) ( - 1 ) / ( 2 * i+ 1 ) ;
}
if ( i >= 2 )
{
tmp2 = ( double ) ( 4 * i* i) / ( 4 * i* i- 1 ) ;
pi_mnoz = pi_mnoz * tmp2;
}
pi_dod = pi_dod + tmp1;
}
printf ( "\n wersja polaczona:\n " ) ; printf ( "liczba pi (dodawanie) = %.30Lf\n " , 4.0 * pi_dod
) ; printf ( "liczba pi (mnozenie) = %.30Lf\n " , 2.0 * pi_mnoz
) ; }
int main( )
{
clock_t t1
= time ( NULL
) , t2
, t3
; //omp_set_num_threads(8);
pi1( ) ;
pi2( ) ;
pi3( ) ;
return 0 ;
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICAgI2luY2x1ZGUgPG9tcC5oPgogICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgogICAgI2luY2x1ZGUgPHRpbWUuaD4KICAgICNpbmNsdWRlIDxtYXRoLmg+CiAgICAjZGVmaW5lIE4gMTAwMDAwCiAgICAgCiAgICB2b2lkIHBpMSgpCiAgICB7CiAgICAgICAgbG9uZyBkb3VibGUgcGkgPSAoZG91YmxlKTQvMzsKICAgICAgICBsb25nIGRvdWJsZSB0bXAyOwogICAgICAgIGxvbmcgbG9uZyBpbnQgaSA9IDI7CiAgICAgICAgbG9uZyBpbnQgbGltaXQgPSBOOwogICAgICAgIGZvcihpPTI7IGk8bGltaXQ7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIHRtcDIgPSAoZG91YmxlKSg0KmkqaSkvKDQqaSppLTEpOwogICAgICAgICAgICBwaSA9IHBpICogdG1wMjsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJsaWN6YmEgcGkgKG1ub3plbmllKSAgPSAlLjMwTGZcbiIsIDIuMCpwaSk7CiAgICB9CiAgICAgCiAgICB2b2lkIHBpMigpCiAgICB7CiAgICAgICAgbG9uZyBkb3VibGUgcGkgPSAwOwogICAgICAgIGxvbmcgZG91YmxlIHRtcDE7CiAgICAgICAgbG9uZyBpbnQgaSA9IDA7CiAgICAgICAgbG9uZyBpbnQgbGltaXQgPSBOOwogICAgICAgIGZvcihpID0gMDsgaTxsaW1pdDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaSAlIDIgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdG1wMSA9IChkb3VibGUpKDEpLygyKmkrMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0bXAxID0gKGRvdWJsZSkoLTEpLygyKmkrMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGkgPSBwaSArIHRtcDE7CiAgICAgICAgfQogICAgICAgIHByaW50ZigibGljemJhIHBpIChkb2Rhd2FuaWUpID0gJS4zMExmXG4iLCA0LjAqcGkpOwogICAgfQogICAgIAogICAgdm9pZCBwaTMoKQogICAgewogICAgICAgIGxvbmcgZG91YmxlIHBpX21ub3ogPSAoZG91YmxlKTQvMzsKICAgICAgICBsb25nIGRvdWJsZSBwaV9kb2QgPSAwOwogICAgICAgIGxvbmcgZG91YmxlIHRtcDEsIHRtcDI7CiAgICAgICAgbG9uZyBsb25nIGludCBpID0gMDsKICAgICAgICBsb25nIGludCBsaW1pdCA9IE47CiAgICAgICAgZm9yKGkgPSAwOyBpPGxpbWl0OyArK2kpCiAgICAgICAgewogICAgICAgICAgICBpZihpICUgMiA9PSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0bXAxID0gKGRvdWJsZSkoMSkvKDIqaSsxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRtcDEgPSAoZG91YmxlKSgtMSkvKDIqaSsxKTsKICAgICAgICAgICAgfQogICAgIAogICAgICAgIAlpZiAoaSA+PSAyKQogICAgICAgICAgICB7CiAgICAgICAgICAgIAkgdG1wMiA9IChkb3VibGUpKDQqaSppKS8oNCppKmktMSk7CiAgICAgICAgICAgICAgICAgcGlfbW5veiA9IHBpX21ub3ogKiB0bXAyOwogICAgICAgIAl9CiAgICAgCiAgICAgICAgICAgIHBpX2RvZCA9IHBpX2RvZCArIHRtcDE7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG53ZXJzamEgcG9sYWN6b25hOlxuIik7CiAgICAgICAgcHJpbnRmKCJsaWN6YmEgcGkgKGRvZGF3YW5pZSkgPSAlLjMwTGZcbiIsIDQuMCpwaV9kb2QpOwogICAgICAgIHByaW50ZigibGljemJhIHBpIChtbm96ZW5pZSkgID0gJS4zMExmXG4iLCAyLjAqcGlfbW5veik7CiAgICB9CiAgICAgCiAgICAgCiAgICBpbnQgbWFpbigpCiAgICB7CiAgICAgICAgY2xvY2tfdCB0MSA9IHRpbWUoTlVMTCksIHQyLCB0MzsKICAgICAgICAvL29tcF9zZXRfbnVtX3RocmVhZHMoOCk7CiAgICAgICAgcHJpbnRmKCJcbk4gPSAlZFxuIiwgTik7CiAgICAgCiAgICAgICAgcHJpbnRmKCJcbm9kZHppZWxuaWU6XG4iKTsKICAgICAgICBwaTEoKTsKICAgICAgICBwaTIoKTsKICAgICAgICB0MiA9IHRpbWUoTlVMTCk7CiAgICAgICAgcHJpbnRmKCI9PiBMaWN6b25lIG9kZHppZWxuaWU6ICVmXG4iLCBkaWZmdGltZSh0MiwgdDEpKTsKICAgICAKICAgICAgICBwaTMoKTsKICAgICAgICB0MyA9IHRpbWUoTlVMTCk7CiAgICAgICAgcHJpbnRmKCI9PiBMaWN6b25lIHJhemVtOiAlZi5cbiIsZGlmZnRpbWUodDMsIHQyKSk7CiAgICAgCiAgICAgICAgcmV0dXJuIDA7CiAgICB9