theta.kl<-c(-2.3,-2.3,-1.9,-2.3,0.5,-0.5,0.5,0.5)

qfun.kl<- function(gamma)
{
        rmat <- array(0, c(4, 3, 3))
        theta<- exp(gamma)
        rmat[1, 1, 1] <- ( - theta[1] - theta[2])
        rmat[1, 1, 2] <- theta[1]
        rmat[1, 1, 3] <- theta[2]
        rmat[1, 2, 1] <- theta[3]
        rmat[1, 2, 2] <- ( - theta[3] - theta[4])
        rmat[1, 2, 3] <- theta[4]
        rmat[2, 1, 1] <- ( - theta[1] * theta[6] - theta[2])
        rmat[2, 1, 2] <- theta[1] * theta[6]
        rmat[2, 1, 3] <- theta[2]
        rmat[2, 2, 1] <- theta[3] * theta[8]
        rmat[2, 2, 2] <- ( - theta[3] * theta[8] - theta[4])
        rmat[2, 2, 3] <- theta[4]
        rmat[3, 1, 1] <- ( - theta[1] * theta[5] - theta[2])
        rmat[3, 1, 2] <- theta[1] * theta[5]
        rmat[3, 1, 3] <- theta[2]
        rmat[3, 2, 1] <- theta[3] * theta[7]
        rmat[3, 2, 2] <- ( - theta[3] * theta[7] - theta[4])
        rmat[3, 2, 3] <- theta[4]
        rmat[4, 1, 1] <- ( - theta[1] * theta[5] * theta[6] - theta[2])
        rmat[4, 1, 2] <- theta[1] * theta[5] * theta[6]
        rmat[4, 1, 3] <- theta[2]
        rmat[4, 2, 1] <- theta[3] * theta[7] * theta[8]
        rmat[4, 2, 2] <- ( - theta[3] * theta[7] * theta[8] - theta[4])
        rmat[4, 2, 3] <- theta[4]
        return(rmat)
}

qderivs.kl<- function(gamma)
{
        rmat <- array(0, c(8, 4, 3, 3))
        theta <- exp(gamma)
        rmat[1, 1, 1, 1] <- ( - theta[1])
        rmat[1, 1, 1, 2] <- theta[1]
        rmat[1, 2, 1, 1] <- ( - theta[1] * theta[6])
        rmat[1, 2, 1, 2] <- theta[1] * theta[6]
        rmat[1, 3, 1, 1] <- ( - theta[1] * theta[5])
        rmat[1, 3, 1, 2] <- theta[1] * theta[5]
        rmat[1, 4, 1, 1] <- ( - theta[1] * theta[6] * theta[5])
        rmat[1, 4, 1, 2] <- theta[1] * theta[6] * theta[5]
        rmat[2, 1, 1, 1] <- ( - theta[2])
        rmat[2, 1, 1, 3] <- theta[2]
        rmat[2, 2, 1, 1] <- ( - theta[2])
        rmat[2, 2, 1, 3] <- theta[2]
        rmat[2, 3, 1, 1] <- ( - theta[2])
        rmat[2, 3, 1, 3] <- theta[2]
        rmat[2, 4, 1, 1] <- ( - theta[2])
        rmat[2, 4, 1, 3] <- theta[2]
        rmat[3, 1, 2, 1] <- theta[3]
        rmat[3, 1, 2, 2] <- ( - theta[3])
        rmat[3, 2, 2, 1] <- theta[3] * theta[8]
        rmat[3, 2, 2, 2] <- ( - theta[3] * theta[8])
        rmat[3, 3, 2, 1] <- theta[3] * theta[7]
        rmat[3, 3, 2, 2] <- ( - theta[3] * theta[7])
        rmat[3, 4, 2, 1] <- theta[3] * theta[7] * theta[8]
        rmat[3, 4, 2, 2] <- ( - theta[3] * theta[7] * theta[8])
        rmat[4, 1, 2, 2] <- ( - theta[4])
        rmat[4, 1, 2, 3] <- theta[4]
        rmat[4, 2, 2, 2] <- ( - theta[4])
        rmat[4, 2, 2, 3] <- theta[4]
        rmat[4, 3, 2, 2] <- ( - theta[4])
        rmat[4, 3, 2, 3] <- theta[4]
        rmat[4, 4, 2, 2] <- ( - theta[4])
        rmat[4, 4, 2, 3] <- theta[4]
        rmat[5, 3, 1, 1] <- ( - theta[1] * theta[5])
        rmat[5, 3, 1, 2] <- theta[1] * theta[5]
        rmat[5, 4, 1, 1] <- ( - theta[1] * theta[6] * theta[5])
        rmat[5, 4, 1, 2] <- theta[1] * theta[6] * theta[5]
        rmat[6, 2, 1, 1] <- ( - theta[1] * theta[6])
        rmat[6, 2, 1, 2] <- theta[1] * theta[6]
        rmat[6, 4, 1, 1] <- ( - theta[1] * theta[6] * theta[5])
        rmat[6, 4, 1, 2] <- theta[1] * theta[6] * theta[5]
        rmat[7, 3, 2, 1] <- theta[3] * theta[7]
        rmat[7, 3, 2, 2] <- ( - theta[3] * theta[7])
        rmat[7, 4, 2, 1] <- theta[3] * theta[7] * theta[8]
        rmat[7, 4, 2, 2] <- ( - theta[3] * theta[7] * theta[8])
        rmat[8, 2, 2, 1] <- theta[3] * theta[8]
        rmat[8, 2, 2, 2] <- ( - theta[3] * theta[8])
        rmat[8, 4, 2, 1] <- theta[3] * theta[7] * theta[8]
        rmat[8, 4, 2, 2] <- ( - theta[3] * theta[7] * theta[8])
        return(rmat)
}
