Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | True |
| Execute As | |
| Null on Null Input | False |
| Schema Bound | False |
| Assembly |
Parameters
| Name | Data Type | Length | Description |
|---|---|---|---|
| (Result) | float | 8 | |
| @p | float | 8 |
SQL Script
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE FUNCTION dbo.NORMSINV (
@p float)
RETURNS float
WITH encryption ,
EXECUTE AS CALLER
AS
BEGIN
declare @hasil float=null;
DECLARE @q float, @r float,@P_HIGH float;
DECLARE @A1 float = -39.696830286653757;
DECLARE @A2 float = 220.9460984245205;
DECLARE @A3 float = -275.92851044696869;
DECLARE @A4 float = 138.357751867269;
DECLARE @A5 float = -30.66479806614716;
DECLARE @A6 float = 2.5066282774592392;
DECLARE @B1 float = -54.476098798224058;
DECLARE @B2 float = 161.58583685804089;
DECLARE @B3 float = -155.69897985988661;
DECLARE @B4 float = 66.80131188771972;
DECLARE @B5 float = -13.280681552885721;
DECLARE @C1 float = -0.0077848940024302926;
DECLARE @C2 float = -0.32239645804113648;
DECLARE @C3 float = -2.4007582771618381;
DECLARE @C4 float = -2.5497325393437338;
DECLARE @C5 float = 4.3746641414649678;
DECLARE @C6 float = 2.9381639826987831;
DECLARE @D1 float = 0.0077846957090414622;
DECLARE @D2 float = 0.32246712907003983;
DECLARE @D3 float = 2.445134137142996;
DECLARE @D4 float = 3.7544086619074162;
/* define break points */
DECLARE @P_LOW float = 0.02425;
SET @P_HIGH = 1 - @P_LOW;
IF (@p > 0 AND @p < @P_LOW)
BEGIN
/* rational approximation for lower region */
SET @q = SQRT(-2 * LOG(@p));
set @hasil= (((((@C1 * @q + @C2) * @q + @C3) * @q + @C4) * @q + @C5) * @q + @C6) /
((((@D1 * @q + @D2) * @q + @D3) * @q + @D4) * @q + 1);
END
ELSE IF (@p >= @P_LOW AND @p <= @P_HIGH)
BEGIN
/* rational approximation for central region */
SET @q = @p - 0.5;
SET @r = @q * @q;
set @hasil= (((((@A1 * @r + @A2) * @r + @A3) * @r + @A4) * @r + @A5) * @r + @A6) * @q /
(((((@B1 * @r + @B2) * @r + @B3) * @r + @B4) * @r + @B5) * @r + 1);
END
ELSE IF (@p > @P_HIGH AND @p < 1)
BEGIN
/* rational approximation for upper region */
SET @q = SQRT(-2 * LOG(1 - @p));
set @hasil= -(((((@C1 * @q + @C2) * @q + @C3) * @q + @C4) * @q + @C5) * @q + @C6) /
((((@D1 * @q + @D2) * @q + @D3) * @q + @D4) * @q + 1);
/* on error returning 0 */
END
ELSE
BEGIN
set @hasil= 0;
END
return @hasil;
END
GO
GO
CREATE FUNCTION dbo.NORMSINV (
@p float)
RETURNS float
WITH encryption ,
EXECUTE AS CALLER
AS
BEGIN
declare @hasil float=null;
DECLARE @q float, @r float,@P_HIGH float;
DECLARE @A1 float = -39.696830286653757;
DECLARE @A2 float = 220.9460984245205;
DECLARE @A3 float = -275.92851044696869;
DECLARE @A4 float = 138.357751867269;
DECLARE @A5 float = -30.66479806614716;
DECLARE @A6 float = 2.5066282774592392;
DECLARE @B1 float = -54.476098798224058;
DECLARE @B2 float = 161.58583685804089;
DECLARE @B3 float = -155.69897985988661;
DECLARE @B4 float = 66.80131188771972;
DECLARE @B5 float = -13.280681552885721;
DECLARE @C1 float = -0.0077848940024302926;
DECLARE @C2 float = -0.32239645804113648;
DECLARE @C3 float = -2.4007582771618381;
DECLARE @C4 float = -2.5497325393437338;
DECLARE @C5 float = 4.3746641414649678;
DECLARE @C6 float = 2.9381639826987831;
DECLARE @D1 float = 0.0077846957090414622;
DECLARE @D2 float = 0.32246712907003983;
DECLARE @D3 float = 2.445134137142996;
DECLARE @D4 float = 3.7544086619074162;
/* define break points */
DECLARE @P_LOW float = 0.02425;
SET @P_HIGH = 1 - @P_LOW;
IF (@p > 0 AND @p < @P_LOW)
BEGIN
/* rational approximation for lower region */
SET @q = SQRT(-2 * LOG(@p));
set @hasil= (((((@C1 * @q + @C2) * @q + @C3) * @q + @C4) * @q + @C5) * @q + @C6) /
((((@D1 * @q + @D2) * @q + @D3) * @q + @D4) * @q + 1);
END
ELSE IF (@p >= @P_LOW AND @p <= @P_HIGH)
BEGIN
/* rational approximation for central region */
SET @q = @p - 0.5;
SET @r = @q * @q;
set @hasil= (((((@A1 * @r + @A2) * @r + @A3) * @r + @A4) * @r + @A5) * @r + @A6) * @q /
(((((@B1 * @r + @B2) * @r + @B3) * @r + @B4) * @r + @B5) * @r + 1);
END
ELSE IF (@p > @P_HIGH AND @p < 1)
BEGIN
/* rational approximation for upper region */
SET @q = SQRT(-2 * LOG(1 - @p));
set @hasil= -(((((@C1 * @q + @C2) * @q + @C3) * @q + @C4) * @q + @C5) * @q + @C6) /
((((@D1 * @q + @D2) * @q + @D3) * @q + @D4) * @q + 1);
/* on error returning 0 */
END
ELSE
BEGIN
set @hasil= 0;
END
return @hasil;
END
GO
Depends On
No items found