このディレクトリの索引
#  出典 :: C/C++の宿題片付けます 150代目 #353
#  [1] 授業単元: プログラミング演習 
#  [2] 問題文(含コード&リンク):  
#    
#   円周率を求めよ。方法はどのような方法でも構わない。 
#   ただしprintf("%f",M_PI)などはなし。 
#   またアルゴリズムのオリジナリティは評価に加点します。 
#   (〜の方法では◯桁までしかでないが、このアルゴリズムを追加すると 
#    桁数が増える など) 
#   
#   できるだけ多い桁数を出したいです。 
#   また桁数を逐次的に増やす方法が知りたいです。 
#   
#   よろしくお願いします 
#  

'Machinの公式による円周率の算出' :-
        'Machinの公式による円周率の算出'(_円周率),
        format('~11f',[_円周率]).

'Machinの公式による円周率の算出'(_円周率) :-
        _t is 16.0 / 5.0,
        _p_2 is 0 + _t / 1,
        _t_2 is _t / ( -5.0 * 5.0),
        _k_2 is 1 + 2,
        'Machinの公式による円周率の算出'(_k_2,_t_2,0,_p_2,_p_3),
        _t_3 is 4.0 / 239.0,
        _p_4 is _p_3 - _t_3 / 1,
        _t_4 is _t_3 / -239.0 * 239.0,
        _k_4 is 1 + 2,
        'Machinの公式による円周率の算出のニ'(_k_4,_t_4,_p_3,_p_4,_円周率).

'Machinの公式による円周率の算出'(_,_,X,X,X) :- !.
'Machinの公式による円周率の算出'(_k,_t,_,_p,X) :-
        _p_2 is _p + _t / _k,
        _t_2 is _t / ( -5.0 * 5.0),
        _k_2 is _k + 2,
        'Machinの公式による円周率の算出'(_k_2,_t_2,_p,_p_2,X).

'Machinの公式による円周率の算出のニ'(_,_,X,X,X) :- !.
'Machinの公式による円周率の算出のニ'(_k,_t,_,_p,X) :-
        _p_2 is _p - _t / _k,
        _t_2 is _t / ( -239.0 * 239.0),
        _k_2 is _k + 2,
        'Machinの公式による円周率の算出のニ'(_k_2,_t_2,_p,_p_2,X).