【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21315

1e+40の計算
投稿者---もえみ(2005/06/10 01:08:28)


 脳細胞の連結数を求めるために、10000000000000000000000000000*1000000000000を計算すると0が幾つくらいになるのかを調べたいと思ったのですが、実際この式を計算することはできないので、下のプログラムのように*がどのぐらい表示されるかためそうとしているのですが、(実際には多すぎてとても数えることはできませんが)処理にどのくらい時間がかかるかを計りたいのですが、処理時間を計ることなどできるのでしょうか?もしできるなら、そのプログラムを教えてください。

#include<stdio.h>

double main(void)
{
    double x,y,z,n=0;
    
    x=10000000000000000000000000000;
    y=1000000000000;
    z=x*y;
    
    
    while(n=z){
        printf("*");
    }
    
    return 0;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:1e+40の計算 21317 RAPT 2005/06/10 01:38:26
<子記事> Re:1e+40の計算 21319 si 2005/06/10 02:05:09
<子記事> Re:1e+40の計算 21327 たか 2005/06/10 18:43:55


No.21317

Re:1e+40の計算
投稿者---RAPT(2005/06/10 01:38:26)


> 脳細胞の連結数を求めるために、10000000000000000000000000000*
> 1000000000000を計算すると0が幾つくらいになるのかを調べたい
log を使えばいいのでは? 底を10にすれば求まるでしょう?

> 実際この式を計算することはできないので、下のプログラムのように
> *がどのぐらい表示されるかためそうとしているのですが、
> (実際には多すぎてとても数えることはできませんが)
> 処理にどのくらい時間がかかるかを計りたいのですが、
> 処理時間を計ることなどできるのでしょうか?
> もしできるなら、そのプログラムを教えてください。
なんか色々書いてあるけど、何が問題なのか、その焦点があいまいです。
もっと的を絞ってピンポイントで質問をしてください。
# なんか最初と言っている事が違うし。

> while(n=z){
z が 非0 のとき、無限ループになります。




この投稿にコメントする

削除パスワード

No.21319

Re:1e+40の計算
投稿者---si(2005/06/10 02:05:09)


> 脳細胞の連結数を求めるために、10000000000000000000000000000*1000000000000を計算

long double x,y,z;
x=10000000000000000000000000000.0L;
y=1000000000000.0L;
z=x*y;
printf("z = %Lf\n%LE\n",z,z);


z = 9999999999999999999783686092270256259072.000000
1.000000E+40
となります。お使いの環境で、long doubleがサポートされていれば計算できます。
ただし、精度は使う環境で違いますので、上記結果と異なると思います。
(こんな長大整数値を頻繁に扱うならば、無限桁整数値を扱えるライブラリかシステムを
探した方が良いのでは?)
因みに、実行時間は clock()関数を使います。検索すればすぐ見つかります。


この投稿にコメントする

削除パスワード

No.21321

Re:1e+40の計算
投稿者---si(2005/06/10 03:07:40)


訂正
long doubleがサポートされていれば計算できますー>実装によりできないものもあるようです

無限桁整数ー>多倍長整数


この投稿にコメントする

削除パスワード

No.21327

Re:1e+40の計算
投稿者---たか(2005/06/10 18:43:55)


全くスレ違いですが、HaskellのInteger型などを使えば、元々多倍長計算
が出来るので簡単に結果を求められます。
ghcなどのHaskell Compilerなら、実行速度も高速です。

C/C++なら、フリーの多倍長演算パッケージがいろいろ出ていますので、
そちらを利用すると簡単です。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧