Skip to content

Commit

Permalink
restored undue modifications, more uniform code styling
Browse files Browse the repository at this point in the history
  • Loading branch information
alusiani committed Aug 1, 2024
1 parent 5b7c42e commit 670e207
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
13 changes: 7 additions & 6 deletions R/print.R
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,22 @@ format.errors = function(x,
...)
{
stopifnot(notation %in% c("parenthesis", "plus-minus"))

if (is.null(digits))
digits <- getOption("errors.digits", 1)
digits <- if (digits == "pdg") digits_pdg(.e(x)) else rep(digits, length(x))

scipen <- getOption("scipen", 0)
prepend <- rep("", length(x))
append <- rep("", length(x))

e <- signif(.e(x), digits)
nulle <- e == 0 & !is.na(e)
e_expon = get_exponent(e)
xexp <- ifelse(.v(x)==0, e_expon+1, get_exponent(x))
value_digits <- ifelse(e, digits - e_expon, digits)
eexp <- get_exponent(e)
xexp <- ifelse(.v(x)== 0, eexp+1, get_exponent(x))
value_digits <- ifelse(e, digits - eexp, digits)
value <- ifelse(e, signif(.v(x), xexp + value_digits), .v(x))
##+++ str(value)
value <- ifelse(is.finite(value), value, .v(x))
##+++ str(value)

cond <- (scientific | (xexp > 4+scipen | xexp < -3-scipen)) & is.finite(e)
e[cond] <- e[cond] * 10^(-xexp[cond])
Expand All @@ -69,7 +69,7 @@ format.errors = function(x,
e[is.finite(e)] <- (e * 10^(pmax(0, value_digits-1)))[is.finite(e)]
} else {
## convert uncertainty for printing, keeping decimal point in line with value
e_scale_flag = (cond & e_expon < xexp) | (!cond & is.finite(e) & e_expon<0)
e_scale_flag = (cond & eexp < xexp) | (!cond & is.finite(e) & eexp<0)
e[e_scale_flag] <- (e * 10^(pmax(0, value_digits-1)))[e_scale_flag]
}
} else {
Expand All @@ -92,6 +92,7 @@ format.errors = function(x,
decimal.mark=getOption("OutDec"))
})
e <- sub("\\.$", "", e)

paste(prepend, value, sep, e, append, sep="")
}

Expand Down
19 changes: 18 additions & 1 deletion tests/testthat/test-print.R
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ test_that("error formatting works properly", {
expect_equal(format(x, notation="parenthesis", digits=3),
c("10000(12300000)", "11110(1230)", "11111.2(123)", "11111.22(123)",
"11111.222(123)", "11111.2222(123)", "11111.2222200(123)", "11111.2222200000(123)"))
expect_equal(format(x, notation="parenthesis", digits="pdg"),
c("10000(12000000)", "11100(1200)", "11111(12)", "11111.2(12)",
"11111.22(12)", "11111.222(12)", "11111.222220(12)", "11111.222220000(12)"))
expect_equal(format(x, notation="parenthesis", scientific=TRUE),
c("1(1000)e4", "1.1(1)e4", "1.111(1)e4", "1.1111(1)e4", "1.11112(1)e4",
"1.111122(1)e4", "1.111122222(1)e4", "1.111122222000(1)e4"))
Expand All @@ -29,6 +32,10 @@ test_that("error formatting works properly", {
c("10000", "12300000"), c("11110", "1230"), c("11111.2", "12.3"), c("11111.22", "1.23"),
c("11111.222", "0.123"), c("11111.2222", "0.0123"), c("11111.2222200", "0.0000123"), c("11111.2222200000", "0.0000000123")),
paste, collapse=paste("", .pm, "")))
expect_equal(format(x, notation="plus-minus", digits="pdg"), sapply(list(
c("10000", "12000000"), c("11100", "1200"), c("11111", "12"), c("11111.2", "1.2"),
c("11111.22", "0.12"), c("11111.222", "0.012"), c("11111.222220", "0.000012"), c("11111.222220000", "0.000000012")),
paste, collapse=paste("", .pm, "")))
expect_equal(format(x, notation="plus-minus", scientific=TRUE), sapply(list(
c("(1", "1000)e4"), c("(1.1", "0.1)e4"), c("(1.111", "0.001)e4"), c("(1.1111", "0.0001)e4"),
c("(1.11112", "0.00001)e4"), c("(1.111122", "0.000001)e4"), c("(1.111122222", "0.000000001)e4"),
Expand All @@ -43,13 +50,23 @@ test_that("error formatting works properly", {
"11111.222(123)", "11111.2222(123)", "11111.2222200(123)", "11111.2222200000(123)"))
options(saved_options)

x <- set_errors(rep(0.827, 3), c(0.119, 0.367, 0.962))
expect_equal(format(x, notation="plus-minus", digits="pdg"), sapply(list(
c("0.83", "0.12"), c("0.8", "0.4"), c("1", "1")),
paste, collapse=paste("", .pm, "")))

x <- set_errors(10, 1)
expect_equal(format(x - set_errors(10)), "0(1)")
expect_equal(format(x - x), "0(0)")

x <- set_errors(c(0.4, NA, NaN, Inf))
x <- set_errors(c(0.4, NA, NaN, Inf, -Inf))
expect_equal(format(x[1]), "0.4(0)")
expect_equal(format(x[2]), "NA(NA)")
expect_equal(format(x[3]), "NaN(NaN)")
expect_equal(format(x[4]), "Inf(Inf)")
expect_equal(format(x[5]), "-Inf(Inf)")

x <- set_errors(c(0e10, 1e12), 0.1e12)
expect_equal(format(x), c("0.0(1)e12", "1.0(1)e12"))
expect_equal(format(x, digits=2), c("0.00(10)e12", "1.00(10)e12"))
})

0 comments on commit 670e207

Please sign in to comment.