//////////////////////////////////////////////////////////////////////
//====================================================================
//
//	Framework of LunAtic Notation
//	(c)2006 danmaq
//
//		※各上位ライブラリから間接的にインクルードされます。
//			直接インクルードすることはありません。
//
//====================================================================
//////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//	定数(書換不可)
//////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//	定数(書換可能)
//////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//	メンバ変数(原則書換不可)
//////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//--------------------------------------------------------------------
//	算術関数(双曲線関数系)
//--------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////

/**	ハイパーボリックサインを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックサイン値
*/
function Hsin( let nDegree ){ return ( Exp( nDegree ) - Exp( -nDegree ) ) / 2; }

/**	ハイパーボリックコサインを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックコサイン値
*/
function Hcos( let nDegree ){ return ( Exp( nDegree ) + Exp( -nDegree ) ) / 2; }

/**	ハイパーボリックタンジェントを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックタンジェント値
*/
function Htan( let nDegree ){ return ( Exp( nDegree ) - Exp( -nDegree ) ) / ( Exp( nDegree ) + Exp( -nDegree ) ); }

/**	ハイパーボリックセカントを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックセカント値
*/
function Hsec( let nDegree ){ return 2 / ( Exp( nDegree ) +  Exp( -nDegree ) ); }

/**	ハイパーボリックコセカントを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックコセカント値
*/
function Hcosec( let nDegree ){ return 2 / ( Exp( nDegree ) - Exp( -nDegree ) ); }

/**	ハイパーボリックコタンジェントを計算します。
*	Expのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックコタンジェント値
*/
function Hcotan( let nDegree ){ return Exp( -nDegree ) / ( Exp( nDegree ) - Exp( -nDegree ) ) * 2 + 1; }

/**	ハイパーボリックアークサインを計算します。
*	logのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークサイン値
*/
function Hasin( let nDegree ){ return log( nDegree + ( nDegree ^ 2 + 1 ) ^ 0.5 ); }

/**	ハイパーボリックアークコサインを計算します。
*	logのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークコサイン値
*/
function Hacos( let nDegree ){ return log( nDegree + ( nDegree ^ 2 - 1 ) ^ 0.5 ); }

/**	ハイパーボリックアークタンジェントを計算します。
*	logのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークタンジェント値
*/
function Hatan( let nDegree ){ return log( ( 1 + nDegree ) / ( 1 - nDegree ) ) / 2; }

/**	ハイパーボリックアークセカントを計算します。
*	logのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークセカント値
*/
function Hasec( let nDegree ){ return log( ( ( -nDegree * nDegree + 1 ) ^ 0.5 + 1 ) / nDegree ); }

/**	ハイパーボリックアークコセカントを計算します。
*	log/GetSignのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークコセカント値
*/
function Hacosec( let nDegree ){ return log( ( GetSign( nDegree ) * ( nDegree ^ 2 + 1 ) ^ 0.5 + 1 ) / nDegree ); }

/**	ハイパーボリックアークコタンジェントを計算します。
*	logのラッパーです。
*	@param nDegree 角度
*	@return 角度に対応するハイパーボリックアークコタンジェント値
*/
function Hacotan( let nDegree ){ return log( ( nDegree + 1 ) / ( nDegree - 1 ) ) / 2; }
