teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

suibaka氏のはただのミスっぽい

2017/06/17 09:45

投稿

yumetodo
yumetodo

スコア5852

answer CHANGED
@@ -74,7 +74,13 @@
74
74
  Boost勉強会に出席するような人がいうと信憑性があるな・・・。
75
75
  [https://twitter.com/yumetodo/status/875967024014348288](https://twitter.com/yumetodo/status/875967024014348288)
76
76
  Twitterにて問い合わせ中です。
77
+ **追記:**返答がありました。
77
78
 
79
+ > [https://twitter.com/suibaka/status/876011991055294465](https://twitter.com/suibaka/status/876011991055294465)
80
+ > ぎゃー long double と間違えました!当時の記憶が全く無いのであれですが,多分コピペして書き換えるの忘れてたんだと思います(本当に申し訳ないです)
81
+
82
+ 間違えただけらしいです。
83
+
78
84
  > [この記事](https://ameblo.jp/ico-net/entry-12252242268.html)では、`unsigned double`だけでなく`unsigned float`もあるとのことです。
79
85
 
80
86
  「int---------->4バイト」の時点で察しですね

4

add link

2017/06/17 09:45

投稿

yumetodo
yumetodo

スコア5852

answer CHANGED
@@ -1,11 +1,13 @@
1
1
  # 追記:GPUでunsigned floating pointが存在する可能性
2
2
 
3
- https://msdn.microsoft.com/ja-jp/library/ee418354(v=vs.85).aspx
3
+ [スカラー型 (DirectX HLSL)](https://msdn.microsoft.com/ja-jp/library/ee418354(v=vs.85).aspx)
4
4
 
5
5
  DirectX HLSLでは、`unorm float`という0 ~ 1 の範囲の IEEE 32 ビット符号なし**正規化**浮動小数点型が存在するようです。正規化というからには部分集合なんですね。
6
6
 
7
7
  つまり、**部分集合といういささか特殊例ではありますが、符号なし浮動小数点を実装した処理系は存在します。**
8
8
 
9
+ KSwordOfHasteさんが取り上げているSOFのJerry Coffin氏の回答はこれを念頭においている可能性があります。
10
+
9
11
  # 追記前の内容
10
12
 
11
13
  まず、プログラミング言語レベルの話の前に、アーキテクチャレベルの話、もっというとFPUの話が必要でしょう。

3

存在します

2017/06/17 07:23

投稿

yumetodo
yumetodo

スコア5852

answer CHANGED
@@ -1,3 +1,13 @@
1
+ # 追記:GPUでunsigned floating pointが存在する可能性
2
+
3
+ https://msdn.microsoft.com/ja-jp/library/ee418354(v=vs.85).aspx
4
+
5
+ DirectX HLSLでは、`unorm float`という0 ~ 1 の範囲の IEEE 32 ビット符号なし**正規化**浮動小数点型が存在するようです。正規化というからには部分集合なんですね。
6
+
7
+ つまり、**部分集合といういささか特殊例ではありますが、符号なし浮動小数点を実装した処理系は存在します。**
8
+
9
+ # 追記前の内容
10
+
1
11
  まず、プログラミング言語レベルの話の前に、アーキテクチャレベルの話、もっというとFPUの話が必要でしょう。
2
12
 
3
13
  現状、殆どのFPUはIEEE754規格に準拠した振る舞いを示します。最も有名な例外はARMが持つNEON(SIMD)命令が対応していないことでしょうか。
@@ -75,11 +85,3 @@
75
85
  > 「UTF-8」において、全角文字は「3バイト」である
76
86
 
77
87
  とか言っちゃう人の記事は信用したくない。
78
-
79
- ---
80
-
81
- # 追記:GPUでunsigned floating pointが存在する可能性
82
-
83
- https://msdn.microsoft.com/ja-jp/library/ee418354(v=vs.85).aspx
84
-
85
- DirectX HLSLでは、`unorm float`という0 ~ 1 の範囲の IEEE 32 ビット符号なし**正規化**浮動小数点型が存在するようです。正規化というからには部分集合なんですね。

2

IEEE754 32bit浮動小数点数の部分集合としてならあった

2017/06/17 07:19

投稿

yumetodo
yumetodo

スコア5852

answer CHANGED
@@ -74,4 +74,12 @@
74
74
  > [http://mw211.com/devlog/index.php?m=201107](http://mw211.com/devlog/index.php?m=201107)
75
75
  > 「UTF-8」において、全角文字は「3バイト」である
76
76
 
77
- とか言っちゃう人の記事は信用したくない。
77
+ とか言っちゃう人の記事は信用したくない。
78
+
79
+ ---
80
+
81
+ # 追記:GPUでunsigned floating pointが存在する可能性
82
+
83
+ https://msdn.microsoft.com/ja-jp/library/ee418354(v=vs.85).aspx
84
+
85
+ DirectX HLSLでは、`unorm float`という0 ~ 1 の範囲の IEEE 32 ビット符号なし**正規化**浮動小数点型が存在するようです。正規化というからには部分集合なんですね。

1

事例として上げていただいた個別の記事について見ていく

2017/06/17 07:16

投稿

yumetodo
yumetodo

スコア5852

answer CHANGED
@@ -13,6 +13,8 @@
13
13
 
14
14
  C#などのように、浮動小数点数の定義をIEEE754に丸投げする言語もありますから、そういった言語を使えなくする処理系は作りにくいかと思います。
15
15
 
16
+ ---
17
+
16
18
  ハードウェアが対応していないものをプログラミング言語レベルで対応するのは困難です。なぜなら必ずオーバーヘッドが発生するからです(ライブラリで対応するべき事案)。よく処理系が標準規格にない型を追加していることがありますが、これはハードウェアがサポートしているものを使うために拡張しているのであって、ハードウェアが対応していないものを実装することは現実的ではありません。
17
19
 
18
20
  ではそもそもなぜIEEE754ではunsignedなfloating pointを定義していないか、ですが、
@@ -29,4 +31,47 @@
29
31
  浮いたビットは指数部に回すのかな。仮数部に回したところで精度口上は微々たるものだから。
30
32
  とすると、巨大な指数が必要となる非負数を扱いたい領域がターゲットとなるわけで、うーむ。
31
33
 
32
- その余剰した1bitを何に使うんだい、精度か?値域か?そもそも需要は?というあたりで、IEEE754を書いた連中は定義しなかったんだろう、と推測されます。
34
+ その余剰した1bitを何に使うんだい、精度か?値域か?そもそも需要は?というあたりで、IEEE754を書いた連中は定義しなかったんだろう、と推測されます。
35
+
36
+ ---
37
+
38
+ さて、事例として上げていただいた個別の記事について見ていきましょう。
39
+
40
+ > [この記事](http://qiita.com/wholekeik/items/4b8ee0825f0b12778a3a)によれば、大学の講義に使われたスライドに`unsigned double`と書かれていたようです。記事の著者は`long double`との勘違いではと推測しているようです。
41
+
42
+ 大学の授業は信憑性がないのでその解釈でいいと思います。
43
+
44
+ > [このスライド](http://exploredoc.com/doc/5967854/c%E8%A8%80%E8%AA%9E%E3%81%AE%E5%9F%BA%E6%9C%AC)の7番目(スライド内のページとしては27ページ)に`unsigned double`と書かれています。値の範囲を見る限り、`long double`と勘違いしたとは思えません。
45
+
46
+ 金 帝演という情報系の助教さんが書いているようですが、`char`型の値域が`-128~127`とか言っている時点で察しですね。
47
+
48
+ > [この掲示板](http://pc8.2ch.net/test/read.cgi/tech/1108815602/543-)に`unsigned double`の言及があります。ただ、所詮2chですので、回答者がふざけている可能性は否定できません。
49
+
50
+ 流れ見た感じ回答側がネタとしか思えないのでスルー安定。
51
+
52
+ > [この掲示板](http://dixq.net/forum/viewtopic.php?f=3&t=14604)でも`unsigned double`の言及があります。`unsigned double`がわかる回答者はいないようです。
53
+
54
+ 「大学で簡単なシステムをいくつか組みましたが」とか書いているので多分大学の授業で吹き込まれた口でしょう
55
+
56
+ > [この解説](http://www.geocities.jp/uncle_of_psp/contents/programing/contents/C_kata.html)では符号無しの数値の型の一つとして`unsigned double`が紹介されています。
57
+
58
+ そもそもこの人は「型修飾子」の定義からして間違っているので信憑性0。
59
+
60
+ > C++になりますが、[このスライド](https://www.slideshare.net/Suikaba/try-to-use-boostmpl)の17番目にあるコード例に`unsigned double`があります。Cだけでなく、C++にも存在するのでしょうか?
61
+
62
+ Boost勉強会に出席するような人がいうと信憑性があるな・・・。
63
+ [https://twitter.com/yumetodo/status/875967024014348288](https://twitter.com/yumetodo/status/875967024014348288)
64
+ Twitterにて問い合わせ中です。
65
+
66
+ > [この記事](https://ameblo.jp/ico-net/entry-12252242268.html)では、`unsigned double`だけでなく`unsigned float`もあるとのことです。
67
+
68
+ 「int---------->4バイト」の時点で察しですね
69
+
70
+ > [この記事](http://mw211.com/devlog/index.php?date=20130304)ではさらにunsigned long doubleまであるとのことです。
71
+
72
+ 表作るときに間違えただけのような・・・。そもそも
73
+
74
+ > [http://mw211.com/devlog/index.php?m=201107](http://mw211.com/devlog/index.php?m=201107)
75
+ > 「UTF-8」において、全角文字は「3バイト」である
76
+
77
+ とか言っちゃう人の記事は信用したくない。