問題タブ [elementary-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1811 参照

floating-point - 正しく丸められた三角関数を度単位で計算する方法は?

通常のラジアンではなく度数で引数を取る三角関数を定義し、これらの引数に対して正しく丸められた結果を計算するにはどうすればよいでしょうか?

引数をM_PI/180.0対応する関数にラジアンで渡す前に を掛けても、M_PI/180.0は π/180 ではないため、機能しません。Handbook of Floating-Point Arithmetic のセクション 5.5 では、引数の正しく丸められた積を π/180 で計算する方法が提供されていますが、一部の引数では、この積が 2 つの連続する表現可能な浮動小数点数の中間点に近くなります。ラジアンで正しく丸められた関数でさえ、間違った最終結果を生成する可能性があります。

単独または組み合わせて機能する可能性のある 2 つの戦略は、より高い精度を使用することsinpiと、CRlibmcospitanpi三角関数を使用して、それぞれとを計算することです。sin(πx)cos(πx)tan(πx)

後者の戦略では、180 で割るという問題が残りますが、これは多くの議論にとって正確ではありません。

高精度の戦略 (引数に π/180 の拡張精度表現を掛けてから、拡張精度関数をラジアンで適用する) に関しては、「正確な」ケースで問題が残る可能性があります。との唯一の有理結果はsinで得られるという定理は、ラジアン バージョンにのみ適用されます。これは明らかに次数バージョンには適用されません。浮動小数点入力 x について、sindeg(x) が 2 つの連続する表現可能な浮動小数点数の正確な中間点である場合、最終的な結果を保証するのに十分な中間精度はありません。結果は正しく丸められます。costan0

0 投票する
1 に答える
264 参照

matlab - 指数関数を計算するための CORDIC アルゴリズムを完全に理解できない

CORDIC に関する論文を 1 つか 2 つ読みましたが、よく理解できません。ただし、このアルゴリズムを使用して指数関数を計算するコードをインターネットからダウンロードします。これは非常に役に立ち、FPGA で関数の指数項を実行するのに役立ちました。しかし、今私はレポートを書こうとしていますが、CORDIC 部分がどのように機能するかを説明できず、一般的な CORDIC アルゴリズムに関連付けることができません。よろしくお願いします。

そして、私はいくつかの変更を行い、いくつかのコードを削除し、それをよりシンプルにしようとしましたが、それは機能しましたが、何をしたのか、なぜまだ機能しているのかわかりません!!!!

0 投票する
2 に答える
888 参照

java - アルゴリズムの基本操作とは何かを定義する方法は?

アルゴリズムの初歩的な操作は、一番内側のループの中にある操作だとずっと思っていました。本やオンラインの記事でこれについての詳細をほとんど見つけられなかったのは、おそらくそれが些細なことだと思われていたからかもしれませんが、アルゴリズムの基本的な操作とは何かを説明しようとする少数の人々は、実行される操作であると常に言っています最も、つまり、最も内側のループの内側にあるものです。

したがって、このアルゴリズムでは次のようになります。

houses[i] = in.nextInt();基本操作は最初の for 内の代入操作であると言いました。これは N 回実行されるのに対し、2 番目の for は N-1 回実行されるためです。

私の先生は、これは間違っていて、このアルゴリズムの初歩的な操作は 2 番目の for 内の操作であると言っています。

万が一、基本操作が最も内側のループ内にある操作ではない、または彼女が間違っているという例外がありますか?

0 投票する
1 に答える
75 参照

precision - IEEE-754 の倍精度と分割方法

初等関数を計算するときは、定数の変更を適用します。特に exp(x) の実装で。これらすべての実装で、ln(2) による修正は 2 つのステップで行われます。ln(2) は 2 つの数値に分割されます。

次に、ln(2) を使用した計算は次のように行われます。

丸め効果を避けるためであることはわかっています。しかし、なぜこの 2 つの数字が特別に含まれているのでしょうか。これらの 2 つの数値を取得する方法を知っている人もいますか?

ありがとうございました !

最初のコメントに続いて、より多くの資料と非常に奇妙な質問を追加して、この投稿を完成させます。私はチームと協力して、数値 ln(2) を 2 つの数値に分割することで精度を潜在的に 2 倍にするという契約に同意しました。このために、2 つの変換が適用されます。最初の変換は次のとおりです。

k は精度を示します。Cephes ライブラリ (~1980) では、float k は 9、double では 16、long long double では 16 に固定されています (理由はわかりません)。したがって、double c_h の精度は 16 ビットですが、c_l の精度は 52 ビットです。

このことから、以下のプログラムを書き、c_h を 52 ビット精度で求めます。

}

一連の異なる値について今計算すると、次のようになります。

x が 300 を超えると差が出るのが好きです。gnulibcの実装を見てみました

http://osxr.org:8080/glibc/source/sysdeps/ieee754/ldbl-128/s_expm1l.c

現在、c_h に 16 ビット プリビジョンを使用しています (84 行目)。

まあ、おそらくIEEE標準で何かが欠けています.glibcの精度のエラーは想像できません。どう思いますか ?

一番、

0 投票する
1 に答える
1226 参照

clojure - clojure: キーの存在と値によってマップのベクトルをフィルタリングする

このようなマップのベクトルがあります

のようなマップを取り込んで(つまり、{"element1" 1 "element3" 6}n フィールドまたは提供されたマップのそのキーに関連付けられています (提供されたマップにそのようなキーがない場合、返されません){}map1requiresconsumes

しかし、マップの再帰ループとフィルタリングにアプローチする方法を理解できていません

0 投票する
2 に答える
43 参照

python-3.x - 基本的な算術記号をループする方法

基本的な算術記号を間に入れると、7桁が100になるかどうかを確認したい。

変数をリストにある算術記号に置き換えるにはどうすればよいですか?