base (version 3.6.2)

Trig: 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).



acos(x) asin(x) atan(x) atan2(y, x)

cospi(x) sinpi(x) tanpi(x)


x, y

numeric or complex vectors.


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: \(\left(-\infty, -1\right]\) and \(\left[1, \infty\right)\).

For atan there are two cuts, both along the pure imaginary axis: \(\left(-\infty i, -1i\right]\) and \(\left[1i, \infty i\right)\).

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, and they are a ‘future direction’ of ISO/IEC TS 18661-4.

S4 methods

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


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 values 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.

These are all wrappers to system calls of the same name (with prefix c for complex arguments) where available. (cospi, sinpi, and tanpi are part of a C11 extension and provided by e.g.macOS and Solaris: where not yet available call to cos etc are used, with special cases for multiples of a half.)


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 C11 extension ISO/IEC TS 18661-4:2015 (draft at


Run this code
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
tx[ (x %% 1) %in% c(0, 0.5) ,]
# }

Run the code above in your browser using DataLab