# Mystery function for HW 9, Advanced Data Analysis, spring 2015

charles <- function(fm, x) {
    x <- scale(x)

    p <- nrow(fm$loadings)
    stopifnot(ncol(x) == p)

    v <- fm$loadings %*% t(fm$loadings)
    diag(v) <- 1

    stopifnot(require(mixtools))

    return(sum(logdmvnorm(x,sigma=v)))
}
