APPLE落下部門

[ポール・カーティス]はSEGGERの上分裂を計算に関するブログ記事の興味深いシリーズを持っています。これは熱いトピックでしたが、最近は多くのコンピュータやコンピュータ言語は内蔵の乗算と除算をサポートしています。しかし、一部のプロセッサは、命令と、それは理想的とは言えないかもしれない行うためのライブラリを欠いています。あなたはスピードやスペースを最適化することを可能にするかもしれないあなた自身をロールバックする方法を知っています。除算を行うには、ニュートンのアルゴリズムを使用して、現在の割賦カバー。

スティーブ・マーティンは、億万長者になると税金を払うことはありません方法についての有名なビットを持っていました。彼はまず…数百万ドルを取得します」、と言って始まりました。あなたが最初にあなたが分割することができます前に掛け合わせる方法を知っている必要があり以来続いて…」このメソッドは、少しそのようなものです。基本的な前提は2つあり:ニュートン法を使用すると、連続した乗算による逆数の推定値を洗練して、逆数は分割と同じ数を乗じてみましょう。私たちは6で34を分割する必要がある場合はつまり、あなたは* 1/6 34に6分の34を書き換えることができ、答えは同じです。

逆数のためのニュートンの近似は、あなたが答えを推測を取り、その後、一連の乗算を通してそれを絞り込むことができます。各乗算は、より良い精度を作成します。あなたは、古典的なスピード/スペースのトレードオフを実行するためにこれを使用することができます。たとえば、ちょうど私達がバイト(おそらく固定小数点バイト)の逆数を見つけたいとしましょう。 256個の要素のルックアップテーブルは、完璧な精度を提供することになると非常に高速になります。これ以上の数学は必要ありません。しかし、何についての32ビット?今の表では、あまりにも大きいです。しかし、あなたは、ルックアップする32ビットの番号の最初の8ビット、言うことができます。以上。以下。あなたにとって重要なものに依存します。

だから今、あなたはあなたの逆数の貧弱な推定値を持っています。サー・アイザックはそれを改善することができます。いくつかの数aについて、あなたは一緒にあなたの見積もり(x)と乗算それらを取ります。 2からその数を引くと、新しい見積もりを取得することにより、古い推定値を乗算する係数を有します。先にスキップ、あなたの推定が正しかった場合、乗算はあなたにすべての古い推定値を変更しないだろう1を与えるだろう明らかです。見積もりがオフになっている場合は、倍率を取得します。

式として、それは次のようになります。

X = X *(2 * X)。
あなたは22の逆数は0.02であるかもしれないを決めるのであれば、最初のパスはあなたを与えるだろう。

0.02 *(2-22 * 0.02)= 0.0312

0.0312 *(2-22 * 0.0312)= 0.0410

0.0410 *(2-22 * 0.0410)= 0.0450
正しい答えは、循環小数0.0454545であり、あなたが続けるならば、あなたはそこに取得します。

もちろん、あなたは分裂を行うための1以上の時間を掛けなければなりません。

我々は、ポストは、固定小数点実装を有しており、次にARM、RISC-V、およびdsPIC30ため、得られたアセンブリコードを検査することを好みました。まあ価値読みます。

我々は、アセンブリ言語で使用できる数学のトリックが大好きです。あなたはAVRと浮動小数点で作業している場合、この方法をお見逃しなく。

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

avrのavravrのavr

上のbrainf *#kの解釈は無駄に呼ばれませんが、私たちはなぜ[DAN]がAVRのためのBrainfuckインタプリタを書きましたか AVRのコードを生成していません。ブートローダとしてそれをもっと考えてください。 BrainFuckプログラムを実行するには、[DAN]がATMEGA32内のEEPROMにアップロードし、その後、マイクロコントローラが引き継ぎ、BrainFuckプログラムに実行していると判断します。全体がEEPROMから実行されるため、コードサイズは1022バイトに制限されています。人間によって書かれたどんなブレインファックプログラムに十分であると思います。 なぜ[DAN]は、人間によってほぼ読めない言語のための通訳者を築くためにAVRが欲しいのかについて、私たちは正直に共通以外の考えを持っていません。この遺伝的アルゴリズムソフトウェア開発者を含むBrainfuckを使用するかなり素晴らしいプロジェクトがあります。しかし、Blinkey LEDは私たちを幸せに保つのに十分なので、ブレインファックのビデオを見ることができます。

Raspberry PiRaspberry Pi

[Tech2077]のHD44780文字LCDを使用することは、RaspBerry PIにすでに手を稼いだラッキーなものの1つです。彼はGPIOヘッダーとの異なるインターフェースオプションを調べていて、RPIを使ってHD44780文字表示を使用するためのガイドを投稿しました。彼がおそらくすでに手に持っているプロトタイピング装置を使っているいくつかのハードコアの液晶作業をする代わりにこのアプローチが好きです。 LCDの実行を実行する必要があるはずです。 GOTCHAはデバイス間のロジックレベルのギャップです。 Arduinoで作業していた場合、アドオンはおそらく5Vの電源レールとロジックレベルを意味します。 RPIは3.3Vロジックを出力します。レベルコンバーターを使用することができます(この場合は、少なくとも7つのピンが変換される必要があります)、またはもう少し賢いことができます。 [Tech2077] RPI線の2つのRPIラインを使用してディスプレイのラインをアドレス指定するI2Cポートエキスパンダをグラインします(4つのデータビットと3つのコントロールビット)。 3.3Vロジックは、ポートエキスパンダのデジタル1の推奨最小値より0.2Vであるため、これはハックのビットです。しかし、それはちょうど元気で働くようです!そうでなかった場合、2つのNPNトランジスタもトリックを実行するでしょう。 新しい周辺機器のアドレス指定は、I2CモジュールをロードしてPythonを書き込むことだけです。

ブラウザなしでWebをハックするブラウザなしでWebをハックする

伝統的な問題です。あなたのプログラムでデータを利用したいですが、Webページにあります。一部のサイトにはAPIがありますが、もちろん、通常、あなたはあなた自身のものです。それを解析するだけでなく、HTTPを介してページ全体をトンします。あるいは、サイトを「スクウェード」するためのツールを利用することもできます。これを行うための1つの魅力的な方法は、ブラウザの外側のWoob – Webです。 このシステムは、特定のサイトに合わせた一連のバックエンドを利用しています。あなたが同様にあなた自身を作り出すことができるだけでなく、公式のバックエンドのコレクションがあります。バックエンドがある場合は、Pythonからそれを利用するだけでなく、それを使用することもできます。これは銀行口座残高を発見する例です。 >>> Woob.Core Import Woob. >>> woob.capabilities.bank import capbank. >>> w = woob() >>> w.load_backends(Capbank) {‘SocietEgenerale’:、 ‘CreditMutuel’:} >>> pprint(リスト(w.iter_accounts())) [ 、 ] >>> ACC = NEXT(ITER(w.iter_accounts())) >>>