FrontPage

指数、対数の計算

組み込み等の制限された環境では浮動小数点はサポートされていなかったり、サポートされていても超越関数がなかったりする。

超越関数に関しては級数展開によって基本的演算から実現できる。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

リンク

ハードウェアでの乗算のない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

数値計算

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

数値演算システム

数値・数式処理システム概要
http://www.bekkoame.ne.jp/~ponpoko/Math/Math.html
matlab とか scilib とか octaveとかの紹介
The Netlib
http://www.netlib.org/

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-01-08 (日) 10:43:07 (468d)