add メソッド

ここまでの説明でプログラムを作成していただきたいのですが (^_^;) サービスとして add メソッドを組んでみましょう。

前田稔(Maeda Minoru)の超初心者のプログラム入門

  1. t[] と w[] に適当な値を設定します。
    add メソッドで t[] と w[] を加算して a[] に格納します。
    disp メソッドで a[] に格納された4千桁分のデータを表示します。
  2. add メソッドの説明です。
    short 型には -32768~+32767 まで格納できるので、配列の対応する要素同士を加えます。
    今回のプログラムでは十進数4桁までしか格納しないので4桁を超えたときは桁上がりします。
  3. disp メソッドで配列に格納された4千桁分のデータを表示します。
    プログラムを実行して表示を確認して下さい。

ソースコードです

/***************************************************/
/*★ 円周率を4000桁まで計算する     前田  稔 ★*/
/***************************************************/
using System;

class Prog
{
    const   short   S = 1000;
    static  short[] t = new short[S];
    static  short[] w = new short[S];
    static  short[] a = new short[S];

    //★Main() 関数
    public static void Main()
    {
        t[0]= 3;
        w[0]= 5;
        for(short i=1; i<S; i++)
        {   t[i]= (short)(500+i);
            w[i]= (short)(789+i);
        }
        add(a, t, w);
        disp("t[]-w[]=", a);
        Console.ReadLine();
    }

    //★ 配列の表示
    static void disp(string s, short[] x)
    {   short   i,j,k;
        Console.Write("\n{0}\n    1: {1}.",s,x[0]);
        for(k=i=1; i<S; k++)
        {   if (k>1)    Console.Write("   ");
            for(j=0; i<S && j<10; j++,i++)  Console.Write("{0:d4} ",x[i]);
            if (i<S)    Console.Write("\n{0,5}:",k*40+1);
        }
    }

    //★ x[]= y[] + z[]
    static void add(short[] x, short[] y, short[] z)
    {   short   i;
        for(i=0; i<S; i++)  x[i]= (short)(y[i]+z[i]);
        for(i=S-1; i>0; i--)
            if (x[i]>10000)
            {   x[i]= (short)(x[i]-10000);
                x[i-1]++;
            }
    }
}

atan(1/5) の値です

四則演算のメソッドでは、何となく結果が正しいことが推測できますが、atan 関数ではそうは行きません。
そこで、メソッドが正しく実行されたことを検証するために atan(1/5) の結果を掲載しましょう。
a_tan(1/5)=
    1: 0.1973 9555 9849 8807 5837 0049 7651 9479 0293 4475 
   41:   8510 3787 8521 0151 7688 9402 4103 3969 9782 4378 
   81:   5732 6978 2803 7288 0441 1262 8118 0736 9136 0104 
  121:   4564 7988 6794 2393 5574 7565 4952 1630 3270 0522 
  161:   1074 7001 5645 0155 6006 1286 1855 2663 3257 3186 
  201:   9280 6643 8968 0618 9528 4058 2593 1124 2516 1329 
  241:   7313 9933 9711 3233 5378 2179 6084 1766 4831 0525 
  281:   4730 3966 5725 6504 8887 8155 3093 8429 0579 3116 
  321:   9593 4192 8518 0636 4919 6975 1940 1708 5609 4952 
  361:   7368 6737 3850 8400 8123 6785 6158 0093 2982 2514 
  401:   0232 4667 5549 2110 2670 4574 3788 1547 4839 0799 
  441:   7898 5020 0752 2369 6837 9613 9227 8354 1932 5572 
  481:   2328 4138 4647 7441 3529 0970 5465 1224 3830 2697 
  521:   5605 1837 7574 2208 7783 5853 1524 6474 9330 9145 
  561:   8763 3823 1124 9033 2030 1268 0510 0670 2233 1257 
  601:   5050 9424 4846 0267 1622 5489 4079 2261 4046 7995 
  641:   0623 6596 9282 8730 5828 7872 0536 0303 4570 7660 
  681:   6668 1374 3125 6626 7431 4089 9260 5741 7035 4539 
  721:   4046 8136 2241 1076 8081 0036 2137 5992 5958 9071 
  761:   6664 8514 5255 7067 9954 8810 0431 3295 4668 3892 
  801:   2903 6883 0932 7853 8312 5217 6892 4841 6255 5874 
  841:   4394 4787 1887 5141 1379 7843 0670 8103 3236 2273 
  881:   3308 7548 3507 2304 2096 9155 3745 6932 4447 5565 
  921:   3089 9212 1938 5414 4645 0836 8672 0518 5190 0266 
  961:   2277 4469 3932 5408 9619 1586 0225 4944 9374 2927 
 1001:   2277 1160 3918 8313 5404 8385 4855 1771 2996 4283 
 1041:   9028 4910 4126 1401 0390 4165 1305 4369 4188 8826 
 1081:   3784 3777 3947 3239 3541 0411 0230 1389 2451 0841 
 1121:   8174 7945 1794 2642 7439 8170 5639 9859 1797 6494 
 1161:   4540 6269 0657 6259 5279 6637 7367 9752 3083 8156 
 1201:   3204 5292 0704 9050 4025 3243 8016 4644 5508 7843 
 1241:   4153 4989 5651 9750 3788 4043 9450 6707 4333 8233 
 1281:   1439 1625 2628 8469 6328 6747 7996 9903 6728 1064 
 1321:   7984 2245 6904 7034 6216 5849 2764 3284 9304 6778 
 1361:   8818 7171 2121 9429 3560 7652 0191 3168 2966 2333 
 1401:   7711 5392 9254 1519 4472 3732 0448 7243 9489 3138 
 1441:   4278 4631 1757 4561 3527 5958 0331 7126 5382 1158 
 1481:   5070 6701 9669 0747 5351 9318 6749 4205 1016 0729 
 1521:   0652 7137 4754 4762 8038 5175 3329 7020 6973 9795 
 1561:   0792 3972 4966 0420 2447 4792 2758 5677 7315 1627 
 1601:   4371 7152 4802 4212 2895 8273 8437 7185 7403 2142 
 1641:   0481 6131 9186 6357 4638 3513 1780 8205 9305 1109 
 1681:   0524 5799 4612 6225 9384 6485 5855 9583 2115 8801 
 1721:   0786 1931 1422 6790 9990 3254 2189 7797 8052 3436 
 1761:   8235 7353 2633 1952 4051 2225 7187 9285 3853 2486 
 1801:   0490 6237 9176 8139 4176 7548 5384 7255 9778 1846 
 1841:   2582 1152 0125 6516 3258 6805 7073 2494 3789 6426 
 1881:   7601 0283 6813 8149 2931 5880 5074 4946 5184 0745 
 1921:   0213 3660 6945 3430 8918 9078 2036 4404 9268 3736 
 1961:   0606 1681 7856 3010 7570 4708 3107 6779 1984 7271 
 2001:   6752 4557 2244 6778 9066 4160 4775 7084 0562 8359 
 2041:   2306 2091 4933 5767 9922 5265 9024 4360 5849 9349 
 2081:   6670 3159 3056 2488 3656 2156 4056 2278 7289 9051 
 2121:   2617 7121 1032 1431 7745 9031 9117 1713 0482 9494 
 2161:   3179 8802 4174 5882 4516 8944 0401 4877 9467 4125 
 2201:   0601 8185 3623 4205 5044 0873 9812 2163 8378 6712 
 2241:   5496 2677 6828 6187 1633 7991 1663 7034 2286 8411 
 2281:   9458 1470 3704 6650 0354 1602 4155 4476 0557 4789 
 2321:   6710 4169 0788 7722 2780 1648 2033 6048 5230 5360 
 2361:   7405 7916 9107 7547 7369 7651 7271 9187 2146 1269 
 2401:   2233 7320 3191 7563 0704 5583 6952 1128 7118 1201 
 2441:   0002 7669 7231 2197 5732 5200 4660 8399 0407 2611 
 2481:   7999 1718 9427 7614 5312 4763 1880 7325 3498 2818 
 2521:   7848 8353 5539 8056 8355 4841 2785 1434 4953 4876 
 2561:   0297 4448 2461 7633 0047 8764 5605 0763 5540 9629 
 2601:   2502 4182 3945 9047 8213 2891 3404 7031 0893 0380 
 2641:   8689 2278 7146 2726 7255 5658 7378 4517 4416 9892 
 2681:   1628 3081 4980 7325 6605 7392 8267 7487 5799 3309 
 2721:   7811 8905 6889 7255 1008 9874 9952 4786 9277 2579 
 2761:   0226 7684 3872 0996 9234 2286 0177 4089 4302 9447 
 2801:   4734 4961 9254 4256 1107 1054 6578 6346 1948 7270 
 2841:   5269 2503 0040 6940 4172 7366 8918 0581 7356 1607 
 2881:   7796 3442 8587 6434 4142 9868 6858 6510 2546 9080 
 2921:   8719 5240 9934 0439 8218 3659 4495 6475 2472 4701 
 2961:   5671 0937 1584 6453 5059 8444 8613 1412 9720 1808 
 3001:   9856 8764 7812 6745 7942 7873 2510 8938 2378 9598 
 3041:   8909 3464 4024 0415 5198 8002 4994 5731 7686 2617 
 3081:   4860 5307 6890 1778 5263 9748 7053 1524 7908 9616 
 3121:   1841 7649 8706 1660 3320 5299 0319 0219 2463 1246 
 3161:   0258 0895 3512 4951 9507 7438 2363 2109 2741 3388 
 3201:   9889 5446 7228 1137 0869 3635 9090 2178 8016 5224 
 3241:   9622 9436 7359 7768 1212 9249 1469 5190 7691 1241 
 3281:   6580 2691 1245 6953 6170 1888 7005 1769 1651 1427 
 3321:   7081 4402 9069 9869 4517 5284 8036 2638 0185 5390 
 3361:   9526 1432 3083 6078 6850 7562 3811 7097 2881 2809 
 3401:   3159 0381 4701 1924 7652 8004 8287 8299 4767 4130 
 3441:   2561 8800 8801 2002 2077 2111 9688 6489 1550 7682 
 3481:   6585 0707 5133 1208 1638 5358 9706 1229 6729 0781 
 3521:   1243 5558 5499 8195 7061 3740 3525 6173 8424 8114 
 3561:   3670 9089 9099 8688 9551 7132 3803 3029 1340 1275 
 3601:   7015 6148 6923 8402 8815 3480 3606 3194 3685 7510 
 3641:   1451 1408 2174 4148 3754 1708 2726 6317 7124 9771 
 3681:   2977 7421 1975 3461 1051 4443 0014 3220 6129 0830 
 3721:   6342 8289 9442 8588 9630 3389 8938 1316 6913 7493 
 3761:   7276 8307 9988 2074 7970 3365 0699 5768 6903 5522 
 3801:   7548 0144 0754 4008 6332 9422 6391 1304 3307 3289 
 3841:   3392 7528 0114 0058 0993 8219 9515 0931 8242 0600 
 3881:   7720 2990 7491 5003 9497 4644 2210 2622 4772 5098 
 3921:   5336 6917 4979 0321 3300 5366 2131 7846 3346 9585 
 3961:   5890 2295 1266 2848 1920 2322 4235 9385 6240 
C言語のプログラムを 4000桁の円周率を求める に掲載しています。
正多角形で円周率を計算 するプログラムです。

[Previous Chapter ↑] 円周率の公式

前田稔(Maeda Minoru)の超初心者の C#(Frame Work)