黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2020年10月17日(土)
非公開
タグ:
posted at xx:xx:xx
#Julia言語 これは非常に面白そうです。
遊べそうな「Juliaの深淵」ネタが満載されています。
evalは結構難しい函数です。
添付画像は以下より↓
janvitek.org/pubs/oopsla20-...
World Age in Julia Optimizing Method Dispatch in the Presence of Eval (Extended Version) twitter.com/j_v_66/status/... pic.twitter.com/zBtcpQPXUm
タグ: Julia言語
posted at 00:26:35
#Julia言語 行列のかけ算に普通に * を使わせてくれないようなスタイルをJuliaが採用しなくて、本当によかったと思います。
関連スライド↓
www.slideshare.net/mobile/acidfla...
Juliaでは線形代数を扱うスタイルをさらに改善するためにファンデルヴェルデン著『現代代数学』まで戻って考え直されています! pic.twitter.com/ozCCANrqKI
タグ: Julia言語
posted at 00:53:11
New post: Should I use mutable or immutable containers for agent based models in Julia? - www.juliabloggers.com/should-i-use-m... #julialang
タグ: julialang
posted at 01:12:16
#Julia言語 解説
struct Foo{S,T,U} ~ end
としてあるとき、
Foo{S} == Foo{S,T,U} where U where T
Foo{S,T} == Foo{S,T,U} where U
となる。だから、
Array{T} == Array{T,N} where N
VectorとMatrixはそれぞれ
Array{T,1} where T
Array{T,2} where T
と同じ。
gist.github.com/genkuroki/4423... twitter.com/HShinaoka/stat... pic.twitter.com/71AXud09wF
タグ: Julia言語
posted at 01:26:35
#Julia言語 添付画像
1. f(x::Array{T,1}, d) where T と書いたせいで、UnitRangeで使えない函数ができあがった。
2. 引数の型を指定しなければそういうトラブルは起こらない。
3. f_AbstractArray_Number(x::AbstractArray{T,1}, d) where T<:Number と書いた場合。
gist.github.com/genkuroki/fd96... pic.twitter.com/JnZNshw4pq
タグ: Julia言語
posted at 02:06:02
#Julia言語 添付画像
1. f_AbstractArray_Number(x::AbstractArray{T,1}, d) where T<:Number の T<:Number という制限のせいで、行列成分の配列に使えない函数になっていた。
2. 引数の型の記述を無くせばそのようなトラブルで困ることはない。
gist.github.com/genkuroki/fd96... pic.twitter.com/D4Afxk7RB6
タグ: Julia言語
posted at 02:06:03
JuliaでPyCall経由でcv2を使おうと、Conda経由でインストールしたらうまくいかなかった。
Condaパッケージが最新のPython(=v3.8)を使おうとして、それがバージョン指定の範囲外だったからだった。
タグ:
posted at 02:07:31
Sometimes it's too much fun to create random stuff with Javis #JuliaLang
Check it out:
github.com/Wikunia/Javis.jl pic.twitter.com/KEHpxh6yA9
タグ: JuliaLang
posted at 02:21:45
The @JuliaLanguage compiler is really the secret sauce to making abstractions free (or cheap), resulting from deliberate and delicate language design and expressivity. Great to see acknowledgement of the compiler technology in #JuliaLang by the academic PL community twitter.com/kdwkshh/status...
タグ: JuliaLang
posted at 02:23:04
Even more important is the socio-PLT aspect of compiling away the cost of abstraction in #JuliaLang. Discovery of speed approaching raw bare-metal performance incentivizes users to optimize their codes to exploit compilability, thus driving convergence toward idiomatic programs
タグ: JuliaLang
posted at 02:27:38
#Julia言語 実戦的な事例
github.com/JuliaMath/HCub...
HCubatue.jl は +, -, 実数倍, ノルムが定義されている任意の型に値を持つ函数に適用可能な多重数値積分のパッケージなのですが、引数の型を制限し過ぎていてdual numberに適用できなくなっていた。
プルリクエスト→ github.com/JuliaMath/HCub...
タグ: Julia言語
posted at 02:28:02
And the friction in that iterative refinement is reduced by working in a dynamic language
タグ:
posted at 02:28:14
PandasのDataFrameのそれぞれの列について最頻値を計算する | Ki_chi@Blog ki-chi.jp/?p=1080 pandasのmode関数が遅すぎるという話。SciPy使うとだいぶ早くなる。(2分15秒→11秒)
…ちなみにJuliaだと1秒未満。
タグ:
posted at 02:36:31
Mark Kittisopikul ht @markkitti
@OfficialLoganK @j_v_66 @JuliaLanguage @ckfinite @julbinb @rossetate In case the solution is not clear: pic.twitter.com/aZcL6PohYK
タグ:
posted at 02:42:27
このへんでもう一度やっときますか。
#汚染水ではありません処理水です twitter.com/TatsutaKazuto/...
タグ: 汚染水ではありません処理水です
posted at 02:50:57
#Julia言語
f(x, y) = iszero(x) && iszero(y) ? zero(x+y) : x^2*y/(x^2+y^2)
における zero(x+y) の x+y の演算はllvmの段階で削除されていることに注目!
これはJuliaのコンパイラが賢い場合。
nbviewer.jupyter.org/gist/genkuroki... twitter.com/genkuroki/stat... pic.twitter.com/AJ0gjaURXT
タグ: Julia言語
posted at 02:52:32
mathematica_command @mathematica_bot
StreamPlot[{vx,vy},{x,xmin,xmax},{y,ymin,ymax}] :
ベクトル場{vx,vy}の流線プロットをを x と y の関数としてプロットする
タグ:
posted at 03:35:44
Should I use mutable or immutable containers for agent based models in Julia? www.juliabloggers.com/should-i-use-m... #juliabloggers
タグ: juliabloggers
posted at 04:38:45
Let's try a short thread about the paper :)
— What do we want? OptimizedCode + Eval - HardcoreDeoptimizationStuff
— Wow, is this possible? Yes, @JuliaLanguage found a way!
— How do we do it? We temporarily ignore changes that Eval makes to function definitions.
(1/n) twitter.com/j_v_66/status/...
タグ:
posted at 05:07:10
— But doesn't that make Eval useless?
Not at all. In most cases, those changes are not needed immediately, so you won't even notice that they were ignored for a moment.
(2/n)
タグ:
posted at 05:21:47
— Ok, and how does that help with performance?
Since the compiler knows that function definitions will not change for some time (even if Eval is coming), it can safely optimize the existing functions and function calls.
(3/n)
タグ:
posted at 05:26:45
— And what did you say about deoptimizations?
No on-stack replacements and hardcore stuff are needed! While the effect of Eval is temporarily restricted, the compiler needs not to worry about deoptimizing: what's optimized and already running, can just keep running.
(4/n)
タグ:
posted at 05:42:00
— Are there any other benefits of this approach?
Yes: the programmer knows exactly when function definitions can change. If Eval decides to replace "mute" with "turn-on video" function, this at least won't happen during the current video call :)
(5/n)
タグ:
posted at 05:47:30
— But what if I really need that Eval-introduced function straight away?
That is possible, but you have to pay for it with performance.
— And how do I do it?
By using so-called invokelatest function, or by using Eval again—to call the newly-defined function.
(6/n)
タグ:
posted at 06:01:01
Yoshihiko Kunisato/国 @KunisatoY
@kosukesa できるけど,重いはずです。jupyter使いましょう。
おっとこんなものが。
hub.docker.com/r/ykunisato/cc...
TensorFlowも動くし,最近出たRNNで認知課題の学習をするPsychRNNもはいっている。juliaもあるし,juliaでcmdstanもはしる。こんな設定面倒そうなものが1行のコードで用意できる!
タグ:
posted at 06:02:38
Wow this is a very nice and clear explanation on how world ages works. I learned a lot! twitter.com/j_v_66/status/...
タグ:
posted at 06:04:49
What we talked about is called World Age in Julia. More things in the OOPSLA'20 paper:
* explanation of world age (WA)
* formalization of WA semantics + optimizations and their correctness
* analysis of eval-usage in Julia, patterns and anti-patterns
julbinb.github.io/projects/julie...
タグ:
posted at 06:12:17
#Julia言語 最適化の定番ネタ
834 ms ← In[2] 以下のリンク先と本質的に同じ
578 ms ← In[3] hypotをx^2+y^2に
193 ms ← In[4] rand(rng, 2)を2つのrand(rng)に
32 ms ← In[5] 上の2つを両方
26倍速くなりました。
ほんのちょっとしたことで一桁以上遅くなる。
gist.github.com/genkuroki/2ac6... twitter.com/atsushi_twi/st... pic.twitter.com/UeOtR98257
タグ: Julia言語
posted at 07:34:16
宮原篤 6th「小児科医ママとパパのやさ @atsushimiyahara
検査前確率を上げて検査
無造作にPCR検査を拡大するリスクよりも、経過観察および症状の有無を確認した後、最終判定のためにPCR検査を使うことを説いたのである。
新型コロナを封じた台湾、日本との「決定的な違い」とは | DOL特別レポート | ダイヤモンド・オンライン diamond.jp/articles/-/250...
タグ:
posted at 07:41:30
宮原篤 6th「小児科医ママとパパのやさ @atsushimiyahara
日本もそれなりに頑張っているけど、台湾のPCRは「何時でもどこでも何度でも」じゃないのに非常に感染を抑えていますよ。
タグ:
posted at 07:45:49
#Julia言語 添付画像にある情報で最適化時に有用なのは、実行時間よりもメモリアロケーションの数値の方。
無駄なメモリ割当は計算効率を大幅に悪化させることが多いし、慣れればプロファイリング抜きにどの辺が原因なのかすぐに分かることが多い。 pic.twitter.com/VqTZRQsVNu
タグ: Julia言語
posted at 07:47:33
Stefan Karpinski @StefanKarpinski
@johnmyleswhite Overflow checking for integers would be nice if compilers were good enough at optimizing them away when they can’t actually happen, or at least hoisting them out of loops. Alas they are not
タグ:
posted at 08:16:51
Yoshihiko Kunisato/国 @KunisatoY
@kosukesa hub.docker.com/r/ykunisato/cc...
渾身の誘い文句が無駄に・・・
タグ:
posted at 08:39:04
311の時も、放射能デマと戦ったのは、研究者の有志・個人でした。君子危うきに近寄らずで、箝口令を敷いた学会もありました。たとえ世論の反発を招くとも、学術的に正しいことを主張して欲しかったです。
タグ:
posted at 08:47:14
Yoshihiko Kunisato/国 @KunisatoY
@kosukesa 運動会楽しんでください!なお,裕福な研究室の場合は,1回の使用につき,100円かセブンのホットスナック1つになります。
タグ:
posted at 08:52:38
Mark Kittisopikul ht @markkitti
@johnmyleswhite julia> Int128(2)^63
9223372036854775808
タグ:
posted at 09:03:58
不定愁訴と思われてたものの中に疾患が隠れてたことなんてざらにあります。不定愁訴とスルーされて見逃され続けて発熱外来にたどり着いたわけで。機能性高体温症とかたくさんいますよ
タグ:
posted at 09:45:53
#Julia言語 すでに解決済みのようですが、JuliaのことはJuliaに聞くのが早くて確実です。
julia> ?
help?> ?
a ? b : c
Short form for conditionals; read "if a, evaluate b otherwise evaluate c". Also known as the ternary operator.
?でヘルプモードになります。 twitter.com/dynyanko/statu... pic.twitter.com/2L4gfK2W83
タグ: Julia言語
posted at 10:27:26
#Julia言語 Juliaの
a ? b : c
は
if a b else c end
と同等です。
x ≥ 0 ? x : -x
は
if x ≥ 0 x else -x end
と書いても同じ。この場合はセミコロンが無くても大丈夫。 pic.twitter.com/DtD6OnC4W3
タグ: Julia言語
posted at 10:32:40
#Julia言語
if a
A
elseif b
B
elseif c
C
else
Z
end
は
a ? A :
b ? B :
c ? C :
Z
に書き直される。必要に応じて A, B, C, Z を () でかこむ。 pic.twitter.com/pb0orK4JsP
タグ: Julia言語
posted at 10:42:02
スペインの公園でポプラの綿毛を燃やしている様子。ポプラの綿毛は燃えやすく火災の原因にもなるため、このように焼き払う作業を行います。綿毛は瞬時に燃え尽きるため、芝生が燃える心配はありません。
pic.twitter.com/UFgaJxYZtl
タグ:
posted at 11:17:13
日常的に使うなら RandomExtensions が良さそう。
julia にはまともなパッケージマネージャがついてる。
競技プログラミングしたいときとかに良い書き方が思いつかない。
タグ:
posted at 11:52:31
10 行目は DataType のタプルで 11 行目は Float のタプルだ。
DataType のタプルに Float を入れながら作れれば良さそう。
タグ:
posted at 12:09:11
例えばうちの大学では、全ての授業のコマについてZoomの固有IDを振って配布し、授業一覧表からリンクをクリックしたらその「教室」に行けるようにした。授業内容はクラウド録画され、録画は日ごとにまとめられて公開される。
タグ:
posted at 13:03:03
各授業へのアクセスは(録画も含め)g suite for educationのアカウント基準で管理される。そのため非常勤講師にもzoomとg suiteのアカウントを発行。考えてみたらかなりの手間なんだけど、手作業で組み上げたシステムなのよ
タグ:
posted at 13:05:23
教員がzoomミーティングのアドレスを学生に連絡する必要もないし、自分で録画を用意して学生が見られるようにお膳立てする必要もない、授業の時間になったら時間割からそのリンクをクリックすればOK、でもアクセス管理/セキュリティはきっちりやってる、というとこまで自前でシステム作ったのよ
タグ:
posted at 13:11:01
勿論各教員にはそれぞれ自分で選んだ方法(Google ClassroomとかYouTubeとか)で授業をやる裁量は与えられてて好きに選べるんだけど、「自分が何も準備しないでも授業が成り立つハコは大学が用意してくれてる」ってことの安心感凄いよね、僕ですらそう思った
タグ:
posted at 13:13:30
@garapago03 ◯ 出題者は教科書(学習指導要領)で習っていない内容を使わないと解けない問題を出してはいけない。
×解答者は教科書で習っていない内容を使って解いてはいけない。
だと考えます。
タグ:
posted at 13:18:21
これってさっきの動画でおっさんが煽ってた「使えるものは何でも使って、できることからできる人から、既存のルールにとらわれず臨機応変に、何でも取り組んでみる」そのものじゃないんですかね。でもそう煽ってた連中は褒めてくれないどころか後ろから撃って来るのよ
タグ:
posted at 13:23:47
後ろから撃って来る連中が何がしたいかというと、「小中校は対面できてるのに大学はけしからんな?大学の連中はサボってるからな?」と騒ぎたいおっさんメディアに生贄を投げ込みたいのよ。そうして自分たちに矛先が向かないようにしたい
タグ:
posted at 13:29:28
繰り返しになるけどうちの大学のシステム、そういうパッケージが予め提供されているわけじゃなくて、教職員のチームが四月から必死で作ってくれたのよ。で今も毎日ちゃんと保守してくれてるのよ。そのこと考えるともう腸煮えくりかえるよね
タグ:
posted at 13:33:41
非公開
タグ:
posted at xx:xx:xx
#Julia言語 完璧な互換性はないですが、そこそこ実用になる感じで、PandasのデータフレームのJuliaへの変換ならできます。
nbviewer.jupyter.org/gist/genkuroki... の方法2がお勧め。
juliadata.github.io/DataFrames.jl/... にPandasとJulia DataFrames.jlの比較があります。似たような感じで使えます。 twitter.com/myu65_laurant/...
タグ: Julia言語
posted at 14:08:18
「減点されるかもしれないから使わない方がいい」と言う論理は「いじめられる側にも原因があるから、まずはそれを除くべき」と言うのと変わらないロジックだと考えます。
タグ:
posted at 14:08:39
ああ一つ追加。「教員がフォームで申請するだけで、その授業に履修登録してる学生が全員入ったGoogle Classroomを建ててくれるサービス」もあります。すごい便利。
タグ:
posted at 14:20:13
非公開
タグ:
posted at xx:xx:xx
@rithmety #Julia言語
gist.github.com/genkuroki/d69f...
using Random: rand!
して、前もって確保していた配列aにrand!(a)すれば追加のメモリ割当が何度も起こることを防げます。
無駄なメモリ割当を防ぐ定跡はin-place函数を使うこと。
公式文書の解説↓
docs.julialang.org/en/v1/manual/p... twitter.com/rithmety/statu... pic.twitter.com/oRCH70uZLc
タグ: Julia言語
posted at 14:46:27
Juliaは積極的に新しいバ-ジョンにしてけば良いな。ラズパイ4 での1.0→1.5.2の速度差が凄いな。簡単なル-プで、0.042205sec→0.000001secの改善だと。。。
タグ:
posted at 14:57:16
@rithmety #Julia言語
マクロを使うとデバッグが大変になることの方が多いです。
乱数をN個まとめて生成するならin-place rand!が分かり易い。
あと、配列を経由する必然性がないのに配列経由にすると遅くなる。複雑な工夫は大抵失敗する。
以下のリンク先のIn[5]の書き方がシンプルで良いと思います。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 15:29:07
@rithmety #Julia言語 どうしてもマクロを使いたいなら、rand以外にをも一般的に使えるマクロを
macro repeat(N, expr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end
@ repeat 10 rand(rng)
と使う手もあると思いました。
push!やforループは可能な限り書きたくないです。
gist.github.com/genkuroki/d69f... pic.twitter.com/FSyFcaLyb1
タグ: Julia言語
posted at 15:39:59
非公開
タグ:
posted at xx:xx:xx
@genkuroki 確かに
1) x と y が直書きされている mcpi の例では rand を2回書く方が
2) rand専用のマクロより repeat マクロの方が
分かりやすいと思います。
個人的な関心は「コンパイル時に必要な乱数の数が分かっている場合にヒープを使わず、かつ読みやすく書くには」という点にあります。
タグ:
posted at 16:22:13
cとかfortranのコードをJuliaで使うためにdockerを使ってクロスコンパイルしてくれるパッケージBinaryBuilder.jlがすごい。
youtu.be/3IyXsBwqll8
タグ:
posted at 16:22:57
非公開
タグ:
posted at xx:xx:xx
#Julia言語 マクロの作り方
@ rep 3 f(x)
で
(f(x), f(x), f(x))
を実行するようにしたい。マイ野良パッケージ使用で
(A, A, A)
は
Expr(:tuple, :A, :A, :A)
で作れ、exprのN回の繰り返しタプルは
Expr(:tuple, (expr for _ in 1:N)...)
で作れることが分かる。
gist.github.com/genkuroki/a7ef... pic.twitter.com/7DssjHwKe1
タグ: Julia言語
posted at 16:51:11
#Julia言語
rep_naive と rep の違いは esc の有無(前者にescがない)。
@ rep-naive 10 rand(rng)
も
@ rep 10 rand(rng)
も意図通りに動いているように見える。
しかし、@ macroexpand の結果を見ると異なる。この違いの影響が生じる場合はあるか?
答え: ある。
続く pic.twitter.com/ZvZsjIplBO
タグ: Julia言語
posted at 16:55:10
#Julia言語 esc無しだと、module Hoge内のθに
Main.@ rep_naive 3 sin(θ)
でアクセスできない。escありの
Main.@ rep 3 sin(θ)
なら大丈夫。
しかし〜続く pic.twitter.com/1fv7sgNEH1
タグ: Julia言語
posted at 17:11:12
#Julia言語 しかし、
@ rep N rand()
でエラーが出てしまう。Nの部分がナマの10とかなら大丈夫だが、変数になった途端にアウト。続く pic.twitter.com/31P5q7ucJK
タグ: Julia言語
posted at 17:12:52
#Julia言語 そこで、
macro rep_revised(nexpr, expr)
N = eval(nexpr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end
とすると、添付画像で試した範囲内ではうまく行く。
ただし、evalは各モジュール(名前空間)ごとに別に定義されていることに注意が必要になる。 pic.twitter.com/XQ2yOeCGEB
タグ: Julia言語
posted at 17:15:11
BinaryBuilder.jlを使ってあるオープンソースのc言語のソフトウェアをクロスコンパイルできた。無事うまくいけば任意のプラットフォームでJuliaから実行できるようになるはず。ライブラリ化してなくても実行ファイルを引数つきで実行できるはず
タグ:
posted at 18:42:19
#Julia言語 メモ
discourse.julialang.org/t/get-the-name...
Get the name of the invoking module
evalを使いこなすには、この辺のことに触れなければいけないような感じ。evalには色々ある。
* 各モジュール(名前空間)ごとのeval(x)
* Base.MainInclude.eval(x)
* Core.eval(m, x)
タグ: Julia言語
posted at 18:45:52
#Julia言語
うまく行っていないですね。 N が 5 だと解釈されている。 twitter.com/genkuroki/stat... pic.twitter.com/bPOA6YgG9j
タグ: Julia言語
posted at 18:49:43
#Julia言語
macro rep_revised2(nexpr, expr)
N = Core.eval(__module__, nexpr)
Expr(:tuple, (expr for _ in 1:N)...) |> esc
end
これなら、module内でのevalが実行される。
こんな感じで eval が出て来ると難しくなる。
マクロとevalについては全然理解した気分になれない。 pic.twitter.com/i0ALU5w1Kp
タグ: Julia言語
posted at 18:59:02
Julia の GC が遅い問題、1.5.2 で同じテストをしたら、5 秒未満まで速くなっていた。完璧とはいいがたい(GUI や Web アプリケーションとかで stop the world GC は辛い)が、だいぶマシになっている twitter.com/biochem_fan/st...
タグ:
posted at 21:59:48
#Julia言語 for-loop内で大域変数のΓ1,Γ2を使っているせいでfor-loop側が数十倍遅くなっているのですが、そこを訂正してもTensorOperations.jlが非常に速いですね!
n=20
@ tensor → 0.59 ms
for-loop → 2.95 ms
n=100
@ tensor → 0.64 s
for-loop → 10.73 s
gist.github.com/genkuroki/f503... twitter.com/yanagimotor/st... pic.twitter.com/0OVNW42BNq
タグ: Julia言語
posted at 22:15:50
#Julia言語
docs.julialang.org/en/v1/devdocs/... に書いてあるように、axes(A, i) とか
similar(Array{T}, axis1, axis2, ...)
のような書き方をして、1始まりインデックスに依存しない書き方をしてみた。
その書き方なら、Array{T}(undef, size1, size2, ...) のようにundefがいらない。 pic.twitter.com/9nq2TaZaws
タグ: Julia言語
posted at 22:24:36
BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラリ化 on @Qiita qiita.com/cometscome_phy...
タグ:
posted at 22:38:37
Docker - Qiita BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラ qiita.com/cometscome_phy...
タグ:
posted at 22:41:23
#Julia言語
twitter.com/stefankarpinsk...
Stefan Karpinski
【We install all the things for you】 twitter.com/cometscome_phy...
タグ: Julia言語
posted at 22:45:41
#Julia言語 これはCSV.jlのような基本パッケージを使ってもそうなるということなのだろうか?
メモリ割当のコントロールは自前で行うのは面倒な場合が結構あると思う。 twitter.com/biochem_fan/st...
タグ: Julia言語
posted at 22:48:55
#JuliaLang
It took a awhile but #Julia is now current
#bash #sh #zsh #ksh #csh #WomenWhoCode #640daysofcode #301daysofcode #730daysofcode #100DaysOfCode #Linux #POSIX #advancedProgramming #DEVCommunity pic.twitter.com/fpnffplJqD
タグ: 100DaysOfCode 301daysofcode 640daysofcode 730daysofcode advancedProgramming bash csh DEVCommunity Julia JuliaLang ksh Linux POSIX sh WomenWhoCode zsh
posted at 22:54:47
同じ論文を1週間何度も何度も読んでるけど、一箇所どうしても分からない...
"A Graph-Free Approach to Data-Flow Analysis"読んだ方いらっしゃいませんか...
www.semanticscholar.org/paper/A-Graph-...
タグ:
posted at 23:03:41
抽象解釈のアルゴリズムについての論文なんですが、アルゴリズムのトレース例(具体的にはp.56の表)が一箇所どうしても理解できていません。今この論文のアルゴリズムをJuliaで実装しているんですが、そこが理由で期待する出力が得られません...
github.com/aviatesk/aviat...
タグ:
posted at 23:07:57
@rithmety 【#Julia言語 公式マニュアルに書いてあったマクロを使ったら一番速かった。】というのは計測誤差を無視しているからそう見えているに過ぎず、私の簡易マクロとビルトインの@ ntupleはその場合には同じコードを生成します。
gist.github.com/genkuroki/a7ef... pic.twitter.com/ZmXnougcfM
タグ:
posted at 23:26:09
BinaryBuilder.jlがすごい〜自動でDockerでクロスコンパイルしてcやFortranのコードをJuliaライブラリ化
qiita.com//cometscome_ph...
タグ:
posted at 23:35:25
#Julia言語 の Base.Cartesian.@ ntuple の定義は
github.com/JuliaLang/juli...
macro ntuple(N::Int, ex)
vars = Any[ inlineanonymous(ex,i) for i = 1:N ]
Expr(:escape, Expr(:tuple, vars...))
end
なので
N = 4
@ ntuple N _->rand()
とは使えない。
gist.github.com/genkuroki/a7ef... pic.twitter.com/lTTHmcJa6E
タグ: Julia言語
posted at 23:36:38
#Julia言語 以前は Expr で直接Juliaの実行可能なexpressionを作る方法を理解していなかったので、@ ntuple マクロの定義を見ても「簡単だ」とは思えなかったが、今だとものすごくシンプルに見える。
マイ野良パッケージの github.com/genkuroki/Meta... で遊べば容易。
タグ: Julia言語
posted at 23:41:17
非公開
タグ:
posted at xx:xx:xx