## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## ----setup--------------------------------------------------------------------
library(GFT)

## -----------------------------------------------------------------------------
C <- matrix(c(1, 0.5, 0.5, 1), 2, 2)
c(gft(C), atanh(0.5))

## -----------------------------------------------------------------------------
C <- 0.9^abs(outer(1:5, 1:5, "-"))   # Toeplitz correlation matrix
z <- gft(C)
z

## -----------------------------------------------------------------------------
r <- inv_gft(z)
r
max(abs(r$C - C))

## -----------------------------------------------------------------------------
set.seed(42)
r <- inv_gft(rnorm(45, sd = 2))      # n = 10
range(diag(r$C))                     # unit diagonal
min(eigen(r$C, symmetric = TRUE)$values)  # positive definite

## -----------------------------------------------------------------------------
set.seed(1)
z <- rnorm(190, sd = 2)              # n = 20, demanding spectrum
data.frame(
  solver = c("inv_gft (GFT-FP+N)", "inv_gft_fp", "inv_gft_broyden",
             "inv_gft_newton"),
  eighs = c(inv_gft(z)$eighs, inv_gft_fp(z)$eighs,
            inv_gft_broyden(z)$eighs, inv_gft_newton(z)$eighs),
  converged = c(inv_gft(z)$converged, inv_gft_fp(z)$converged,
                inv_gft_broyden(z)$converged, inv_gft_newton(z)$converged)
)

## -----------------------------------------------------------------------------
z2 <- z + 0.01
c(cold = inv_gft(z2)$eighs, warm = inv_gft(z2, x0 = inv_gft(z)$x)$eighs)

