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

Research direction

Start by reviewing base/special/ellipj/lib/index.js for the shared-output package structure. Compare the proposed API and real-valued behavior with scipy.special.airy and the referenced Cephes implementation. Done means a new airy package exposes airy, ai, aip, bi, bip, and assign for the four Airy values and their derivatives.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.