Sgn

Returns the sign part of a number

Syntax
	KeyPgDeclareDeclare KeyPgFunctionFunction Sgn ( KeyPgByvalByVal number KeyPgAsAs numtype ) KeyPgAsAs numtype

Usage
	result = Sgn( number )

Parameters
	number
		the number to find the sign of
	numtype
		a numeric type

Return Value
	Returns the sign part of number.
	* If number is greater than zero, then Sgn returns 1.
	* If number is equal to zero, then Sgn returns 0.
	* If number is less than zero, then Sgn returns -1.

Description
	The required number argument can be any valid numeric expression.
	Unsigned numbers of size greater than or equal to KeyPgSizeofSizeOf(KeyPgAnyAny KeyPgPtrPtr) will 
	be treated as if they were signed, i.e. if the highest bit is set the 
	number will be treated as negative, and -1 will be returned.

	Note:
		The return type of Sgn depends on the type of the passed argument 
		(variable or constant, its data type), and of the used backend (gas, 
		gas64, gcc 32-bit, gcc 64-bit):
			- Sgn return type for a variable passed as argument:
						Ŀ
						 Argument             gas (32-bit)  gas64 (64-bit)  gcc 32-bit (*)  gcc 64-bit (*) 
						 [U]BYTE variable     INTEGER       INTEGER         LONG            LONG           
						 [U]SHORT variable    INTEGER       INTEGER         LONG            LONG           
						 [U]LONG variable     INTEGER       INTEGER         LONG            LONG           
						 [U]INTEGER variable  INTEGER       INTEGER         LONG            LONG           
						 [U]LONGINT variable  LONGINT       INTEGER         LONG            LONG           
						 SINGLE variable      SINGLE        LONG            LONG            LONG           
						 DOUBLE variable      DOUBLE        LONG            LONG            LONG           
						

			- Sgn return type for a constant passed as argument:
						Ŀ
						 Argument             gas (32-bit)  gas64 (64-bit)  gcc 32-bit (*)  gcc 64-bit (*) 
						 [U]BYTE constant     INTEGER       INTEGER         INTEGER         INTEGER        
						 [U]SHORT constant    INTEGER       INTEGER         INTEGER         INTEGER        
						 [U]LONG constant     INTEGER       INTEGER         INTEGER         INTEGER        
						 [U]INTEGER constant  INTEGER       INTEGER         INTEGER         INTEGER        
						 [U]LONGINT constant  LONGINT       INTEGER         LONGINT         INTEGER        
						 SINGLE constant      SINGLE        SINGLE          SINGLE          SINGLE         
						 DOUBLE constant      DOUBLE        DOUBLE          DOUBLE          DOUBLE         
						

			(*): applicable also for clang and llvm

	The Sgn unary KeyPgOperatorOperator can be overloaded with user defined types.

Example
	Dim N As Integer = 0

	Print Sgn ( -1.87 )
	Print Sgn ( 0 )
	Print Sgn ( 42.658 )
	Print Sgn ( N )

		The output would look like:

	-1
	0
	1
	0

Dialect Differences
	* In the CompilerOptlang-lang qb dialect, this operator cannot be overloaded.

Differences from QB
	* None

See also
	* KeyPgAbsAbs
	* KeyPgOperatorOperator

