パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

スラドに聞け:いま使っている言語の仕様、把握している?」記事へのコメント

  • 十数年仕事で(アマ時代を入れると20年以上)使っていたのに知らなかったので数日はまった。

    バグったコードからエラー原因を簡素化したテストコードは以下。
    float型(i)とint型(k)で1ずつ加算していって異なったら
    標準エラーに出力。 

    #include <stdio.h>
    int main(){
      float i;
      int k;
      i=0;
      for(k=0;k<=16777217;k++){
        if(k != (int)i) fprintf(stderr,"%i %i\n",k,(int)i);
        i += 1;
      }
      return 0;
    }

    • by Anonymous Coward

      えー常識だと思っていたけどな
      計算機イプシロンとかその辺で出てくる話題だと思た

      • by Anonymous Coward

        計算機的な講義(世代により中学なり大学なり新人研修だったりするだろうけど)でイの一番に習いそうだけど。

        • by Anonymous Coward

          浮動小数のバックグランドを知らない人間に浮動小数を扱わせてはいけない、の実例。

          • Z80用の単精度浮動小数点ライブラリを自分で書いてみたクチだから、どれくらい浮動小数点での加減算が信用できない(精度が足りなくなる)か身に染みて分かる。
            今は浮動小数点形式の構造ばかりか、スタックの構造やらポインタ、果てはデータのメモリ内での記憶方法なんぞを知らなくても良い時代になったと思えばいいのかなあ。

            • by Anonymous Coward

              今はNCデータが割と身近にある仕事してるんだけど、それに慣れてると、小数はぜんぶ1000倍して常に整数で持たせたくなる。モノはでかくても4mくらいだし。

              • なぜ1024倍でないのか?

              • by Anonymous Coward

                0.001mm を 1024倍して何が嬉しい?

              • 二進数の整数で扱うなら、1000倍より1024倍の方が計算が簡単なんだけど、知らない?

                二進化十進数なら話は別だと思うけど。

              • by Anonymous Coward

                二進数の整数で扱うなら、1000倍より1024倍の方が計算が簡単なんだけど、知らない?

                いまどきこんなこと言ってる人いるんだなあw

                $ cat test.c
                int hoge(int n)
                {
                        return 1024 * n;
                }

                int piyo(int n)
                {
                        return 1000 * n;
                }

                $ gcc -O2 -S test.c -o -
                                .text
                                .globl hoge
                hoge:
                                movl %ecx, %eax
                                sall $10,

              • by Anonymous Coward

                えっと、IA-32命令 [intel.co.jp]で恐縮ですが、1024倍のほうは 0.5+4に対して、1000倍は14のレイテンシってことでいいのかな?
                たいぶ差が縮まったとはいえ、まだ3倍ほど"1024 * n"のほうが簡単だよね。

              • by Anonymous Coward

                えっと、IA-32命令 [intel.co.jp]で恐縮ですが、1024倍のほうは 0.5+4に対して、1000倍は14のレイテンシってことでいいのかな?

                いまどき「各表には、Intel Pentium 4 プロセッサに固有のデータを記載した。」なんて書かれてるドキュメントの数値を挙げてドヤ顔とは恐れ入ります。

              • by Anonymous Coward on 2016年08月27日 21時32分 (#3071132)

                いまどき「各表には、Intel Pentium 4 プロセッサに固有のデータを記載した。」なんて書かれてるドキュメントの数値を挙げてドヤ顔とは恐れ入ります。

                「顧客も自分が使っているCPUと同程度のものを使っているはず」って思い込める環境っていいよね。
                何のためにコンパイラがわざわざ2のべき乗の場合はシフト命令を吐くのか、みたいな思いなんていらないもんね。
                IA-32命令を挙げたのはそれしか86系CPUで命令毎の情報が見つからなかったからで、「○○以降なら乗算とシフトとは同じ速度で演算できる」っていうのが示せるんだったら出して欲しい。

                #仕事ではARMを使っているけど、ダイに入りきらなかったのか乗算器は積んでいない環境なんですよ。

                親コメント
              • by Anonymous Coward

                「顧客も自分が使っているCPUと同程度のものを使っているはず」って思い込める環境っていいよね。

                「いまどきこんなこと言ってる人いるんだなあw」と「いまどき」の話をしてる投稿に対するレスについて何トンチンカンなこと言ってんの?

              • by Anonymous Coward

                仕事ではARMを使っているけど、ダイに入りきらなかったのか乗算器は積んでいない環境なんですよ。

                そんなんで大騒ぎとは技量の低さが窺い知れますがおめでたいですねw

              • by Anonymous Coward

                IA-32命令を挙げたのはそれしか86系CPUで命令毎の情報が見つからなかったからで、「○○以降なら乗算とシフトとは同じ速度で演算できる」っていうのが示せるんだったら出して欲しい。

                「十分に速けりゃ議論として無意味」ということも理解できない頭なのかな?

              • by Anonymous Coward

                いまどき「各表には、Intel Pentium 4 プロセッサに固有のデータを記載した。」なんて書かれてるドキュメントの数値を挙げてドヤ顔とは恐れ入ります。

                「顧客も自分が使っているCPUと同程度のものを使っているはず」って思い込める環境っていいよね。

                今時Pentium4ユーザーが顧客ですか? ご愁傷様としか言えないですね。

              • by Anonymous Coward

                #仕事ではARMを使っているけど、ダイに入りきらなかったのか乗算器は積んでいない環境なんですよ。

                ARMはARM2の頃から使ってるけど乗算で苦労した記憶はないなあ。ARMって何使ってんの?

              • by Anonymous Coward

                #仕事ではARMを使っているけど、ダイに入りきらなかったのか乗算器は積んでいない環境なんですよ。

                ARMはARM2の頃から使ってるけど乗算で苦労した記憶はないなあ。ARMって何使ってんの?

                古いほうはARM7だったかな?SoCなので更新もなかなかできず両方現役です。ASIC部分が大きくて高速乗算器を諦めたと推定しています。設計者に聞いたわけではないので本当のところは判りませんが、サイズがキツいのは確かですから。
                苦労っていうより、単にスケーリングする時のような1000倍でも1024

              • by Anonymous Coward

                古いほうはARM7だったかな?SoCなので更新もなかなかできず両方現役です。ASIC部分が大きくて高速乗算器を諦めたと推定しています。設計者に聞いたわけではないので本当のところは判りませんが、サイズがキツいのは確かですから。

                ARM7? MUL命令やMLA命令は普通に使えた時代ですね。正直言って何言ってんのという感じだけど、それか、レベルの低い職場なんだなあ、としか。

              • by Anonymous Coward

                MUL命令自体はありますよ。それが高速乗算器を使うか反復乗算器を使うかはSoCにするときの実装しだいってことです。

              • by Anonymous Coward

                苦労っていうより、単にスケーリングする時のような1000倍でも1024倍でもいいような用途に、何も気にせず"n*1000"って書く奴にがっくりするんですよ。少なくとも、何万回も廻すループで使われないかとかは気にして欲しいし、「後で逆変換でスケーリングした分を除算するかもしれない」とくらいは考慮しておいて欲しいものです。(まあ、大きいほうにスケーリングすることはそう無いと思いますが)

                0.001mm を 1000倍して整数の 1 として扱いたいって話について何言ってんの?

開いた括弧は必ず閉じる -- あるプログラマー

処理中...