제가 포인터 배열을 이용해서 행렬을 만든 아래의 소스를 분석하려고 했는데 <div><tgmath.h>가 포함되어 있더군요.</div> <div>VS2010에서는 아예 tgmath.h 헤더를 찾을수 없어서 컴파일이 되지 않고</div> <div>CODE BLOCKS에서 GNU GCC 컴파일러로 하니까 결과값이 이상하게 나오네요.</div> <div>아래의 소스인데 vs2010에서 컴파일하고 싶어서 GNU GCC컴파일러에 포함되 있는 tgmath.h를 VS2010에서 컴파일하고 있는 디렉토리에 포함해서 </div> <div>#include "tgmath.h"문장을 추가해도 complex.h를 찾을 수 없다고 않되네요.</div> <div>tgmath.h헤더를 사용해서 VS2010에서 컴파일해서 실행하려면 어떻게 해야 하는지 아시는분 알려 주셨으면 좋겠네요.</div> <div><pre class="c highlighted_source" style="font-family:monospace, Courier;padding:1em;border:1px dashed rgb(47,111,171);line-height:1.3em;overflow:auto;font-size:12.8000001907349px;background-color:#f9f9f9;"><span class="co2" style="font-weight:bold;color:#666666;font-style:italic;">#include <stdio.h></span><br><span class="co2" style="font-weight:bold;color:#666666;font-style:italic;">#include <stdlib.h></span><br><span class="co2" style="font-weight:bold;color:#666666;font-style:italic;">#include <tgmath.h></span><br> <br><span class="kw4" style="font-weight:bold;color:#6666cc;">void</span> showmat<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">const</span> <span class="kw4" style="font-weight:bold;color:#6666cc;">char</span> <span class="sy0">*</span>s<span class="sy0">,</span> <span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> <span class="sy0">**</span>m<span class="sy0">,</span> <span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="br0" style="font-weight:bold;color:#009900;">{</span><br><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">printf</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">"%s:<span class="es1">\n</span>"</span><span class="sy0">,</span> s<span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> i <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span> i <span class="sy0"><</span> n<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> j <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span> j <span class="sy0"><</span> n<span class="sy0">;</span> j<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">printf</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">"%12.4f"</span><span class="sy0">,</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>j<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/putchar.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">putchar</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">'<span class="es1">\n</span>'</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br> <br><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> trianglize<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> <span class="sy0">**</span>m<span class="sy0">,</span> <span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> sign <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">1</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> i <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span> i <span class="sy0"><</span> n<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> max <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> row <span class="sy0">=</span> i<span class="sy0">;</span> row <span class="sy0"><</span> n<span class="sy0">;</span> row<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">if</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/fabs.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">fabs</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span>m<span class="br0" style="font-weight:bold;color:#009900;">[</span>row<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="sy0">></span> <a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/fabs.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">fabs</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span>m<span class="br0" style="font-weight:bold;color:#009900;">[</span>max<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br> max <span class="sy0">=</span> row<span class="sy0">;</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">if</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span>max<span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="br0" style="font-weight:bold;color:#009900;">{</span><br> sign <span class="sy0">=</span> <span class="sy0">-</span>sign<span class="sy0">;</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> <span class="sy0">*</span>tmp <span class="sy0">=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">;</span><br> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>max<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">,</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>max<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">=</span> tmp<span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">if</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="sy0">!</span>m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="kw1" style="font-weight:bold;color:#0000ff;">return</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> row <span class="sy0">=</span> i <span class="sy0">+</span> <span class="nu0" style="font-weight:bold;color:#009999;">1</span><span class="sy0">;</span> row <span class="sy0"><</span> n<span class="sy0">;</span> row<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> r <span class="sy0">=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>row<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">/</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">if</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="sy0">!</span>r<span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="kw1" style="font-weight:bold;color:#0000ff;">continue</span><span class="sy0">;</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> col <span class="sy0">=</span> i<span class="sy0">;</span> col <span class="sy0"><</span> n<span class="sy0">;</span> col <span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>row<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>col<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">-=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>col<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">*</span> r<span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">return</span> sign<span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br> <br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> det<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> <span class="sy0">*</span>in<span class="sy0">,</span> <span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> <span class="sy0">*</span>m<span class="br0" style="font-weight:bold;color:#009900;">[</span>n<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">;</span><br> m<span class="br0" style="font-weight:bold;color:#009900;">[</span><span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">=</span> in<span class="sy0">;</span><br> <br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> i <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">1</span><span class="sy0">;</span> i <span class="sy0"><</span> n<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i <span class="sy0">-</span> <span class="nu0" style="font-weight:bold;color:#009999;">1</span><span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">+</span> n<span class="sy0">;</span><br> <br> showmat<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">"Matrix"</span><span class="sy0">,</span> m<span class="sy0">,</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br> <br><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> sign <span class="sy0">=</span> trianglize<span class="br0" style="font-weight:bold;color:#009900;">(</span>m<span class="sy0">,</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">if</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="sy0">!</span>sign<span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">return</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span><br> <br> showmat<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">"Upper triangle"</span><span class="sy0">,</span> m<span class="sy0">,</span> n<span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br> <br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> p <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">1</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> i <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span> i <span class="sy0"><</span> n<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br> p <span class="sy0">*=</span> m<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">return</span> p <span class="sy0">*</span> sign<span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span><br> <br><span class="co2" style="font-weight:bold;color:#666666;font-style:italic;">#define N 18</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> main<span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">void</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br><span class="br0" style="font-weight:bold;color:#009900;">{</span><br><span class="kw4" style="font-weight:bold;color:#6666cc;">double</span> x<span class="br0" style="font-weight:bold;color:#009900;">[</span>N <span class="sy0">*</span> N<span class="br0" style="font-weight:bold;color:#009900;">]</span><span class="sy0">;</span><br><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/srand.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">srand</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">for</span> <span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="kw4" style="font-weight:bold;color:#6666cc;">int</span> i <span class="sy0">=</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span> i <span class="sy0"><</span> N <span class="sy0">*</span> N<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><br> x<span class="br0" style="font-weight:bold;color:#009900;">[</span>i<span class="br0" style="font-weight:bold;color:#009900;">]</span> <span class="sy0">=</span> <a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/rand.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">rand</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="br0" style="font-weight:bold;color:#009900;">)</span> <span class="sy0">%</span> N<span class="sy0">;</span><br> <br><a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html" style="text-decoration:none;color:#0b0080;background:none;" target="_blank"><span class="kw3" style="font-weight:bold;color:#3333cc;">printf</span></a><span class="br0" style="font-weight:bold;color:#009900;">(</span><span class="st0" style="color:#ff0000;">"det: %19f<span class="es1">\n</span>"</span><span class="sy0">,</span> det<span class="br0" style="font-weight:bold;color:#009900;">(</span>x<span class="sy0">,</span> N<span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="br0" style="font-weight:bold;color:#009900;">)</span><span class="sy0">;</span><br><span class="kw1" style="font-weight:bold;color:#0000ff;">return</span> <span class="nu0" style="font-weight:bold;color:#009999;">0</span><span class="sy0">;</span><br><span class="br0" style="font-weight:bold;color:#009900;">}</span></pre></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.