C言語

Ruby - 円周率計算(BBP の公式使用)!  (2015-05-19)

こんにちは。 前回、 BBP(Bailey, Borwein, Plouffe) の公式を使用して任意の桁の円周率を16進で計算するアルゴリズムを C++ で実装しました。 C++ - 円周率計算(BBP の公式使用)! 今回は、同じアルゴリズムを Ruby で実装してみました。

C++ - 円周率計算(BBP の公式使用)!  (2015-05-17)

こんにちは。 円周率を計算する際、小数点以下1桁目から希望の桁までを全て計算する方法以外に、希望の桁だけを計算する方法もあります。 小数点以下1桁目から希望の桁までを全て計算した後、任意の桁の値が正しいかどうかを検証するために使用したりします。 今回は BBP(Bailey, Borwein, Plouff...

Ruby - べき剰余アルゴリズムの実装!  (2015-05-15)

こんにちは。 前回 C++ で「べき剰余」のアルゴリズムを実装しました。 C++ - べき剰余アルゴリズムの実装! 今回は Ruby で実装してみました。

C++ - 円周率計算(Chudnovsky の公式使用)!  (2015-05-06)

こんにちは。 今、円周率を計算するための公式で最も高速だと言われているのは、 Ramanujan(ラマヌジャン)系の「Chudnovsky(チャドノフスキー)の公式」です。 今回は、C++ で Chudnovsky の公式を使用して円周率を計算してみました。

C++ - Twitter Streaming API でツイート取得!  (2014-11-29)

C++ で Twitter Streming API を使用してツイート等の情報を取得する方法についての記録(ソースコードの紹介)です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - yaml-cpp 0.3 系で YAML をパース!  (2014-11-25)

Linux Mint 17 や CentOS 7.0 では C++ 用 YAML パーサ yaml-cpp の最新版 0.5 系 をインストールして使用出来ましたが、CentOS 6.6 では 0.5 系のインストールができなかったので、旧バージョンの 0.3 系をインストールして使用してみました。 使用方法も...

C++ - JSON データの解析(by picojson)!  (2014-11-15)

GNU C++ で JSON データを読み込んで解析する方法についての記録です。 ライブラリは定番の、そしてヘッダファイルの配置だけで済む “picojson” を使用します。(他に JSON-C や rapidjson 等もあるかと思いますが)

GCC - ccache でビルド高速化!  (2014-11-07)

ccache は、コンパイラ・キャッシュで前回のプリプロセスの結果を再利用して次回以降のコンパイル時間を大幅に短縮する。 よって、ビルド(コンパイル+リンク)が大幅に高速化されます。

C++ - yaml-cpp で YAML をパース!  (2014-10-14)

C++ で YAML ファイルの内容を解析する方法についての記録です。 (YAML の詳細についてはここでは説明しませんが、簡単に言えばテキストの設定ファイルだと思っていればよい) (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - UTF-8 文字列から部分文字列を抽出!  (2014-10-05)

C++ で UTF-8 の文字列から部分文字列を抽出する方法についての記録です。 前回の「C++ - UTF-8 文字列の文字数をカウント!」の応用です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - UTF-8 文字列の文字数をカウント!  (2014-10-04)

C++ で UTF-8 の文字列の文字数をカウントする方法についての記録です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

GCC - 最新版をソースビルドでインストール(on CentOS)!  (2014-10-02)

こんばんは。 パッケージでインストールされる GCC(GNU Compiler Collection) はバージョンが若干古く、新しいバージョンで搭載された機能を試す(使用する)ことができません。 (例えば、旧バージョンでは boost ライブラリを使用しなければならなかった “regex” が標準で使用できる...

GCC - 最新版をソースビルドでインストール(on Linux Mint)!  (2014-09-30)

パッケージでインストールされる GCC(GNU Compiler Collection) はバージョンが若干古く、新しいバージョンで搭載された機能を試す(使用する)ことができません。 (例えば、旧バージョンでは boost ライブラリを使用しなければならなかった “regex” が標準で使用できるようになっている...

C++ - twitcurl でツイート!  (2014-09-28)

C++ で twitcurl ライブラリを使用して Twitter へポストする方法についての記録です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - MariaDB(MySQL) への接続!  (2014-09-26)

C++ から MariaDB(MySQL) へ接続する方法についての記録です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - Boost で正規表現置換!  (2014-09-22)

前回、前々回 C++ で Boost(Regex) ライブラリを利用して正規表現マッチングを行う方法について紹介しました。 C++ - Boost で正規表現マッチング! C++ - Boost で正規表現マッチング(Iterator 版)! 今回は正規表現でマッチした部分を置換する方法についての...

C++ - Boost で正規表現マッチング(Iterator 版)!  (2014-09-21)

前回 C++ で Boost(Regex) ライブラリを利用して正規表現マッチングを行う方法について紹介しました。 C++ - Boost で正規表現マッチング! 今回はイテレータを使用したバージョンについての記録です。 (C++ にそれほど精通している訳でもありません。ご承知おきください)

C++ - Boost で正規表現マッチング!  (2014-09-20)

C++ で Boost(Regex) ライブラリを利用して正規表現マッチングを行う方法についての記録です。 C++ 4.9 以降であれば標準ライブラリで用意されていますが、今回は 4.8.2 の環境を想定しているので Boost を使用します。 (C++ にそれほど精通している訳でもありません。ご承知おきくだ...

C++ - ShiftJIS -> UTF-8 変換!  (2014-08-24)

気分転換に CentOS サーバ構築以外の話題にします。 C++ で ShiftJIS で書かれたテキストファイルを UTF-8 に変換する方法についての記録(簡単な例)です。 (それほど洗練されたソースコードでもありません。ご承知おきください)

C++ - HTML 取得!  (2014-08-10)

CentOS サーバ構築関連の記事の合間に、気分転換で別カテゴリのストック記事を。 C++ で Web サイトの HTML を取得してファイルに保存する方法についての記録です。 (それほど洗練されたソースコードでもありません。ご承知おきください)

C++ - ソート処理各種テスト!  (2014-04-10)

各種ソート処理について C++ で実装して速度を計測してみました。 以下、各種ソート処理の概要と C++ ソースです。

C++ - ヒープ生成(下方移動)!  (2014-04-06)

前回は「ヒープ」の生成を「上方移動」で行うアルゴリズム、C++ での実装について紹介しました。 C++ - ヒープ生成(上方移動)! 今回は「下方移動」によるヒープの生成についてです。 以下、簡単な説明と C++ ソースコードの紹介です。

C++ - ヒープ生成(上方移動)!  (2014-04-04)

今回は「ヒープ」という情報処理試験等でもよく登場する「木(二分木)」のアルゴリズムについてです。 以下、簡単な説明と C++ ソースコードの紹介です。

C++ - 最小二乗法!  (2014-03-02)

今回は、最小二乗法で近似方程式で解くアルゴリズムを C++ で実装してみました。 以下、簡単な説明と C++ ソースコードの紹介です。

C++ - 連立方程式解法(ガウスの消去法)!  (2013-09-24)

ここ最近、連立方程式を「ガウス・ジョルダン法」や「ガウス・ジョルダン(ピボット選択)法」で解くアルゴリズムを C++ で実装したことを紹介しました。 C++ - 連立方程式解法(ガウス・ジョルダン法)! C++ - 連立方程式解法(ガウス・ジョルダン(ピボット選択)法)! 今回は、連立方程式を「ガ...

C++ - 連立方程式解法(ガウス・ジョルダン(ピボット選択)法)!  (2013-09-22)

先日は、連立方程式を「ガウス・ジョルダン法」で解くアルゴリズムを C++ で実装したことを紹介しました。 C++ - 連立方程式解法(ガウス・ジョルダン法)! 今回は、連立方程式を「ガウス・ジョルダン法」を応用した「ガウス・ジョルダン(ピボット選択)法」で解くアルゴリズムを C++ で実装してみました...

C++ - (離散)フーリエ変換!  (2013-06-10)

以前、「フーリエ級数展開」を C++ で実装したり、「複素フーリエ級数展開」についての記事を紹介しました。 C++ - フーリエ級数展開 複素フーリエ級数展開! 今回は、「フーリエ変換・離散フーリエ変換」、特に C++ での離散フーリエ変換の実装についてです。 それほど、深くは掘り下げていません。...

C++ - フーリエ級数展開!  (2013-05-16)

今回は、「フーリエ級数展開」を C++ で実装してみました。 ちなみに、テイラー展開は以前紹介しています。 C++ - テイラー展開 ( exp(x) )! C++ - テイラー展開 ( cos(x) )!

C++ - 多倍長整数の大小比較!  (2013-05-02)

多桁(多倍長)整数同士の大小の比較についてです。 もちろん、プログラミング言語の整数型に収まるような大きさの整数ではなく、整数型で扱えないような大きな整数での話です。 多桁(多倍長)演算する場合、大抵は配列を使用します。今回も配列を使用した(よくある)方法を試してみました。

C++ - 多桁乗算(Toom-Cook 法 (3-way))!  (2013-04-29)

これまで、「標準(筆算)法」や「Karatsuba 法」による多桁同士の乗算アルゴリズムの C++ への実装を紹介しました。 C++ - 多桁乗算(標準(筆算)法)! C++ - 多桁乗算(Karatsuba 法)! 今回は、「Karatsuba 法」の上位にある「Toom-Cook 法」アルゴリ...

C++ - 多桁乗算(Karatsuba 法)!  (2013-04-25)

先日、「標準(筆算)法」による多桁同士の乗算アルゴリズムを C++ に実装してみました。 C++ - 多桁乗算(標準(筆算)法)! 今回は、「標準(筆算)法」より高速に乗算が可能な「Karatsuba 法」アルゴリズムを C++ で実装してみました。

C++ - 多桁乗算(標準(筆算)法)!  (2013-04-22)

以前、多桁(データ型を超える整数)の加減乗除アルゴリズムを C++ に実装してみました。 C++ - 多桁計算! C++ - 多桁計算(その2)! ただ、乗算は一方が多桁でもう一方が小さい桁数と限定していました。 今回は、「標準(筆算)方式」による多桁同士の乗算アルゴリズムを C++ で実装して...

C++ - 多桁計算(その2)!  (2013-04-19)

以前、多桁(データ型を超える整数)の加減乗除アルゴリズムを C++ に実装してみました。 C++ - 多桁計算! 今回は、少し改良してみました。

C++ - 円周率計算(Arctan 系公式(その2))  (2013-04-14)

今まで、円周率を Arctan 系の公式で多桁計算する概念、C++ アルゴリズムを紹介してきました。 C++ - 円周率計算(マチンの公式)! C++ - 円周率計算(Klingenstierna の公式)! C++ - 円周率計算(オイラーの公式)! C++ - 円周率計算(オイラーの公式(...

C++ - 円周率計算(Arctan 系公式)!  (2013-04-11)

今まで、円周率をマチンの公式や Klingensitierna の公式、オイラーの公式で多桁計算する概念、C++ アルゴリズムを紹介しました。 C++ - 円周率計算(マチンの公式)! C++ - 円周率計算(Klingenstierna の公式)! C++ - 円周率計算(オイラーの公式)! ...

C++ - 円周率計算(オイラーの公式(2))!  (2013-04-08)

今まで、円周率をマチンの公式や Klingensitierna の公式で多桁計算する概念、C++ アルゴリズムを紹介しました。 C++ - 円周率計算(マチンの公式)! C++ - 円周率計算(Klingenstierna の公式)! C++ - 円周率計算(オイラーの公式)! 今回も、同様に...

C++ - 円周率計算(オイラーの公式)!  (2013-04-05)

今まで、円周率をマチンの公式や Klingensitierna の公式で多桁計算する概念、C++ アルゴリズムを紹介しました。 C++ - 円周率計算(マチンの公式)! C++ - 円周率計算(Klingenstierna の公式)! 今回も、同様に \(\arctan\)系の公式である「オイラー...

C++ - 円周率計算(Klingenstierna の公式)!  (2013-04-02)

以前、円周率をマチンの公式で多桁計算する概念、C++ アルゴリズムを紹介しました。 C++ - 円周率計算(マチンの公式)! 今回は、マチンの公式同様 \(\arctan\)系の公式である「Klingenstierna の公式」を使用して、円周率 \(\pi\) を計算してみました。 当然、プログラ...

C++ - 階乗の多桁計算!  (2013-03-27)

以前、コンピュータで大きな桁数を計算する概念・アルゴリズムを紹介しました。 C++ - 多桁計算! 今回は、階乗(n!)を多桁計算するアルゴリズムについてです。

C++ - ネイピア数(自然対数の底)e 計算!  (2013-03-24)

以前、コンピュータで大きな桁数を計算する概念・アルゴリズムを紹介しました。 C++ - 多桁計算! 今回は、ネイピア数(自然対数の底) \(e\) を多桁計算するアルゴリズムについてです。 当然、プログラミン言語そのものが保有している関数は使用しません。級数展開して計算します。

C++ - 円周率計算(マチンの公式)!  (2013-03-21)

先日は、コンピュータで大きな桁数を計算する概念・アルゴリズムを紹介しました。 C++ - 多桁計算! 今回は、その概念を応用して円周率 \(\pi\) を計算してみました。 使用した公式は、マチン(Machin)の公式です。 当然、プログラミン言語そのものが保有している三角関数は使用しません。級数展...

C++ - 多桁計算!  (2013-03-18)

通常、C言語等では整数型で扱える数値を超える値の加減乗除はそのままでは計算不可能です。 今回は、データ型を超える整数の加減乗除の方法についてです。

C++ - ニュートン補間!  (2013-03-13)

何組かの x, y データが与えられ、これらの点全てを通る補間多項式を求める方法に「ニュートン補間」というものがあります。 先日は「ラグランジュ補間」について紹介しました。 C++ - ラグランジュ補間! 以下、一部 \(\TeX\) で記載。

C++ - ラグランジュ補間!  (2013-03-10)

何組かの x, y データが与えられ、これらの点全てを通る補間多項式を求める方法に「ラグランジュ補間」というものがあります。 以下、一部 \(\TeX\) で記載。

GNU C/C++ - autoconf, automake で make!  (2012-12-03)

GNU C/C++ で autoconf, automake を使って make する方法についての記録です。 個人で簡単な GNU C/C++ ソースをコンパイルするなら、gcc, g++ コマンドを使用すればいいのですが、ソースが大掛かりになるとファイルも増えて、コンパイルが面倒になってきます。 また、そ...

C++ - 非線形方程式の解法(ニュートン法)!  (2012-11-21)

少し前には、\(f(x)=0\) の解を2分法により求める C++ アルゴリズムについて紹介しました。 C++ - 非線形方程式の解法(2分法)! 今日は、方程式 \(f(x)=0\) の解をニュートン法により求める C++ アルゴリズム についてです。 ニュートン法の概念・アルゴリズムは以下の通り。

C++ - 非線形方程式の解法(2分法)!  (2012-11-11)

方程式 \(f(x)=0\) の解を2分法により求める C++ アルゴリズム についてです。 まず、1次方程式(つまりグラフ上で直線)以外の方程式を非線形方程式と呼びます。 そして、このような方程式の根を求める方法に「2分法」というものがあります。

C++ - テイラー展開 [ cos(x) ]!  (2012-10-21)

先日、\(e ^ {x}\)をテイラー展開を用いて計算する C++ アルゴリズム について紹介しました。 C++ - テイラー展開 [ exp(x) ]! 今日は、\(\cos x\)をテイラー展開を用いて計算してみました。 ※以下、一部 \(\TeX\) で記載

C++ - テイラー展開 [ exp(x) ]!  (2012-10-19)

今回は \(e ^ {x}\)をテイラー展開を用いて計算する C++ アルゴリズム についてです。 ※以下、一部 \(\TeX\) で記載 まず、

C++ - 数値積分(シンプソン則による定積分)!  (2012-10-08)

関数 \(f(x)\) の定積分を微小区間に分割して近似値として求める方法を数値積分と言います。 そして、以前「台形則による定積分」についてお話ししました。 C++ - 数値積分(台形則による定積分)! Ruby - 数値積分(台形則による定積分)! 今回は、「シンプソン則による定積分」を C+...

C++ - 数値積分(台形則による定積分)!  (2012-09-10)

関数 \(f(x)\) の定積分を微小区間に分割して近似値として求める方法を数値積分と言います。 今回は、数値積分の中でも「台形則による定積分」を C++ で挑戦してみました。

C++ - 正規乱数(ボックス=ミューラー法)!  (2012-08-31)

少し前に、線形合同法を使用して一様乱数を生成する C++ によるアルゴリズムについて紹介しました。 C++ - 一様乱数(線形合同法)! C++ - 一様乱数の一様性検定(カイ2乗検定)! 今回は、正規乱数を発生させて実際に正規分布になっているかを検証してみました。 まず、「正規乱数」とは「正規...

C++ - 一様乱数の一様性検定(カイ2乗検定)!  (2012-08-18)

少し前に、線形合同法を使用して一様乱数を生成する C++ によるアルゴリズムについて紹介しました。 C++ - 一様乱数(線形合同法)! 今回は、それらの生成した一様乱数が本当に一様かどうかを「カイ2乗検定」で検証してみました。

C++ - 一様乱数(線形合同法)!  (2012-08-13)

今日は、線形合同法を使用して一様乱数を生成する C++ によるアルゴリズムについてです。 まず、 「一様乱数とは、ある有限の区間内で全ての実数が一様に(同じ濃度で)現れるような擬似乱数のことである。」 です。

C++ - 素因数分解!  (2012-08-08)

今日は、任意の自然数を素因数分解する C++ によるアルゴリズムについてです。 まず、 自然数 p (> 1) が 1 と p の他に正の約数を持たない場合、p を素数という。 です。そして、 任意の自然数を素数の積で表すことを、素因数分解という。但し、1 の素因数分解は 1 と定義す...

C++ - エラトステネスのふるい!  (2012-08-05)

今日は、2 以上 n 以下の自然数の中から素数を抽出(素数以外を排除)する C++ によるアルゴリズムについてです。 まず、 「自然数 p ( > 1 ) が 1 と p の他に正の約数を持たない場合、p を素数という。」 です。 そして、簡単に言うと、自然数の配列をふるいに見立てて素数以外を排除してい...

C++ - 素数判定!  (2012-08-02)

今日は、任意の自然数が素数か否かを判定する C++ によるアルゴリズムについてです。 まず、 自然数 p ( > 1 ) が 1 と p の他に正の約数を持たない場合、p を素数という。 単純に考えると、 与えられた自然数 p が素数であるか否かを判定するには、2 から p まで順に割...

C++, Ruby - ユークリッドの互除法!  (2012-07-28)

C++ と Ruby で、ユークリッドの互除法を使って2つの自然数の最大公約数を求めるプログラムを作成してみました。 まず、ユークリッドの互除法について、 「自然数 a, b ( a > b ) について、a を b で割った剰余を r とすると、a と b の最大公約数は b と r の GCD に等し...

C++ - 円周率計算(モンテカルロ法)!  (2012-07-24)

最近 C++ (GNU版) も弄っているので、練習がてら円周率を計算するプログラムを作成しました。 と言っても、モンテカルロ法です。 モンテカルロ法、その他円周率の計算等については各自調べてください。

C++ & cURL で Web スクレイピング!  (2012-07-22)

【はじめに】 Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止されています。(参照) 以下の記事を参考にすることもお勧めしません。 こんばんは。 当方、今まで Ruby + Hpricot や Java + Tidy で Yahoo!ファイナンスからデータを取得してきました。 しかし...

Cygwin - 最新の GCC をソースからインストール!  (2012-07-14)

当方が普段使用している Cygwin 1.7.15 には、パッケージからインストール可能な GCC (GNU Compiler Collection) 3.4.4 が入っています。 しかし、当記事執筆時点では GCC は 4.7.1 が最新のようです。 C++ でプログラミングしたいものがあるため、GCC の最...