[過去ログ] プログラミングのお題スレ Part16 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
581(6): 2020/01/10(金)10:41 ID:lJ/gG0sx(1/3) AAS
お題:自分用expm1()的なもの。底はe以外でも良い。不正な引数でのエラー処理は
考慮しなくても良い。
583(1): 2020/01/10(金)20:53 ID:1usNcOvE(1) AAS
>>581
expm1()って何?
585: 581 2020/01/10(金)22:06 ID:lJ/gG0sx(2/3) AAS
>>582
SIMDやx87命令は考えてませんでした。
四則演算とexpm1()以外のライブラリ関数は使用可って事で。
やっぱし無難にテイラー展開で求めるのが楽?
>>583
例えば
外部リンク[html]:linuxjm.osdn.jp
587: 581 2020/01/10(金)22:42 ID:lJ/gG0sx(3/3) AAS
>>586
訂正:
四則演算と、「expm1()以外の」ライブラリ関数は使用可
624(1): 2020/01/14(火)21:06 ID:vjAz2zAO(1/2) AAS
>>581
AVX2 & FMA で作ってみました
外部リンク:ideone.com
範囲チェックはしてません
901: 581 2020/02/01(土)11:30 ID:6JPjRL8V(1/2) AAS
Maxima:
Brentせんせーの真似
expm1(x):=if abs(x) < 1e-8 then x*x/2+x else block([y:expm1(x/2)], y*y+2*y);
一方、英語版Wikipediaに拠ると
外部リンク:en.wikipedia.org
expm1(x):=2*tanh(x/2)/(1-tanh(x/2));
tanh()があって、expm1()が無い場合はこうすればいいのか…。
903(1): 581 2020/02/01(土)13:38 ID:6JPjRL8V(2/2) AAS
HAKMEMに倣って倍角公式でつw
mytanh(x):=if abs(x) < 1e-4 then x-x^3/3 else block([y:mytanh(x/2)],2*y/(1+y^2));
>>902
expm1(x * log(base)) == pow(base, x) - 1
なので、「任意の底でのべき乗マイナス1」のゼロ近傍を精度良く求めたい場合にも使えます。
IEEE754の最新版ではpow(2, x) - 1とpow(10, x) - 1の実装が推奨されてるそうなので、
底が2と10の場合はライブラリ任せになる未来が来る…といいなぁ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s