問題タブ [rational-numbers]
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++ - 中間オーバーフローなしで整数を有理数で乗算する
非負の有理数 p/q を表す構造体があります。
n
有理数に uint64 を掛けて、切り捨てられた整数の結果を得たいと思います。つまり、次のように計算したいと思います。
での中間オーバーフローを回避しながらn * r.p
。(もちろん、最終結果はオーバーフローする可能性がありますが、これは許容範囲です。)
これどうやってするの?高倍率なしでそれを行う方法はありますか?
(boost::rational を見ましたが、この機能を提供しているようには見えません。)
python - Python での分数と整数の乗算
モジュールを使用せずに、入力値に基づいてさまざまな算術関数を実行する有理数クラスを構築しようとしていfractions
ます。2 つの異なる分数を使用している場合、コードは正常に動作しますが、整数を使用しようとするとすぐに以前のクラス関数でエラーが発生し、その理由がわかりません。この時点で実装しようとしているのは、ここでも整数を有理数に加算することです (例: print Rational(1,2) * 3
)。
これまでのコードを以下に含めました-問題のある操作は です__radd__
が、これがコードに含まれていると、属性エラーが発生します__add__
(このエラーは、この新しい操作が含まれるまで表示されません)。問題は、まだ 2 番目の__radd__
パラメーターが他にあることにあると推測しています (Rational クラスの別のケースを想定していますか?) が、どうすればよいかわかりません。
編集: Python 2.7 を使用しています。サンプル実行のエラーは、コードの下に含まれています。
サンプルエラー
biginteger - 有理数が等しいことを効率的に検出する
私は多くの有理数のコレクションを持っており、それぞれの分子と分母は大きな (数百または数千ビット) 符号なし整数として格納されています。a/b
セット内の特定の有理数がセット内の他の有理数と等しいかどうかを効率的にテストできるようにしたいと考えてc/d
います。
もちろん、最も簡単な方法は かどうかをテストすることa*d == b*c
ですが、完全な積を計算するよりも効率的な方法が必要です。
私の特定のユースケースに関するいくつかのメモ:
- 私がテストするペアは、実際に等しい可能性が高いです (私はすでに事前計算を行っており、最初に浮動小数点近似でそれらを比較しているため)、等しくない場合に早期に終了しても、多くの時間を節約することはできません.
- 数値ごとに余分なデータを事前計算しても問題ありませんが、各数値は少数の比較でのみ使用されるため、コストのかかる事前計算 (素因数分解など) はおそらく価値がありません。
- 時折の偽陰性は問題ありませんが、偽陽性はそうではありません。
これは理論的には不可能かもしれないと思いますが、念のため集団精神に投げ出します。
racket - Racket が π は有理数であると報告するのはなぜですか?
中等数学の生徒なら誰でも証明できるように、円周率は無理数です。
それでも:
これは、基になるマシンの浮動小数点形式での pi の表現の精度が制限されているため、q が 10^n で n が表現精度である p/q として常に表現できるためですか?
もしそうなら、Racket (または他の同様に動作するスキーム) によってスローされた数値が、合理的でないと見なされる可能性はありますか? したがって、なぜrational?
関数を気にするのですか?
更新:偶数(rational? (sqrt 3))
レポート#t