タグ

cとmathに関するtyruのブックマーク (7)

  • fdlibm

    Click here to see the number of accesses to this library. file fdlibm.h file index file e_acos.c e_acos.c plus dependencies file e_acosh.c e_acosh.c plus dependencies file e_asin.c e_asin.c plus dependencies file e_atan2.c e_atan2.c plus dependencies file e_atanh.c e_atanh.c plus dependencies file e_cosh.c e_cosh.c plus dependencies file e_exp.c e_exp.c plus dependencies file e_fmod.c e_fmod.c plu

    tyru
    tyru 2009/11/29
    「FDLIBM (Freely Distributable LIBM) is a C math library for machines that support IEEE 754 floating-point arithmetic.」
  • ホワット・ア・ワンダフル・ワールド GMP (GNU Multiple Precision Bignum Library) を使ってみる

    Haskell とか Scheme とか ML とか Perl とかの処理系の Bignum の実装など,いろんなところで使われているけど,あんまり情報が無い気がする GMP (GNU 任意精度数演算ライブラリ). GNU MP Manual 意外と簡単に使えるみたい.Debian/GNU Linux とかだと,最初から入ってるみたい (でも CPU などに特化していない汎用のバイナリなので,速度はそれなりらしい) #include <stdio.h> #include <gmp.h> void fact(mpz_t n, mpz_t a, mpz_t r) { if(mpz_cmp_ui(n, 0) == 0) { mpz_set(r, a); return; } mpz_mul(a, a, n); mpz_sub_ui(n, n, 1); fact(n, a, r); } int ma

  • super pi を作ろう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    円周率πを100万桁まで計算するプログラムを作ってみました。super pi もどきです。ソースコードと解説を載せます。 ソースコードは80行程度の非常に短いものですが、このような簡単な実装でも最近のPCなら100万桁の円周率が一分も掛らず計算できます。 ポイント 要点は、 計算精度が問題となるので、GMP(任意精度計算ライブラリ)を使う 計算アルゴリズムは、Square AGM *1と呼ばれるものを使う です。 GMPについては、http://d.hatena.ne.jp/pyopyopyo/20090303 をご覧下さい。 ソースコード /** * pi.cpp * * written by pyopyopyo at gmail dot com */ #include <math.h> #include <gmpxx.h> #include <iostream> // N桁の円周率を計

    super pi を作ろう - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • 任意精度計算ライブラリ(GMP)の使い方 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    プログラミング時に注意すべき点の一つに,計算精度の問題があります. たとえばC/C++だと,doubleで計算しても有効桁数は15桁程度(10進数で)しかありません.その結果,以下のような状況で間違った計算結果が出てしまいます. 取り扱う数値が15桁を越える場合 取り扱う数値が7桁を越える場合 たとえば8桁同士の掛け算が行われるとその結果は最大16桁になります.double型の変数には15桁程度の情報しか保存できないので,下位1桁の情報は棄てられます. 取り扱う数値の最大値と最小値に,15桁の以上の差がある場合 たとえばC言語のdouble型で(1.0 + 1e-16)を計算すると結果は 1.0 になります. これら計算精度の問題を避ける方法の一つにGMPというライブラリを使う方法があります。以下ポイントをまとめます。 GMPとは GMP(GNU Multiple Precision li

    任意精度計算ライブラリ(GMP)の使い方 - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • GNU MPFR 4.0.2

    MPFRの著作権について GNU MPFRライブラリ(MPFRと略す)は フリーです。フリーとは,万人が自由に使用でき,自由な基盤の上で,再配布も 自由にできるという意味です。 ライブラリはパブリックドメインではありません。つまり,著作権で守られており, 再配布には制限があります。しかしその制限は,良き協力者たる市民が行おうとする全ての 行為を許容するように設計されています。許されないのは, あなたから入手したあらゆるバージョンのライブラリを,更に広く共有する行為を妨害することだけです。 特に,我々は次のことを確認したいと考えています。あなたはライブラリのコピーを手放す権利があり, 欲しい時にソースコードなどを受け取り,新しいフリーなプログラムを作るためにライブラリの 改変を行ったり,一部を利用したりすることができる,ということを知っているのです。 万人が上記の権利を持っているとい

  • ++C++; //未確認飛行 C

    using System; class Welcome { /// <summary> /// saying hello to all visitors and welcome. /// </summary> public static void Main(string[] args) { foreach(string visitor in args) { Console.Write("Hello {0}.\n", visitor); } Console.Write("Welcome to my web page.\n"); } } C:\WINDOWS\desktop\welcome>nmake -nologo csc /out:welcome.exe /nologo welcome.cs C:\WINDOWS\desktop\welcome>welcome Welcome to my

  • 良い乱数・悪い乱数

    C言語標準ライブラリの乱数rand( )は質に問題があり、禁止している学会もある。 他にも乱数には様々なアルゴリズムがあるが、多くのものが問題を持っている。 最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 そもそも乱数とは 乱数とは、来サイコロを振って出る目から得られるような数を意味する。 このような乱数は予測不能なものである。 しかし、計算機を使って乱数を発生させた場合、 次に出る数は完全に決まっているので、予測不能とはいえない。 そこで、計算機で作り出される乱数を疑似乱数(PRNG)と呼び区別することがある。 ここでは、特にことわらない限り乱数とは疑似乱数のことを指すとする。 計算機でソフト的に乱数を発生させることの最大のメリットは、 再現性があることである。 初期状態が同じであれば、発生する乱数も全く同じものが得られる。 このことは

  • 1