Database Reference
In-Depth Information
value2 double precision, pos int[], VARIADIC
userargs text[])
RETURNS double precision
AS $$
DECLARE
L double precision;
C double precision;
G double precision;
_value1 double precision;
_value2 double precision;
_n double precision;
_d double precision;
BEGIN
-- userargs provides coefficients
L := userargs[1]::double precision;
C := userargs[2]::double precision;
G := userargs[3]::double precision;
-- value can't be NULL
IF
value1 IS NULL OR
value2 IS NULL
THEN
RETURN NULL;
END IF;
_value1 := value1 * 0.0001;
_value2 := value2 * 0.0001;
-- compute numerator and denominator
_n := (_value2 - _value1);
_d := (L + _value2 + (C * _value1));
-- prevent division by zero
IF _d::numeric(16, 10) =
0.::numeric(16, 10) THEN
RETURN NULL;
END IF;
RETURN G * (_n / _d);
END;
$$ LANGUAGE plpgsql IMMUTABLE;
Search WWH ::




Custom Search