garch1=function(object, newdata, genuine = FALSE, ...) 
{
    if (!inherits(object, "garch")) 
        stop("method is only for garch objects")
    if (missing(newdata)) {
        newdata <- eval.parent(parse(text = object$series))
        if (any(is.na(newdata))) 
            stop("NAs in newdata")
    }
    if (NCOL(newdata) > 1) 
        stop("newdata is not a vector or univariate time series")
    ists <- is.ts(newdata)
    if (ists) 
        newdata.tsp <- tsp(newdata)
    newdata <- as.matrix(newdata)
    n <- nrow(newdata)
    if (genuine) 
        h <- double(n + 1)
    else h <- double(n)
    pred <- .C("pred_garch", as.vector(newdata, mode = "double"), 
        h = as.vector(h, mode = "double"), as.integer(n), as.vector(object$coef, 
            mode = "double"), as.integer(object$order[1]), as.integer(object$order[2]), 
        as.integer(genuine), PACKAGE = "tseries")
    pred$h <- sqrt(pred$h)
    pred$h[1:max(object$order[1], object$order[2])] <- rep.int(NA, 
        max(object$order[1], object$order[2]))
    pred$h <- cbind(pred$h, -pred$h)
    if (ists) {
        attr(pred$h, "tsp") <- if (genuine) 
            c(newdata.tsp[1], newdata.tsp[2] + 1/newdata.tsp[3], 
                newdata.tsp[3])
        else newdata.tsp
        attr(pred$h, "class") <- "ts"
    }
    return(pred$h)
}

