#statistics #distribution #probability #stats

rmathlib

R语言C库特殊函数的Rust版本

2个稳定版本

1.1.0 2024年4月29日
1.0.0 2024年4月23日

#214 in 数学

Download history 234/week @ 2024-04-23 54/week @ 2024-04-30 2/week @ 2024-05-28 33/week @ 2024-07-02

每月 53次下载

GPL-2.0-or-later

170KB
4.5K SLoC

rmathlib

R语言C库特殊函数的Rust版本。

优势

与原生C代码相比,本版本的优点包括

  • 支持 wasm32-unknown-unknown 目标(避免使用emscripten)。
  • 借助 cargo doc 提供更清晰的文档。
  • 由于 cargo fmt,易于阅读。
  • 当将此包作为依赖项加载时,启用“转到定义”(代码导航)。
  • 关于使用的编译器和支持的Rust版本有更多明确的信息。

状态

以下函数已被移植

分布 密度 概率 分位数 随机生成
正态分布 dnorm pnorm qnorm
Student's t dt pt, pnt
Beta分布 pbeta
Poisson分布 dpois
Gamma分布 dgamma pgamma

许可

原始R代码根据GPL-2.0许可。因此,本移植也根据GPL-2.0许可。

GPL-2.0是一个非常严格的许可。包含GPL-2.0代码的每个项目都应该根据GPL-2.0许可(一个例外是仅将此库用于项目功能的一小部分(例如,参见 此处)。在这种情况下,您的项目将不被视为“衍生作品”,因此不受GPL-2.0的约束。

开发者提示

有关在 test/nmath/ 中调试C代码的一些提示

要从C打印,设置

std::env::set_var("CFLAGS", "-DDEBUG_bratio");

并使用 --nocapture 如此

$ cargo watch -x 'test -- --nocapture'

在C中打印时,请确认数字是否打印正确。看起来 REprintf 并非总是能正确打印数字。要修复这个问题,可以将 REprintf 替换为 printf(以及一些 \n)。

例如,通过以下方式测试表示:

double tmp = 1.2;
REprintf("from c: x=%g\n", x);

#include <stdio.h>

double tmp = 1.2;
printf("from c: x=%g\n", x);

依赖项

~410KB