fork download
  1. # include <stdio.h>
  2. # include <math.h>
  3.  
  4.  
  5.  
  6. const int i_Initial = 1 ;
  7. const int i_Final = 15 ;
  8.  
  9. double si_Formula( int i ){
  10. return (
  11. 88./60*pow(0.12,i) +
  12. 89./55*pow(0.11,i) +
  13. 90./50*pow(0.10,i) +
  14. 91./45*pow(0.09,i) +
  15. 92./40*pow(0.08,i)
  16. )/( 1-16e-17 ) ;
  17. }
  18.  
  19.  
  20.  
  21. int main(){
  22. double Si_Infinite=0 , Sip1=0 , Si=Sip1-si_Formula(i_Initial-1) , Sim1=Si-si_Formula(i_Initial-2) ;
  23. for( int i=i_Final+999 ; i>=i_Initial ; i-- ) Si_Infinite+=si_Formula(i) ;
  24. for( int i=i_Initial-1 ;;){
  25. # define Abs(x) ((x)<0?-(x):(x))
  26. # define Max(x,y) ((x)>(y)?(x):(y))
  27. double Sip1_Error = Abs(Sip1-Si_Infinite)/(Max(Sip1,Si_Infinite)+5e-324) ;
  28. double Expected_Si_Infinite = Sip1-( Sip1-Si )*( Sip1-Si )/( Sip1+Sim1-Si-Si ) ;
  29. double Expected_Si_Infinite_Error = Abs(Expected_Si_Infinite-Si_Infinite)/(Max(Expected_Si_Infinite,Si_Infinite)+5e-324) ;
  30. printf( "S_%03i =%12.9lf (%.2e) | DeltaSquared S_%03i =%12.9lf (%.2e)"
  31. , i+1
  32. , Sip1
  33. , Sip1_Error
  34. , i+1
  35. , Expected_Si_Infinite
  36. , Expected_Si_Infinite_Error
  37. ) ;
  38. if( ++i > i_Final ){ printf(" S_Inf = %.16lf",Si_Infinite) ; return 0 ; }
  39. double si = si_Formula(i) ;
  40. Sim1=Si , Si=Sip1 , Sip1+=si ;
  41. printf( " |--> s%03i =%14.11lf\n" , i , si ) ;
  42. }
  43. }
Success #stdin #stdout 0.01s 5508KB
stdin
Standard input is empty
stdout
S_001 = 0.000000000 (1.00e+00)  |  DeltaSquared S_001 = 0.974985573 (2.50e-02)  |-->  s001 = 0.90000000000
S_002 = 0.900000000 (1.00e-01)  |  DeltaSquared S_002 = 0.997507296 (2.49e-03)  |-->  s002 = 0.08980000000
S_003 = 0.989800000 (1.02e-02)  |  DeltaSquared S_003 = 0.999753147 (2.47e-04)  |-->  s003 = 0.00914000000
S_004 = 0.998940000 (1.06e-03)  |  DeltaSquared S_004 = 0.999975700 (2.43e-05)  |-->  s004 = 0.00094793200
S_005 = 0.999887932 (1.12e-04)  |  DeltaSquared S_005 = 0.999997620 (2.38e-06)  |-->  s005 = 0.00010003400
S_006 = 0.999987966 (1.20e-05)  |  DeltaSquared S_006 = 0.999999768 (2.32e-07)  |-->  s006 = 0.00001072377
S_007 = 0.999998690 (1.31e-06)  |  DeltaSquared S_007 = 0.999999977 (2.26e-08)  |-->  s007 = 0.00000116583
S_008 = 0.999999856 (1.44e-07)  |  DeltaSquared S_008 = 0.999999998 (2.20e-09)  |-->  s008 = 0.00000012831
S_009 = 0.999999984 (1.61e-08)  |  DeltaSquared S_009 = 1.000000000 (2.14e-10)  |-->  s009 = 0.00000001428
S_010 = 0.999999998 (1.81e-09)  |  DeltaSquared S_010 = 1.000000000 (2.09e-11)  |-->  s010 = 0.00000000160
S_011 = 1.000000000 (2.05e-10)  |  DeltaSquared S_011 = 1.000000000 (2.05e-12)  |-->  s011 = 0.00000000018
S_012 = 1.000000000 (2.34e-11)  |  DeltaSquared S_012 = 1.000000000 (2.02e-13)  |-->  s012 = 0.00000000002
S_013 = 1.000000000 (2.68e-12)  |  DeltaSquared S_013 = 1.000000000 (2.00e-14)  |-->  s013 = 0.00000000000
S_014 = 1.000000000 (3.09e-13)  |  DeltaSquared S_014 = 1.000000000 (2.00e-15)  |-->  s014 = 0.00000000000
S_015 = 1.000000000 (3.57e-14)  |  DeltaSquared S_015 = 1.000000000 (1.11e-16)  |-->  s015 = 0.00000000000
S_016 = 1.000000000 (4.11e-15)  |  DeltaSquared S_016 = 1.000000000 (0.00e+00)  S_Inf = 1.0000000000000000