[過去ログ] スレ立てるまでもない質問はここで 163匹目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
709
(2): (ワッチョイ fd10-R6F1) 2023/02/23(木)20:55 ID:4nvSVdtR0(1/2) AAS
>>697
>>699
誤差の出ない計算って論理的には可能だよ。
掛け算だったら、計算するごと使用するメモリを増やす型と関数を自作すれば良い。
例えば、10進数の計算で1桁に1バイト使う型を定義する。
1.1は整数1バイトで少数1バイトだが、
1.3を掛けると
1.43で整数1バイト、少数2バイトになる関数を作ると桁が落ちなくなる。
割り算の場合は、分母と分子を別々の値を持った型を作れば良い。
710: 709 (ワッチョイ fd10-R6F1) 2023/02/23(木)21:30 ID:4nvSVdtR0(2/2) AAS
試しに誤差の出ない計算のプログラム作ってみようと思ったら、
visual studio2008が古すぎるせいか動かなかったから、
visual studio2022をダウンロード中
711
(1): (ワッチョイ fd10-j6dJ) 2023/02/23(木)21:42 ID:6eqWydaM0(1) AAS
平方根とか三角関数とか計算途中の足し算とかあるじゃろ
712: (ワッチョイ 6d68-/+FQ) 2023/02/23(木)21:45 ID:1cQlLW/80(1/2) AAS

713
(1): (ワッチョイ a38e-O7MM) 2023/02/23(木)22:07 ID:hO/bqHQv0(1) AAS
>>709
馬鹿の典型例
714
(1): (ワッチョイ 5507-ebfy) 2023/02/23(木)22:51 ID:BgVzVA3A0(1) AAS
>>709
無理数って知ってる?
715: (ワッチョイ e310-mLMb) 2023/02/23(木)22:59 ID:gnLhIz6D0(2/2) AAS
分野が違うけど近似計算追求するよりか
H.264のように整数演算でいかに構築するかって方が好き
716: (ワッチョイ 6d68-/+FQ) 2023/02/23(木)23:34 ID:1cQlLW/80(2/2) AAS
欲しいのはたぶん多倍長固定小数点だろ
誤差を十分吸収し得るに足る小数点の位置は
個別のケースによって違うから自分でやるしかないよ
717
(3): 709 (ワッチョイ fd10-R6F1) 2023/02/24(金)00:14 ID:6Vzv7gfq0(1/2) AAS
>>713
どこが間違ってるか指摘出来ないお前の方が馬鹿だろ

>>711,714
>>697がどんな計算が必要か分からないが、
数値計算の誤差は掛け算や足し算で積み重なる場合が多い。
平方根をどうしても誤差無く計算したいなら、
計算出来なかった平方根の情報を残したまま出力するプログラムにすれば良い。
三角関数は、オイラーの定理の形式にすれば実装できる。
718
(1): 709 (ワッチョイ fd10-R6F1) 2023/02/24(金)00:42 ID:6Vzv7gfq0(2/2) AAS
>>717はオイラーの定理の形式にすれば実装できる場合もあるってことね。
無理な例を上げていちゃもんを付けてくる人がいるから、あらかじめ言っておいた。

誤差の無い掛け算足し算のプログラムを作ろうとしたら、思ったより大変で終わらなかった。
明日仕事から帰って気力があったら続きをやるか。
719: (ワッチョイ cbbb-N4lW) 2023/02/24(金)00:50 ID:wglsxPd20(1) AAS
BigDecimalみたいな配列ベースで実装された数値を使って有理数だけの演算をするならいけるだろうけど質問者が聞いてるのはそんな極めて限定された環境下の話じゃないだろうな
無理数の計算を計算できなかった情報として積み上げるなんて発想もそれをカオス系で使おうなんてNP困難みたいな実質不可能になる予感しかしない
720: (ワッチョイ fd10-j6dJ) 2023/02/24(金)00:51 ID:Q77HdEB50(1/2) AAS
誤差無しの厳密な計算結果を求めたかったんだろうに情報残したまま出力してどうするんだ
721: (ワッチョイ c569-/+FQ) 2023/02/24(金)02:26 ID:8t4u29Gl0(1) AAS
任意多倍長使えば加減乗で誤差出ないの当たり前だろwとっくにライブラリある、自作すんなしw
有理数型なら除でも誤差出ないけど、それはつまり計算出来なかった情報を残してるってことなんだよね

>計算出来なかった平方根の情報を残したまま出力するプログラム
mathematicaでシミュるとか凄い遅そう
722: (ワンミングク MM71-IvAx) 2023/02/24(金)05:39 ID:ta4Sp3FjM(1) AAS
>>718
数学もまともにわからない算数レベルの馬鹿
723: (ワッチョイ 5507-ebfy) 2023/02/24(金)08:12 ID:OehCc09P0(1) AAS
>>717
あのなw
それでマジで誤差のない演算や大小の比較ができると思ってんの?w
724
(2): (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:22 ID:62b5PWzyM(1/7) AAS
お話中、失礼します。
RDBMS ほどではないにしろ簡単なデータベースを普通のファイルを使って自作する
場合、もし、ディスクに flush されるまえに OS がダウンしてしまった場合に備える
アルゴリズムはどんなものが考えられるでしょうか?
ファイルは、上書きしなければ、ストレージが壊れるまではそのまま壊れないと仮定してよいと
思うのですが、問題は追加したり、途中を部分的に変更するために、同じファイルに書き込む
時だと思うんです。
725
(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:27 ID:/JDec9CR0(1/8) AAS
>>724
SQLite3を使え。データベースファイルが単一のファイルだから
普通のRDMBSほどではない簡単なデータベースに使える。
その程度のアルゴリズムも思いつかないようなレベルじゃ
実装なんて到底無理だ。
726
(1): (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:28 ID:62b5PWzyM(2/7) AAS
>>724
[案1]
・mkdir "X" 法で排他制御を開始する。他のcgiのインスタンスが処理中は待機する。
・今までのデータファイルAには上書きせずに、ファイルAをメモリーに全部
 読み込んでから、一部だけを修正し、新しいファイルBを作成して全部
 書き出してしてしまう。
・ファイルBをfflushして、OSのsystem call で(?) sync して、ストレージに本当に
 書き込まれるまで待つ。
・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。
・rmdir "X" として、排他制御を終える。
727
(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:30 ID:/JDec9CR0(2/8) AAS
> ・それが終わったら、ファイルAを削除してからBのファイル名をAに変えてしまう。

はい、ここでアウト
ファイルAを削除した段階でOSがダウンするとデータが無くなる
また、複数のファイルに書き込む場合が考慮されていない

な?
728: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:31 ID:62b5PWzyM(3/7) AAS
>>725
>その程度のアルゴリズムも思いつかないようなレベルじゃ
>実装なんて到底無理だ。
726 のようなアルゴリズムはどうですか。
効率は悪いと思いますし、一時的にディスク領域が2倍必要になりますが。
729: (ワッチョイ b5da-BTrK) 2023/02/24(金)11:32 ID:/JDec9CR0(3/8) AAS
信頼性重視なデータベースソフトが
どれもジャーナルという仕組み(アルゴリズムではない)を
採用している理由を考えろ
その程度の適当な方法じゃ実装できねぇんだよ
730: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:33 ID:62b5PWzyM(4/7) AAS
>>727
>ファイルAを削除した段階でOSがダウンするとデータが無くなる
次にcgiを起動した時に、ファイルAが無くなっていて、ファイルBだけが
存在する時には、Bのファイル名をAに改名するところから再開すれば
良いのでは有りませんか。
731
(2): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:37 ID:/JDec9CR0(4/8) AAS
いくつもある穴の一つを指摘しただけだ
複数のファイルに書き込むときはどうする?
732
(1): (ワッチョイ b5da-BTrK) 2023/02/24(金)11:39 ID:/JDec9CR0(5/8) AAS
だいたいCGIっていうのが終わってる
ファイルサイズが100GBあったら
ロック時間は100GBのファイルコピーの時間分になる
多数のアクセスでスケールしない
733: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:44 ID:62b5PWzyM(5/7) AAS
>>732
ファイルのサイズは1MB程度までと考えています。

>>731
複数ファイルの場合、mkdir "X" で排他性世を行なっている間に、
同じことを繰り返せばいいと思います。
734
(1): (ワッチョイ e310-mLMb) 2023/02/24(金)11:44 ID:2YdGe9kz0(1/2) AAS
そんなやり方推奨せんけど
rename(2)の上書きはアトミックにできるから先に消すのは悪手
735: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:45 ID:62b5PWzyM(6/7) AAS
>>731
>いくつもある穴の一つを指摘しただけだ
単一ファイルの場合で、サイズが十分小さい場合には、他に穴はないのでは
ないでしょうか。
736: (オイコラミネオ MM91-4mn0) 2023/02/24(金)11:47 ID:62b5PWzyM(7/7) AAS
>>734
renameに関しては、どういう意味か分かりませんが、もし、Aを先に削除したく
ないのであれば、
・AをCに改名後、BをAに改名。
・sync(?)などで、ストレージに本当に書き込まれるまで待機。
・Cを削除。
で良いのではないでしょうか。
ただ、余り意味は無いと思われます。
737
(2): (ワッチョイ a301-YJ5W) 2023/02/24(金)13:37 ID:igKefKVx0(1/2) AAS
>>726
解決策を考える前に要件を固めたほうがいいよ

急にcgiや排他制御が出てくるけど
同時実行を含めてどういう粒度でどういう操作をサポートする必要があるのかによって
更新方法も排他制御の方法も考え方が変わってくる

flush前のOSダウンに備えるだけなら更新内容が復元できるだけの情報を
ジャーナルとして書き出しflush完了を確認してからファイルを更新すればいい
比較的新しめのファイルシステムはそういう機能を持ってる
738
(1): (アウアウウー Sa49-ebfy) 2023/02/24(金)14:13 ID:p/kCAwBGa(1) AAS
なんでお前ら車輪を発明しようとしてんの?
あるぞそれ
1-
あと 264 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.014s