/*	
 *	clipex10.h
 *
 *	16ビットで大きな値を表現するための、指数表現
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2018 Naoyuki Sawa
 *
 *	* Mon Apr 09 23:59:59 JST 2018 Naoyuki Sawa
 *	- 1st リリース。
 *	- Exp10_Decode()とExp10_Encode()を、cliplot.cからclipex10.cへ移動しました。
 *	  抽選処理以外でも使いたい事が有り、cliplot.oが無駄にリンクされてしまう事を避けるためです。
 */
#ifndef __CLIP_EX10_H__
#define __CLIP_EX10_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/****************************************************************************
 *	16ビットで大きな値を表現するための、指数表現
 ****************************************************************************/
// * Sat Aug 20 21:19:11 JST 2016 Naoyuki Sawa
// - Exp10_Decode(),Exp10_Encode()を追加しました。
// - 16ビットで大きな値を表現するための、指数表現です。
//   定数としてよく使われるであろう値に対応するために、基数を10としました。(この点が、clipfp16.hの半精度浮動小数点数とは違います。)
//   □仕様
//   │指数                         = 0〜5		┐ただし、指数が4以上の場合は、仮数は10921以下でなくてはならないものとします。
//   │仮数                         = 0〜10922		┘(10922*6+4)=65536，(10922*6+5)=65537となり、16ビットを超えてしまうからです。
//   │エンコード値 = 仮数×6＋指数 = 0〜65535		指数=10922，仮数=3
//   │デコード値   = 仮数×10^指数 = 0〜1092100000	指数=10921，仮数=5
// - 今回追加したExp10_Decode(),Exp10_Encode()は、抽選処理に限らず汎用的に使用出来る関数ですが、当モジュールに含める事にしました。
//   主な目的が、定数表に大きな値を格納して、LOT_get_column_weight()やLOT_get_table_weight_l()等で取得して利用するためだからです。
//   □使用例
//   │int Prize = LOT_get_table_weight_l(table, hitval_sel, column_id, -1);
//   │Prize = Exp10_Decode(Prize);
//   │printf("%d\n", Prize);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//指数表現を、整数値にデコードします。
//[in]
//	x		デコードする値		(0〜65535)の範囲外の値が指定された場合は、エラー停止します。
//[out]
//	戻り値		デコード値(0〜1092100000)を返します。
int Exp10_Decode(int _x);
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//整数値を、指数表現にエンコードします。
//[in]
//	x		エンコードする値
//[out]
//	戻り値		エンコード出来る値だったならば、エンコード値(0〜65535)を返します。
//			エンコード出来ない値だったならば、-1を返します。
int Exp10_Encode(int _x);
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_EX10_H__
