[[FrontPage]] ** 指数、対数の計算 [#cc1231bd] 組み込み等の制限された環境では浮動小数点はサポートされていなかったり、サポートされていても超越関数がなかったりする。 超越関数に関しては級数展開によって基本的演算から実現できる。FPUを持たないCPU用に OSがライブラリとして提供しているものもある。 http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libm/noieee_src/n_exp.c?annotate=1.7 http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libm/noieee_src/n_log.c?annotate=1.6 ** リンク [#w0345e86] ハードウェアでの乗算のない8bitCPUでの高速実装 :Integer Multiplication|https://www.cpcwiki.eu/index.php/Programming:Integer_Multiplication "いろいろな演算 (比較、反転、ビット拡張など) をビット演算だけを使ってやる手法の一覧。ナイーブな方法から、値に依存しない (定数時間の) 方法までが紹介されている。"https://twitter.com/mootastic/status/1587198187034378240 :Bit Twiddling Hacks|https://graphics.stanford.edu/~seander/bithacks.html C言語のヘッダだけで書かれた物理エンジン。C99、3300行。依存ライブラリなし。浮動小数点を使わず32ビット整数演算のみ。物理的な挙動はそれほど正確ではないが、組み込み環境などでも動く。ライセンスはCC0。 https://twitter.com/mootastic/status/1580835854515261442 :tinyphysicsengine|https://codeberg.org/drummyfish/tinyphysicsengine 追加 :Half Float Library|http://yaneuraou.yaneu.com/2017/05/29/half-float-library%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F/ ~ 機械学習で使う用にhalf float(16-bit float)の演算ライブラリ作りました。と言ってもfloat型がIEEE 754の形式であることを仮定して、符号bitと指数部、小数部をそのままとってきてuint16_tに変換する、みたいな感じのお手軽実装ですが :1K tiny & fast lib for doing addition, subtraction, multiplication and division operations precisely |https://github.com/dt-fe/number-precision :この前教えて頂いた、高速にsqrtを計算する闇コードなのです|https://twitter.com/yukata_yu/statuses/1046445082788814848 https://en.m.wikipedia.org/wiki/Fast_inverse_square_root *** 数値計算 [#o3939bf2] :3.多項式計算アルゴリズム|http://www.akita-pu.ac.jp/system/elect/comp1/kusakari/japanese/teaching/SoftTech/2004/note/3/ :水先案内: C++による数値計算|http://www.fluidlab.naoe.t.u-tokyo.ac.jp/~minnie/Pilotage/comp.html :初等関数の計算|http://na-inet.jp/nasoft/chap05.pdf :Everyware Project Page|http://everyware.sourceforge.net/ ~ ポータビリティを目指した基本的演算ライブラリ :SoftFloat|http://www.jhauser.us/arithmetic/SoftFloat.html ~ ansi Cで書かれたライブラリ。 :Hardware Algorithm / "Scene Research Station"|http://kmkz.jp/mtm/?load=hdl#exp ~ ハードウェアとはうたわれているが計算の簡略化の考え方がソフトの場合も同じで参考になる。 :数値 計算 ガイド|http://www.scl.kyoto-u.ac.jp/scl/appli/appli_manual/SUNWspro/WS6U2/ja/manuals/common/ncg/ncg.pdf ~ SUNのドキュメント。ieee-754のフォーマット、演算の注意点などについて知っておくべきことが記されている。 :Bibliography (Japanese)|http://www-amano.aa.cs.keio.ac.jp/members/kawaguti/memofpu/biblio.jp.html ~ 数値演算に関する参考文献リスト :IEEE754と数値計算|http://www.ma.is.saga-u.ac.jp/minamoto/doc/kyudai.pdf :log function with 3D Now!|http://homepage1.nifty.com/herumi/adv/adv21.html :午後なコード|http://homepage1.nifty.com/herumi/adv/adv43.html#015 :午後なコード|http://homepage1.nifty.com/herumi/adv/adv43.html#007 ~ 具体的な計算簡略化の過程が記されている。非常に参考になる :Radium Software Development|http://www.radiumsoftware.com/0303.html ~ 超高速のexpルーチン。(反則気味) :指数関数に関わる浮動小数点数のクイズ|http://homepage1.nifty.com/herumi/diary/1003.html#4 ~ 同じ数を足して引く+b-bの秘密も :指数関数に関わる浮動小数点数のクイズ(解答編)|http://d.hatena.ne.jp/nishiohirokazu/20100308/1268038641 ~ :固定小数点演算|http://www2.muroran-it.ac.jp/circle/mpc/program/algorithm/fixedpoint/index.html :翻訳:平方根を使わずに高速で2点間の距離を近似する - きしだのはてな|http://d.hatena.ne.jp/nowokay/20120604#1338773843 :flipcode - Fast Approximate Distance Functions|http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml :Z80 Routines - Math - WikiTI|http://wikiti.brandonw.net/index.php?title=Category:Z80_Routines:Math :(1+x)^n ≒ 1+nx ただし x<<1 の近似式ってもう忘れ去られた技術なのかいのぉ。|https://twitter.com/I_HaL/status/637825754063990784 *** 数値演算システム [#adedf014] :数値・数式処理システム概要|http://www.bekkoame.ne.jp/~ponpoko/Math/Math.html ~ matlab とか scilib とか octaveとかの紹介 :The Netlib|http://www.netlib.org/