- メインページ
- ネームスペース
- クラス
- ファイル

- ファイル一覧
- ファイルメンバ

# osctable.cpp

説明を見る。

    00001 /** \file osctable.cpp
    00002 * brief 三角関数用ルックアップ・テーブル
    00003 *
    00004 * 三角関数の合成に使うテーブルを作る。テーブルのデータは、サブディレクトリ
    00005 * にあるテキスト・ファイルを読み込んで使う。
    00006 * 記事本文の内容に合わせて、3種類のサブディレクトリを用意している。
    00007 *
    00008 * 1_int は、記事中で最初に使うテーブルである。このテーブルは、Scilab
    00009 * スクリプトでデータを整数化する際にint()関数を使っている。
    00010 *
    00011 * 2_roundは、記事中で2番目に使うテーブルを収めたサブディレクトリである。
    00012 * このディレクトリのデータは、Scilabスクリプトでデータを整数化する際に
    00013 * round()関数を使っている。
    00014 *
    00015 * 3_smallは、記事中で3番目に使うテーブルを収めたサブディレクトリである。
    00016 * このディレクトリのデータは、2_round同様、スクリプト内でround()関数に
    00017 * より、整数化している。異なるのは整数化するときの係数で、上二つは
    00018 * 32768倍しているが、このディレクトリのデータは32767倍している。その
    00019 * 結果、真の正弦関数、余弦関数より小さくなるが、飽和による非対称な誤差
    00020 * から逃げることができる。
    00021 */
    00022 #include "osc.h"
    00023 namespace osc{
    00024         /** ルックアップ・テーブルのサイズ
    00025         *
    00026         * sine/cosineの計算をするための基本ルックアップテーブルのサイズ。
    00027         * 16bit位相を8bit/8bitに分割するので、ルックアップテーブルのサイズは
    00028         * 256になる
    00029         */
    00030     const int tableSize = 256;
    00031
    00032         /** cosの上位位相分
    00033         *
    00034         * 全周を256分割したコサイン・テーブル。
    00035         */
    00036     shortfract co_h[tableSize]= {
    00037         #include "3_small\\hco.txt"
    00038     };
    00039         /** cosの下位位相分
    00040         *
    00041         * 全周の256分の1をさらに256分割したコサイン・テーブル。
    00042         */
    00043     shortfract co_l[tableSize]= {
    00044         #include "3_small\\lco.txt"
    00045     };
    00046         /** sinの上位位相分
    00047         *
    00048         * 全周を256分割したサイン・テーブル。
    00049         */
    00050     shortfract si_h[tableSize]= {
    00051         #include "3_small\\hsi.txt"
    00052     };
    00053         /** sinの下位位相分
    00054         *
    00055         * 全周の256分の1をさらに256分割したサイン・テーブル。
    00056         */
    00057     shortfract si_l[tableSize]= {
    00058         #include "3_small\\lsi.txt"
    00059      };
    00060 }