私はCで書き直したRコードのブロックを持っています.2つのバージョンは異なる結果を提供します。これは、Rレベルでの丸め問題、つまりCで行われているすべての処理と一度だけ発生する丸め処理とは対照的に、複合丸め問題を作成する複数の演算が実行されているためです。私はここで過度に楽観的であると思うし、私は何かが欠けているかどうかを確認するためにいくつかの目のセットを望んでいた、そしてそれは実際に私の最後にコーディングが悪いだけです。関数のR&Cバージョンの結果が異なる - 丸め誤差または演算子エラー?
まずRコード:Cで今
h_tx <- function(x, sigma_nu, sigma_eta, alpha=0) {
b <- (sqrt(exp(sigma_eta^2) - 1))/sigma_nu
a <- -alpha * b
asinh(a+b*x)
}
:例として
double hTx(double x, double sigmaNu, double sigmaEta, double alpha) {
double a;
double b;
double ret;
b = (sqrt(exp(pow(sigmaEta,2)-1)))/sigmaNu;
a = -alpha * b;
return asinh(a + b * x);
}
、値5,5、5を渡し、0 CにRで13.19と12.69を与え技術的にはRコードはベクトル化されていますが、Cコードのこの特定のブロックはそうではありませんので、例としてベクトル化された入力を提供したくありません。
これらは機能的に同じですか、間違っていますか?
結果が異なるいくつかの入力と、対応する出力を提供できますか? – NPE
どのくらい違いますか?私は3.1415対3.1416または2.7172対1.4142を意味しますか? – BlackBear
sqrt(exp(pow(sigmaEta、2)) - 1)、間違った括弧 –