stdlib-js / stdlib-js/stdlib

[RFC]: add `airy` to compute Airy functions

Open
#6,962 11 comments 0 reactions 0 assignees View on GitHub
Accepted difficulty: 3 Feature Math priority: Normal RFC
Dominant language
JavaScript
Stars
6k
Forks
1.3k
Avg merge
1d 3h
Merged PRs (30d)
611

Description

### Description

Airy functions are a common special function in scientific applications, particularly wave phenomena. This RFC proposes to add a single package to compute for real-valued inputs the Airy function of the first kind, Ai(x), the second kind, Bi(x), and respective derivatives, Ai'(x) and Bi'(x).

The four outputs share a lot of computation, so for similar reasons and in the style of [@stdlib/math/base/special/ellipj](https://github.com/stdlib-js/math/blob/11642395f18340deb36d03737d63e2d3da9e02b1/base/special/ellipj/lib/index.js#L58-L62), perhaps the structure that makes sense is a single package, `airy` with exports:

```
airy(x) // [ Ai(x), Ai'(x), Bi(x), Bi'(x) ]
airy.ai( x ) // Ai(x)
airy.aip( x ) // Ai'(x)
airy.bi( x ) // Bi(x)
airy.bip( x ) // Bi'(x)
airy.assign( x, out, stride, offset )
```

Exports `ai`, `aip`, `bi`, and `bip` would be convenience functions that compute all four values and throw away three.

### Related Issues

_No response_

### Questions

No.

### Other

See also:

[scipy.special.airy](https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.airy.html)
[cephes airy](https://github.com/jeremybarnes/cephes/blob/60f27df395b8322c2da22c83751a2366b82d50d1/bessel/airy.c#L838-L965)

### Checklist

- [x] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [x] Searched for existing issues and pull requests.
- [x] The issue name begins with `RFC:`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.