<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/sakat/">
    <title>sakat @ ウィキ</title>
    <link>http://w.atwiki.jp/sakat/</link>
    <atom:link href="https://w.atwiki.jp/sakat/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>sakat @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-03-17T00:50:09+09:00</dc:date>
    <utime>1205682609</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/12.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/10.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/9.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/8.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/7.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sakat/pages/6.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/sakat/pages/1.html</link>
    <description>
      sakatのちらしの裏へようこそ。

*献立
- [[K&amp;R読書会2008&gt;http://www7.atwiki.jp/kandr/]]開催中。
- [[IEEE 754自習ページ。&gt;http://www7.atwiki.jp/sakat/pages/14.html]]

*読書中
- OpenMPによる並列プログラミングと数値計算法
- K&amp;R
- [[Fortran 90/95 for Scientists and Engineers&gt;http://llagui.exblog.jp/7568608/]]
- Common Lisp入門
- はじめて読むMASM

*読書感想文
- [[はじめて読む486&gt;http://llagui.exblog.jp/7674756/]] (2008-03-17)
- プログラミング作法
- プログラム書法
- ソフトウェア作法
- [[FORTRAN 77 数値計算プログラミング&gt;http://llagui.exblog.jp/7497120/]] (2008-02-17)
- [[科学技術計算ハンドブック 基礎編C言語版&gt;http://llagui.exblog.jp/6987421/]] (2007-12-04)
- 定本 Cプログラマのためのアルゴリズムとデータ構造
- C言語による最新アルゴリズム事典




----

**@wikiへようこそ
-ウィキはみんなで気軽にホームページ編集できるツールです。
-このページは自由に編集することができます。
-メールで送られてきたパスワードを用いてログインすることで、各種変更（サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等）することができます

**まずはこちらをご覧ください。
-[[@wikiの基本操作&gt;http://atwiki.jp/guide/category2.html]]
-[[用途別のオススメ機能紹介&gt;http://atwiki.jp/guide/category22.html]]
-[[@wikiの設定/管理&gt;http://atwiki.jp/guide/category6.html]]

**分からないことは？
-[[@wiki ご利用ガイド&gt;http://atwiki.jp/guide/]]
-[[よくある質問&gt;http://atwiki.jp/guide/category1.html]]
-[[無料で会員登録できるSNS内の@wiki助け合いコミュニティ&gt;http://sns.atfb.jp/view_community2.php?no=112]]
-[[@wiki更新情報&gt;http://www1.atwiki.jp/guide/pages/264.html]]
-[[@wikiへお問い合わせ&gt;http://atwiki.jp/guide/contact.html]]
等をご活用ください

**@wiki助け合いコミュニティの掲示板スレッド一覧
#atfb_bbs_list(112)

**その他お勧めサービスについて
-[[フォーラム型の無料掲示板は@bbをご利用ください&gt;&gt;http://atbb.jp/]]
-[[2ch型の無料掲示板は@chsをご利用ください&gt;&gt;http://atchs.jp/]]
-[[お絵かき掲示板は@paintをご利用ください&gt;&gt;http://atpaint.jp/]]
-[[その他の無料掲示板は@bbsをご利用ください&gt;&gt;http://atbbs.jp/]]
-[[無料ブログ作成は@WORDをご利用ください&gt;&gt;http://atword.jp/]]
-[[大容量１Ｇ、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES&gt;&gt;http://atpages.jp/]]

**おすすめ機能
-[[気になるニュースをチェック&gt;http://atwiki.jp/guide/17_174_ja.html]]
-[[関連するブログ一覧を表示&gt;http://atwiki.jp/guide/17_161_ja.html]]

**その他にもいろいろな機能満載！！
-[[@wikiプラグイン&gt;http://atwiki.jp/guide/category17.html]]
-[[@wiki便利ツール&gt;http://atwiki.jp/guide/category32.html]]
-[[@wiki構文&gt;http://atwiki.jp/guide/category16.html]]
-[[@wikiプラグイン一覧&gt;http://www1.atwiki.jp/guide/pages/264.html]]

**バグ・不具合を見つけたら？ 要望がある場合は？
お手数ですが、メールでお問い合わせください。    </description>
    <dc:date>2008-03-17T00:50:09+09:00</dc:date>
    <utime>1205682609</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/14.html">
    <title>IEEE_754自習ページ</title>
    <link>https://w.atwiki.jp/sakat/pages/14.html</link>
    <description>
      IEEE 754浮動小数点数に関する自習ページ。基本は書いたプログラムコードのアップ。

- K&amp;Rに出ているatofって機能不足ですよね ⇒ [[GMPを使ってDBL_MAXの文字列をdoubleに変換するルーチン&gt;http://www7.atwiki.jp/sakat/pages/16.html]] (2008.03.15)
- 規格を読んだわけではないので、あれですが ⇒ [[IEEE 754 単精度の足し算を行うルーチン&gt;http://www7.atwiki.jp/sakat/pages/15.html]] (2008.03.11)






















----    </description>
    <dc:date>2008-03-16T01:33:12+09:00</dc:date>
    <utime>1205598792</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/16.html">
    <title>GMPを使ってDBL_MAXの文字列をdoubleに変換するルーチン</title>
    <link>https://w.atwiki.jp/sakat/pages/16.html</link>
    <description>
      //c/linenumber
/*

  dbl_max_gmp.c

  GMPを用いて、DBL_MAXの値(10進数文字列)をdoubleに変換する。

  コンパイル:
  % cl /Ic:\include dbl_max_gmp.c gmp.lib /link /LIBPATH:c:\lib

  実行例:
  % ./dbl_max_gmp
     mpf = 0.17976931348623158e309
  double =  1.79769313486231570e+308

 */

#include &lt;stdio.h&gt;
#include &lt;float.h&gt;
#include &lt;string.h&gt;
#include &quot;gmp.h&quot;

#define LOG_TEN_TWO  3.32192809488736234789
#define bprec(n) (int)(((n+10)*LOG_TEN_TWO)+2)

void atompf(char s[], mpf_t mp);

main()
{
    mpf_t f;
    long prec, dprec;
    
    dprec = 1000L;  /* decimal precision */
    prec = bprec(dprec);    /* binary precision (plus alpha) */
    mpf_set_default_prec(prec);
    
    mpf_init(f);
    atompf(&quot;1.7976931348623158e+308&quot;, f);   /* DBL_MAX in Visual C++ */

    printf(&quot;   mpf = &quot;);
    mpf_out_str(stdout, 10, dprec + 10, f);
    putchar(&#039;\n&#039;);
    printf(&quot;double = %25.17e\n&quot;, mpf_get_d(f));

    return 0;
}

/* atompf:  convert a string into multi-precision floating-point */
void atompf(char s[], mpf_t f)
{
    int i, c, exp;
    int frc_sign, frc_exp, exp_sign, exp_exp;
    mpz_t mp_frc, mp_var, mp_exp;
    mpf_t mp_fp1, mp_fp2, mp_fp3;

    /* init */
    mpz_init(mp_frc);
    mpz_init(mp_var);
    mpz_init(mp_exp);
    mpf_init(mp_fp1);
    mpf_init(mp_fp2);
    mpf_init(mp_fp3);

    /* skip leading blanks */
    for (i=0; isspace(s[i]); i++)
        ;

    /* sign */
    frc_sign = 1;
    if ((c = s[i]) == &#039;-&#039;)
        frc_sign = -1;
    if (c == &#039;-&#039; || c == &#039;+&#039;)
        i++;

    /* integral part */
    mpz_set_ui(mp_frc, 0);
    for (; isdigit(s[i]); i++) {
        mpz_mul_ui(mp_var, mp_frc, 10);
        mpz_add_ui(mp_frc, mp_var, s[i] - &#039;0&#039;);
    }
    
    /* fractional part */
    if (s[i] == &#039;.&#039;) {
        frc_exp = 0;
        for (i++; isdigit(s[i]); i++) {
            mpz_mul_ui(mp_var, mp_frc, 10);
            mpz_add_ui(mp_frc, mp_var, s[i] - &#039;0&#039;);
            frc_exp++;
        }
    }

    /* exponential part */
    if ((c = toupper(s[i])) == &#039;E&#039; || c == &#039;D&#039;)
        i++;
    exp_sign = 1;
    if ((c = s[i]) == &#039;-&#039;)
        exp_sign = -1;
    if (c == &#039;+&#039; || c == &#039;-&#039;)
        i++;
    exp_exp = 0;
    for (; isdigit(s[i]); i++) {
        exp_exp = 10 * exp_exp + (s[i] - &#039;0&#039;);
    }

    /* add exponent and store its power in mp_exp */
    exp = exp_sign * exp_exp - frc_exp;
    if (exp &gt; 0)
        exp_sign = 1;
    else {
        exp_sign = -1;
        exp = -exp;
    }
    mpz_set_ui(mp_exp, 1);
    for (; exp &gt; 0; exp--) {
        mpz_mul_ui(mp_var, mp_exp, 10);
        mpz_swap(mp_exp, mp_var);
    }

    /* build a mpf_t value */
    mpf_set_z(mp_fp1, mp_frc);
    mpf_set_z(mp_fp2, mp_exp);
    if (exp_sign &gt; 0) {
        mpf_mul(mp_fp3, mp_fp1, mp_fp2);
    } else {
        mpf_div(mp_fp3, mp_fp1, mp_fp2);
    }

    /* copy */
    mpf_set(f, mp_fp3);

    /* clear */
    mpz_clear(mp_frc);
    mpz_clear(mp_exp);
    mpz_clear(mp_var);
    mpf_clear(mp_fp1);
    mpf_clear(mp_fp2);
    mpf_clear(mp_fp3);
}    </description>
    <dc:date>2008-03-15T10:40:38+09:00</dc:date>
    <utime>1205545238</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/15.html">
    <title>IEEE_754単精度の足し算を行うルーチン</title>
    <link>https://w.atwiki.jp/sakat/pages/15.html</link>
    <description>
      //c/linenumber
#define BITSHIFT 5  /* additional bit shift to avoid rounding errors */

/* add:  returns z which is the sum of x and y */
void add(float *zp, const float *xp, const float *yp)
{
  unsigned long x, sx, ex, fx;
  unsigned long y, sy, ey, fy;
  unsigned long z, sz, ez, fz;
  int d, p;

  /* get the bit pattern of each floting-point */
  x = *(unsigned long *)xp;
  y = *(unsigned long *)yp;

  /* sign */
  sx = x &gt;&gt; 31;
  sy = y &gt;&gt; 31;
  /* exponential part */
  ex = (x &amp; 0x7fffffffUL) &gt;&gt; 23;
  ey = (y &amp; 0x7fffffffUL) &gt;&gt; 23;
  /* fractional part */
  fx = (x &amp; 0x007fffffUL) | (1UL &lt;&lt; 23);
  fy = (y &amp; 0x007fffffUL) | (1UL &lt;&lt; 23);

  /* additional bit shift to avoid rounding errors */
  fx &lt;&lt;= BITSHIFT;
  fy &lt;&lt;= BITSHIFT;

  /* shift the bits of fractional part to conform the exponential part. 
      This may cause a round error. */
  d = ex - ey;
  if (d &gt; 0) {
    if (d &gt; 24)
      fy = 0;
    else
      fy &gt;&gt;= d;
    ez = ex;
  } else if (d) { /* d &lt; 0 */
    d = -d;
    if (d &gt; 24)
      fx = 0;
    else
      fx &gt;&gt;= d;
    ez = ey;
  } else {
    ez = ex;
  }

  /* convert negative numbers in two-complement number representation */
  if (sx)
    fx = ~fx + 1;
  if (sy)
    fy = ~fy + 1;

  /* obtain the sum of fx and fy */
  fz = fx + fy;

  /* zero check */
  if (fz) {

    /* obtain the sign and convert negative numbers into positive */
    sz = fz &gt;&gt; 31;
    if (sz)
      fz = ~(fz - 1);

    /* adjust exponential part so that the 1st 1-bit occurs at 23rd position from the right */
    for (d = 31; d &gt;= 0 &amp;&amp; ((fz &gt;&gt; d) &amp; 1) == 0; d--)
      ;
    if ((p = d - 23 - BITSHIFT) &gt; 0) {
      fz &gt;&gt;= p;
      ez += p;
    } else if (p) {  /* p &lt; 0 */
      p = -p;
      fz &lt;&lt;= p;
      ez -= p;
    }

    /* take off the additional bit shift and round the last bit */
    fz = (fz &gt;&gt; BITSHIFT) + ((fz &gt;&gt; (BITSHIFT-1)) &amp; 1);

    /* overflow check */
    if (ez &gt;= 0xffUL)
      fz = 0UL;

    /* build the complete an IEEE 754 single precision value */
    z = (sz &lt;&lt; 31) | ((ez &amp; 0x000000ffUL) &lt;&lt; 23) | (fz &amp; 0x007fffffUL);

  } else {

    z = 0UL;

  }

  /* set the value */
  *zp = *(float*)&amp;z;
}    </description>
    <dc:date>2008-03-11T23:27:36+09:00</dc:date>
    <utime>1205245656</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/12.html">
    <title>元・トップページ</title>
    <link>https://w.atwiki.jp/sakat/pages/12.html</link>
    <description>
          </description>
    <dc:date>2008-03-09T19:08:26+09:00</dc:date>
    <utime>1205057306</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/10.html">
    <title>プラグイン/コメント</title>
    <link>https://w.atwiki.jp/sakat/pages/10.html</link>
    <description>
      * コメントプラグイン
@wikiのwikiモードでは
 #comment()
と入力することでコメントフォームを簡単に作成することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_60_ja.html


-----
たとえば、#comment() と入力すると以下のように表示されます。

#comment    </description>
    <dc:date>2008-03-09T19:00:45+09:00</dc:date>
    <utime>1205056845</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/9.html">
    <title>プラグイン/関連ブログ</title>
    <link>https://w.atwiki.jp/sakat/pages/9.html</link>
    <description>
      * 関連ブログ
@wikiのwikiモードでは
 #bf(興味のある単語)
と入力することで、あるキーワードに関連するブログ一覧を表示することができます

詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_161_ja.html

-----


たとえば、#bf(ゲーム)と入力すると以下のように表示されます。


#bf(ゲーム)
    </description>
    <dc:date>2008-03-09T19:00:45+09:00</dc:date>
    <utime>1205056845</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/8.html">
    <title>プラグイン</title>
    <link>https://w.atwiki.jp/sakat/pages/8.html</link>
    <description>
      @wikiにはいくつかの便利なプラグインがあります。

-----


#ls

-----

これ以外のプラグインについては@wikiガイドをご覧ください
=&gt;http://atwiki.jp/guide/
    </description>
    <dc:date>2008-03-09T19:00:45+09:00</dc:date>
    <utime>1205056845</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/7.html">
    <title>プラグイン/動画(Youtube)</title>
    <link>https://w.atwiki.jp/sakat/pages/7.html</link>
    <description>
      * 動画(youtube)
@wikiのwikiモードでは
 #video(動画のURL)
と入力することで、動画を貼り付けることが出来ます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_209_ja.html

また動画のURLはYoutubeのURLをご利用ください。
＝＞http://www.youtube.com/

-----


たとえば、#video(http://youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。


#video(http://youtube.com/watch?v=kTV1CcS53JQ)

    </description>
    <dc:date>2008-03-09T19:00:45+09:00</dc:date>
    <utime>1205056845</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sakat/pages/6.html">
    <title>プラグイン/アーカイブ</title>
    <link>https://w.atwiki.jp/sakat/pages/6.html</link>
    <description>
      * アーカイブ
@wikiのwikiモードでは
 #archive_log()
と入力することで、特定のウェブページを保存しておくことができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/25_171_ja.html


-----


たとえば、#archive_log()と入力すると以下のように表示されます。
保存したいURLとサイト名を入力して&quot;アーカイブログ&quot;をクリックしてみよう


#archive_log()
    </description>
    <dc:date>2008-03-09T19:00:45+09:00</dc:date>
    <utime>1205056845</utime>
  </item>
  </rdf:RDF>
