hypot | R Documentation |
hypot
returns the “hypotenuse” of all the values present in its
arguments.
phypot
returns the parallel “hypotenuse” of the input
values. It takes any number of vectors as arguments, recycle them to common
length, and return a single vector giving the ‘parallel’
“hypotenuse” of the argument vectors.
hypot(..., na.rm = FALSE)
phypot(..., na.rm = FALSE)
... |
numeric or complex arguments. |
na.rm |
a logical indicating whether missing values should be removed. |
The hypotenuse is the longest side of a right-angled triangle, the side opposite the right angle. The length of the hypotenuse is defined as:
\sqrt(x^2 + y^2)
The 3-dimensional “hypotenuse” is defined as:
\sqrt(x^2 + y^2 + z^2)
The n-dimensional “hypotenuse” is defined as:
\sqrt{\sum_{k = 1}^n x_k^2}
Suppose we have a vector x
and we want to know its
“hypotenuse”.
If any of x
is infinite, the “hypotenuse” is always Inf
.
If na.rm = FALSE
and any of x
is NA
or NaN
, the
“hypotenuse” is NaN
.
Otherwise, the “hypotenuse” will be calculated using the above
definition. If na.rm = TRUE
all NA
and NaN
values are
treated as 0
.
For hypot
a numeric vector of length 1.
For phypot
a numeric vector. If any of the input values is a
zero-length vector the result has length zero. Otherwise, the result has
length equal to the length of the longest vector. The rules for determining
the attributes of the result are rather complicated. Attributes are only
copied from input values whose lengths are equal to the length of the result.
If any such input values have a dim
attribute, the first
dim
attribute is copied to the result. dimnames
are
copied in a similar manner (but only after the result has a dim
attribute). If any such input values have a conformable
dimnames
attribute, the first conformable dimnames
attribute is
copied to the result. If a dim
attribute has not been assigned
to the result, then finally names
are copied in a similar
manner. If any such input values have a names
attribute, the first
names
attribute is copied to the result. A result can have a
dim
attribute, a names
attribute, neither, but cannot have
both. dim
has priority over names
(similar to
Arithmetic
operators).
‘Numeric’ arguments are vectors of type integer and numeric, and
logical (coerced to integer). NULL
is accepted as equivalent to
numeric(0)
.
## when a side is infinite, the hypotenuse is Inf
hypot(Inf, NaN) # Inf
hypot(-Inf, NaN) # Inf (applies to negative infinity too)
## when a side is NA or NaN, the hypotenuse is NaN
hypot(NaN, 0) # NaN
hypot(NA , 0) # NaN
## numbers whose squares would overflow normally are handled well
hypot(.Machine$double.xmax, 5 )
hypot(1e+300 , 1e+300)
## hypotenuse
hypot(3, 4) # 5
hypot(3+4i) # 5 (works for complex numbers as well)
## 3-dimensional "hypotenuse"
hypot(3, 4, 12) # 13
## n-dimensional "hypotenuse"
hypot(1:100)
x <- seq.int(-3, 3, length.out = 101)
y <- 1
(h <- phypot(x, 1)) # parallel hypotenuse
graphics::plot(
panel.first = graphics::grid(col = "gray69"),
x = x, y = h, type = "l",
main = "Distance from" ~ (list(0, 0)) ~ "to" ~ (list(x, 1))
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.