観察日記 2010-02-18

EDOM と ERANGE

EDOM とか ERANGE とかに思想の違いがあることは一応わかったんだけど
現実問題としてそれらを区別する意味ってあるんかいな
思想じゃなくて歴史的事情なんでは
>nurse< atanh(1.0)はpole error->ERANGEなので必ずしもそうではなかったりも
pole error はそうですね
オーバーフローは事前に分からなくて、pole error なのか overflow なのかを見分けるには FE_OVERFLOW かどうかを見るしかない
>nurse< なるほど

If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, then errno shall be set to [ERANGE]. If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, then the divide-by-zero floating-point exception shall be raised.

http://www.opengroup.org/onlinepubs/9699919799/functions/atanh.html

atanh(3) と glibc

brian が ubuntudebian の libm のちがいにやられて諦めムードみたいですね
それにしても、ubuntu で atanh(1) が ERANGE で、debian では EDOM って、なんでなんだろうな
debian を見てみたけど、特にパッチは当たってなかったので
glibc の仕様変更なんじゃないでしょうか
changelog 的なものはあるかな
http://sourceware.org/cgi-bin/cvsweb.cgi/libc/ChangeLog.diff?r1=1.11642&r2=1.11643&cvsroot=glibc
これだ
変更理由は謎だな
えーと、ERANGE が投げられるようになったんだな
その前の日は pow を直してるようだ
glibc が最近でもこんなのを変更するとか怖い

glibc 2.10 からの変更で、eglibc 2.10にも取り込み済み。Ubuntu は 9.10 から glibc 2.10 とのこと。Debian も次期リリース (6.0) である squeeze は eglibc 2.10 になるようだ

lib/complex.rb

lib/rational.rb と lib/complex.rb は require するだけで deprecated な warning が上がるが、なんでだろうという話。See also #2756

CMath はなぜ cmath.rb なのか

なんで lib/complex.rb じゃないの? という疑問。

cmath.rb が complex.rb から分離されている理由は
cmath.rb だけを require しても Math が置き換わらないけど
complex.rb を require したら Math と CMath が置き換わる

絵文字エンコーディング

1.9.2がリリースされる前に絵文字エンコードをマージしたい!
成瀬さんには直接伝わっていますし、きっと大丈夫だと期待している
http://github.com/mrkn/ruby
{hermit_} mrkn's ruby at emoji - GitHub [text/html; charset=utf-8]
ここで作ってるんですが、
DoCoMo, KDDI, SoftBank の各社の絵文字間のエンコーディング変換を実装したものです
Google

絵文字系エンコーディングの追加は以前から予告しているので、出来たら即つっこむつもり。

「-」でつないで後ろにつくのか > http://github.com/mrkn/ruby/blob/emoji/enc/x-emoji.c
{hermit_} enc/x-emoji.c at emoji from mrkn's ruby - GitHub [text/html; charset=utf-8]
そうしてます
X-Shift_JIS-DoCoMo のほうが良いかなぁとか、悩んでますが
UTF-8じゃなくてUTF8で始まってるのはなんか間違えそう。
ISO-2022-JP の - は詰めてないのに UTF-8 だけ詰めるなよって自分でも若干思っていたので

この辺の SJIS-xxx や eucJP-xxx のようなネーミングは「OSF 日本ベンダ協議会 (OSF/JVC) 推奨 日本語 EUC ・シフト JIS 間コード変換仕様とコード系実態調査」の「コード系名の詳細化」が由来です。

g>KDDI-UNDOC
{ko1_ndk} google web bot: tomi-ruのモバイル日記 - モバイルハッカー連絡会 - http://mobilehacker.g.hatena.ne.jp/tomi-ru/?of=5 (and 99 hits)
http://github.com/mrkn/ruby/commit/17b3f09939e4cf5444ee6f29198bbc51f64c11b0
{hermit_} Commit 17b3f09939e4cf5444ee6f29198bbc51f64c11b0 to mrkn's ruby - GitHub [text/htm
l; charset=utf-8]
UNDOCって何だろう
KDDI の公式ドキュメントでは説明されてないんだけど
フォームに入力された文字列がサーバに送られてくるときに使用されてるエンコーディングです
UNDOC を入れないと、KDDI の端末から絵文字入りの文字列を取得しても扱えないんでしょうね
UNDOC ではあるけどその業界ではデファクトスタンダードなものなのかな
http://subtech.g.hatena.ne.jp/miyagawa/20071112/1194865208
{hermit_} KDDI/AUutf-8のHTMLフォームから送られてくる絵文字コード - Bulknews::Subtech - subtech [text/html; charset=utf-8]
KDDIの公式エンコーディングだとSoftBankと衝突する部分があるのですが、UNDOCのほうは衝突しないということも
例が出てこないな。

SJIS-KDDI-UNDOC は SJIS-KDDI にマージしてしまっていいのではないかな。結局デコードだけできればいいマッピングなので、「Windows-31J の重複符号化文字と Unicode」と事情は同じはず。

連続してるのにBEGIN_MAPの中にずらずら並んでるのがなんか嫌な感じが。
BEGIN_MAP_RANGE とか作ればいいのに。
BEGIN_MAP_RANGE とか言ったのはbegincidrangeみたいなのを思い浮かべてた。
そのズラズラ並んでるマップは、自動生成されたものなんですよ
自動生成にしてもまとめておいた方が良かったりしないのかなあ。
成瀬さんに任せよう
あのテーブルは NetBSD で使われているフォーマットらしいです

Citrus からとってきた形式ですね。で、元データについては、連続してるからと人が手ででまとめても保守性が下がるだけなのでやめた方がいいでしょう。最終結果は transcode が連続したデータを扱う指定がないのでやっぱりまとめても無駄です。transcode 側に連続したコード用の指定を入れた上で、自動で連続を処理してくれるツールをつくればやってもよいかな。GB18030絡みでそういうの自体は欲しいなとは思ってるので。まぁ、内部実装の話なので将来でいいでしょう。