double を取り、それを純粋な C で別の double の累乗にする関数を作成することは可能ですか? (3.5 2.7 ) など。これは、アセンブリを使用して関数を記述する場合にのみ可能であると言われました。
3 に答える
pow()
アセンブリが使用されている場合にのみ関数を実装できる可能性があるとあなたに言った人は誰でも間違っていました。これは明らかに間違っています。累乗の数学的概念は、コンピューターより 2000 年以上前から存在するからです。1対数は約 400 年前に (累乗を含む計算を単純化する方法として) 発明され、すぐに計算尺が続きました。2デジタル計算機が発明されるまで、計算尺は算術式の計算に使用される主要なツールでした。
計算を実行するために、対数と累乗表のエントリで内挿を使用することを含む数学のレッスンを受けたことがあるかもしれません。3 そのようなレッスンを覚えている場合、これは通常の数学を使用してこれらの計算を実行できるというヒントです。いずれにせよ、これは対数と指数の性質が教えられる場所でもあります。
微積分では、テイラー級数に関するレッスンと、テイラー多項式を使用して関数を近似する方法があります。4対数のマクローリン級数 (0 を中心とするテイラー級数) は、引数が区間 (-1, 1) 内にある場合にのみ収束するため、通常の数学を使用して引数を縮小し、計算された答えを調整するために数学を使用できます。希望の答えを得るために。たとえば、ln
(2.7)を計算するには、 ln
(2.7) - ln
(2 2 ) + ln
(2 2 ) = ln
(2.7/2 2 ) + ln
(2 2 ) = ln
(0.675) + 2× ln
(2) を計算できます。第 1 項にマクローリン級数を使用し、(2) のテーブル ルックアップを使用するln
と、答えが得られます。
関数がアセンブリを使用してライブラリに実装されているかどうかにpow()
関係なく、人間が計算するように指示したことを計算しているだけです。ハードウェアでは、ソフトウェアや紙の上では実現できない魔法はありません。
- ユークリッドもアルキメデスも、指数の概念に精通していました。
- ジョン・ネイピアは 1614 年に対数の理論を発表しました。数年後、この概念はヘンリー・ブリッグスによって改善され、彼は最初の常用対数表も発表しました。ウィリアム・オートレッドは、1622 年に計算尺を発明したとされています。
- 悲しいことに、表による算数は、標準化されたテストの点数を改善するのに役立たず、計算機を使用する方がはるかに簡単であるため、おそらく現代のカリキュラムから削除されつつあります。
- テイラー級数は、ブルック テイラーがそれらを作成するための数学的方法を導出する300 年前に、いくつかの異なる関数に対して生成されました。
他の方法ではインストラクションにアクセスできないため、アセンブリでのみ実行できることがいくつかあります。ただし、計算などの通常のアルゴリズムの場合、これは当てはまりません。C で記述できない pow 関数の何が特別なのですか? アセンブラで書いた方が早いかもしれませんが、実装に支障はありません。
アセンブリなしで (手で計算するのと同じ方法で) 何でも計算できますが、はるかに遅くなります。そのため、特別なハードウェア サポートを使用せずにこれらのことを行う人はいません。