-- AlterTable
ALTER TABLE "users" ADD COLUMN "upvoteTrust" DOUBLE PRECISION NOT NULL DEFAULT 0;

CREATE OR REPLACE FUNCTION confidence(successes FLOAT, trials FLOAT, z FLOAT)
RETURNS FLOAT
LANGUAGE plpgsql
AS $$
DECLARE
    p FLOAT;
    lhand FLOAT;
    rhand FLOAT;
    under FLOAT;
BEGIN
    IF trials = 0 THEN
        RETURN 0;
    END IF;

    p := successes / trials;
    lhand := p + 1 / (2 * trials) * z * z;
    rhand := z * sqrt(p * (1 - p) / trials + z * z / (4 * trials * trials));
    under := 1 + 1 / trials * z * z;

    RETURN (lhand - rhand) / under;
END;
$$;