URR は IEEE754 とは異なる実数表現で、スケーラビリティに優れた数値表現方法です。 このモジュールではその URR をクラステンプレートで実現しました。任意の整数型をベースに URR 型を定義できます。 尚、この URR 型のエンディアンはベースとなった整数型と同じエンディアンになります。
下のリンクから urr.h をダウンロードして、URRを使用したいモジュール内で urr.h をインクルードするだけです。
■例1 #include "urr.h" int urr_add(int a, int b) { typedef urr<int> urr_t; urr_t urr_a = a; urr_t urr_b = b; urr_t urr_c = urr_a +urr_b; return urr_c; } ■例2 #include "urr.h" void print_fault_number() { typedef urr<int> urr_t; int i = 0; while(i == (int)urr_t(i)) { ++i; } printf("urr<int> で表現できない最小の整数値:%d\n", i); }
| マクロ名 | 種別 | 説明 |
|---|---|---|
| TRICKLIB_URR_H | 自動定義 | urr.h の重複インクルード対策の為に使用されています。 |
| URR_DISABLED_FRIEND_FLOAT | ネイティブの浮動小数点型が使用できない環境のときはこのマクロを指定してください。 | |
| URR_DEFAULT_FRIEND_FLOAT | ユーザ定義/自動定義 | デフォルトで使用される浮動小数点型を指定します。urr クラステンプレートの第三引数のデフォルト値となり、この指定に合わせて浮動小数点型との変換用 operator が定義されます。ユーザ定義による指定がない場合は double になります。 |
最初はもっといろいろ作りこもうかと考えてたんだけど、面倒臭くなってきたんでこの辺で放棄します。