前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
探検
C++相談室 part160
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/04/15(金) 08:39:32.42ID:WMzvufu2600デフォルトの名無しさん
2022/05/04(水) 11:15:08.92ID:GAB8HZoP601デフォルトの名無しさん
2022/05/04(水) 11:16:25.61ID:OOPwcDJ/602デフォルトの名無しさん
2022/05/04(水) 11:19:13.87ID:OOPwcDJ/ でもその前にどのくらいのメモリが必要そうかの見積もりはざっくりやったほうが良さそうね
603デフォルトの名無しさん
2022/05/04(水) 11:20:53.78ID:OOPwcDJ/ ざっくり2GBなのか
なんか現実的ではない気がしてきた
少なくとも家庭用のPCなんかでは無理そうかも
なんか現実的ではない気がしてきた
少なくとも家庭用のPCなんかでは無理そうかも
604デフォルトの名無しさん
2022/05/04(水) 11:48:39.54ID:GAB8HZoP605デフォルトの名無しさん
2022/05/04(水) 14:50:41.22ID:RRH/ygkO 128倍精度ってなんですか(・∀・)?
倍精度で表せる最大値((2^(1023+1)) - epsilon)の2^128倍は
(2^(130944+1)) - epsilon
であって
2^17179869183
よりカナーリ小さげ
倍精度で表せる最大値((2^(1023+1)) - epsilon)の2^128倍は
(2^(130944+1)) - epsilon
であって
2^17179869183
よりカナーリ小さげ
606デフォルトの名無しさん
2022/05/04(水) 15:26:18.04ID:RRH/ygkO ゴメス落ち着いて考えたら倍精度で表せる最大値は
((2^(1023+1)) - epsilon*(2^1023) = (2^(1023+1)) - (2^970)
で、その128倍の精度だとしたら
((2^(130944+1)) - (128倍精度のepsilon)*2^130944) = ((2^(130944+1)) - (2^122771)
ここで
128倍精度のepsilon = 2^(-8173)
と仮定ェ、
(∵全体が倍精度の128倍=1024 byte = 8192 bitで指数部が8 bit増加で19 bit、符号ビット1 bit
やったら仮数部は8192-19-1 = 8172 bitで、最上位の1を省略する
ケチ表現なので実質2^(-8173)が仮数部で表せる最小値すわなち128倍精度のepsilon
((2^(1023+1)) - epsilon*(2^1023) = (2^(1023+1)) - (2^970)
で、その128倍の精度だとしたら
((2^(130944+1)) - (128倍精度のepsilon)*2^130944) = ((2^(130944+1)) - (2^122771)
ここで
128倍精度のepsilon = 2^(-8173)
と仮定ェ、
(∵全体が倍精度の128倍=1024 byte = 8192 bitで指数部が8 bit増加で19 bit、符号ビット1 bit
やったら仮数部は8192-19-1 = 8172 bitで、最上位の1を省略する
ケチ表現なので実質2^(-8173)が仮数部で表せる最小値すわなち128倍精度のepsilon
607デフォルトの名無しさん
2022/05/04(水) 15:36:55.26ID:GAB8HZoP 倍精度浮動小数点数が64ビット浮動小数点数なので、
128倍精度浮動小数点数は4096ビット浮動小数点数。
IEEE754-2008の推奨による仕様での最大値の計算をしていたんです。
128倍精度浮動小数点数は4096ビット浮動小数点数。
IEEE754-2008の推奨による仕様での最大値の計算をしていたんです。
608デフォルトの名無しさん
2022/05/04(水) 15:38:07.79ID:GAB8HZoP609デフォルトの名無しさん
2022/05/04(水) 15:39:34.72ID:GAB8HZoP ちなみに128倍精度の最大値は
(2^((2^(35-1))-1))*(2-(2^-4060))
で計算可能かと。
(2^((2^(35-1))-1))*(2-(2^-4060))
で計算可能かと。
610デフォルトの名無しさん
2022/05/04(水) 15:59:04.91ID:GAB8HZoP 倍精度浮動小数点数の場合。
>(2^((2^(11-1))-1))*(2-(2^-52))
=
+ 1797 69313
48623 15708 14527 42373 17043 56798 07056 75258 44996 59891
74768 03157 26078 00285 38760 58955 86327 66878 17154 04589
53514 38246 42343 21326 88946 41827 68467 54670 35375 16986
04991 05765 51282 07624 54900 90389 32894 40758 68508 45513
39423 04583 23690 32229 48165 80855 93321 23348 27479 78262
04144 72316 87381 77180 91929 98812 50404 02618 41248 58368.
309桁の値。
となるので、計算式は合っているはずだが根拠を失念してしまったw
ネットのどこかに書いてあったはず。その式を使っただけ。
128倍精度の場合、35が指数部(符号含む)で4060が仮数部(符号含まない)
>(2^((2^(11-1))-1))*(2-(2^-52))
=
+ 1797 69313
48623 15708 14527 42373 17043 56798 07056 75258 44996 59891
74768 03157 26078 00285 38760 58955 86327 66878 17154 04589
53514 38246 42343 21326 88946 41827 68467 54670 35375 16986
04991 05765 51282 07624 54900 90389 32894 40758 68508 45513
39423 04583 23690 32229 48165 80855 93321 23348 27479 78262
04144 72316 87381 77180 91929 98812 50404 02618 41248 58368.
309桁の値。
となるので、計算式は合っているはずだが根拠を失念してしまったw
ネットのどこかに書いてあったはず。その式を使っただけ。
128倍精度の場合、35が指数部(符号含む)で4060が仮数部(符号含まない)
611デフォルトの名無しさん
2022/05/04(水) 17:03:38.52ID:TqagpjaD612デフォルトの名無しさん
2022/05/04(水) 17:27:38.78ID:fooXr7Ib 10進数でデータが欲しいって書いてあるのが見えないかw
613デフォルトの名無しさん
2022/05/04(水) 17:31:26.47ID:Dfc3wQ1w C++でやることにこだわりないならPythonが手っ取り早いぞ
あれのintはデフォルトで多倍長だから
>>> f=open(r"C:\pow2.txt", "w")
>>> print(2**17179869183, file=f)
あれのintはデフォルトで多倍長だから
>>> f=open(r"C:\pow2.txt", "w")
>>> print(2**17179869183, file=f)
614デフォルトの名無しさん
2022/05/04(水) 17:31:51.73ID:tbM1xmku 10進数でデータの意味が分からんが一桁づつ印字すれば良いだけだろ
615デフォルトの名無しさん
2022/05/04(水) 17:32:35.63ID:GAB8HZoP616デフォルトの名無しさん
2022/05/04(水) 17:57:22.19ID:GAB8HZoP スレチだけど
https://paiza.io/projects/
のpython3で
print(2**17179869183)
をやってみたところエラーになった。
print(2**171798)
では答えが出る。
メモリかな?
https://paiza.io/projects/
のpython3で
print(2**17179869183)
をやってみたところエラーになった。
print(2**171798)
では答えが出る。
メモリかな?
617デフォルトの名無しさん
2022/05/04(水) 19:39:52.57ID:CsYq7Xth http://codepad.org/ でも print(2**171798) までやね
print(2**1717986) だと time out
print(2**171798691) だと MemoryError
print(2**1717986) だと time out
print(2**171798691) だと MemoryError
618デフォルトの名無しさん
2022/05/05(木) 00:09:45.17ID:u08Uuhhj 下記は一部ですので不完全です、型をソートしています。
index_sequenceで展開が面倒なんですよね、何かうまい方法ありませんか
template
<
template<typename> class Orderable,
typename ListT
>
class SortTypes;
template
<
template<typename> class Orderable,
template<typename...> class List,
typename... Ts
>
class SortTypes<Orderable,List<Ts...>>
{
template<typename SeqT> struct Impl;
template<std::size_t... Is>
struct Impl<std::index_sequence<Is...>>
{
static constexpr std::array<std::size_t,sizeof...(Ts)> indexes =
[]{
using Ord = std::common_type_t<decltype(Orderable<Ts>::value)...>;
struct Pair {Ord;std::size_t ndx;};
Pair arr[] = {{Orderable<Ts>::value,Is}...};
insert_sort(arr,0,sizeof...(Ts),[](auto x,auto y){
return x.ord < y.ord;
});
return std::array<std::size_t,sizeof...(Ts)>{ arr[Is].ndx...};
}();
using type = List<std::tuple_element<indexes[Is],TypelList<Ts...>>...>;
};
};
index_sequenceで展開が面倒なんですよね、何かうまい方法ありませんか
template
<
template<typename> class Orderable,
typename ListT
>
class SortTypes;
template
<
template<typename> class Orderable,
template<typename...> class List,
typename... Ts
>
class SortTypes<Orderable,List<Ts...>>
{
template<typename SeqT> struct Impl;
template<std::size_t... Is>
struct Impl<std::index_sequence<Is...>>
{
static constexpr std::array<std::size_t,sizeof...(Ts)> indexes =
[]{
using Ord = std::common_type_t<decltype(Orderable<Ts>::value)...>;
struct Pair {Ord;std::size_t ndx;};
Pair arr[] = {{Orderable<Ts>::value,Is}...};
insert_sort(arr,0,sizeof...(Ts),[](auto x,auto y){
return x.ord < y.ord;
});
return std::array<std::size_t,sizeof...(Ts)>{ arr[Is].ndx...};
}();
using type = List<std::tuple_element<indexes[Is],TypelList<Ts...>>...>;
};
};
619デフォルトの名無しさん
2022/05/05(木) 02:32:03.93ID:FeY8iOM4 フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング
1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望
茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング
1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望
茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
620デフォルトの名無しさん
2022/05/05(木) 03:10:15.14ID:Hm4Z5Kkb >>597
やったったが愚直に10で割って下の桁から求めるだと手元のPCでは200年ぐらいかかりそう……
https://ideone.com/6BG7hf
つなみにこれは2^0、2^8、2^64、2^1000には一瞬で正解する
[302] 100.000000 % (38/38) --- 0 sec
2^1000 = 1.071508607186267320948425049060001810561404811705533607443750388 x 10^301
やったったが愚直に10で割って下の桁から求めるだと手元のPCでは200年ぐらいかかりそう……
https://ideone.com/6BG7hf
つなみにこれは2^0、2^8、2^64、2^1000には一瞬で正解する
[302] 100.000000 % (38/38) --- 0 sec
2^1000 = 1.071508607186267320948425049060001810561404811705533607443750388 x 10^301
621デフォルトの名無しさん
2022/05/05(木) 03:10:34.57ID:Hm4Z5Kkb 10より大きい10^n(100万とか)で割ることにしたら多少は改善するかもしれないが、
最終的に10^nのn桁を10進数表示することを繰り返すことを考えると10で割るトータルの回数に違いが出ないから改善しなさげ……orz
むしろ2進数で計算して10進数にするのではなく最初から10^n進数表現(ただし10^n < UINT32_MAXとか)で2^Nの計算の方を実質10進数でやった方が速そう
計算の手間がO(N^2)なのは変わらないが、割り算無しで済むのは大きいい(多分、
最終的に10^nのn桁を10進数表示することを繰り返すことを考えると10で割るトータルの回数に違いが出ないから改善しなさげ……orz
むしろ2進数で計算して10進数にするのではなく最初から10^n進数表現(ただし10^n < UINT32_MAXとか)で2^Nの計算の方を実質10進数でやった方が速そう
計算の手間がO(N^2)なのは変わらないが、割り算無しで済むのは大きいい(多分、
622デフォルトの名無しさん
2022/05/05(木) 03:19:38.09ID:Hm4Z5Kkb 2^Nを10^n進数表現(ただし10^n < UINT32_MAXとか)で計算するのはうまくやれば(10^nをUINT_MAXとかよりやや小さめにしたら)
掛け算によるキャリーの伝搬頻度を減らせるから副次的にさらなる高速化の余地が生まれ得る、
掛け算によるキャリーの伝搬頻度を減らせるから副次的にさらなる高速化の余地が生まれ得る、
623デフォルトの名無しさん
2022/05/05(木) 06:04:52.05ID:zLdy+6M7 繰り返し二乗法で大きい素数のmodを計算すれば良いだけ
整数の商がいくらかもすぐ計算できるので、簡単に復元できる
復元した値をメモリに持つかどうかは別の話
はい終わり
これしきのことも分からない奴ら頭ヤバいよ
言語仕様の話ばっかり大好きでアルゴリズムの知識が微塵もないボンクラ
競プロキッズのこと馬鹿にできないね
整数の商がいくらかもすぐ計算できるので、簡単に復元できる
復元した値をメモリに持つかどうかは別の話
はい終わり
これしきのことも分からない奴ら頭ヤバいよ
言語仕様の話ばっかり大好きでアルゴリズムの知識が微塵もないボンクラ
競プロキッズのこと馬鹿にできないね
624デフォルトの名無しさん
2022/05/05(木) 06:34:28.46ID:JqRzkj2D 素直に10進多倍長で計算すればいいだけ
今のPCならすぐ
今のPCならすぐ
625デフォルトの名無しさん
2022/05/05(木) 06:58:12.94ID:ghaa3vLm626デフォルトの名無しさん
2022/05/05(木) 08:43:37.74ID:Hm4Z5Kkb 自演ちゃうねん
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?
627デフォルトの名無しさん
2022/05/05(木) 10:32:36.82ID:CLlK/Ylr 興味本位で全桁表示したいだけなら5171655947桁あることを知って諦めてほしい
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ
概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ
概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる
628デフォルトの名無しさん
2022/05/05(木) 10:34:08.63ID:QrYoef2b 10000007とかで割れって言ってるんだろ
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと
629デフォルトの名無しさん
2022/05/05(木) 10:39:30.08ID:CLlK/Ylr あごめん桁数は5171655948が正しいね
630デフォルトの名無しさん
2022/05/05(木) 10:41:25.83ID:dV/D8sCJ631デフォルトの名無しさん
2022/05/05(木) 10:44:36.09ID:vEkkTSCd >>627
10進での桁数は
17179869183*log2/log10
https://ja.wolframalpha.com/input?i=17179869183*log2%2Flog10
で計算できることは知っているが、
先頭の値はどうやって出すの?
10進での桁数は
17179869183*log2/log10
https://ja.wolframalpha.com/input?i=17179869183*log2%2Flog10
で計算できることは知っているが、
先頭の値はどうやって出すの?
632デフォルトの名無しさん
2022/05/05(木) 11:11:25.53ID:Lziv+Vr+ ていうか対数知らんのだろうね
633デフォルトの名無しさん
2022/05/05(木) 11:31:29.78ID:E1ivHqdi634デフォルトの名無しさん
2022/05/05(木) 11:36:06.02ID:CLlK/Ylr >>631
小数部だけをまた10の肩に乗っければいい
小数部だけをまた10の肩に乗っければいい
635デフォルトの名無しさん
2022/05/05(木) 11:47:06.17ID:Z9g54GsT 整数で返すべき関数の実装あるんか?
636デフォルトの名無しさん
2022/05/05(木) 12:32:26.31ID:Ng8+cu+X GMPでやってみたけどoverflowで落ちるな
637デフォルトの名無しさん
2022/05/05(木) 12:52:41.09ID:vEkkTSCd 皆さんすみません>>597です。
2^17179869183
は
とりあえず
10^5171655945.66625415874401993568579902587321942922330151106009...
で勘弁してください。
実数が分かれば文字数で桁数も分かりますので、
実数が知りたかったんですが、ここまでしか分かりません。
お手数おかけしました。
多倍長電卓で計算できないんでプログラムならできるのかな?と思ったわけです。
現時点では計算時間とメモリを食いそうですね。
2^17179869183
は
とりあえず
10^5171655945.66625415874401993568579902587321942922330151106009...
で勘弁してください。
実数が分かれば文字数で桁数も分かりますので、
実数が知りたかったんですが、ここまでしか分かりません。
お手数おかけしました。
多倍長電卓で計算できないんでプログラムならできるのかな?と思ったわけです。
現時点では計算時間とメモリを食いそうですね。
638デフォルトの名無しさん
2022/05/05(木) 17:24:23.79ID:irZh29WM ざっくりとした大きさや上下数桁はわかっても全体を丸々把握するのは厳しそう
639デフォルトの名無しさん
2022/05/05(木) 18:10:40.93ID:wHYrtDCY https://ideone.com/O1rs45
誰か助けてー。
ウエブのレクチャー見て書いたんだけど、一件通ったと思ったらほかのテストが通らない。
デコーダが悪いのだろうか?というか、解釈狂ってるかなぁ??マジ解らん。
アドバイスクレクレ。
誰か助けてー。
ウエブのレクチャー見て書いたんだけど、一件通ったと思ったらほかのテストが通らない。
デコーダが悪いのだろうか?というか、解釈狂ってるかなぁ??マジ解らん。
アドバイスクレクレ。
640デフォルトの名無しさん
2022/05/05(木) 18:12:32.63ID:wHYrtDCY まじ わか らん
641蟻人間 ◆T6xkBnTXz7B0
2022/05/05(木) 18:17:21.57ID:/C0Dx8BU642デフォルトの名無しさん
2022/05/05(木) 19:01:19.69ID:wHYrtDCY Aのほうが数字的に小さいのですよ。
643デフォルトの名無しさん
2022/05/05(木) 19:06:48.31ID:p/xHapT/ >>639
V.push_back({ { D[i] }, i }); は V.push_back({ D[i], i }); じゃないの?
V.push_back({ { D[i] }, i }); は V.push_back({ D[i], i }); じゃないの?
644デフォルトの名無しさん
2022/05/05(木) 19:40:11.06ID:jNTEQQGI >>639
プログラムの意図がわからんから投げたわ
1. Data型の<1>要素の意味はなんだよ。typedefした行のコメントに書いといてほしい
2. 関数名を流し見る限り、ソート・エンコード・デコードの3つの仕事がある。中途半端に仕事が混ざってない?
プログラムの意図がわからんから投げたわ
1. Data型の<1>要素の意味はなんだよ。typedefした行のコメントに書いといてほしい
2. 関数名を流し見る限り、ソート・エンコード・デコードの3つの仕事がある。中途半端に仕事が混ざってない?
645デフォルトの名無しさん
2022/05/05(木) 19:50:34.56ID:p/xHapT/646デフォルトの名無しさん
2022/05/05(木) 21:14:55.46ID:tw5Ro1fM647デフォルトの名無しさん
2022/05/05(木) 22:10:21.31ID:CGnulbl/ int64_tとsize_tを暗黙の型変換を期待して混ぜて計算するとはまる?
(int64t - int64t) + sizet >= int64t
の比較をしたら2つ目のint64tが大きくなっても(とは言っても全ての値は10~-10くらい)boolの値はずっと1でした。
比較の前まで切り出してprintfすると正しい値が出るのですが、比較式に組み込むとおかしくなります。
sizetをint64tにキャストすると正しく動きました。
暗黙の型変換はsizetをint64tにしてくれないのでしょうか
環境はWSL2のg++です。
教えて下さい
(int64t - int64t) + sizet >= int64t
の比較をしたら2つ目のint64tが大きくなっても(とは言っても全ての値は10~-10くらい)boolの値はずっと1でした。
比較の前まで切り出してprintfすると正しい値が出るのですが、比較式に組み込むとおかしくなります。
sizetをint64tにキャストすると正しく動きました。
暗黙の型変換はsizetをint64tにしてくれないのでしょうか
環境はWSL2のg++です。
教えて下さい
648はちみつ餃子 ◆8X2XSCHEME
2022/05/05(木) 22:59:30.02ID:MaGUTczU >>647
色々と面倒な細かいルールはあるんだが、大まかには
・ 二項演算子は原則としては大きい側の型に揃えてから計算する (符号は符号無しが優先。 結果の型もそれ)
・ size_t の大きさは処理系定義 (符号無しであることは保証される)
・ signed な型が unsigned に変換されると変換後の型の最大値より 1 大きい値で mod をとった値になる
というのがこの場合にかかわる重要なルールだと思う。
size_t は処理系定義だからその環境でどうだかわからんが uint64_t 相当だと仮定するぞ。
int64_t - int64_t の型は int64_t で、 int64_t + size_t は uint64_t になる。
つまり int64_t-int64_t の値が負数の場合でも常に正の値に修正される。
しかも値として常に 10~-10 くらいということは、
unsigned な値への型変換規則によってかなり巨大な値になってしまう。
たぶんこれが意図しない挙動の原因だと思う。
色々と面倒な細かいルールはあるんだが、大まかには
・ 二項演算子は原則としては大きい側の型に揃えてから計算する (符号は符号無しが優先。 結果の型もそれ)
・ size_t の大きさは処理系定義 (符号無しであることは保証される)
・ signed な型が unsigned に変換されると変換後の型の最大値より 1 大きい値で mod をとった値になる
というのがこの場合にかかわる重要なルールだと思う。
size_t は処理系定義だからその環境でどうだかわからんが uint64_t 相当だと仮定するぞ。
int64_t - int64_t の型は int64_t で、 int64_t + size_t は uint64_t になる。
つまり int64_t-int64_t の値が負数の場合でも常に正の値に修正される。
しかも値として常に 10~-10 くらいということは、
unsigned な値への型変換規則によってかなり巨大な値になってしまう。
たぶんこれが意図しない挙動の原因だと思う。
649はちみつ餃子 ◆8X2XSCHEME
2022/05/05(木) 23:03:22.90ID:MaGUTczU >>648
符号無しが優先って書いちゃったけど、これは大きさが同等なら符号無しが優先ってことね。
大きさに差があるなら大きい方の符号が採用される。
(大きさって言ってるけど実際には順位 (rank) の序列が定められている。 まあ大きさの順なので実質同じやろ。)
符号無しが優先って書いちゃったけど、これは大きさが同等なら符号無しが優先ってことね。
大きさに差があるなら大きい方の符号が採用される。
(大きさって言ってるけど実際には順位 (rank) の序列が定められている。 まあ大きさの順なので実質同じやろ。)
650デフォルトの名無しさん
2022/05/05(木) 23:06:38.57ID:2L8NgwAH size_t が非負の32 bit なら、int64_t の範囲内だから、OK だけど、
size_t が非負の64bitなら、int64_tの範囲外で無理
int64_tの非負の範囲は、63bitしかないから
size_t が非負の64bitなら、int64_tの範囲外で無理
int64_tの非負の範囲は、63bitしかないから
651はちみつ餃子 ◆8X2XSCHEME
2022/05/05(木) 23:20:02.75ID:MaGUTczU 例としてこういうのがあるとわかりやすいかな。
#include <iostream>
#include <cstdint>
int main(void){
auto a=std::int64_t(6)-std::int64_t(8)+std::uint64_t(1);
std::cout << a << std::endl;
}
結果として 18446744073709551615 が表示される。
#include <iostream>
#include <cstdint>
int main(void){
auto a=std::int64_t(6)-std::int64_t(8)+std::uint64_t(1);
std::cout << a << std::endl;
}
結果として 18446744073709551615 が表示される。
652デフォルトの名無しさん
2022/05/05(木) 23:39:48.09ID:Hm4Z5Kkb というわけで高速化すた、
https://ideone.com/TWKDT6
動きを見る限り、2^17179869183が計算が終わるまで手元のPCで8時間ぐらいの見込み
(検算)
次のぐらいなら一瞬で出る(小数点の位置が手抜きなので指数の解釈に注意
2^1000 = 0000001 0715086 0718626 7320948 4250490 6000181 0561404 8117055 3360744 3750388. x 10^298
2^171798 = 0000002 2448900 7901275 1700257 1990086 5699838 8910190 8350859 7305786 1643657. x 10^51713
2^171798は>>620のでは4秒かかかっていたやつが100 msぐらいで出る
https://ideone.com/TWKDT6
動きを見る限り、2^17179869183が計算が終わるまで手元のPCで8時間ぐらいの見込み
(検算)
次のぐらいなら一瞬で出る(小数点の位置が手抜きなので指数の解釈に注意
2^1000 = 0000001 0715086 0718626 7320948 4250490 6000181 0561404 8117055 3360744 3750388. x 10^298
2^171798 = 0000002 2448900 7901275 1700257 1990086 5699838 8910190 8350859 7305786 1643657. x 10^51713
2^171798は>>620のでは4秒かかかっていたやつが100 msぐらいで出る
653647
2022/05/05(木) 23:52:14.24ID:CGnulbl/ 皆様ありがとう。
たいへん納得できました
たいへん納得できました
654デフォルトの名無しさん
2022/05/06(金) 07:02:57.27ID:kL1BvaNc ゴメス8時間と言う見積は指数の桁を一つ少なかった2^1717986918で見積もってたorz
やったら最新状況は↓こんな感じでこの後4^9×5815 = 1,524,367,360秒 = 48.304年かかることに、。n_
Calculating 2^17179869183 ...
n=17179869183, mbuf sz=2 --- 0 sec
n=8589934591, mbuf sz=2 --- 0 sec
n=4294967295, mbuf sz=2 --- 0 sec
...(中略)...
n=8191, mbuf sz=180374 --- 24 sec
n=4095, mbuf sz=360748 --- 96 sec x 4
n=2047, mbuf sz=721494 --- 385 sec x 4.10
n=1023, mbuf sz=1442986 --- 1467 sec x 3.81
n=511, mbuf sz=2885970 --- 5815 sec x 3.96
やったら最新状況は↓こんな感じでこの後4^9×5815 = 1,524,367,360秒 = 48.304年かかることに、。n_
Calculating 2^17179869183 ...
n=17179869183, mbuf sz=2 --- 0 sec
n=8589934591, mbuf sz=2 --- 0 sec
n=4294967295, mbuf sz=2 --- 0 sec
...(中略)...
n=8191, mbuf sz=180374 --- 24 sec
n=4095, mbuf sz=360748 --- 96 sec x 4
n=2047, mbuf sz=721494 --- 385 sec x 4.10
n=1023, mbuf sz=1442986 --- 1467 sec x 3.81
n=511, mbuf sz=2885970 --- 5815 sec x 3.96
655デフォルトの名無しさん
2022/05/06(金) 10:53:36.44ID:2sf+UfT7 生きてるうちに終わりそうでよかった
656デフォルトの名無しさん
2022/05/06(金) 12:17:44.01ID:DqDgjvgu python超初心者スレでひな形を教えてもらってpythonでプログラミングしたところ、
2^17179869183
は
4.637182185095045843877145312775985050353215513064979818029199207764811280740258379690028942685133666E+5171655945
になるようです。
ご参考まで。精度等未確認ですが。
2^17179869183
は
4.637182185095045843877145312775985050353215513064979818029199207764811280740258379690028942685133666E+5171655945
になるようです。
ご参考まで。精度等未確認ですが。
657デフォルトの名無しさん
2022/05/06(金) 12:40:01.31ID:DqDgjvgu >>656
ちなみにこの計算は、
128倍精度浮動小数点数の最大値の計算で出てくる式の掛け算で区切った左側の値です。
128倍精度浮動小数点数 (2^((2^(35-1))-1))*(2-(2^-4060)) 5171655946桁の値 有効桁数1222桁
(2^((2^(35-1))-1))*(2-(2^-4060))
は
9.274364370190091687754290625551970100706431026129959636058398415529622561480516759380057885370267332E+5171655945
という値になりました。
精度等確認できる方はお願いします。
仮数部の最終桁の値は丸めになっているようなので+1されている可能性があります。
ちなみにこの計算は、
128倍精度浮動小数点数の最大値の計算で出てくる式の掛け算で区切った左側の値です。
128倍精度浮動小数点数 (2^((2^(35-1))-1))*(2-(2^-4060)) 5171655946桁の値 有効桁数1222桁
(2^((2^(35-1))-1))*(2-(2^-4060))
は
9.274364370190091687754290625551970100706431026129959636058398415529622561480516759380057885370267332E+5171655945
という値になりました。
精度等確認できる方はお願いします。
仮数部の最終桁の値は丸めになっているようなので+1されている可能性があります。
658デフォルトの名無しさん
2022/05/06(金) 13:36:52.82ID:dNZjdeLr659デフォルトの名無しさん
2022/05/06(金) 15:08:33.81ID:dNZjdeLr660デフォルトの名無しさん
2022/05/06(金) 15:20:41.30ID:HAMEIRFi 延々同じようなことやってる低学歴さんたちって>>623見えんの?
661デフォルトの名無しさん
2022/05/06(金) 15:25:15.07ID:P9K99Ehi C++ のプログラムでサスペンド/復帰をお手軽に実装するための定番の方法ってないですかね?
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです
662デフォルトの名無しさん
2022/05/06(金) 15:25:29.57ID:bNsO3W2u >>659
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ
663デフォルトの名無しさん
2022/05/06(金) 15:28:31.87ID:dNZjdeLr664デフォルトの名無しさん
2022/05/06(金) 16:06:26.56ID:DVOROdCT >>661
WM_POWERBROADCAST ggrks
WM_POWERBROADCAST ggrks
665デフォルトの名無しさん
2022/05/06(金) 17:03:00.97ID:Ai+BgFMJ 圧縮方式がなんだろうと可逆圧縮はデータ長が短くなるケースがあるならデータ長が長くなるケースが必ずある
65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。
このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない
65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。
このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない
666デフォルトの名無しさん
2022/05/06(金) 17:26:03.51ID:dNZjdeLr >>665
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。
667はちみつ餃子 ◆8X2XSCHEME
2022/05/06(金) 18:18:33.94ID:lqMO+ITd データ圧縮時にあり得る最大伸長率をまとめたサイトをどこかで見たような記憶があったんだけど
あらためて探すと見つからない……。 幻だったんだろうか。
あらためて探すと見つからない……。 幻だったんだろうか。
668デフォルトの名無しさん
2022/05/06(金) 18:30:36.95ID:jJyKyUF7669デフォルトの名無しさん
2022/05/06(金) 20:00:41.83ID:AeHK35lN670デフォルトの名無しさん
2022/05/06(金) 20:02:30.43ID:L9gk7Obb >>664
Linuxではどうすればいいの?
Linuxではどうすればいいの?
671デフォルトの名無しさん
2022/05/06(金) 20:05:10.12ID:O7Z7ebwH 内部クラスを外部クラスが継承するって不可能?
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか
672デフォルトの名無しさん
2022/05/06(金) 20:10:36.04ID:DVOROdCT673デフォルトの名無しさん
2022/05/06(金) 20:36:05.94ID:bNsO3W2u >>671
無理だろ
無理だろ
674デフォルトの名無しさん
2022/05/06(金) 22:11:28.52ID:j0ngZiiW >>623
無理だろ
無理だろ
675デフォルトの名無しさん
2022/05/06(金) 23:29:10.82ID:j0ngZiiW >>597
30分くらいで計算できた
30分くらいで計算できた
676デフォルトの名無しさん
2022/05/06(金) 23:34:15.82ID:j0ngZiiW 計算結果いる?
5GBくらいのテキストファイル
5GBくらいのテキストファイル
677デフォルトの名無しさん
2022/05/07(土) 00:00:32.86ID:8cLtDCyH ああもう48年後か…
おまいらまだ生きてるか?
おまいらまだ生きてるか?
678デフォルトの名無しさん
2022/05/07(土) 00:32:32.99ID:hLdUgsLX >>676
先頭100桁とE+の値(文字数でもいいです)と最後の20桁ください。
先頭100桁とE+の値(文字数でもいいです)と最後の20桁ください。
679デフォルトの名無しさん
2022/05/07(土) 01:43:20.82ID:s6tDba0D 1ゲットズザー!!!111!!111!c⌒っ゚Д゚)っ
https://ideone.com/R3szJK
2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5893980 9439277. x 10^5171655888
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5894606 3902528. x 10^5171655888
100 msで計算できるようにしたったわ!
>>675
暗算はスレチ
https://ideone.com/R3szJK
2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5893980 9439277. x 10^5171655888
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5894606 3902528. x 10^5171655888
100 msで計算できるようにしたったわ!
>>675
暗算はスレチ
680デフォルトの名無しさん
2022/05/07(土) 01:50:30.88ID:s6tDba0D つなみに基数変換アルゴリズムにはトーナメント方式というものがあって並列計算に持ち込めるらし
星の数ほどプロセサーが使える場合は有効かもしれん
富岳を使える機会があったらやってみたい
星の数ほどプロセサーが使える場合は有効かもしれん
富岳を使える機会があったらやってみたい
681デフォルトの名無しさん
2022/05/07(土) 02:01:09.56ID:i0ZrzBre682デフォルトの名無しさん
2022/05/07(土) 02:05:54.40ID:s6tDba0D なにおうヽ(`Д´#)ノ ムキー!
2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1686901 0642565. x 10^5171655258
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1687053 4062589. x 10^5171655258
2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1686901 0642565. x 10^5171655258
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1687053 4062589. x 10^5171655258
683デフォルトの名無しさん
2022/05/07(土) 02:06:56.87ID:i0ZrzBre >>682
筆算法じゃ全桁計算は無理
筆算法じゃ全桁計算は無理
684デフォルトの名無しさん
2022/05/07(土) 02:12:56.32ID:s6tDba0D >>683
48年ぐらい待ったらできうる
48年ぐらい待ったらできうる
685デフォルトの名無しさん
2022/05/07(土) 02:17:43.49ID:i0ZrzBre686デフォルトの名無しさん
2022/05/07(土) 02:20:59.45ID:dujXhAGl なぜコードでなく計算結果なのか
687デフォルトの名無しさん
2022/05/07(土) 03:43:06.05ID:bh3xusof >>661,664,670,672
すみません。Linuxを想定していました
すみません。Linuxを想定していました
688デフォルトの名無しさん
2022/05/07(土) 04:06:12.29ID:P9LDpr78689デフォルトの名無しさん
2022/05/07(土) 04:20:35.96ID:qg2oNGE7 なんかCRIUとかいうのでできるらしいぞ
690デフォルトの名無しさん
2022/05/07(土) 05:41:08.75ID:GCz/eJtw 乗算は量子演算使わないと万年かかる
691デフォルトの名無しさん
2022/05/07(土) 07:36:33.84ID:hLdUgsLX >>685
全桁データだからって正確とはかぎらんのかーい!
全桁データだからって正確とはかぎらんのかーい!
692デフォルトの名無しさん
2022/05/07(土) 07:40:26.77ID:i0ZrzBre 合ってると思うけど
2通りで計算して同じだったし
2通りで計算して同じだったし
693デフォルトの名無しさん
2022/05/07(土) 08:15:43.50ID:hLdUgsLX 先頭数十桁と最後の数十桁は合っていそう。
文字数は5171655817で合ってるの?
文字数は5171655817で合ってるの?
694デフォルトの名無しさん
2022/05/07(土) 08:21:32.36ID:hLdUgsLX695デフォルトの名無しさん
2022/05/07(土) 08:49:15.35ID:i0ZrzBre 2^17179869183
●計算結果
https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(5171655946バイト)
※実行時間: 約20分
●コード (C言語)
https://ideone.com/xSaa6x
※メモリが16GBくらい必要です
●計算結果
https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(5171655946バイト)
※実行時間: 約20分
●コード (C言語)
https://ideone.com/xSaa6x
※メモリが16GBくらい必要です
696デフォルトの名無しさん
2022/05/07(土) 09:26:24.51ID:hLdUgsLX >>693
文字数チェックに使ったGigaTextViewerにバグがあったらしい。
バイト数で5171655946で見たら合ってるな。
バグないみたい。ご苦労様。
あとは128倍精度浮動小数点数の最大値とか計算できると良いな。
相当凄腕なら64倍以上のn倍精度精度浮動小数点数の最大値を0.06秒くらいで出せると良いけどな。
文字数チェックに使ったGigaTextViewerにバグがあったらしい。
バイト数で5171655946で見たら合ってるな。
バグないみたい。ご苦労様。
あとは128倍精度浮動小数点数の最大値とか計算できると良いな。
相当凄腕なら64倍以上のn倍精度精度浮動小数点数の最大値を0.06秒くらいで出せると良いけどな。
697デフォルトの名無しさん
2022/05/07(土) 10:01:38.30ID:i0ZrzBre698デフォルトの名無しさん
2022/05/07(土) 10:05:53.71ID:hLdUgsLX ともかくどうもありがとう。
699デフォルトの名無しさん
2022/05/07(土) 10:27:32.54ID:hLdUgsLX 128倍精度付近の計算は5GB程度と分かったが、256倍精度なら80GB程度とかになるのか?
全部のデータを吐くのには無理があるな。
全部のデータを吐くのには無理があるな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】 中国国営新聞社 「日本はすでに代価を支払った」 中国SNSで1位に 高市総理の発言めぐり ★3 [お断り★]
- 【毎日世論調査】高市内閣の支持率65% 日中関係悪化も高水準維持、若年層に強み [蚤の市★]
- 【裁判】山上徹也被告の妹「大好きなお兄ちゃん」「旧統一教会信者の叔母から、選挙時に自民党の特定の候補に入れてほしいと…」奈良地裁 [1ゲットロボ★]
- 【産経新聞】高市政権をバッシングする勢力、中国と一部のオールドメディアと緊縮財政派か [Hitzeschleier★]
- 【石破茂前首相】台湾有事巡る高市発言に苦言 神経使う日中関係「よく認識しながらやって」 [ぐれ★]
- 杉村太蔵「児童手当が富裕層にまで…」高市首相の経済対策に苦言「正気の沙汰とは思えない」 [蚤の市★]
- @@@令和七年大相撲九州場所 vol.12@@@
- とらせん 2
- 巨専】ジャイアンツファンフェスタ2025
- 東京競馬5回5日目月曜日
- こいせん 全レス転載禁止 SHAKARIKI
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap603
- 【悲報】ツイッター愛国アカウント、続々と外国産だということが判明 つまり愛国者は外国人ということ? [158478931]
- 【悲報】Twitter、登録国を表示できる機能を追加し大炎上 [347751896]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★6
- 勤労感謝🙏の日のちゅちょ👶り放題スレ🏡
- 【悲報】「みいちゃんと山田さん」とうとう一流紙に名指しで批判される [811796219]
- 言うほど地方の生活コスト低いか?
