manpagez: man pages & more
info asymptote
Home | html | info | man
 [ << ] [ < ] [ Up ] [ > ] [ >> ] [Top] [Contents] [Index] [ ? ]

### 6.11.4 Mathematical functions

`Asymptote` has built-in versions of the standard `libm` mathematical real(real) functions `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `exp`, `log`, `pow10`, `log10`, `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`, `sqrt`, `cbrt`, `fabs`, `expm1`, `log1p`, as well as the identity function `identity`. `Asymptote` also defines the order `n` Bessel functions of the first kind `Jn(int n, real)` and second kind `Yn(int n, real)`, as well as the gamma function `gamma`, the error function `erf`, and the complementary error function `erfc`. The standard real(real, real) functions `atan2`, `hypot`, `fmod`, `remainder` are also included.

The functions `degrees(real radians)` and `radians(real degrees)` can be used to convert between radians and degrees. The function `Degrees(real radians)` returns the angle in degrees in the interval [0,360). For convenience, `Asymptote` defines variants `Sin`, `Cos`, `Tan`, `aSin`, `aCos`, and `aTan` of the standard trigonometric functions that use degrees rather than radians. We also define complex versions of the `sqrt`, `sin`, `cos`, `exp`, `log`, and `gamma` functions.

The functions `floor`, `ceil`, and `round` differ from their usual definitions in that they all return an int value rather than a real (since that is normally what one wants). The functions `Floor`, `Ceil`, and `Round` are respectively similar, except that if the result cannot be converted to a valid int, they return `intMax` for positive arguments and `intMin` for negative arguments, rather than generating an integer overflow. We also define a function `sgn`, which returns the sign of its real argument as an integer (-1, 0, or 1).

There is an `abs(int)` function, as well as an `abs(real)` function (equivalent to `fabs(real)`), an `abs(pair)` function (equivalent to `length(pair)`).

Random numbers can be seeded with `srand(int)` and generated with the `int rand()` function, which returns a random integer between 0 and the integer `randMax`. The `unitrand()` function returns a random number uniformly distributed in the interval [0,1]. A Gaussian random number generator `Gaussrand` and a collection of statistics routines, including `histogram`, are provided in the base file `stats.asy`. The functions `factorial(int n)`, which returns n!, and `choose(int n, int k)`, which returns n!/(k!(n-k)!), are also defined.

When configured with the GNU Scientific Library (GSL), available from http://www.gnu.org/software/gsl/, `Asymptote` contains an internal module `gsl` that defines the airy functions `Ai(real)`, `Bi(real)`, `Ai_deriv(real)`, `Bi_deriv(real)`, `zero_Ai(int)`, `zero_Bi(int)`, `zero_Ai_deriv(int)`, `zero_Bi_deriv(int)`, the Bessel functions `I(int, real)`, `K(int, real)`, `j(int, real)`, `y(int, real)`, `i_scaled(int, real)`, `k_scaled(int, real)`, `J(real, real)`, `Y(real, real)`, `I(real, real)`, `K(real, real)`, `zero_J(real, int)`, the elliptic functions `F(real, real)`, `E(real, real)`, and `P(real, real)`, the Jacobi elliptic functions `real[] sncndn(real,real)`, the exponential/trigonometric integrals `Ei`, `Si`, and `Ci`, the Legendre polynomials `Pl(int, real)`, and the Riemann zeta function `zeta(real)`. For example, to compute the sine integral `Si` of 1.0:

```import gsl;
write(Si(1.0));
```

`Asymptote` also provides a few general purpose numerical routines:

`real newton(int iterations=100, real f(real), real fprime(real), real x, bool verbose=false);`

Use Newton-Raphson iteration to solve for a root of a real-valued differentiable function `f`, given its derivative `fprime` and an initial guess `x`. Diagnostics for each iteration are printed if `verbose=true`. If the iteration fails after the maximum allowed number of loops (`iterations`), `realMax` is returned.

`real newton(int iterations=100, real f(real), real fprime(real), real x1, real x2, bool verbose=false);`

Use bracketed Newton-Raphson bisection to solve for a root of a real-valued differentiable function `f` within an interval [`x1`,`x2`] (on which the endpoint values of `f` have opposite signs), given its derivative `fprime`. Diagnostics for each iteration are printed if `verbose=true`. If the iteration fails after the maximum allowed number of loops (`iterations`), `realMax` is returned.

`real simpson(real f(real), real a, real b, real acc=realEpsilon, real dxmax=b-a)`

returns the integral of `f` from `a` to `b` using adaptive Simpson integration.

 [ << ] [ < ] [ Up ] [ > ] [ >> ] [Top] [Contents] [Index] [ ? ]

This document was generated on May 24, 2014 using texi2html 5.0.

```© manpagez.com 2000-2018