UPDATE I've finished wrapping all the functions, and have published the crate at
I did some searching and although I found some work on statistics in rust, I could not find implementations of the key statistical functions: the PDF, CDF and quantile functions for the common distributions. They are needed for tasks like hypothesis testing and confidence interval generation. The R programming language provides these functions, and they are implemented in C.
The functions themselves are very complex and designed to handle extreme input, including subnormal floats and infinity, but using them is fairly simple. I converted a number of them to Rust, and the results of this can be seen in the
riir branch. However it would be very easy to make a mistake, and a number of the functions use labels/goto which do not translate directly into rust.
This crate (provisionally called
r_stats will provide the CDF PDF and quantile functions for the same distributions as R provides. The hard work is done on it, specifically building and linking the C library, and generating bindings. What is required now is implementing the wrapper functions that hide the
unsafe and convert
c_ints. I would do this now but I am very tired, so just the normal distribution is implemented for now.
I believe that this work, and the crate that will eventually result, will be useful in the rust ecosystem, especially when working with data in jupyter notebook/evcxr. I just need to get the wrappers written. PRs welcome - if you need a function feel free to implement it and create a PR.