この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

※筆者は驚くと猫になってしまいます. 2次方程式の解の計算でさえこのように誤差が生じ,結局どっちが真の解かも分かりません. 普段計算機でしている計算の結果が本当に正しいものなのか,ちょっと心配になってきますね. 実は2次方程式に関しては誤差混入の原理が明らかになっていて誤差を回避する方法も知られています. 数値計算は前の計算結果を使って次の計算を行なうので,どこか一箇所でも誤差が混入してしまうとそれ以降の計算は信頼できないものになります. 大量の計算を行なう過程のどこかで致命的な誤差の混入が発生していたら…と考えると恐ろしくて夜しか眠れません. さて,ここからが本題です.(唐突)本当に紹介したかったのは次の例で,筆者がこれを知った時は驚きのあまり研究室で叫びました. 計算機不信に陥るので,覚悟してください(笑) 3. 数値計算に潜むとんでもないリスク では,いよいよ本題の"数値計算に潜む

TL; DRPythonのデータマネジメント技術と数値最適化をスムーズに繋げたい Pyomoを使うことで自然な記法でモデルを組み立てることが出来る Webドキュメントは貧弱だが、コミュニティは活発! 概要 数値最適化は機械学習や数値モデリングの基礎も基礎ですが、単に役に立ちます。Pythonという観点を度外視すれば、いろいろな手段がありますが、基本的には共通するフローがあります。 現象から最適化したい目的関数を決定する 目的関数に付随する制約条件を立式化する データを用意し、モデリング言語を記述する モデルをソルバーへ投入し、解を得る こういった作業をするための環境は商用でも色々と売られていまして、例えばAIMMS社とか、GAMS社、AMPL社といった会社は最適化の開発環境や言語を作って販売しています。 もちろん非商用でも、こういう団体は存在し、COIN-ORではライブラリやソルバーを開
ゲームのバグって面白いですよね。進行不可能バグはもちろん論外ですが、ちょっとした不思議なバグはなかなかに楽しめます。 さて、今回話題になったのはWii版(バーチャルコンソール)のマリオ64で、「長時間たつと足場がどんどん浮き上がる」というものです。オリジナル版では起こらず、バーチャルコンソール版だけで起こるというのがミソです。 この摩訶不思議なバグがいったいどうやって起きているのか、確かめていきましょう。 話題のバグ:時間が経つと足場が浮かぶAutomatonなどで記事になった「『スーパーマリオ64』を研究するプレイヤーたちは、Aボタンを押さずステージクリアするために3日間待ち続ける」がゲーマーの間で話題になっています。 このバグは、炎の海から顔を出したり沈んだりするだけの足場が、時間が経つにつれほんの少しずつ炎の海から浮遊するというものです。ゲームを起動したまま3日間放置すると、足場が

最近の投稿 サイトを新しくしましたUnityでスクリプトを使わずに流体を計算するPHPでオンライン対戦できるリバーシを作ってみた ハル研究所プログラミングコンテスト2018に参加しました ワイヤーアクションゲームを作りました 最近のコメントリバーシAIを作ってみた に yukariさんの よりPHPでオンライン対戦できるリバーシを作ってみた に 白丸 よりリバーシAIを作ってみた に taguchi よりPHPでオンライン対戦できるリバーシを作ってみた に ああ亜 よりリバーシAIを作ってみた に Yoka よりアーカイブ 2021年6月 2018年12月 2018年11月 2018年10月 2018年9月 2018年6月 2018年5月 2018年2月 2018年1月 2017年12月 2017年11月 2017年8月 2017年3月 2017年2月 2016年12月 2016年8月

@natsutanさんが言ってたから考えました。数値計算篇。 1. 数値計算の常識 計算機の小数点と数学の実数は全く別物だということを忘れがち。 また所詮近似だからと言って誤差が野放しだと思っても大間違い。 過大評価も過少評価もいけません。本当の数値計算のはなしをしよう.. 2. HP-15C Advanced Functions Handbook 基本を押さえたら実践、の前に歴史から学ぼう。 HP-15Cという古の名機を手に、限られた資源の使い方を知る。 ちなみにこっちが本機のマニュアル。 3. Modern Fortran Explained 過去だけに囚われていては人類は進歩しない! 現代を生きよう、これが明日から諸君の武器となる。 Fortran2008に準拠した言語詳説。 配列演算も演算子オーバーロードもローカルビューもアリだ。 4. Fortran 77 応用ソフトウェア作成
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く