スレ立てるまでもない質問はここで 160匹目

■ このスレッドは過去ログ倉庫に格納されています
2022/05/10(火) 14:24:35.29ID:+9FnNLoT
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

次スレは>>980が立てること

【前スレ】
スレ立てるまでもない質問はここで 159匹目
https://mevius.5ch.net/test/read.cgi/tech/1644673480/
2022/07/03(日) 17:33:05.40ID:uWPRqyLy
倍精度で計算してたのがFFT一発で単精度まで落ちるわけだ
単精度もありゃ十分じゃないかという立場をとるのはもちろん個人の自由だが
2022/07/04(月) 12:58:01.67ID:XwxrB+Iy
ライブラリを作るとして
結果出力は32bit整数なんですなね?
2022/07/04(月) 15:45:48.50ID:sXLedEol
何桁の有効数字が必要なのかを決めないと
倍精度か何か決められないと思うんだけどな
230デフォルトの名無しさん
垢版 |
2022/07/04(月) 16:13:23.20ID:sIsYIsrz
>>228
文字やで
2022/07/04(月) 19:12:03.81ID:gbxy9fI7
>>230
何文字なんですなね?
2022/07/04(月) 19:48:38.32ID:lOMBrPIF
>>226
まず、固定小数点演算については調べたの?
それじゃ満たせない要件はなんなの?
233デフォルトの名無しさん
垢版 |
2022/07/04(月) 21:50:01.83ID:sIsYIsrz
>>231
メモリの許す限りや
範囲を指定できるようにしてもええで

>>232
アルゴリズムを聞いてるんだから
何が満たせないかなんてわかるわけがない
234デフォルトの名無しさん
垢版 |
2022/07/04(月) 21:55:33.63ID:sIsYIsrz
なんか具体例書かないとわからないみたいだから書くよ

345256438989867340975.3498804523475890735 / 9850434535458464390.2988504385251831532

という数式文字列を32bit整数だけ使ってなるべく速く効率よく計算するアルゴリズムの名前を教えて
もちろん割り算だけじゃなくて、最低限四則演算ができる
2022/07/04(月) 22:08:44.78ID:VzaqPz19
>>234
筆算法+十進二進変換で地道にやるしかないのでは?
https://mevius.5ch.net/test/read.cgi/tech/1434079972/84
2022/07/04(月) 22:14:34.26ID:qmNLO+GW
>>234
そんなことして何に使うの?
なんのために必要なの?
2022/07/04(月) 22:17:07.08ID:lOMBrPIF
>>234
桁数がいくらでもというならBCD演算かな。
2022/07/04(月) 22:20:13.07ID:GZdyPg0J
JavaのBigDecimalじゃだめなの?
小数位2^32桁までしか計算できないけど
2022/07/04(月) 22:21:18.87ID:Fzsxp6Q8
>>237
また使えない技術を今さらのように挙げる馬鹿が現れた‥‥
BCD 演算を実装しているアーキが今でもあるとでもいうのか?
2022/07/04(月) 22:22:57.63ID:lOMBrPIF
いや BCD というより、1000000000進数表現がいいね。
10進数 9桁毎に区切って 32bitレジスタに入れて、多ワード筆算だよ。
2022/07/04(月) 22:23:24.53ID:lOMBrPIF
>>239
アーキとなんの関係があるんだ?
頭使えよ
2022/07/04(月) 22:23:33.00ID:s4VnFX4N
馬鹿が好きな言葉「馬鹿」
2022/07/04(月) 22:39:19.35ID:4K+vP+9I
>>241
へえ?アーキの支援なしにハーフキャリーすらない状況で手でちまちま書くのかい?というか、書いてみろよ、その BCD 演算とやらを
2022/07/04(月) 22:41:18.33ID:lOMBrPIF
>>243
お前の言ってるのは多分 packed BCD なんだろうな
245デフォルトの名無しさん
垢版 |
2022/07/04(月) 23:01:32.40ID:vMfPnVT6
ハゲが好きな言葉「ハゲ」
2022/07/04(月) 23:10:33.35ID:lOMBrPIF
>>243
お前頭悪くて >>237 から >>240 を読んでも分かってなさそうだし、ちょっと暇だから詳しく書いてやる。
BCD を使う目的は、10進数と 2進数の変換コストを下げるためな。桁数がいくらでもあるような値のそんな変換、それそのものが相当なコストだろ?
だから BCD ってのは 0~9 という限られた値だけを使って、10進数との変換を簡単にしてる。
1バイトで 10進数 1桁表現だ。分かるか?
ここまで分かれば、この表現での筆算式演算ルーチンはお前でも書けるな?
で、今回は 32bit 演算器があるわけだから、それを効率よく使いつつ BCD と同様の目的を果たすのが 1000000000進数表現な。
10進数の 999999999 は 0x3B9AC9FF で、32bit に納まるのは分かるな?
0x999999999 なんてバカな表現にしなければ、1バイト/桁の筆算と同じ要領で計算できることが分かるな?
頭使えよ
2022/07/04(月) 23:25:53.96ID:ttcTbGc1
>>234が10進数で書いているから入出力は10進数で確定
あとはどういう演算か桁数はいくつかに依って10^n進数演算をしたほうが有利な場合もあれば2^n進数演算をしたほうが有利な場合もある
2022/07/04(月) 23:43:32.57ID:lOMBrPIF
>>247
んまあ実際乗算を筆算でやる場合のコストはオーダー n2 だから、式が長い(計算回数が多い)なら変換コストを払って2進数にしてしまうのがいいかもね。
でも今回は小数が欲しいから、2進数で計算しちゃうとその帳尻会わせも面倒そうね。
249デフォルトの名無しさん
垢版 |
2022/07/05(火) 00:39:40.83ID:IDOVcw6H
お前らほんと面白いなw

なんでJavaのBigDecimalみたいなのを自分で実装する話で
参考になるアルゴリズムを聞いただけで荒れるんだよw

知らないなら知りませんって言えばいいじゃんか
なんでいちいち文句言うんだよww
250デフォルトの名無しさん
垢版 |
2022/07/05(火) 00:42:50.75ID:IDOVcw6H
それにしても昔の人は同じことをやってるはずなんだが
この問題、アルゴリズムとして確立されてないんか?
2022/07/05(火) 00:51:39.12ID:jgcEU6+C
>>249
荒れるもなにも、とっくに固定小数とか筆算法って出てるじゃん。
それで何が不満なのかくらい書いたらどうだい。
というか、つべこべ言ってないでまず作ってみろよ。
252デフォルトの名無しさん
垢版 |
2022/07/05(火) 01:34:42.80ID:IDOVcw6H
>>251
アルゴリズム名が知りたいね
筆算法なんてコンピュータで使われてないし
2022/07/05(火) 02:23:33.79ID:xGDM+mzu
不遜メソッド効きすぎwww
2022/07/05(火) 07:56:46.50ID:h2Xvwxj0
>>249
△知らないなら知りません
◎書けないなら書けません
>>235
2022/07/05(火) 07:57:54.68ID:EOMm60h3
>>252
使われていますよ、整数演算をきちんとしたいのならそれしかないのでは?
2022/07/05(火) 08:11:42.70ID:jgcEU6+C
>>252
名前を知ってどうするの?
そこそこプログラム書いてりゃどんな方法なのかは分かるし、使われてないなんてアホなことも言うわけもないぞ。
多ワード乗除の基本中の基本であって、他にどうやるの?ってレベル。
2進数の掛け算とか、掛ける数分ループで足しちゃう人?
257デフォルトの名無しさん
垢版 |
2022/07/05(火) 13:49:08.28ID:IDOVcw6H
>>256
アルゴリズムの名前を聞くのは
それについて調べるだけに決まってるだろw

おまえ、すでにあるアルゴリズムを
想像で再発明するんか?
アホやなぁ
2022/07/05(火) 14:18:53.50ID:fV10ArOB
>>257
つべこべ言わず手を動かせよ。
いつも口ばっかりと言われてるだろ?
2022/07/05(火) 15:13:51.38ID:Gakk+kZM
「アルゴリズム 筆算」を検索したら普通に見つかったこれ、面白かったよ。

超高速!多バイト長整数の計算手法

>>257
コードは書かねぇわ検索はしねぇわ、しょうもねーな
260デフォルトの名無しさん
垢版 |
2022/07/05(火) 15:24:20.46ID:CUrAgxNd
宿題は宿題スレでやれ
261デフォルトの名無しさん
垢版 |
2022/07/05(火) 16:09:18.14ID:IDOVcw6H
>>259
小数がね~だろ
2022/07/05(火) 16:15:09.12ID:Gakk+kZM
>>261
頭使う気が皆無というのがすげーな
2022/07/05(火) 18:44:23.54ID:oaMEO65p
>>256
>多ワード乗除の基本中の基本
その基本中の基本が自力では書けない人がほとんど、というのが、今の日本の計算機工学のお馬鹿さを如実に示していると思いますね
誰か >>235 の改良版を公開してくれませんでしょうかね、全然期待していないけど‥‥
2022/07/05(火) 21:51:37.18ID:EgFCyJS1
どうした?
散々 QZ に言いたい放題に言われ続けても実装が出せないのか?
馬鹿ばかりだな‥‥
2022/07/06(水) 03:26:05.47ID:6UOK9K5O
BigDecimal は src.zip を解凍すりゃソースが出てくるのに…
2022/07/06(水) 04:04:41.36ID:eCAmRTvB
なんか最近C++スレでも整数環上でのFFTも理解してないカスが暴れてるけど、このスレも同じノリになってきたな
なぜ?
2022/07/06(水) 04:10:59.60ID:7DPZ2tJL
整数環上でのFFTを知ってる程度の人間が
マウント取ってるからじゃないですかねぇ
268デフォルトの名無しさん
垢版 |
2022/07/06(水) 11:48:52.42ID:MXaUuSJv
馬鹿にレスを与えないで下さい
馬鹿が居憑いてしまいます
2022/07/06(水) 13:34:25.61ID:PJvDCkI9
>>267
何も理解してなくても何か言った気になれる便利構文
2022/07/06(水) 20:01:10.31ID:dC6yewxo
>>266
彼のコードを見ているけれども、一般的な乗算に展開できるほどの抽象度が足りないですね
もっと汎用的に書かないのならば単なるオナニーですよね
少なくとも >>235 くらいには汎用的に書いてほしいのですけど‥‥

>>265
どこの URL の src.zip を圧縮解除すればコードが手に入るのか ****具体的に**** 記述できますか?
2022/07/06(水) 22:26:45.95ID:6UOK9K5O
>>270
ファイル名は間違ってるかもしれないが、SDKのインストール先直下のディレクトリにzip(もしくはjar)としてライブラリのソースは入ってるのよ
2022/07/06(水) 22:32:35.76ID:6UOK9K5O
>>270
またEclipseとかIDEではソース中で使われてるBigIntegerとかから実装にジャンプするとzip中の対象ファイルがエディタで開かれる
2022/07/06(水) 22:39:05.29ID:6UOK9K5O
>>270
これは古いバージョンだけど
https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/math/BigDecimal.java
とか、GitHub にも置かれてる
2022/07/07(木) 02:33:54.03ID:/of+H6+2
こいつ有名な荒らしだから相手しない方が良いよ
不毛なことしか書けない人
2022/07/10(日) 15:25:18.55ID:QCQOT/0O
>>271
ちゃんとした情報を出してくださいね
そんないいかげんな情報では動く気にもなれないの、馬鹿
2022/07/10(日) 15:25:51.45ID:QCQOT/0O
>>272
エクリプスなんて使いたくないの、xyzzy でやる方法を教えてね
2022/07/10(日) 15:26:07.43ID:QCQOT/0O
>>273
新しいバージョンをお願いね
2022/07/10(日) 15:26:50.57ID:4uphdAWi
>>274
有名でもないし嵐でもないわ
2022/07/11(月) 17:40:53.28ID:RJHpoZJ0
>>277
コア技術でもないのに最新版を要求するクズっぷりに草
2022/07/12(火) 02:18:29.11ID:Ddw+6qP5
Javaで「文字列がヌルも含めた空文字である」を評価するとき、例えば
if (str == null || str.isEmpty()) としますよね? でこれは短絡評価によりstrがnullのときは
str.isEmpty()は評価されないのでNPEは発生しないと。
ここから質問ですが、これの否定式を作る場合に、単純にドモルガンを適用して
if (str != null && !str.isEmpty()) でいいですよね?

一般的に元の式が短絡評価込みで問題ない場合、単にそれの否定をとったりしても
問題は生じない、ですよね? というか単純に否定の式を書くべきですよね?(どこかで順序
を変えてはいけない) というか
if (!(str == null || str.isEmpty())) が無難かもしれないですが、場合によってはバラして
簡略化したいですよね? そのとき項の順序さえ変えなければあとは論理法則を適用して
変形していいですよね? というか
2022/07/12(火) 02:24:55.92ID:Ddw+6qP5
あと、論理的には問題ないように順序を交換してその項が消える場合は
順序を変えてもいいんですかね? とか
2022/07/12(火) 09:15:17.45ID:r0oulnz0
動作上の問題はない
最適化ガーとか言い出すド阿呆は居るかもしれない

んだが、普通はnullだと異常ルートでreturnさせたりするから、空の判定を書くことが多いんじゃないかなという経験的感想
2022/07/12(火) 09:19:02.27ID:r0oulnz0
>>282
正常ルートをブロック化すると無駄なネストが増えちゃうから
俺ならそんなコード書かれてたらレビューで指摘する
2022/07/12(火) 09:22:53.29ID:ZUXbswHw
>>283
ブロック化というか、
if (str == null) return;
的なものを最初の方に置いておくってことじゃね。
2022/07/12(火) 09:23:28.92ID:ZUXbswHw
なんだ自己レスかよw
2022/07/12(火) 09:33:25.75ID:46BVSOic
kotlinにしてisNullOrEmptyにしないからそうなる
2022/07/12(火) 10:05:16.64ID:8furZaV3
twitter apiの質問ってここでいいですか?
2022/07/12(火) 11:10:56.86ID:oE4SglJp
最近の言語はnullを廃止して安全にした言語が増えてきたね
Rustなどのようにnullを無くして静的な型チェックでnull関係のミスをコンパイル時点で完全に防ぐ言語がオススメかな
2022/07/12(火) 12:27:47.36ID:cntCnL4D
変数を何千、何万という規模で使うようなプログラム作ってる人は
その何千以上の変数名を全部自分で考えて付けてるんですか?基本的に命名規則に従って
なにかしらの手抜き方法とかあるんですか?
290デフォルトの名無しさん
垢版 |
2022/07/12(火) 12:30:38.14ID:F2coDuKO
>>289
全部グローバル変数なら命名も大変だろうが、小さいスコープ内なら大変じゃないよ
2022/07/12(火) 12:49:34.65ID:lZD1gQnq
>>289
まともなプログラム&言語ではグローバル変数を滅多に使わない
関数やクラスなどの中に閉じた変数を使うからその中で名前を区別できれば十分
その関数もグローバル関数はレアな存在でクラスなどのメソッド関数などにするのでそのクラスなどの中で名前を区別できれば十分
そのクラスなどもモジュールなどの中で名前を区別できれば十分
そのモジュールなどの名前は仮にぶつかっても使用を宣言する時に別名として採用できる言語が多いから名前がぶつかっても困ることはない
細かいところは各プログラミング言語によって色々と異なるけど概要としては以上の通り
2022/07/12(火) 13:54:30.96ID:bC3C9A55
グローバルおじさんが作ったVBSとか楽しすぎて辞めたくなるよな
2022/07/12(火) 14:13:34.28ID:0sH3rFaE
速度を優先するとグローバル変数も使いたくなりませんか
連続で呼ばれる関数で毎回変数宣言するよりもグローバル変数で一度定義しておけば
その負担をゼロにできるし
2022/07/12(火) 14:30:47.58ID:46BVSOic
そうですね。他にもmain関数一本で実装するのがモダンなやり方だと思いますよ
2022/07/12(火) 14:44:45.71ID:h7t7toC6
>>293
>速度を優先するとグローバル変数も使いたくなりませんか
既に定義済みの変数を利用したいケースは当然あるが
だからといってグローバル変数は使わない

>連続で呼ばれる関数で毎回変数宣言するよりもグローバル変数で一度定義しておけば
>その負担をゼロにできるし
それぞれサンプルコード書いてみたら?
もう少し具体的なアドバイスがもらえると思うよ
2022/07/12(火) 14:52:24.07ID:/TLAe8PW
>>293
宣言に伴う領域確保時に自動的に内容が初期化されるような処理系だったりポリシーだったりするとそうかもね。
C だと関数呼び出し時にその関数で使用する変数に充分なサイズのスタックフレームを確保するだけだから、コストなんてかからないよ。
スタックポインタを最初に一度ずらすだけだからね。
2022/07/12(火) 15:09:08.48ID:e6ywpCu7
>>293
グローバル変数は、いつ、どこから、誰が、どのように、アクセスするか不明であり、
一般的にはデータ競合を起こす可能性もあるため、その場合は対策として排他制御が必要となるなど、むしろ遅くなる可能性を招きかねない
グローバル変数はできる限り使わないのが通常のプログラミングの基本である
2022/07/12(火) 15:10:10.48ID:/ElrVE0y
>>289
命名の省力化よりも設計の質や可読性を高めることに意識を集中させたほうがいいぞ
その意識で1~2年もやれば手抜きというか命名コストを下げる方法も自然と身につく
2022/07/12(火) 15:17:54.87ID:ZWwvT0dn
速度は別としても、どうしても共有したデータを参照したい時は
グローバル変数も使わざるをえないのでは
2022/07/12(火) 15:31:37.13ID:6JujiSX5
js幼女だけどfsoやwshをグローバルにしている
2022/07/12(火) 15:33:54.63ID:46BVSOic
ローカルDBやファイルや設定ファイルなどはグローバル変数だから使うべきでない
2022/07/12(火) 15:39:37.31ID:0s4l2w4w
>>299
まずデータ共有のためにグローバル変数を用いるのは他に手段がない場合に限定されしかも以下の点に注意する必要か出て来ます
データを多者で共有するということは
その多者の関係によってはデータ競合が発生するため一般的には排他制御を行うことになります
2022/07/12(火) 15:55:20.39ID:Lr6lZRed
>>301
設定ファイル名は固定ならば変数ではなく定数であるからグローバル変数ではない
変わりうる時は引数や環境変数や設定ファイル等が出自となりこれもグローバル変数てはない
ファイルはファイル等のモジュールのオープン関数にファイル名やパスを指定して扱うからグローバル変数の要素はない
ローカルDBも同様でありグローバル変数を必要としない
まともなコードならばグローバル変数は出て来ない
2022/07/12(火) 16:11:36.31ID:XIWH5a4r
>>299
どの言語を前提に話してるの?
2022/07/12(火) 16:17:16.03ID:cntCnL4D
C#やJavaなんかで
2022/07/12(火) 16:40:13.27ID:3+lEMrqc
>>305
その2つともグローバル変数がそもそも機能的にないやろ
static classのstatic変数使う

C#ならnamespaceを切って、使う側で明示的にインポート
2022/07/12(火) 17:07:57.77ID:MOqUyrHS
>>289
変数や関数は台帳で管理する
F00001、F00002みたいな名前にしておけば悩む必要はない
なおF00100以下の番号は、前々社長など
会社の偉い人に割り当てられている
その関数は伝説となっており誰も手を付けてはいけないことになっている
2022/07/12(火) 17:28:55.51ID:46BVSOic
アセンブラとか変数どころかアドレスの番地やろ
2022/07/12(火) 18:28:32.11ID:6GTnP78T
レジスタ名は変数に含まれますか?
2022/07/12(火) 18:28:36.82ID:jEv45P7P
10 GOTO 10
2022/07/12(火) 19:27:13.54ID:JaplqMKV
コンストラクタの引数とフィールド変数は毎回困るわ
this着けて回避してるけど未だに嫌だわ
C#はprivateフィールド変数にアンダースコア付けるように成ったらしいから良くなったけどjavaはコンストラクタだけthis付きだわ
2022/07/12(火) 21:28:56.55ID:/TLAe8PW
>>305
そんなにパフォーマンスにこだわりたいなら、とりあえず C で書いたら?
なんでもグローバルに置くなんてことをしなくても、変数確保のコストをごっそり下げられるよ。
2022/07/12(火) 22:36:21.49ID:pP2wLD3a
最近はRustのようにグローバル変数を持たない言語も増えているね
2022/07/13(水) 02:51:31.38ID:o1nk5rBa
「〇〇の言語では」という話は、既存のコードを直す場合には残念ながら無効
新規のコードだって普通は言語縛りがあったりする
事件は現場で起きている
315デフォルトの名無しさん
垢版 |
2022/07/13(水) 03:10:40.16ID:dyEYJovX
>>307
実際そういうソース見たことあるわ
グローバル変数名がみんなそういう番号なのな
で、関数はほとんど関数ポインタの配列に入ってて、添字頼りで呼び出す、、、
しかもコメントはほぼ皆無、あったとしても「なぜかこうしないと動かない」的な独り言

きっと天才が作ったんだろう、俺には解析できなかったよ
2022/07/13(水) 21:10:40.45ID:nyVCJ4Fn
OSがLinux・unixでは昔makeを使ってたと思います
今は何が主流なんですか?
2022/07/13(水) 21:14:50.95ID:sjYFKueX
make
2022/07/13(水) 21:29:01.08ID:H8j4+v2o
cmake
2022/07/14(木) 00:38:53.58ID:rMT+3vzc
Makefileなんか使わない
ソースコードはCファイル一つでできている
2022/07/14(木) 00:54:33.55ID:3dKE35ki
>>316
最近はCとほぼ同速度が出るのに自動メモリ解放で安全に楽できるRustで書くことが増えたから
makeに相当するのはcargoかな
ライブラリのバージョン管理や自動ダウンロードなど含めて何でもしてくれる
2022/07/14(木) 02:45:06.09ID:o4Ti2hmk
ポケモンの交換は途中で電源を消してもポケモンの増殖や消滅が起こりませんが、どのようになってるのでしょうか
2022/07/14(木) 03:58:54.48ID:rMT+3vzc
起こるようだが?
ちゃんとトランザクション処理してないのか?
2022/07/14(木) 05:44:56.23ID:1pn/MEr2
>>320
意味わかんねー
それは本当に「主流」か???
cargoでパッケージをインストールするのがデフォルトなディストリなんてあるか?
テメーが覚えたてのこと言いたいだけなんじゃないかと

あとソフトウェア開発の現場では「自動メモリ解放で安全に楽できる」新言語よりもただ単に枯れてるからというだけの理由でC/C++が優先されることが非常に多いということを理解してないように思う

もっと言うとメモリの管理で苦労したくないという浅い浅い動機ならC++でできる限りSTLでプログラミングした方が圧倒的に導入のコストが低く済むという事実
ま、「いや組み込みを想定するとSTLなんて使えないから~」とか訳の分からん擁護に走る奴が出てくるのは目に見えてるがな
2022/07/14(木) 06:25:21.21ID:oyqdoYCa
>>323
例えばLinux開発陣営も
失敗言語C++を採用しませんでしたが
成功言語Rustは採用したように
言語としての優劣は明確となっています

今までの蓄積の差がC++の優位点です
今後は時間とともにC++が相対的に衰退していくのでしょう
2022/07/14(木) 06:27:36.20ID:TLMV+xKA
>>314
そのような合理性に乏しい判断が生産性の低下と各リスクの上昇を招く

>>323
ttps://foundation.rust-lang.org/members/
気をつければ問題などと言う認識は時代遅れっすよ
2022/07/14(木) 08:16:34.89ID:rMT+3vzc
>>323
> cargoでパッケージをインストールするのがデフォルトなディストリなんてあるか?
なんでデフォルトじゃなきゃいかんの?
2022/07/14(木) 12:11:36.28ID:LBvA3Hcq
Ruby では、Rake, Thor みたいなタスクランナーを使う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況