Nothing
# Copyright (c) Rob Carnell 2026
fixsmall <- function(x) {
z <- ifelse(x < .Machine$double.eps^(2/3), "OK", "NZ")
z <- ifelse(is.na(z), "NA", z)
z
}
dslnex <- function(x) {
y <- numeric(2)
y[1] <- x[1]^2 + x[2]^2 - 2
y[2] <- exp(x[1] - 1) + x[2]^3 - 2
y
}
# --- Tests -------------------------------------------------------------------
test_that("testnslv works and normalizes Fnorm for a well-behaved start", {
xstart <- c(0.5, 0.5)
z <- testnslv(xstart, dslnex)
# Ensure structure is present
expect_true(is.list(z))
expect_true(is.data.frame(z$out))
expect_true("Fnorm" %in% colnames(z$out))
# Normalize Fnorm and ensure only OK/NZ/NA appear
zfn <- z$out[, "Fnorm"]
z$out[, "Fnorm"] <- fixsmall(zfn)
expect_true(all(z$out[, "Fnorm"] %in% c("OK", "NZ", "NA")))
expect_true(any(z$out[, "Fnorm"] == "OK"))
# All methods should have converged (termcd == 1)
expect_true(all(z$out[, "termcd"] == 1))
})
test_that("testnslv handles a problematic start and records the Newton/none error", {
xstart <- c(2.0, 0.5)
expect_output(z <- testnslv(xstart, dslnex),
regexp = "Error")
# Ensure structure is present
expect_true(is.data.frame(z$out))
expect_true("Fnorm" %in% colnames(z$out))
# Normalize Fnorm
zfn <- z$out[, "Fnorm"]
z$out[, "Fnorm"] <- fixsmall(zfn)
# Check that the Newton/none row contains NA and ERROR as in the example
idx <- which(z$out[, "Method"] == "Newton" & z$out[, "Global"] == "none")
expect_length(idx, 1)
expect_true(is.na(z$out[idx, "termcd"]))
expect_identical(z$out[idx, "Message"], "ERROR")
expect_identical(z$out[idx, "Fnorm"], "NA")
# Other methods should still have valid termcd values
ok_rows <- setdiff(seq_len(nrow(z$out)), idx)
expect_true(all(z$out[ok_rows, "termcd"] %in% c(1, 4)))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.