Trigonometric Functions

These functions give the obvious trigonometric functions. They respectively compute the cosine, sine, tangent, arc-cosine, arc-sine, arc-tangent, and the two-argument arc-tangent.

cospi(x), sinpi(x), and tanpi(x), compute cos(pi*x), sin(pi*x), and tan(pi*x).

cos(x) sin(x) tan(x)
acos(x) asin(x) atan(x) atan2(y, x)
cospi(x) sinpi(x) tanpi(x)
x, y
numeric or complex vectors.

The arc-tangent of two arguments atan2(y, x) returns the angle between the x-axis and the vector from the origin to $(x, y)$, i.e., for positive arguments atan2(y, x) == atan(y/x).

Angles are in radians, not degrees, for the standard versions (i.e., a right angle is $\pi/2$), and in ‘half-rotations’ for cospi etc. cospi(x), sinpi(x), and tanpi(x) are accurate for x which are multiples of a half. All except atan2 are internal generic primitive functions: methods can be defined for them individually or via the Math group generic.


tanpi(0.5) is NaN. Similarly for other inputs with fractional part 0.5.

Complex values

For the inverse trigonometric functions, branch cuts are defined as in Abramowitz and Stegun, figure 4.4, page 79. For asin and acos, there are two cuts, both along the real axis: $(-Inf, -1]$ and $[1, Inf)$. For atan there are two cuts, both along the pure imaginary axis: $(-1i*Inf, -1i]$ and $[1i, 1i*Inf)$. The behaviour actually on the cuts follows the C99 standard which requires continuity coming round the endpoint in a counter-clockwise direction. Complex arguments for cospi, sinpi, and tanpi are not yet implemented.

S4 methods

All except atan2 are S4 generic functions: methods can be defined for them individually or via the Math group generic.


Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Abramowitz, M. and Stegun, I. A. (1972). Handbook of Mathematical Functions. New York: Dover. Chapter 4. Elementary Transcendental Functions: Logarithmic, Exponential, Circular and Hyperbolic Functions

For cospi, sinpi, and tanpi the draft C11 extension ISO/IEC TS 18661 (

  • Trig
  • cos
  • sin
  • tan
  • acos
  • asin
  • atan
  • atan2
  • cospi
  • sinpi
  • tanpi
library(base) x <- seq(-3, 7, by = 1/8) tx <- cbind(x, cos(pi*x), cospi(x), sin(pi*x), sinpi(x), tan(pi*x), tanpi(x), deparse.level=2) op <- options(digits = 4, width = 90) # for nice formatting head(tx) tx[ (x %% 1) %in% c(0, 0.5) ,] options(op)
Documentation reproduced from package base, version 3.1.3, License: Part of R 3.1.3

Community examples

Looks like there are no examples yet.