gpt4 book ai didi

javascript - 使用 Emscripten 将 R 函数编译为 JavaScript

转载 作者:行者123 更新时间:2023-12-02 04:50:51 25 4
gpt4 key购买 nike

我正在尝试使用 Emscripten 将一些用 C 编写的 R 函数编译为 JavaScript。我的第一个任务是移植一个名为 pf 的函数。

出处可查here .所以,我进入 src 目录并尝试运行:

(trunk)⚡ % emcc -s EXPORTED_FUNCTIONS="['_Rf_pf']" nmath/pf.c
warning: unresolved symbol: Rf_pbeta
warning: unresolved symbol: Rf_pchisq
warning: unresolved symbol: R_NaN
warning: unresolved symbol: R_NegInf
warning: unresolved symbol: R_PosInf

我在输出 JavaScript 中得到一个函数 _Rf_pf。我实际上可以调用此函数并返回结果。但是,由于 R_PosInf 和 company 没有解析,它在 R_P_bounds_01(x, 0., ML_POSINF); 上短路。 ML_POSINF 以某种方式设置为 0,给出了奇怪的结果。因此,算法的核心并未执行。

有谁知道如何解析这些符号并移植此功能?

我可以尝试编译更多源代码,这似乎让我有所收获:

$ emcc -s EXPORTED_FUNCTIONS="['_Rf_pf']" nmath/pf.c nmath/pbeta.c nmath/pchisq.c 
warning: unresolved symbol: R_finite
warning: unresolved symbol: Rf_pgamma
warning: unresolved symbol: Rf_warning
warning: unresolved symbol: bratio
warning: unresolved symbol: gettext
warning: unresolved symbol: R_NaN
warning: unresolved symbol: R_NegInf
warning: unresolved symbol: R_PosInf

但是,这似乎让我陷入了一个巨大的兔子洞。然后,我遇到了一些障碍:

 $ emcc -s EXPORTED_FUNCTIONS="['_Rf_pf']" nmath/pf.c nmath/pbeta.c nmath/pchisq.c main/arithmetic.c 
In file included from main/arithmetic.c:35:
include/Defn.h:201:3: error: SIZE_MAX is required for C99
# error SIZE_MAX is required for C99
^
include/Defn.h:639:9: error: unknown type name 'R_size_t'
extern0 R_size_t R_NSize INI_as(R_NSIZE);/* Size of cons cell heap */
^
include/Defn.h:640:9: error: unknown type name 'R_size_t'
extern0 R_size_t R_VSize INI_as(R_VSIZE);/* Size of the vector heap */
^
...
fatal error: too many errors emitted, stopping now [-ferror-limit=]

请注意,我已经设置了 CPATH。我不知道这是否是将编译器指向我需要的不同 header 的方法:

(trunk)⚡ % echo $CPATH
gnuwin32/fixed/h/:/usr/local/Cellar/r/3.1.2_1/include/:/usr/local/Cellar/r/3.1.2_1/R.framework/Versions/3.1/Resources/include/:nmath/:include/:main/:include/R_ext

最佳答案

如果你想使用gnuwin32/fixed/h/config.h,需要-DHAVE_CONFIG_H

https://github.com/wch/r-source/blob/trunk/src/gnuwin32/Makefile

关于javascript - 使用 Emscripten 将 R 函数编译为 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com