# CP_SetSqrt*

## C Specification

    	#include <nitro/cp.h>

    	void CP_SetSqrt64( u64 param );
    	void CP_SetSqrt32( u32 param );

## 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

## Notes

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.

## Argument

param | Value that calculates the square root.

## Return Values

None

## See Also

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

## Revision History

05/06/2004 Added description about status restoration.
01/09/2004 Added content.
12/01/2003 Initial version.