Skip to content

pdSpecEst

An Analysis Toolbox for Hermitian Positive Definite Matrices

v1.2.6 · Sep 29, 2025 · GPL-2

Description

An implementation of data analysis tools for samples of symmetric or Hermitian positive definite matrices, such as collections of covariance matrices or spectral density matrices. The tools in this package can be used to perform: (i) intrinsic wavelet transforms for curves (1D) or surfaces (2D) of Hermitian positive definite matrices with applications to dimension reduction, denoising and clustering in the space of Hermitian positive definite matrices; and (ii) exploratory data analysis and inference for samples of positive definite matrices by means of intrinsic data depth functions and rank-based hypothesis tests in the space of Hermitian positive definite matrices.

Downloads

266

Last 30 days

11926th

266

Last 90 days

266

Last year

CRAN Check Status

1 ERROR
2 NOTE
11 OK
Show all 14 flavors
Flavor Status
r-devel-linux-x86_64-debian-clang OK
r-devel-linux-x86_64-debian-gcc OK
r-devel-linux-x86_64-fedora-clang OK
r-devel-linux-x86_64-fedora-gcc OK
r-devel-macos-arm64 ERROR
r-devel-windows-x86_64 OK
r-oldrel-macos-arm64 NOTE
r-oldrel-macos-x86_64 NOTE
r-oldrel-windows-x86_64 OK
r-patched-linux-x86_64 OK
r-release-linux-x86_64 OK
r-release-macos-arm64 OK
r-release-macos-x86_64 OK
r-release-windows-x86_64 OK
Check details (16 non-OK)
OK r-devel-linux-x86_64-debian-clang

*


            
OK r-devel-linux-x86_64-debian-gcc

*


            
OK r-devel-linux-x86_64-fedora-clang

*


            
OK r-devel-linux-x86_64-fedora-gcc

*


            
ERROR r-devel-macos-arm64

examples

Running examples in ‘pdSpecEst-Ex.R’ failed
The error most likely occurred in:

> ### Name: Expm
> ### Title: Riemannian HPD exponential map
> ### Aliases: Expm
> 
> ### ** Examples
> 
>  ## Generate random Hermitian matrix
>  H <- matrix(complex(real = rnorm(9), imaginary = rnorm(9)), nrow = 3)
>  diag(H) <- rnorm(3)
>  H[lower.tri(H)] <- t(Conj(H))[lower.tri(H)]
>  ## Generate random HPD matrix
>  p <- matrix(complex(real = rnorm(9), imaginary = rnorm(9)), nrow = 3)
>  P <- t(Conj(p)) %*% p
>  ## Compute exponential map
>  Expm(P, H)
Error: sqrtmat_sympd(): transformation failed
Execution halted
ERROR r-devel-macos-arm64

re-building of vignette outputs

Error(s) in re-building vignettes:
sh: line 1: 32217 Segmentation fault: 11  '/Library/Frameworks/R.framework/Resources/bin/R' --vanilla --no-echo > '/Volumes/Temp/tmp/RtmpKxkCFE/file7d2141fc18ae' 2>&1 < '/Volumes/Temp/tmp/RtmpKxkCFE/file7d21db8695a'
--- re-building ‘depth_ranktests.Rmd’ using rmarkdown

 *** caught segfault ***
address 0x0, cause 'invalid permissions'

Traceback:
 1: Expm(diag(2), H.coeff(0.5 * rnorm(4), inverse = T))
 2: FUN(X[[i]], ...)
 3: lapply(X = X, FUN = FUN, ...)
 4: sapply(integer(n), eval.parent(substitute(function(...) expr)),     simplify = simplify)
 5: replicate(50, Expm(diag(2), H.coeff(0.5 * rnorm(4), inverse = T)))
 6: eval(expr, envir)
 7: eval(expr, envir)
 8: withVisible(eval(expr, envir))
 9: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd) {    watcher$capture_plot_and_output()    if (on_message$capture) {        watcher$push(cnd)    }    if (on_message$silence) {        invokeRestart("muffleMessage")    }}, warning = function (cnd) {    if (getOption("warn") >= 2 || getOption("warn") < 0) {        return()    }    watcher$capture_plot_and_output()    if (on_warning$capture) {        cnd <- sanitize_call(cnd)        watcher$push(cnd)    }    if (on_warning$silence) {        invokeRestart("muffleWarning")    }}, error = function (cnd) {    watcher$capture_plot_and_output()    cnd <- sanitize_call(cnd)    watcher$push(cnd)    switch(on_error, continue = invokeRestart("eval_continue"),         stop = invokeRestart("eval_stop"), error = NULL)})
10: eval(call)
11: eval(call)
12: with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers)
13: doWithOneRestart(return(expr), restart)
14: withOneRestart(expr, restarts[[1L]])
15: withRestartList(expr, restarts[-nr])
16: doWithOneRestart(return(expr), restart)
17: withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
18: withRestartList(expr, restarts)
19: withRestarts(with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
20: evaluate::evaluate(...)
21: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options))
22: in_dir(input_dir(), expr)
23: in_input_dir(evaluate(code, envir = env, new_device = FALSE,     keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options)))
24: eng_r(options)
25: block_exec(params)
26: call_block(x)
27: process_group(group)
28: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    })
29: with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    }), list(rlang_trace_top_env = knit_global()))
30: xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    }), list(rlang_trace_top_env = knit_global())), function(loc) {    setwd(wd)    write_utf8(res, output %n% stdout())    paste0("\nQuitting from ", loc, if (!is.null(error))         paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(),     output_dir = getwd(), ...)
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({    engine$weave(file, quiet = quiet, encoding = enc)    setwd(startdir)    output <- find_vignette_product(name, by = "weave", engine = engine)    if (!have.makefile && vignette_is_tex(output)) {        texi2pdf(file = output, clean = FALSE, quiet = quiet)        output <- find_vignette_product(name, by = "texi2pdf",             engine = engine)    }}, error = function(e) {    OK <<- FALSE    message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",         file, conditionMessage(e)))})
40: tools:::.buildOneVignette("depth_ranktests.Rmd", "/Volumes/Builds/packages/sonoma-arm64/results/4.6/pdSpecEst.Rcheck/vign_test/pdSpecEst",     TRUE, FALSE, "depth_ranktests", "UTF-8", "/Volumes/Temp/tmp/RtmpKxkCFE/file7d212c2734cf.rds")
An irrecoverable exception occurred. R is aborting now ...
sh: line 1: 32399 Segmentation fault: 11  '/Library/Frameworks/R.framework/Resources/bin/R' --vanilla --no-echo > '/Volumes/Temp/tmp/RtmpKxkCFE/file7d2165839586' 2>&1 < '/Volumes/Temp/tmp/RtmpKxkCFE/file7d2121cdc47b'
--- re-building ‘wavelet_est_clust.Rmd’ using rmarkdown

 *** caught segfault ***
address 0xfe000000786564, cause 'invalid permissions'

Traceback:
 1: Expm(diag(3), (1 - 0.4 * t) * H.coeff(sqrt(t * (1 - t) + 1) *     sin(pi/(0.4 * t + 0.1)) * (1 + Bumps), inverse = TRUE))
 2: FUN(X[[i]], ...)
 3: lapply(X = X, FUN = FUN, ...)
 4: sapply(x, function(t) {    Expm(diag(3), (1 - 0.4 * t) * H.coeff(sqrt(t * (1 - t) +         1) * sin(pi/(0.4 * t + 0.1)) * (1 + Bumps), inverse = TRUE))}, simplify = "array")
 5: rExamples1D(n, example = "bumps", return.ts = T, noise = "periodogram")
 6: eval(expr, envir)
 7: eval(expr, envir)
 8: withVisible(eval(expr, envir))
 9: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd) {    watcher$capture_plot_and_output()    if (on_message$capture) {        watcher$push(cnd)    }    if (on_message$silence) {        invokeRestart("muffleMessage")    }}, warning = function (cnd) {    if (getOption("warn") >= 2 || getOption("warn") < 0) {        return()    }    watcher$capture_plot_and_output()    if (on_warning$capture) {        cnd <- sanitize_call(cnd)        watcher$push(cnd)    }    if (on_warning$silence) {        invokeRestart("muffleWarning")    }}, error = function (cnd) {    watcher$capture_plot_and_output()    cnd <- sanitize_call(cnd)    watcher$push(cnd)    switch(on_error, continue = invokeRestart("eval_continue"),         stop = invokeRestart("eval_stop"), error = NULL)})
10: eval(call)
11: eval(call)
12: with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers)
13: doWithOneRestart(return(expr), restart)
14: withOneRestart(expr, restarts[[1L]])
15: withRestartList(expr, restarts[-nr])
16: doWithOneRestart(return(expr), restart)
17: withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
18: withRestartList(expr, restarts)
19: withRestarts(with_handlers({    for (expr in tle$exprs) {        ev <- withVisible(eval(expr, envir))        watcher$capture_plot_and_output()        watcher$print_value(ev$value, ev$visible, envir)    }    TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
20: evaluate::evaluate(...)
21: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options))
22: in_dir(input_dir(), expr)
23: in_input_dir(evaluate(code, envir = env, new_device = FALSE,     keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options)))
24: eng_r(options)
25: block_exec(params)
26: call_block(x)
27: process_group(group)
28: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    })
29: with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    }), list(rlang_trace_top_env = knit_global()))
30: xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        if (progress && is.function(pb$interrupt))             pb$interrupt()        if (is_R_CMD_build() || is_R_CMD_check())             error <<- format(e)    }), list(rlang_trace_top_env = knit_global())), function(loc) {    setwd(wd)    write_utf8(res, output %n% stdout())    paste0("\nQuitting from ", loc, if (!is.null(error))         paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(),     output_dir = getwd(), ...)
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({    engine$weave(file, quiet = quiet, encoding = enc)    setwd(startdir)    output <- find_vignette_product(name, by = "weave", engine = engine)    if (!have.makefile && vignette_is_tex(output)) {        texi2pdf(file = output, clean = FALSE, quiet = quiet)        output <- find_vignette_product(name, by = "texi2pdf",             engine = engine)    }}, error = function(e) {    OK <<- FALSE    message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",         file, conditionMessage(e)))})
40: tools:::.buildOneVignette("wavelet_est_clust.Rmd", "/Volumes/Builds/packages/sonoma-arm64/results/4.6/pdSpecEst.Rcheck/vign_test/pdSpecEst",     TRUE, FALSE, "wavelet_est_clust", "UTF-8", "/Volumes/Temp/tmp/RtmpKxkCFE/file7d21460c9abf.rds")
An irrecoverable exception occurred. R is aborting now ...
SUMMARY: processing the following files failed:
  ‘depth_ranktests.Rmd’ ‘wavelet_est_clust.Rmd’

Error: Vignette re-building failed.
Execution halted
ERROR r-devel-macos-arm64

tests

  Running ‘testthat.R’ [0s/0s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(pdSpecEst)
  > 
  > test_check("pdSpecEst")
  
   *** caught segfault ***
  address 0x0, cause 'invalid permissions'
  
  Traceback:
   1: Expm(diag(2, 2), H.coeff(v0/sqrt(2 * pi) * exp(-((t - 0.5)/0.3)^2/2),     inverse = TRUE))
   2: FUN(X[[i]], ...)
   3: lapply(X = X, FUN = FUN, ...)
   4: sapply(x, function(t) {    Expm(diag(2, 2), H.coeff(v0/sqrt(2 * pi) * exp(-((t - 0.5)/0.3)^2/2),         inverse = TRUE))}, simplify = "array")
   5: rExamples1D(n, 2, "gaussian", return.ts = T, noise = "periodogram")
   6: eval(code, test_env)
   7: eval(code, test_env)
   8: withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt)
   9: doTryCatch(return(expr), name, parentenv, handler)
  10: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  11: tryCatchList(expr, classes, parentenv, handlers)
  12: tryCatch(withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
  13: doWithOneRestart(return(expr), restart)
  14: withOneRestart(expr, restarts[[1L]])
  15: withRestarts(tryCatch(withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt), error = handle_fatal),     end_test = function() {    })
  16: test_code(code, parent.frame())
  17: test_that("Correctly working 1D spectral estimation and clustering",     {        n <- 2^7        d <- 2        S <- 5        example <- rExamples1D(n, 2, "gaussian", return.ts = T,             noise = "periodogram")        expect_equal(dim(example$f), c(d, d, n))        expect_equal(dim(example$P), c(d, d, n))        expect_equal(dim(example$ts), c(2 * n, d))        ts.sim <- rARMA(n, d, array(0, c(d, d, 2)), array(0,             c(d, d, 2)), diag(d))        expect_type(ts.sim$X, "double")        expect_equal(dim(ts.sim$X), c(n, d))        pgram <- pdPgram(example$ts)        expect_equal(dim(pgram$P), c(d, d, n))        expect_equal(length(pgram$freq), n)        expect_equal(pgram$P, example$P)        wt1 <- WavTransf1D(example$P, periodic = T)        wt2 <- WavTransf1D(example$P, metric = "logEuclidean")        expect_equal(length(unlist(wt1$D)), length(unlist(wt1$D.white)))        expect_equal(length(unlist(wt2$D)), length(unlist(wt2$D.white)))        expect_equal(InvWavTransf1D(wt1$D, wt1$M0, periodic = T),             example$P)        expect_equal(InvWavTransf1D(wt2$D, wt2$M0, metric = "logEuclidean"),             example$P)        wt1_den <- pdCART(wt1$D, wt1$D.white, order = 5, periodic = T)        wt2_den <- pdCART(wt2$D, wt2$D.white, order = 5)        expect_length(unlist(wt1_den$w), length(unlist(wt2_den$w)))        expect_length(unlist(wt1_den$D_w), length(unlist(wt1$D)))        expect_length(unlist(wt2_den$D_w), length(unlist(wt2$D)))        f1 <- pdSpecEst1D(example$P)        f2 <- pdSpecEst1D(example$P, metric = "logEuclidean")        expect_is(f1$f, is(example$P))        expect_equal(dim(f1$f), dim(example$P))        expect_type(f1$D[[1]], "complex")        expect_type(f2$D[[1]], "complex")        expect_length(unlist(f1$D), 300)        expect_length(unlist(f2$D), 300)        expect_length(c(f1$M0), 20)        expect_length(c(f2$M0), 20)        expect_type(f1$tree.weights[[1]], "logical")        expect_type(f2$tree.weights[[1]], "logical")        expect_length(unlist(f1$tree.weights), 62)        expect_length(unlist(f2$tree.weights), 62)        cl <- pdkMeans(example$P[, , 1:10], K = 2)        expect_true(all(cl$cl.assignments %in% c(0, 1)))        expect_equal(sum(cl$cl.assignments), 10)        expect_equal(dim(cl$cl.assignments), c(10, 2))        expect_equal(dim(cl$cl.centroids), c(2, 2, 2))        P_s <- rExamples1D(n, 2, "gaussian", replicates = S)$P        cl <- pdSpecClust1D(P_s, K = 2, metric = "logEuclidean")        expect_equal(sum(cl$cl.prob), S)        expect_length(cl$cl.centers.D, 2)        expect_length(unlist(cl$cl.centers.D[[1]]), 300)        expect_length(unlist(cl$cl.centers.D[[2]]), 300)        expect_equal(dim(cl$cl.centers.M0[[1]]), dim(wt1$M0))        expect_equal(dim(cl$cl.centers.M0[[2]]), dim(wt1$M0))        expect_type(cl$cl.jmax, "double")        f3 <- pdSplineReg(example$f, example$f, lam = 0.1, Nd = 10,             max.iter = 10)        expect_equal(dim(f3$f), c(d, d, 10))        expect_type(f3$cost, "double")        expect_type(f3$total_iter, "double")    })
  18: eval(code, test_env)
  19: eval(code, test_env)
  20: withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt)
  21: doTryCatch(return(expr), name, parentenv, handler)
  22: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  23: tryCatchList(expr, classes, parentenv, handlers)
  24: tryCatch(withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
  25: doWithOneRestart(return(expr), restart)
  26: withOneRestart(expr, restarts[[1L]])
  27: withRestarts(tryCatch(withCallingHandlers({    eval(code, test_env)    new_expectations <- the$test_expectations > starting_expectations    if (snapshot_skipped) {        skip("On CRAN")    }    else if (!new_expectations && skip_on_empty) {        skip_empty()    }}, expectation = handle_expectation, packageNotFoundError = function(e) {    if (on_cran()) {        skip(paste0("{", e$package, "} is not installed."))    }}, snapshot_on_cran = function(cnd) {    snapshot_skipped <<- TRUE    invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message,     error = handle_error, interrupt = handle_interrupt), error = handle_fatal),     end_test = function() {    })
  28: test_code(code = exprs, env = env, reporter = get_reporter() %||%     StopReporter$new())
  29: source_file(path, env = env(env), desc = desc, shuffle = shuffle,     error_call = error_call)
  30: FUN(X[[i]], ...)
  31: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle,     error_call = error_call)
  32: doTryCatch(return(expr), name, parentenv, handler)
  33: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  34: tryCatchList(expr, classes, parentenv, handlers)
  35: tryCatch(code, testthat_abort_reporter = function(cnd) {    cat(conditionMessage(cnd), "\n")    NULL})
  36: with_reporter(reporters$multi, lapply(test_paths, test_one_file,     env = env, desc = desc, shuffle = shuffle, error_call = error_call))
  37: test_files_serial(test_dir = test_dir, test_package = test_package,     test_paths = test_paths, load_helpers = load_helpers, reporter = reporter,     env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,     desc = desc, load_package = load_package, shuffle = shuffle,     error_call = error_call)
  38: test_files(test_dir = path, test_paths = test_paths, test_package = package,     reporter = reporter, load_helpers = load_helpers, env = env,     stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,     load_package = load_package, parallel = parallel, shuffle = shuffle)
  39: test_dir("testthat", package = package, reporter = reporter,     ..., load_package = "installed")
  40: test_check("pdSpecEst")
  An irrecoverable exception occurred. R is aborting now ...
OK r-devel-windows-x86_64

*


            
NOTE r-oldrel-macos-arm64

installed package size

  installed size is  7.3Mb
  sub-directories of 1Mb or more:
    libs   6.4Mb
NOTE r-oldrel-macos-x86_64

installed package size

  installed size is  7.5Mb
  sub-directories of 1Mb or more:
    libs   6.5Mb
OK r-oldrel-windows-x86_64

*


            
OK r-patched-linux-x86_64

*


            
OK r-release-linux-x86_64

*


            
OK r-release-macos-arm64

*


            
OK r-release-macos-x86_64

*


            
OK r-release-windows-x86_64

*


            

Check History

ERROR 11 OK · 2 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Mar 9, 2026
ERROR r-devel-macos-arm64

examples

Running examples in ‘pdSpecEst-Ex.R’ failed
The error most likely occurred in:

> ### Name: Expm
> ### Title: Riemannian HPD exponential map
> ### Aliases: Expm
> 
> ### ** Examples
> 
>  ## Generate random Hermitian matrix
>  H <- matrix(complex(real = rnorm(9), imaginary = rnorm(9)), nrow = 3)
>  diag(H) <- rnorm(3)
>  H[lower.tri(H)] <- t(Conj(H))[lower.tri(H)]
>  ## Generate random HPD matrix
>  p <- matrix(complex(real = rnorm(9), imaginary = rnorm(9)), nrow = 3)
>  P <- t(Conj(p)) %*% p
> 
NOTE r-oldrel-macos-arm64

installed package size

  installed size is  7.3Mb
  sub-directories of 1Mb or more:
    libs   6.4Mb
NOTE r-oldrel-macos-x86_64

installed package size

  installed size is  7.5Mb
  sub-directories of 1Mb or more:
    libs   6.5Mb

Dependency Network

Dependencies Reverse dependencies multitaper Rcpp ddalpha Rdpack pdSpecEst

Version History

new 1.2.6 Mar 9, 2026