# CP_SetSqrtImm*

## 構文

  `#include <nitro/cp.h>`
  `void CP_SetSqrtImm64( u64 param );`
  `void CP_SetSqrtImm32( u32 param );`

## 引数

param | 平方根演算を行う値

## 返り値

なし。

## 説明

平方根演算のパラメータを設定します。
平方根演算モードの設定は行わず、パラメータを格納するのみです。
演算モードは以下の2つがあります。

平方根演算モード | 計算 | 計算サイクル | CPUサイクル換算
--- | --- | --- | ---
CP_SQRT_32BIT_MODE | 32ビット値の平方根演算 | 13サイクル | 26サイクル
CP_SQRT_64BIT_MODE | 64ビット値の平方根演算 | 13サイクル | 26サイクル

(注意)
平方根演算器は割り込み内で値が上書きされることがあります。パラメータを設定して平方根演算を行っている最中に割り込みが発生し平方根演算器が使用された場合に、元の演算結果が破壊されてしまいます。従って割り込み内で平方根演算器を使用する場合には`CP_SaveContext()`, `CP_RestoreContext()`を用いて平方根演算器の状態を退避・復元する必要があります。
スレッド切り替え時には、平方根演算器の状態も自動的に保存・復元されます。

> 例平方根演算器の状態を復元する
> `intr_func( void )
> {
> CPContext context;
> CP_SaveContext( &context );
> CP_SetSqrt32( 1000 );
> CP_WaitSqrt();
> result = CP_GetSqrtResult32();
> CP_RestoreContext( &context );
> }`

## 内部動作

`IOレジスタの、SQRT_PARAM(0x40002B8)に値を格納します。
`

## 参照

`CP_SetSqrt*, CP_IsSqrtBusy, CP_WaitSqrt, CP_GetSqrtResult*
`

## 履歴

2006/08/09 割り込み内での使用に関する注意を追加
2004/01/09 内容を追加
2003/12/01 初版