.packageName <- "smoothtail"
"dgpd" <-
function (x, gam, sigma = 1) 
{
    n <- length(x)
    d <- 1:n * NA
    if (gam < 0) {
        II <- (1:n) * (x >= 0) * (x < -sigma/gam)
        d[II] <- (1 + gam * x[II]/sigma)^(-(1 + 1/gam))
    }
    II <- (1:n) * (x >= 0)
    if (gam == 0) {
        d[II] <- exp(-x[II]/sigma)
    }
    if (gam > 0) {
        d[II] <- (1 + gam * x[II]/sigma)^(-(1 + 1/gam))
    }
    return(d/sigma)
}
"falk" <-
function (x) 
{
    n <- length(x)
    est <- activeSetLogCon(x, print = FALSE)
    q <- 1:n * NA
    for (c in 1:n) {
        q[c] <- quantilesLogConDens(c/n, x, est$phi, est$Fhat)
    }
    v1 <- 1:n * NA
    v2 <- v1
    for (k in 3:(n - 1)) {
        j <- 2:k
        temp <- (q[n] - q[n - j + 1])/(q[n] - q[n - k])
        v1[k] <- sum(log(temp))/(k - 1)
        temp <- (x[n] - x[n - j + 1])/(x[n] - x[n - k])
        v2[k] <- sum(log(temp))/(k - 1)
    }
    res <- cbind(k = 1:n, logcon = v1, order = v2)
    return(res)
}
"falkMVUE" <-
function (x, omega) 
{
    n <- length(x)
    v1 <- 1:n * NA
    v2 <- v1
    if (omega < x[n]) {
        cat("omega must be greater than max(x)!")
    }
    else {
        est <- activeSetLogCon(x, print = FALSE)
        q <- 1:n * NA
        for (c in 1:n) {
            q[c] <- quantilesLogConDens(c/n, x, est$phi, est$Fhat)
        }
        for (k in 2:(n - 1)) {
            j <- 2:k
            temp <- (omega - q[n - j + 1])/(omega - q[n - k])
            v1[k] <- sum(log(temp))/k
            temp <- (omega - x[n - j + 1])/(omega - x[n - k])
            v2[k] <- sum(log(temp))/k
        }
        res <- cbind(k = 1:n, logcon = v1, order = v2)
        return(res)
    }
}
"pgpd" <-
function (q, gam, sigma = 1) 
{
    n <- length(q)
    p <- 1:n * NA
    if (gam < 0) {
        II <- (1:n) * (q >= 0) * (q < -sigma/gam)
        p[II] <- 1 - (1 + gam * q[II]/sigma)^(-1/gam)
    }
    II <- (1:n) * (q >= 0)
    if (gam == 0) {
        p[II] <- 1 - exp(-q[II]/sigma)
    }
    if (gam > 0) {
        p[II] <- 1 - (1 + gam * q[II]/sigma)^(-1/gam)
    }
    return(p)
}
"pickands" <-
function (x) 
{
    n <- length(x)
    res <- NA
    est <- activeSetLogCon(x, print = FALSE)
    q <- 1:n * NA
    for (c in 1:n) {
        q[c] <- quantilesLogConDens(c/n, x, est$phi, est$Fhat)
    }
    v1 <- 1:n * NA
    v2 <- v1
    for (k in 4:n) {
        k2 <- floor(k/4)
        q1 <- quantilesLogConDens((n - k/4 + 1)/n, x, est$phi, 
            est$Fhat)
        q2 <- quantilesLogConDens((n - k/2 + 1)/n, x, est$phi, 
            est$Fhat)
        q3 <- quantilesLogConDens((n - k + 1)/n, x, est$phi, 
            est$Fhat)
        v1[k] <- (q1 - q2)/(q2 - q3)
        v2[k] <- (x[n - k2 + 1] - x[n - 2 * k2 + 1])/(x[n - 2 * 
            k2 + 1] - x[n - 4 * k2 + 1])
    }
    v1 <- log(v1)/log(2)
    v2 <- log(v2)/log(2)
    res <- cbind(k = 1:n, logcon = v1, order = v2)
    return(res)
}
"qgpd" <-
function (p, gam, sigma = 1) 
{
    n <- length(p)
    q <- 1:n * NA
    for (i in 1:n) {
        if (p[i] <= 0) {
            q[i] <- -Inf
        }
        if (p[i] == 1) {
            q[i] <- max(p)
        }
        if (p[i] > 1) {
            q[i] <- Inf
        }
        if (is.na(q[i]) == 1) {
            if (gam != 0) {
                q[i] <- ((1 - p[i])^(-gam) - 1)/gam
            }
            if (gam == 0) {
                q[i] <- -log(1 - p[i])
            }
        }
    }
    return(q * sigma)
}
"rgpd" <-
function (n, gam, sigma = 1) 
{
    u <- runif(n, 0, 1)
    r <- qgpd(u, gam, sigma)
    err <- 0
    if (n <= 0) {
        err <- 1
        cat("Please give a strict positive n!")
    }
    if (err == 0) {
        return(sort(r))
    }
}
