Lapack: DSYEVR์€ ๋น„์ง๊ต ๋ฒกํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 05์›” 15์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Reference-LAPACK/lapack

์ธ์‚ฌ๋ง,

lapack ๋ฆฌ์†Œ์Šค๋ฅผ github์œผ๋กœ ์ด์ „ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

i) ์ด์ „์— ๋ณด๊ณ ๋œ ๋ฒ„๊ทธ์ธ http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1820#p11388 ์„ ์ตœ์‹  lapack-3.7.0๊ณผ ํ•จ๊ป˜ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ https://github.com/miroi/lapack-dsyevr-test .

lapack ๋ฒ„๊ทธ ์ถ”์ ๊ธฐ( http://www.netlib.org/lapack/bug_list.html - bug 126)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด ๋ถˆ์พŒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

ii) ์ด ํŠน์ • ๋ฒกํ„ฐ ์ง๊ต์„ฑ ํ…Œ์ŠคํŠธ( https://github.com/miroi/lapack-dsyevr-test )๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ณ  lapack ํ…Œ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ ์ŠคํŠธ, ๋ฏธ๋กœ

Documentation

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฒ„๊ทธ๋Š” ํ•ด๋‹น ์†Œ์Šค ํŒŒ์ผ์˜ 606ํ–‰์—์„œ ์‹œ์ž‘ํ•˜๋Š” DSTEMR์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ถ„ํ•  ๊ธฐ์ค€๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค(LAPACK 3.7.0์—์„œ์™€ ๊ฐ™์ด). ์ž…๋ ฅ ๋ณ€์ˆ˜ TRYRAC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ธŒ๋ฃจํ‹ด DLARRR์€ INFO=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” DLARRR์˜ ์˜ˆ์ƒ ๋™์ž‘๊ณผ ๋ชจ์ˆœ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค). ์ด๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ (ํŠน์ •) ์‚ผ๋Œ€๊ฐ ํ–‰๋ ฌ์˜ ์œ ํ•ดํ•œ ๋ถ„ํ• ์„ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. _DLARRR์ด ํ•˜๋Š” ์ผ์„ ๋ฌด์‹œํ•˜๊ณ  "๋ถ„ํ•  ๊ธฐ์ค€ ์„ค์ •" ์ง์ „์— IINFO=0์„ ์„ค์ •ํ•˜๋ฉด ๋ฐ˜ํ™˜๋œ ๋ฒกํ„ฐ๊ฐ€ ์ง๊ตํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ DLARRF๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ 100์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ˆ˜์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. DLARRR์˜ ์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์ด ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค._)

๋ชจ๋“  10 ๋Œ“๊ธ€

Miro๋‹˜, BUG 126์„ GitHub ๋ฌธ์ œ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. Osni( @oamarques )๋Š” #100 ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„ค, LAPACK์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์ž‘์—…ํ•  ๊ณ„ํš์ด ์žˆ์œผ๋ฉฐ ์–ด๋–ค ๋ถˆ์พŒํ•œ ๋งคํŠธ๋ฆญ์Šค๋„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. Osni์—๋Š” ์ด๋Ÿฌํ•œ ๋งคํŠธ๋ฆญ์Šค๊ฐ€ ๋งŽ์ด ์žˆ์œผ๋ฉฐ ๋ชฉํ‘œ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ธํ”„๋ผ์™€ ํ•จ๊ป˜ ์ด๋Ÿฌํ•œ ๋งคํŠธ๋ฆญ์Šค ์ปฌ๋ ‰์…˜์„ ์„ฑ์žฅ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  BUG 126์„ GitHub ๋ฌธ์ œ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ, ์ค„๋ฆฌ์•™.

์ด ๋ฒ„๊ทธ๋Š” ํ•ด๋‹น ์†Œ์Šค ํŒŒ์ผ์˜ 606ํ–‰์—์„œ ์‹œ์ž‘ํ•˜๋Š” DSTEMR์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ถ„ํ•  ๊ธฐ์ค€๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค(LAPACK 3.7.0์—์„œ์™€ ๊ฐ™์ด). ์ž…๋ ฅ ๋ณ€์ˆ˜ TRYRAC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ธŒ๋ฃจํ‹ด DLARRR์€ INFO=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” DLARRR์˜ ์˜ˆ์ƒ ๋™์ž‘๊ณผ ๋ชจ์ˆœ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค). ์ด๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ (ํŠน์ •) ์‚ผ๋Œ€๊ฐ ํ–‰๋ ฌ์˜ ์œ ํ•ดํ•œ ๋ถ„ํ• ์„ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. _DLARRR์ด ํ•˜๋Š” ์ผ์„ ๋ฌด์‹œํ•˜๊ณ  "๋ถ„ํ•  ๊ธฐ์ค€ ์„ค์ •" ์ง์ „์— IINFO=0์„ ์„ค์ •ํ•˜๋ฉด ๋ฐ˜ํ™˜๋œ ๋ฒกํ„ฐ๊ฐ€ ์ง๊ตํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ DLARRF๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ 100์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ˆ˜์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. DLARRR์˜ ์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์ด ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค._)

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฒ„๊ทธ ํ•ด๊ฒฐ์— ๊ด€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@oamarques ๊ธฐ๋ณธ DSTEMR ๋Œ€์‹  DSTEGR์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์™„ํ™”๋ฉ๋‹ˆ๊นŒ?

@uihsnv : ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. STEGR์€ ๋” ์ด์ƒ ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” STEMR์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘์—…ํ•˜๊ณ  ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ, STEGR์ด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@langou ์˜ค! ๋‚˜๋Š” ์•„๋ฌด ์ƒ๊ฐ์ด ์—†์—ˆ๋‹ค!! ๋‚ด ์ฝ”๋“œ์—์„œ ๋ช‡ ๊ฐ€์ง€ STEGR ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. STEMR์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ @miroi ๊ฐ€ ๊ณต์œ ํ•œ ํ…Œ์ŠคํŠธ์— ์ผ๋ถ€ ์ˆ˜์ •์„ ๊ฐ€ํ–ˆ๋Š”๋ฐ, ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๋ฉด ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ฝ”๋“œ์—์„œ ๋ช‡ ๊ฐ€์ง€ STEGR ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. STEMR์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐ ํ•ด์š”. @oamarques ๊ฐ€ ๊ณง ์ด์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋˜ํ•œ @miroi ๊ฐ€ ๊ณต์œ ํ•œ ํ…Œ์ŠคํŠธ์— ์ผ๋ถ€ ์ˆ˜์ •์„ ๊ฐ€ํ–ˆ๋Š”๋ฐ, ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๋ฉด ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ ํ…Œ์ŠคํŠธ๋ฅผ @oamarques ์™€ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์™œ "Documentation"์ด๋ผ๊ณ  ์ด๋ฆ„์„ ๋ถ™์˜€์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜๋„ ์‹ ์„ ํ•œ lapack์€ ์ด ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(gfortran 4.9.2๋กœ ํ…Œ์ŠคํŠธ๋จ, https://github.com/miroi/lapack-dsyevr-test ).

~~~
DIRAC์˜ ๋Œ€๊ฐํ™” ๋ฃจํ‹ด ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!
์ฝ๊ธฐ N= 9 NZ= 1
๋Œ€๊ฐํ™” ํ–‰๋ ฌ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.
RS ์„œ๋ธŒ๋ฃจํ‹ด์— ๋Œ€ํ•œ ๋ฐฐ์—ด์ด ํ• ๋‹น๋จ
Eispack์˜ RS ๊ณ ์œ ๊ฐ’:
1 -1.5000000000000062
2 -1.5000000000000002
3 -1.4999999999999982
4 0.49999999999999772
5 0.49999999999999856
6 0.49999999999999994
7 0.50000000000000033
8 0.50000000000000122
9 2.4999999999999969
* ์—์ŠคํŒฉ RS *
U^{+} A U - eps ?= 0> norm/diag:0.1912D-15 norm/offdiag:0.1008D-15
U^{+} U - I ?= 0> norm/diag:0.2344D-15 norm/offdiag:0.7239D-16U U^{+} - I ?= 0> norm/diag:0.9869D-16 norm/offdiag:0.9320D-16
LAPACK DSYEVR ๊ณ ์œ ๊ฐ’:
1 -1.5000000000000056
2 -1.5000000000000009
3 -1.4999999999999973
4 0.49999999999999523
5 0.49999999999999867
6 0.49999999999999939
7 0.49999999999999950
8 0.50000000000000100
9 2.4999999999999862
* LAPACK DSYEVR *
U^{+} A U - eps ?= 0> norm/diag:0.1807D-14 norm/offdiag:0.9012D-07
U^{+} U - I ?= 0> norm/diag:0.2591D-15 norm/offdiag:0.1802D-06U U^{+} - I ?= 0> norm/diag:0.7543D-06 norm/offdiag:0.4951D-06
LAPACK DSTEGR ๊ณ ์œ ๊ฐ’:
1 -1.5000000000000056
2 -1.5000000000000009
3 -1.4999999999999973
4 0.49999999999999523
5 0.49999999999999867
6 0.49999999999999939
7 0.49999999999999950
8 0.50000000000000100
9 2.4999999999999862
* LAPACK DSYTRD+DSTEGR *
U^{+} A U - eps ?= 0> norm/diag:0.1617D+01 norm/offdiag:0.1644D+00
U^{+} U - I ?= 0> norm/diag:0.1234D-15 norm/offdiag:0.1802D-06U U^{+} - I ?= 0> normal/ diag:0.5411D- 06norm/ offdiag:0.2301D-06

~~~

์ด๊ฒƒ์„ ๋‹ค์‹œ ์ฝ์„ ๋•Œ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ #100 ์ˆ˜์ •์— ๋‹ฌ๋ ค ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ(์ตœ๊ทผ์— ๋‚ด๊ฐ€ ์ €์‚ฌ์–‘ ์†”๋ฃจ์…˜์„ ์ „๋ฌธ์ ์œผ๋กœ ์ œ์•ˆํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•จ) ๋ชจ๋“  ๊ฒƒ์ด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์˜๊ตฌ์‹ฌ. 3.5.0์œผ๋กœ ๋Œ์•„๊ฐ€์„œ #100์—์„œ ์–ธ๊ธ‰ํ•œ ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ์ด ๊ฒฝ์šฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰