Rev 119 | Rev 283 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 119 | Rev 125 | ||
---|---|---|---|
Line 73... | Line 73... | ||
73 | } |
73 | } |
74 | 74 | ||
75 | static void pi(void *data) |
75 | static void pi(void *data) |
76 | { |
76 | { |
77 | int i; |
77 | int i; |
78 | double lpi, pi; |
78 | double lpi, pi; |
79 | double n, ab, ad; |
79 | double n, ab, ad; |
80 | 80 | ||
81 | waitq_sleep(&can_start); |
81 | waitq_sleep(&can_start); |
82 | 82 | ||
83 | 83 | ||
84 | for (i = 0; i<ATTEMPTS; i++) { |
84 | for (i = 0; i<ATTEMPTS; i++) { |
85 | lpi = -1; |
85 | lpi = -1; |
86 | pi = 0; |
86 | pi = 0; |
87 | 87 | ||
88 | for (n=2, ab = sqrt(2); lpi != pi; n *= 2, ab = ad) { |
88 | for (n=2, ab = sqrt(2); lpi != pi; n *= 2, ab = ad) { |
89 | double sc, cd; |
89 | double sc, cd; |
90 | 90 | ||
91 | sc = sqrt(1 - (ab*ab/4)); |
91 | sc = sqrt(1 - (ab*ab/4)); |
92 | cd = 1 - sc; |
92 | cd = 1 - sc; |
93 | ad = sqrt(ab*ab/4 + cd*cd); |
93 | ad = sqrt(ab*ab/4 + cd*cd); |
94 | lpi = pi; |
94 | lpi = pi; |
95 | pi = 2 * n * ad; |
95 | pi = 2 * n * ad; |
96 | } |
96 | } |
97 | 97 | ||
98 | if((int)(100000000*pi)!=PI_10e8) |
98 | if((int)(100000000*pi)!=PI_10e8) |
99 | panic("tid%d: pi*10e8=%d\n", THREAD->tid, (int) 100000000*pi); |
99 | panic("tid%d: pi*10e8=%d\n", THREAD->tid, (int) 100000000*pi); |
100 | } |
100 | } |
101 | 101 |