Extension of Base functions

One of the goals of this project is to extend all functions in Julia Base and the standard library that make sense to use quantities with dimensionful angles. Please let us know of any function we missed through a GitHub issue.

The functions in Base currently extended to accept dimensionful angle arguments are:

  • trigonometric functions: sin, cos, tan, cot, sec, csc, sincos, sinpi, cospi, sincospi, sind, cosd, tand, cotd, secd, cscd, sincosd
  • hyperbolic functions: sinh, cosh, tanh, coth, sech, csch
  • exponential functions: exp, expm1, cis, cispi
  • Sinc functions: sinc, cosc
  • Utilities: deg2rad, rad2deg, mod2pi, rem2pi

For example

julia> using DimensionfulAngles

julia> angle = 10.52ua"°"

julia> cos(angle)

julia> rem2pi(angle, RoundNearest)

julia> rem2pi(angle + 360ua"°", RoundNearest)

The functions with a *d version and deg2rad only accept angles in degrees and functions with a *pi version only accept angles in half turns. Similarly, rad2deg only accepts angles in radians. The functions exp and expm1 only accept imaginary angles, that is 1im*θ for some angle θ.

Additionally, several inverse functions in base are extended to return quantities with dimensionful angles when requested. This is requested by providing a unit as the first argument. For instance

julia> using DimensionfulAngles

julia> acos(ua"°", 0.9831912354632536)

The functions in Base that are currently extended to accept units as their first argument and return values with those units are:

  • inverse trigonometric: asin, acos, atan, acot, asec, acsc, asind, acosd, acotd, asecd, acscd, atan(x, y)
  • inverse hyperbolic: asinh, acosh, atanh, acoth, asech, acsch
  • logarithmic: log, log1p
  • phase angle of a complex number: angle