| mpfrMatrix | R Documentation |
The classes "mpfrMatrix" and "mpfrArray" are,
analogously to the base matrix and array
functions and classes simply “numbers” of class
mpfr with an additional Dim and
Dimnames slot.
Objects should typically be created by mpfrArray(), but
can also be created by
new("mpfrMatrix", ...) or new("mpfrArray", ...), or also
by t(x), dim(x) <- dd, or mpfr2array(x,
dim=dd) where x is a an mpfr
“number vector”.
A (slightly more flexible) alternative to dim(x) <- dd is
mpfr2array(x, dd, dimnames).
.Data:as for the mpfr class, a
"list" of mpfr1 numbers.
Dim:of class "integer", specifying the array
dimension.
Dimnames:of class "list" and the same length
as Dim, each list component either NULL or a
character vector of length Dim[j].
Class "mpfrMatrix" extends "mpfrArray", directly.
Class "mpfrArray" extends
class "mpfr", by class "mpfrArray", distance 2;
class "list", by class "mpfrArray", distance 3;
class "vector", by class "mpfrArray", distance 4.
signature(e1 = "mpfr", e2 = "mpfrArray"): ...
signature(e1 = "numeric", e2 = "mpfrArray"): ...
signature(e1 = "mpfrArray", e2 = "mpfrArray"): ...
signature(e1 = "mpfrArray", e2 = "mpfr"): ...
signature(e1 = "mpfrArray", e2 = "numeric"): ...
signature(x = "mpfrArray", mode =
"missing"): drops the dimension ‘attribute’, i.e.,
transforms x into a simple mpfr
vector. This is an inverse of t(.) or dim(.) <- *
on such a vector.
signature(y = "ANY", x = "mpfrArray"): ...
signature(y = "mpfrArray", x = "mpfrArray"): ...
signature(y = "mpfrArray", x = "ANY"): ...
signature(x = "mpfrArray", i = "ANY", j = "ANY", value = "ANY"): ...
signature(x = "mpfrArray", i = "ANY", j = "ANY", drop = "ANY"): ...
signature(x = "mpfrArray", i = "ANY", j = "missing", drop = "missing"):
"mpfrArray"s can be subset (“indexed”) as regular R
arrays.
signature(x = "mpfr", y = "mpfrMatrix"): Compute
the matrix/vector product x y when the dimensions
(dim) of x and y match. If x
is not a matrix, it is treated as a 1-row or 1-column matrix (aka
“row vector” or “column vector”) depending on which
one makes sense, see the documentation of the base
function %*%.
signature(x = "mpfr", y = "Mnumber"): method
definition for cases with one mpfr and any
“number-like” argument are to use MPFR arithmetic as well.
signature(x = "mpfrMatrix", y = "mpfrMatrix"),
signature(x = "mpfrMatrix", y = "mpfr"), etc.
Further method definitions with identical semantic.
signature(x = "mpfr", y = "missing"):
Computes x'x, i.e., t(x) %*% x, typically more efficiently.
signature(x = "mpfr", y = "mpfrMatrix"):
Computes x'y, i.e., t(x) %*% y, typically more efficiently.
signature(x = "mpfrMatrix", y = "mpfrMatrix"): ...
signature(x = "mpfrMatrix", y = "mpfr"): ...
signature(x = "mpfr", y = "missing"):
Computes xx', i.e., x %*% t(x), typically more efficiently.
signature(x = "mpfrMatrix", y = "mpfrMatrix"):
Computes xy', i.e., x %*% t(y), typically more efficiently.
signature(x = "mpfrMatrix", y = "mpfr"): ...
signature(x = "mpfr", y = "mpfrMatrix"): ...
signature(from = "mpfrArray", to = "array"):
coerces from to a numeric array of the same dimension.
signature(from = "mpfrArray", to = "vector"):
as for standard arrays, this “drops” the
dim (and dimnames), i.e., returns an
mpfr vector.
signature(e1 = "mpfr", e2 = "mpfrArray"): ...
signature(e1 = "numeric", e2 = "mpfrArray"): ...
signature(e1 = "mpfrArray", e2 = "mpfr"): ...
signature(e1 = "mpfrArray", e2 = "numeric"): ...
signature(x = "mpfrArray"): ...
signature(x = "mpfrArray"): ...
signature(x = "mpfrArray"): ...
signature(object = "mpfrArray"): ...
signature(x = "mpfrArray"): ...
signature(x = "mpfrMatrix", type = "character"):
computes the matrix norm of x, see norm
or the one in package Matrix.
signature(x = "mpfrMatrix"): tranpose the mpfrMatrix.
signature(a = "mpfrArray"): aperm(a,
perm) is a generalization of t(.) to permute the
dimensions of an mpfrArray; it has the same semantics as the
standard aperm() method for simple R arrays.
Martin Maechler
mpfrArray, also for more examples.
showClass("mpfrMatrix")
validObject(mm <- new("mpfrMatrix"))
validObject(aa <- new("mpfrArray"))
v6 <- mpfr(1:6, 128)
m6 <- new("mpfrMatrix", v6, Dim = c(2L, 3L))
validObject(m6)
m6
which(m6 == 3, arr.ind = TRUE) # |--> (1, 2)
## Coercion back to "vector": Both of these work:
stopifnot(identical(as(m6, "mpfr"), v6),
identical(as.vector(m6), v6)) # < but this is a "coincidence"
S2 <- m6[,-3] # 2 x 2
S3 <- rbind(m6, c(1:2,10)) ; s3 <- asNumeric(S3)
det(S2)
str(determinant(S2))
det(S3)
stopifnot(all.equal(det(S2), det(asNumeric(S2)), tol=1e-15),
all.equal(det(S3), det(s3), tol=1e-15))
## 2-column matrix indexing and replacement:
(sS <- S3[i2 <- cbind(1:2, 2:3)])
stopifnot(identical(asNumeric(sS), s3[i2]))
C3 <- S3; c3 <- s3
C3[i2] <- 10:11
c3[i2] <- 10:11
stopifnot(identical(asNumeric(C3), c3))
AA <- new("mpfrArray", as.vector(cbind(S3, -S3)), Dim=c(3L,3:2))
stopifnot(identical(AA[,,1] , S3), identical(AA[,,2] , -S3))
aa <- asNumeric(AA)
i3 <- cbind(3:1, 1:3, c(2L, 1:2))
ii3 <- Rmpfr:::.mat2ind(i3, dim(AA), dimnames(AA))
stopifnot(aa[i3] == new("mpfr", getD(AA)[ii3]))
stopifnot(identical(aa[i3], asNumeric(AA[i3])))
CA <- AA; ca <- aa
ca[i3] <- ca[i3] ^ 3
CA[i3] <- CA[i3] ^ 3
## scale():
S2. <- scale(S2)
stopifnot(all.equal(abs(as.vector(S2.)), rep(sqrt(1/mpfr(2, 128)), 4),
tol = 1e-30))
## norm() :
norm(S2)
stopifnot(identical(norm(S2), norm(S2, "1")),
norm(S2, "I") == 6,
norm(S2, "M") == 4,
abs(norm(S2, "F") - 5.477225575051661) < 1e-15)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.