問題タブ [numerics]
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.
c++ - C++、リンク順序は標準化されていますか?
私の Linux ボックスには、2 つのライブラリがあります。
両方とも実装が含まれています
私のメインプログラムはfooを呼び出します:
g ++を使用してプログラムを2つの方法でコンパイルしました
プログラムを実行すると、a1 は明らかに libfoo1.a の foo() 実装を使用していますが、a2 は明らかに libfoo2 を使用しています。つまり、g++ は最初に見た foo() をリンクします。
私の質問 (最後に) は、この「貪欲な」リンク ポリシーは実際に C++ 標準で指定されているのでしょうか? または、異なるコンパイラ/プラットフォームは、実装定義の方法で異なる動作をしますか?
PS: 質問を実際的な文脈に置くために、私はこの g++ の例が機能する方法が本当に好きです。私の実際のアプリケーションでは、多くの (多くの!) 関数を実装するレガシー libfoo2 がありますが、libfoo1 でそれらの一握りの新しい実装を提供したいと考えています。一方では、libfoo1 にまったく新しいインターフェースを書き、ほんの一握りを実装してから、残りを libfoo2 に委譲することができます。しかし、リンカーに頼って委任できるのであれば (icc のような非 g++ コンパイラの場合でも)、委譲コードをすべて書くことは避けたいと思います。
PPS:実際の実用的なコンテキストで言えば、libfoo2 は blas であり、libfoo1 はそのルーチンのいくつかの自作 OpenMP 実装です。私は MKL のために砲撃する準備ができていません。ATLAS は、呼び出したい関数をマルチスレッド化しません。GEMM のマルチスレッド化には非常に優れていますが、LAPACK のより風変わりなルーチンも高速である必要があります (zsptrf / zsptrs / zspr)。これらのルーチンのキャッシュを無視した OpenMP 実装は、キャッシュ調整された順次実装よりも優れているようです。
投稿が長くなって申し訳ありません。
c++ - std::valarray の将来はどのようになりますか?
かなり最近まで、私は C++11 の審議についていけませんでした。それと取り組んでいる問題にもっと慣れようとしていると、ほとんどの人が代わりにBlitz++を使用しているため、非推奨または削除を主張しているように見えるこのサイトに出くわしました。おそらく、私はまだ を使用している数少ない人の 1 人だと思います(もちろん、このクラスには汚い過去、汚れた現在、疑わしい未来があることを知っています)。しかし、それは私が必要とすることを行い、おそらくもっと重要なのは、それが標準の一部であることです (今のところは)。std::valarray
std::valarray
上記の 1 つのサイトを除いて、新しい標準で実際に何が起こっているかについてはほとんど見つけることができませんでしたstd::valarray
。SO の誰かが、Google、Wikipedia、およびC++ 標準委員会の Web サイトでさえ、これまでのところ失敗に終わっています。ありがとう。
licensing - パブリック ドメインまたはバイナリー表示なしの FFT Lib?
私が取り組んでいるライブラリ、または (できれば) 標準ライブラリに含めるために、D プログラミング言語に変換する FFT ライブラリを探しています。私はまともなパフォーマンスを備えたかなり単純な FFT を必要としています。ただし、次の要件を満たす必要があります。
純粋な D で記述されているか、純粋な D に適切に変換できるほど単純です。たとえば、インライン アセンブラやプリプロセッサの悪用がなくても、読み取り可能な C コードが機能します。(D から C を呼び出すことができることは承知していますが、そうしたくないのには理由があります。)
フリー/オープンソース、非コピーレフト (つまり、GPL ではない) であり、バイナリのみの配布の帰属を必要としない (つまり、BSD ではない) 条件の下でライセンスされています。受け入れ可能なライセンスには、Boost、zlib、およびパブリック ドメインが含まれます。
コードは、適切な D インターフェイスを提供するために適切に変更できるように、十分に読みやすくなければなりません。70 年代の非常に最適化されているが判読できない Fortran コードは、どんなにうまく機能したとしても、必要ありません。また、非常に最適化された Fortran コードから変換され、Fortran コードのように見える C コードも必要ありません。
FFTWは GPL ライセンスであり、シンプルさよりもパフォーマンスを重視して書かれているため、FFTW がどんなに優れていてもお勧めしないでください(非常に優れていることは理解しています)。
matlab - 多数のスパース行列を持つ cell 配列を含む matlab cell2mat( ... ) 関数がメモリを予期せずオーバーフローする
Matlab と cell2mat() 関数を使用すると、メモリに関して奇妙な動作が発生します...
私がやりたいことは次のとおりです。
しかし、残念なことに、「DOH」で示される行は、疎行列のサイズを合計した場合に必要以上に、途方もない量のメモリを使用します...大きすぎる中間構造を作成するように。
以下は問題なく動作しますが、二重インデックスは par-for では機能しないため、1 つのコアしか使用できません。
私の疑いでは、後者の場合、各セル要素のサイズははるかに扱いやすい... 20,000x1 疎行列のようですが、前者では、これらの「外側」要素は 20,000 x 5,000 になり、Matlab が望む場所に何らかの形で適合しません。それらを一時変数として配置すると、極度に希薄であるにもかかわらず、メモリ使用量が制御不能になります。
メモリの使用と上記に関して従うべき規則はありますか? または、2番目のケースでジャイブするようにparforの使用を変更する方法は? 「parfor」はちょっと新しいので、他のコア機能よりもウェブ上にそれについての情報が少ない... matlab の 8 つのコピーを実行するよりもはるかに効率的です!
c# - .NET での 10 進数または 16 進数の基数の使用
おはよう、昼も夜も、
警告:時期尚早の最適化を試みているように聞こえるかもしれませんが、そうではないことを保証します。つまり、「時期尚早の最適化」に関するリンクを私に指摘せずに、できる限りのことをしたい場合は、この質問に答えてください。
基数 10 と基数 16 で記述された定数を使用して大量に繰り返される操作のパフォーマンスに違いがあることに気付くことは可能ですか? 私は人々が書いているのを見ます
代わりにたくさん
これは、彼らがC/C++のバックグラウンドを持っているか、操作がより高速に実行されると考えている可能性があることを示唆しています(ビット単位の操作だけについて話しているわけではありません)。C# コンパイラによって、すべての定数が同じ基数に変換されるわけではありませんか? または、コードを書くときに base 10 よりも base 16 を使用する利点はありますか?
どうもありがとうございました、
c - C の 2 つの符号付き数値の平均を取る
x と y があり、どちらも C の符号付き整数であるとしましょう。2 つの間の最も正確な平均値をどのように見つければよいでしょうか?
マシン/コンパイラ/ツールチェーン固有の仕組みを利用しないソリューションを希望します。
私が思いついた最善の方法は次のとおり(a / 2) + (b / 2) + !!(a % 2) * !!(b %2)
です。より正確な解決策はありますか? もっと早く?もっと簡単?
一方が他方よりも先験的に大きいかどうかがわかっている場合はどうなりますか?
ありがとう。
D
編集者注int
: 入力値が C型の最大絶対境界に近い場合、OP は整数オーバーフローの影響を受けない回答を期待することに注意してください。これは元の質問には記載されていませんが、回答する際に重要です。
java - 数値計算を行うための Java リソース?
Java を使用して「数計算」を学習するのに最適なリソースは何ですか? Java を使用して数値処理をコーディングする際の、10 進数処理の正しい方法、ベスト プラクティス、API、パフォーマンスに関する注目すべきイディオム、および一般的な落とし穴 (およびその解決策) などについて言及しています。
wolfram-mathematica - Mathematica のライブラリ関数機能
GPU の能力を利用するために、Mathematica の外部線形ソルバーとして CUSP を使用しようとしています。CUSP プロジェクトの Web ページは次のとおりです。CUSP を Mathematica と統合する方法について、いくつかの提案を求めています。ここにいる皆さんの多くは、これについて議論することに興味を持っていると確信しています。入力行列を書き、それを CUSP プログラムに入力するのは適切ではないと思います。Mathematica を使用LibrarayFunctionLoad
すると、入力行列をその場で GPU ベースのソルバーにパイプライン処理するためのより良い方法になります。Mathematica から行列と右辺の行列を直接供給するにはどうすればよいでしょうか?
ここにいくつかの CUSP コード スニペットがあります。
この質問により、Mathematica 8 のコンパイル機能について議論することができます。また、MMA の mathlink インターフェイスのトピックを呼び出すこともできます。ここにいる人々が、この問題を熟考する価値があり、興味深いものであると感じてくれることを願っています。
ブラジル
visual-studio - Visual Studio 2010 - .Net Framework 4 コンソール アプリケーション
基本的に、System.Numerics 参照をプロジェクトに追加し、以下のように using ステートメントに追加しました。
ただし、次のエラーが発生します。
これはうまくいけば簡単なものです!
ありがとう
c - C小数のみ入力
単純なCアプリケーションで入力を数値のみに制限しようとしていますが、警告が表示されます。次のセグメントと関係があるのではないかと思います。バージョン1は物事を行うための適切な方法ですか?ありがとう。
また
私のコードの残りは
明確にするために、私が行っている演習に従って与えられた方法でチェックを行う必要があります。ありがとう。