# CP_SetSqrt*

## C Specification

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

## Arguments

param | Value of the square root to be calculated.

## Return Values

None.

## Description

Sets the parameters for square root calculations. Sets the square root calculation mode first, and then stores parameters. There are two calculation modes, as follows:

Division Mode | Calculation
CP_SQRT_32BIT_MODE | Square root calculation of 32-bit value
CP_SQRT_64BIT_MODE | Square root calculation of 64-bit value

Note: With the square root calculator, sometimes the value is overwritten in the interrupt. If the parameters are set up, an interrupt occurs during the square root calculation and the square root calculator is used, then the original calculated result is invalid. Therefore, if you are using the square root calculator in an interrupt, the status of the square root calculator needs to be temporarily saved/restored using `CP_SaveContext` and `CP_RestoreContext`.During a thread switch, the contents of the square root calculator are also automatically saved/restored.

> Example: Restore the square root calculator status
> `intr_func( void )
> {
> CPContext context;
> CP_SaveContext( &context );
> CP_SetSqrt32( 1000 );
> CP_WaitSqrt();
> result = CP_GetSqrtResult32();
> CP_RestoreContext( &context );
> }`

## Internal Operation

`Stores values in `SQRTCNT(0x40002B0)` and `SQRT_PARAM(0x40002B8)` of the IO register.
`

## See Also

`CP_SetSqrtImm*, CP_IsSqrtBusy, CP_WaitSqrt, CP_GetSqrtResult*, CP_SaveContext, CP_RestoreContext`

## Revision History

03/08/2005 Unified Japanese term for "interrupt."
05/06/2004 Added description about status restoration.
01/09/2004 Added content.
12/01/2003 Initial version.

CONFIDENTIAL