トップ
数値計算フレームワーク「ポコム」の更新履歴
- バージョン 8.19。(2024/4/29,8/14)
- 文字列で乱数を初期化するときに文字列を圧縮するようにしました。
OLD_BYSTR を定義するとver.8.15~8.18のように圧縮を行いません。
- M.bat、Mk.bat を g1 g1c gu1 gu1c 32ビットで実行すると C:\mingw32 を
使って、コンパイルするようにしました。
- M.bat、Mk.bat で tools フォルダを探すときに、さらに2階層浅いフォルダも
調べるようにしました。
- M.bat、Mk.bat で +d を指定すると環境変数を変えて
+d より右の文字列全体をコマンドラインとして実行するようにしました。(8/14)
- バージョン 8.18。(2023/12/30, 2024/1/21)
- Windows11 のレガシーコンソールでの文字化けを防止しました。
- M.bat、Mk.bat で +r を指定すると、
その右の文字列全体をパラメータとして実行するようにしました。
- M.bat、Mk.bat で +e foo のように指定すると、
作成するファイルを foo.exe に変更できるようにしました。(2024/1/21)
- pocom.h の警告の抑止(2024/1/21)
- M.bat、Mk.bat のコンパイラ指定で
(u->gu)、(uc->guc)、(m->g1)、(mc->g1c)、(v->gu1)、(vc->gu1c)
に変更しました。また、C:\msys64\ucrt64 を使用する g2、g2c、gu2、gu2c も追加しました。(2024/1/28)
- M.bat Mk.bat にて +a オプションを指定してアセンブラの出力を得るときに、
/GL- コンパイラオプションを追加するようにしました。(2024/2/24)
- pocom.html 内の M.bat の内容を更新をしました。(2024/3/10)
- バージョン 8.17。(2023/11/3,5)
- X86_INTRIN を有効にしてコンパイルするときの警告を抑止した。
- 64ビットでも HaveRdtsc() を CPUID で判定するようにした。
- 宣言 typedef struct tagRand*Rand_ptr; を追加した。
- M.bat、Mk.bat で C:\mingw64 を使用する Mcc,Mccc,Vcc,Vccc を追加した。
- M.bat、Mk.bat で +b, +l を追加した。
- M.bat、Mk.bat で C:\TDM-GCC-64 OpenMP でコンパイルするときスタティックリンクするようにした。
- M.bat、Mk.bat で advapi32.lib と iphlpapi.lib をリンクするようにした。
- M.bat、Mk.bat で imm32.lib, wininet.lib, comctl32.lib と shell32.lib をリンクするようにした。(11/5)
- Windows11でバッチファイルの既定がUTF8になったので、その対策をした。(2023/12/10)
- バージョン 8.16。(2023/10/1,7)
- 乱数初期化の改良(memo.html を参照してください)
- Progress( ) と Progress2( ) を並列リージョンに書けるようになった。
(memo.html を参照してください)
- OLD_UNIF53 の不具合を修正
- RANDOMIZE が有効の時に Srand(++i) としても ++i が実行されない不具合を修正。(10/7)
- X86_INTRIN が有効でCPUが rdseed に対応しているとき、乱数の状態を rdseed で設定する関数の追加。(10/7)
- DBG_SRAND の改良。(10/7)
- バージョン 8.15。(2023/9/17)
X86_INTRIN が有効の時 gcc 9 かそれ以降、または VisualC++2013 かそれ以降の
新しいコンパイラ場合、機械語ではなく組み込み関数で実現するようにした。
これによって X86_INTRIN を定義しても Clang-Tidy 等によるコード分析が可能になった。
ただし、NO_BUILTIN を定義すると、新しいコンパイラでも従来通りの機械語で実現する。
また、新しく RdtscpAux, MmPause1, HaveRdseed, Rand_s, Rand64_s を追加した。
そして、32ビットでコンパイルしても Bsf64, Bsr64, Bswap64 が使用可能になった。
- 今まで #include "pocom.h" としていたのを pocom.h を移動し
#include "../pocom.h" とした。
そのためgcc,g++では -I. がコマンドラインに必要になった。(2023/8/12)
- バージョン 8.14。(2023/7/29)
- Ubuntu で UBUNTU を定義してシフトJISやEUC-jpデータを
読み込ませたときの桁ズレが起こらなくなった。
- リダイレクトした時に端末用の処理ではなく
ファイル用の処理をするようにした。
- M.bat Mk.bat で tools フォルダーの検索を自動にした。
- toolsフォルダーの一部をptoolsフォルダに移し分離した。
- M.bat Mk.bat で +r, +q, +y, +z を追加した。(7/30)
- M.bat Mk.bat の参照する tools 以下のバッチファイルを修正した。(8/6)
Example1.ico を変更し、Example\default.ico の生成し忘れた不具合を修正した。(8/6)
- 警告の抑止をした。(8/12)
- バージョン 8.13。(2023/6/3)
- ウィンドウズコンソールモードで
JPN と WINUTF8 を無効にしてコンパイルした場合、
UTF8 あるいは EUC-JP のデータファイルを処理した場合に文字化けしなくなった。
(自動的にコードページを変更する)
- ウィンドウズで引数を付けずに起動した時に
ファイル選択ダイアログが失敗する不具合の修正。
- ハッシュ関数の改良。
- M.bat Mk.bat で VC++6.0 ~ VC++2022 に対して #import が使用可能になった。(7/1)
- M.bat Mk.bat で VC++5.0、16ビットコンパイラに対して既定のPATHを保持するようになった。(7/17)
- バージョン 8.12。(2023/5/13)
- ResetLap の追加。
- ハードウエア乱数、Rand_h, Rand64_h, Unif_h, Unif53_h, Unif32_h,
Unif24_h, Unif11_h を追加。
- TINYMT64 を 16 ビットコンパイラでも使用可能にした。
- TINYMT32 でも 32/64 ビットコンパイラでは Rand64, BackRand64,
Rand64_r, BackRand64_r を使用可能にした。
- 16 ビットコンパイラで RAND_16 を定義するようにした。
- RAND_32 の追加と RAND_16P の廃止。
- OLD_UNIF53, UNIF53_UNION, UNIF52_UNION の追加。
- バージョン 8.11 で float を16 ビットコンパイラでコンパイルできない不具合の修正。
- バージョン 8.11。(2023/3/25,4/2,4/8)
- gcc での警告抑止とログファイルが時々消去できない不具合の修正。
- OsVer__ に加えて OsBld__ と WineVer__ を追加。
- GetOpenFileName のファイル名の格納場所を静的領域からヒープに変更。
- m.bat と mk.bat の改良。
- 既定のコンパイラを Borland C++ から TDM-GCC-64 に変更しました
- コマンドプロンプトからコンパイルするとキー入力を待たずに終了するようにしました。
- +, ++, +-, +c, +h, +n, +o, +s, +u, +w オプションの追加しました
- VC++2005, VC++2008 でも OpenMP プログラムを作成可能にしました
- +a オプションを指定するとアセンブラのソースファイルを作成します(4/8)
- +k オプションを指定すると PATH 等の環境変数を保持するようにしました(4/8-9)
(exit を実行すると PATH 等の環境変数が戻ります)
- 警告の抑止。(4/2)
- バージョン 8.10。(2023/3/5,6)
- ハッシュ法をカスタマイズ・評価できるようにしました。
- Progress() と Progress2() で 100% に達しても改行しないようにしました。
- "Hit [ENTER] key >" の表示先を常に stderr にしました。
- REPORT_MEM を有効にしたときの表示法を変更しました。
- ウィンドウズ・コンソール・非 WINUTF8 で JPN が有効のとき
コードページを 932 にしました。
- LSI-C86+msdos.exe でコンパイルするときの進捗を非表示にしました。
- 日本語の #error ディレクティブを削除しました。(3/5)
- バージョン 8.09。(2023/1/14,21-23,27)
- Jump_r() を SetGzByLag()、JumpByGz_r() の2つに分けて、
その2つを呼び出すようにしました。
- ALIGN4、ALIGN8、ALIGN16、ALIGN32、ALIGN64、ALIGN128 を定義すると、
それに対応した値が ALIGN_MEM に設定されるようになりました。
- 16ビットコンパイラで FLOAT_REAL と ALIGN_REAL を定義したとき、
8バイトアライメントではなく4バイトアライメントするようにしました。
- NO_FAST_MATJAG が無効の時に REPORT_MEM が
正しく報告しない不具合を修正しました。
- 16ビットコンパイラでも FAST_MATJAG を定義すれば NO_FAST_MATJAG を有効になります。(1/21)
- 16ビットプログラムの時間計測で日付が変わると起こる不具合を修正しました。(1/22-23)
- OLD_PROGRESS を廃止し QUIET24H を導入しました。(1/27)
- Borland TurboC 2.0 でコンパイルできない不具合を修正しました。(1/27)
- バージョン 8.08。(2023/1/1,4,5,7)
- TINYMT64 を定義すると乱数関数の生成方法を TinyMT32 から TinyMT64 に変更します。(1/1)
- TINYMT64 のジャンプ関数をコンパイルする時に発生する Borland C++ -O2 オプティマイザのバグを回避しました。(1/4)
- TINYMT64 の関数をコンパイルする時に発生する VC++5.0 のバグを回避しました。(1/4,5,7)
- FIX_EXE_SIZE を定義するとソースファイル名の長さが変化してもプログラムサイズが変化しなくなりました。(1/7)
- バージョン 8.07。(2022/1/23,1/29,2/6,2/12,2/13,2/22-23,3/19,3/26,5/15,5/16,5/21,9/3,9/10)
- UTF8モードにて VC++2005、VC++2008 を使用してC言語としてコンパイルできない不具合を修正しました。(9/10)
- 64bitコンパイル時のハッシュテーブルの大きさを4倍にしました。
-b オプションを指定しても画面に出力する場合は BOM を書き出さないようにしました。(9/3)
- TDM-GCC-64 で UTF-8 ソースファイルをコンパイルする MkUcc.bat と MkUccc.bat を追加しました。(5/21)
- AddVer.bat の修正をしました。(5/16)
- Mk2022.bat Mk2022c.bat を新しくしました。アイコンを設定するようにしました。(5/15)
- LSI_C で極まれに coreleft() が極端に大きな値を返す不具合を修正しました。
- Progress(), Progress2() がより速くなりました。NO_INTERVAL を定義するとバージョン 8.06 の仕様に戻ります。
- Progress(), Progress2() が実際に表示した時に1を返し、スキップしたときは0を返すようになりました。
Progress(), Progress2() が表示した文字列は SubBuffer__ に記録されています。
- SetInterval() を追加しました。
- PC9801 を定義してもコンパイラが clock() に対応しているなら clock() を使うようにしました。
- Visual C++ ならばプラグマを使用してライブラリ kernel32, user32, gdi32, comdlg32, winmm を必ずリンクするようにしました。
- ウィンドウズモードの入出力中に DoEvents() を行う頻度を減らして、少し高速化しました。(1/29)
- ウィンドウズモードで巨大な配列を Sort() している間に閉じるボタンが機能するようにしました。(2/6)
- __GNUC__ が 10 以上のときに日本語名の関数を正しく処理できるようにしました。(2/6)
- ウィンドウズ版の M.bat, Mk.bat に脆弱性があったので対処しました。(2/12,2/13)
- M.bat と Mk.bat で VC++2022 と VC++2005 の初期バージョンを使ってコンパイルするときの警告抑止をしました。(2/22-23)
- VC++ を使ってコンパイルするとき /EHsc を M.bat と Mk.bat の側で指定するようにしました。(3/19)
- Mk2017.bat Mk2017c.bat Mk2019.bat Mk2019c.bat Mk2022.bat Mk2022c.bat を改良しました。(3/26)
- バージョン 8.06。(2021/11/27,12/4,5,12,18,30)
- PAGE_SIZE 識別子が unistd.h で使われているので PAGESIZE に変更しました。
- 64 ビットでコンパイルしたときの既定のメモリ使用量上限を6Gバイトから5Gバイトに減しました。
- 環境変数 NO_PAUSE を設定しても NO_PAUSE が 0 ならば、M.bat、Mk.bat で最後の pause を行うようにしました。
- 16ビットMS-DOSコンパイラでの ProgTick__() を改良してシンプルにしました。(12/4,5)
- VC++2022 用の Mk2022.bat, Mk2022c.bat を追加しました。(12/12)
- Ubuntu の時間計測で値が折り返ししにくくするようにしました。(12/18)
- Mk2019.bat と Mk2019c.bat の 'HostX64' を 'HostX86' に変更しました。(12/30)
- バージョン 8.05。(2021/9/26,9/29,10/9,10/17,10/30)
- 16ビットMS-DOSコンパイラで ProgTick__() の実行時間が32ビットウィンドウズで3万分の1、
64ビットウィンドウズでmsdos.exeを使った場合でも4分の1になりました。
これにより16ビットコンパイラでのProgress()、Progress2()の実行時間が大幅に減少しました。
※9/26の改良で極まれに ProgTick__() が間違った結果を返す不具合を修正しました。(10/9)
OLD_PROGRESS を定義すると以前のように ProgTick__() を BIOS割り込みルーチンを使用します。
- ウィンドウズでコンパイルするときに mmsystem.h もインクルードするようにしました。
そして timeBeginPeriod(1), timeEndPeriod(1) が呼ばれるようになりました。
これらを呼び出さないようにするには、NO_PERIOD を定義します。
- MSDOSを定義すると Lsic-86, TurboC, MS-C 以外でも dos.h をインクルードするようにしました。
- TDM-GCC 10.3.0 に対応しました。(9/29)
- BorlandC++、VisualC++6.0 等で53ビット浮動小数点数乱数が20%~60%ほど高速になりました。(10/17)
- 環境変数 NO_PAUSE を設定すると、M.bat、Mk.bat で最後の pause を行わないようにしました。(10/30)
- バージョン 8.04。(2021/9/18,19,20,23,25)
- ビッグエンディアン用のプログラムを作成する場合は BIG_E を定義しなければならなくなりました。
ただし GNUC では自動的に定義されます。
- 16ビットコンパイラで RAND_16 or RAND_16P を定義したとき、乱数の生成速度が速くなりました。
- C++言語であっても、IEEE754 浮動小数点数以外のシステムでは半精度小数点数が使用不可になりました。
- コンパイラで __SIZEOF_SIZE_T__ が 8 なら SYSTEM64 を1にするようにしました。
(version 8.03の __WORDSIZE は廃止しました。)
- 2021/9/19 10:50 頃から同日 13:40 頃まで LSIC-86 で RAND_16 BACK_RAND JUMP_RAND を
同時に定義したときにコンパイルできないものをアップロードしていました。
- Print() で負の整数を16進数で表示すると、符号拡張する重大な不具合を修正しました。(9/20)
- ウィンドウズでは Clock() と Lap() で GetTickCount() を使っていたのを
GetSystemTimeAsFileTime() にしました。これにより時間の計測がより正確になりました。
Progress() などでは速度重視のために GetTickCount() を使ったままです。(9/23)
- ウィンドウズモードで実行中に閉じるボタンを押した時、
強制終了のメッセージのメッセージボックスが出ている間、
時間の計測を止めるようにしました。(9/23)
- PROG_PER_SEC__ と TIME_PER_SEC__ の定義を削除していたのを、残すようにしました。(9/25)
- winmm.lib を VC++ の Mk????.bat に、-lwinmm を MkGcc.bat, MkGccc.bat に追加しました。(9/25)
- バージョン 8.03。(2021/9/5,6,11)
- Unif(),Unif_m(),Unif_f(),Unif_r(),BackUnif(),BackUnif_r() の
デフォルトの精度を 32 ビットから 53 ビットにしました。
version 8.02 以前と結果を同じにするには FAST_UNIF を定義してコンパイルします。
- UNIF_STEP を追加しました。
- コンパイラで __WORDSIZE が 64 なら SYSTEM64 を1にするようにしました。
(version 8.04 で廃止しました。)
- MkBccc.bat はC言語でコンパイルするはずがC++でコンパイルしていた不具合を修正しました。(9/6)
- pocom.h で16ビットを超える整数定数に L を付けていたのを削除しました。(9/11)
- AvxOmp.c を GNUC で -mavx オプションを付けなくても
AVX のプログラムをコンパイルするようにしました。(9/11)
- バッチファイルの " @echo off " の直後に " echo off " を加えました。
古い command.com でスクロールしすぎないようにするためです。(9/11)
- バージョン 8.02。(2021/4/10,11,18,25,5/1,7/10,8/14)
- Example.c のファイル名を変更して Example1.c としました。(マカフィー対策のため)
- 静的配列モードと準静的配列モードで SJAG 変数を Alloc() 関数で初期化するときに起きる不具合を修正しました。
- 静的配列モードと準静的配列モードで可変列行列を読み込むときにメモリ・リークが起きる可能性がある不具合を修正しました。
- 構造体のメンバーに可能な限り const を付けるようにして、間違ったコーディングしたらコンパイル・エラーとなるようにしました。
- コンパイル時の消費メモリを小さくする工夫をしました。
- 文字列のエンコードの確認の対象にプログラム内部の文字列も加えました。(2021/4/11)
- M.bat, Mk.bat の変更。tools にある30個の Mk50.bat ~ MkTcc.bat の変更。(2021/4/18,25,5/1,8/14)
- M.bat, Mk.bat から -DJPN または /D JPN を削除しました。(4/18)
- Borland C++ と VC++50 ~ VC++2003 でマルチスレッドコンパイルにしました。(4/18)
- 例えば以前は Example1.c と Example1.cpp がある場合は両方コンパイルしていたのを
Example1.cpp のみコンパイルするようにしました。(4/18)
- 例えば Example1.c をコンパイルする場合 Example1.rc が無くても、
バージョン情報を埋め込むようにしました。(4/18)
- M.bat, Mk.bat 等で、追加のコンパイルオプションと追加のライブラリを
VC++, gcc, Borland C++, Turbo C, Lsic86 5種類で指定するようにしました。(4/18)
- M.bat, Mk.bat でパラメータに 32 を追加することで
64ビット対応コンパイラでも32ビットでコンパイルするようにしました。(4/25)
- SUBSRCS を設定することで、ソースファイルを追加してコンパイル出来るようにしました。(4/25)
- 2013 以降の Visual C++ で /Wall としていたのを /W4 にしました。(4/25)
- M.bat などに "-DALIGN_MEM=8" のように = を加えると起こる不具合を修正しました。 (5/1)
- M.bat などに、9個を超えるオプションを指定できるようにしました。(5/1)
- マカフィー対策のため、AddVer.bat, *.rc を改良しました。(7/10)
- M.bat, Mk.bat で set BIT=32 にとした時でも、パラメータに 64 を追加することで
64ビットでコンパイルするようにしました。(8/14)
- バージョン 8.01。(2021/4/3,4)
- 静的配列モードと準静的配列モードを追加しました。
- Range() 関数で HALF,HVEC,HMAT,HJAG,FLT,FVEC,FMAT,FJAG,,DBL,DVEC,DMAT,DJAG の不具合を修正しまた。
- Check() 関数で非配列の数値型に限り、値を検査するようにしました。
- PrintCSV と PrintTSV で DBL 型の不具合を修正しました。
- 乱数のジャンプの性能が向上しました。
- Stat.c の不具合を修正しました。
- 計算ルーチンなどで "#if USE_BYTE" と書いていたなら "#if defined(USE_BYTE)"
と書き換える必要があります。
USE_BYTE の他に、USE_TINT, USE_LINT, USE_FLT, USE_DBL,
PRIOR_SJIS, PRIOR_KANA, USE_ALL_TYPES も同様です。
- NO_RESTRICT を追加しました。(2021/4/4)
- 静的配列モードの Alloc() のエラーメッセージを改良しました。(2021/4/4)
- www001.upp.so-net.ne.jp から isaku-wada.my.coocan.jp への引っ越し。(2021/1/1)
- tools にある Mk*.bat を修正した。(2020/12/19)
- 外部仕様をそのままに pocom.h の改良。Bingo5.c の改良。(2020/11/14)
- ファイルを開くダイアログが表示されている間、Clock と Lap の時間を進めないようにしました。(2020/10/11)
- バージョン 7.06。(2020/10/4)
INTF, FIX の固定値に整数定数マクロを指定できるようにしました。
セキュリティソフトに駆除されにくくなるようにリソースファイルを追加しました。
- バージョン 7.05。(2020/9/12)
PrintCSV、PrintTSV で HMAT, FMAT, DMAT, HJAG, FJAG, DJAG が書きだされない不具合を直しました。
PrintCSV、PrintTSV で "M","m","T","t","S","s","H","h","R","r" 一文字の文字列をクォートする不具合を直しました。
- 新しい VC++ 2019 での警告抑止。(2020/8/8)
- バージョン 7.04。(2020/6/13-14)
- 必要に応じてUTF8ファイルをシフトJISに変換するようにしました。
- ユニコードデータファイルをシフトJISに変換する時の変換不能文字を減らしました。
- シフトJISとしてもUTF8としても正しい文字列の処理を改善しました。
- SetSJIS.bat と SetUTF8.bat を改良しました。
- バージョン 7.03。(2020/5/30-31)
- CdefIndex2, MapValue2, MapAdd, MapAddSvec マクロを追加しました。
- コード分析をするようにしました。
- C++としてではなくCとしてもコンパイルできるようにしました。
- バージョン 7.02。Windows のコンパイラで作成した .exe で入力ファイルを指定せずに起動したときに、
入力ファイルを選ぶダイアログを出すようにしました。(2020/5/24)
- UTF8 の判定方法の不具合の修正。16 ビットコンパイラでの警告抑止。(2020/5/21)
- バージョン 7.01。様々な新機能の追加と不具合の修正をしました。(2020/5/6)
主な例を挙げると、
- WinAPI+UTF8モードでコンパイルしたプログラムで、
シフトJISのデータファイルを読み込むことが出来るようになりました。
- IntStr, RealStr, CdefIndex, MapIndex, MapValue, MapSetSvec マクロを追加しました。
連想配列の機能を実装しやすくなりました。
- Visual C++ の 2005 以降で日本語の変数名、関数名を持つプログラムもコンパイルできるようになりました。
- 計算ルーチンなどで "#if UBUNTU" と書いていたなら "#if defined(UBUNTU)"
と書き換える必要があります。
UBUNTU の他に、AVOID_DEFINE_BUG, ASIF32, PC9800, OLD_READ, OLD_PRINT, OLD_PRINT3,
OLD_EXCEL, ALIGN_REAL, ENABLE_OCTAL, REPORT_MEM, RAND_16, OLD_FOR, NO_ALL,
NO_AFTER_VER2, CHECK_CDEF, CUSTOM_MAIN も同様です。
- Print にて 固定列行列の幅が半角で 100 を超え、その右にベクトル変数が有った時に変数行が揃わなくなる不具合を修正しました。(2020/4/11)
- 3/29 の改良を無効にする NO_FIT と、最後の列を長くしない SMART_FIT を導入しました。(2020/4/4,5)
- Print で長い変数名を指定した時、データの幅も合わせて長くするようにしました。(2020/3/29,4/1)
- バージョン 6.05。NO_AUTO と NO_LAST を廃止しました。Visual C++ でも M_PI, M_E, M_LOG2E, M_SQRT2 等の定数を有効にしました。(2020/3/28)
- バージョン 6.04。NO_FULL_MATJAG を追加しました。M.bat と Mk.bat を改良しました。(2020/2/22)
- 要素数の合計が 21.47 億個を超える可変列行列を Alloc 出来ない不具合を修正しました。(2020/2/19)
- SPACER2, SPACER4, SPACER6 を廃止しました。警告の抑止をしました。(2020/1/13)
- 警告抑止方法を少し改善しました。(2020/1/8)
- バージョン 6.03。正方行列読み込みの効率化の修正などを行いました。(2020/1/7)
- バージョン 6.02。6.01 で NO_CHECK_MEM が有効な場合の空の配列に対する不具合の修正などを行いました。(2020/1/5)
- バージョン 6.01。CHECK_HEAP の廃止と、FAST_MAGJAG の機能を加えました。(2019/12/31)
- 性能の向上と、Example2.c 等を NO_PROGRESS を有効にしてコンパイルするときの警告を抑止しました。(2019/12/15)
- 32・64ビットで NO_NINT を定義するとコンパイルできない不具合を修正しました。(2019/12/11)
- 空の配列を読み込んだときのメモリリークの抑止と、LAST から呼ばれる関数内で NoList=1; をしてリストを抑止できるようにしました。(2019/12/10)
- バージョン 5.06。非シフトJIS文字を含んだファイル名を持つファイルを読み込み可能にするなどの修正をしました。(2019/12/7)
- バージョン 5.05。1,234,567 のようにカンマを付けた整数型を読み込んだり書き込んだりできるようにしました。(2019/12/1)
- 倍精度浮動小数点の NaN(Not a Number) を半精度浮動小数点数に変換すると、稀に INF(Infinity)に変換される不具合を修正しました。(2019/11/16)
- バージョン 5.04。浮動小数点数の読み込みで -1.#INF00 のように 1.# が現れた時に # 以降をコメントにせずにエラーとなるようにしました。(2019/11/9)
- 半精度浮動小数点を16進数で書き出したファイルを、16ビットコンパイラで作成した .exe で読み込むときの不具合を修正しました。(2019/11/2)
- マクロ WINUTF8、NO_HANGUL、WINDOWS__ の定義方法をシンプルにしました。(仕様変更なし)(2019/10/19)
- マクロ NO_ALL を定義すると、マクロ ASCII も定義するようにしました。(2019/10/14)
- UTF16の U+FFFF 文字(通常は現れないはず)を16ビットコンパイラでも32/64ビットコンパイラと同じ扱いにしました。(2019/10/13)
- UTF8モードで16ビットコンパイルして作った ~.exe にUTF16ファイルを読ませることができない不具合を修正しました。(2019/10/11)
- マクロ UBUNTU を1定義すると、Ubuntu の端末で
シフトJISと EUC-jp を処理する時に桁ズレが起こらなくなりました。(2019/10/10)
- EJP,JP の改良と入力ファイルの1バイト目が0の時に UTF16 ビッグエンディアンとして読むようにしました。(2019/10/9)
- バージョン 5.03。UTF16 のファイルを読み込み可にするなどの改良をしました。(2019/10/5)
- WINDOWS モードにて、エラーメッセージしかない場合、確認せずにログを消すようにしました。(2019/8/31)
- 関数 System が作成する一時ファイルを $System$.$ から System.tmp に戻しました(2019/8/25)
- PrintCSV、PrintTSV で文字列を出力する時に、それが整数の時にクォートする条件を緩くしました。(2019/8/25)
- Ubuntu にて、パラメーターを指定せずに実行する時に core dump する不具合を修正しました。(2019/8/24)
- Ubuntu にて System からポコムプログラムを実行するときに、ファイル名にスペースが入っていても正しく処理できるようにしました。(2019/8/20)
- Mk2017.bat を更新し、Mk2019.bat を追加しました。(2019/8/15-16)
- バージョン 5.02。CheckIntOverflow() より使いやすい MulAdd を追加しました。(2019/8/14)
- Windows10 で使用するときに、罫線で桁ずれが起こりにくくなるように修正しました。(2019/8/8)
- 名前がカンマで始まったりカンマで終わったりするファイルをダブルクォーテーションで囲むことにより処理できるように修正しました。(2019/8/6)
- バージョン 5.01。CSV ファイルも直接読み込めるようにしました。(2019/8/4)
- 16ビットコンパイラや Borland C++ で ALIGN_REAL を指定しても Range 構造体がアライメントされない可能性がある問題を修正しました。(2019/7/26)
- 空の配列に仮の領域を割り当てる(CHECK_ALLOC)の機能を削除しました。理由はデバッガを使用した方が的確に原因がわかるから。(2019/5/26)
- PrintCSV、PrintTSV でコード型を表示するときに Format を負にしてもクォートする不具合を修正しました。(2019/5/7)
- fprintf(fp,"%s",~); を fputs(~,fp) にしました。不要になったデバッグ用のコードを削除しました。(2019/4/20)
- エラー処理の複数の不具合を修正しました。(2019/4/19)
- バージョン 4.16。Print 関数で浮動小数点数を表示するときに ; を2つ指定することで一時的に16進数で出力できるようにしました。(2019/4/18)
- 不具合の修正。(昨日追加した機能と、ハングル関係と、MkTcc.bat, MkLcc.bat)(2019/4/15)
- Windows9x や WindowsXP でデータファイルをドラッグして起動した場合、作業フォルダをデータファイルの場所にするようにしました。(2019/4/14)
- バージョン 4.15。STRP, SVECP, SMATP, SJAGP, CDEFP, RandCounter, RandLastSeed, RandPosition を廃止しました。(2019/4/13)
- バージョン 4.14。ポコム関数 Quit を追加しました。Windows9x での System の不具合を修正しました。(2019/4/11)
- 空白行で始まるデータファイルを入れ子になった Load で読み込むときエラーになる不具合を修正しました。(2019/4/8)
- バージョン 4.13。NO_AUTO, NO_LAST, CHECK_CDEF, USE_CSVTSV_STR, SPACER6 マクロを追加しました。Mk.bat を使いやすくしました。(2019/4/7)
- バージョン 4.12。ポコム関数 System の改良と令和に対応しました。(2019/4/2)
- バージョン 4.11。ポコム関数 System を追加しました。(2019/3/28,30)
- バージョン 4.10。文字列読込で " や ' を2個連続することで " や ' を読込可能にしたのと、PrintCSV と PrintTSV を改良しました。(2019/3/17)
- バージョン 4.09。NO_CSVTSV_STR の導入とPrintCSV と PrintTSV で文字列を出力するときにクォートする判定条件を変更しました。(2019/3/17)
- バージョン 4.08。文字列を PrintCSV と PrintTSV で出力するときに Format が負だとクォートしないようにしました。(2019/3/16)
- バージョン 4.07。PrintCSV で " を出力するときに "" に変換するようにしました。(2019/2/28)
- バージョン 4.06。PrintCSV と PrintTSV で文字列を書くときにクォートする条件を改良しました。(2019/2/24)
- エラー表示方法を少し改善しました。(2019/2/18)
- バージョン 4.05。ファイルの終わりは空白行なしでデータ行の終わりとみなすようにしました。(2019/2/10)
- バージョン 4.04。 LIST マクロを追加し、List コマンドでバージョン情報などを表示できるようにしました。(2019/1/26)
- NO_CHECK_MEM が定義されてもメモリの使用量を制限できるようにしました。(2019/1/17)
- __unix__ が定義されていたらデフォルトで PrintCSV, PrintTSV にて1023列で折り返すようにしました。(2019/1/11)
- Add の修正と、C++でないときにデフォルトで HALF, HVEC, HMAT, HJAG を無効にしました(2019/1/10)
- 2018/12/27 の修正で Echo,Add 等が正しく動作しなくなったのを修正しました。(2018/12/29)
- Limit で -1 を指定するとデフォルトに戻すようにしました。(2018/12/27)
- バージョン 4.03。CHECK_ALLOC と RowSize( ) の追加と Limit を強力にしました。(2018/12/23-24)
- CHECK_MEM と CHECK_HEAP をより強力にしました。また、LSI_C のバグを回避するようにしました。(CHECK_MEM時のSetStr()等)(2018/12/15)
- バージョン 4.02。データファイルの形式がより単純になりました。(2018/12/9)
- バージョン 4.01。新機能を幾つか追加しました。(2018/12/2)
- エラー行表示をするときに余計な改行が挿入されるのを修正しました。(2017/4/1)
- IVS 文字を含んだ文字列の表示幅を正しく計算するようにしました。(2017/2/11)
- ALLOW_MAT_0 を1にすることにより、行数が1以上の場合でも列数を0にできるようにしました。(2016/12/2)
- UTF8 のエラーメッセージが画面の右にまで表示されるようにしました。(2016/11/27)
- PrintTSV を廃止して、PrintCSV を改良しました。(2016/10/15)
- Limit の制限を緩くしました。(2016/9/24)
- PrintTSV を追加して、Limit のバグと空の配列の表示のバグを修正しました。(2016/9/22)
- FIX の宣言方法を変更しました。(2016/5/13)
- 新しい gcc に対応しました。CLOCKS_PER_SEC の問題。(2016/5/3)
- 古いC++の for 文のバグを回避するマクロ OLD_FOR を追加しました。(2016/4/16)
- 0から始まる整数でも8進数とせずに10進数として読みこむようにしました。ほか、整数の読み込みに関するバグを修正しました。(2016/2/10-11)
- GetMem() の改良をしました。(2015/12/6)
- FILE_NAME、CHECK_FILE_NAME マクロを導入しました。(THIS_IS マクロの代わりに使用します)(2015/6/20)
- INTF を FIX と名前を変更しました。互換性のため引き続き INTF も使用できます。(2015/01/31)
- CDEF の無駄な Rehash を行わないようにしました。(2014/10/11)
- 警告の抑止と効率化を行いました。(2014/7/20)
- INT_32 を定義しても lsic86 でコンパイルできるようになりました。(2014/7/19)
- 負の整数16進数表示のときに、符号をつけないように戻しました。書き出した16進数を読み込めるようになりました。(2014/7/15)
- 負の整数16進数表示のときに、符号をつけるように戻しました。(2014/7/13)
- 高速乱数のマクロ名を変更しました。(2014/7/12)
- 高速乱数を追加しました。詳しくは memo.html を参照してください。(2014/7/12)
- VMJ_USER マクロを追加しました。詳しくは memo.html を参照してください。(2014/7/4)
- 16bit コンパイラで INT_32 が 0 の時 GetMem で double を使用していたのを unsigned long にしました。(2014/3/5)
- VMJ_PAGE_SIZE マクロを追加しました。(2014/2/8)
- CheckOverflow マクロの名前を CheckIntOverflow へ変更しました。(2014/2/5)
- UTF8、CheckOverflow マクロを追加し、GetVmj、FreeVmj 関数を追加しました。(2014/2/4)
- CUSTOM_MAIN マクロと NO_VMJ マクロを導入しました。(2014/1/19)
- TurboC や LSI_C の Clock, Lap で午前0時、月の変わり目、2月29日をまたぐ場合にも対応しました。(2014/1/19)
- メモリ使用の効率化をしました。(2014/1/17)
- NO_ALL 指定時にプログラムサイズが小さくなりました。(2014/1/13)
- NO_JAG と NO_CDEF のエラーチェックをコンパイル時にではなく、実行時に判定するようにしました。(2014/1/12)
- NO_LAP のバグの修正と、NO_RANGE の追加しました。(2014/1/11)
- NO_APPEND,NO_LAP を追加しました。CHECK_MEM を指定した時のメッセージを変えました。(2014/1/4)
- NO_ALIAS,NO_CLOCK,NO_CSV,NO_ECHO,NO_FORMAT,NO_FREE,NO_LIMIT,NO_LIST,NO_OUTPUT,NO_UTF8,NO_ALL を追加しました。(2014/1/3)
- GemMem() のエラーメッセージを改良しました。restrict を二重にしました。(2014/1/2)
- 関数 Limit を追加しました。大きな行列などを Print する時に、改行を使って一行の長さを短くできるようになりました。(2014/1/1)
- 英語メッセージの追加と Stat の改良。(2013/12/30)
- 英語メッセージの追加と改良をし、ドキュメントも修正しました。(2013/12/27)
- バージョン 3.02。pocom.html と memo.html を一つ上のフォルダに移動しました。JPN、EJ マクロを導入しました。(2013/12/23)
- 終了時に念のため fclose(fp); を行うようにしました。また、ALWAYS_FALSE マクロを追加しました。(2013/12/21)
- memo.html の三角行列のプログラムに間違いがあったのを直しました。また、CDEF の内部処理の効率を上げました。(2013/12/20)
- Output や Append でスペースを含むファイル名を指定するときのダブルクォーテーションが不要になりました(2013/12/18)
- SAVE_MEM の機能を規定で有効にし、その機能を削除するマクロ NO_SAVE を導入しました(2013/12/17)
- プログラムと使用メモリを少し小さくしました。(2013/12/12)
- 間違ったファイル名を与えるとクラッシュするバグを直した。(2013/12/9)
- CONST_MAT、SwapRow マクロを導入しました。ドキュメントを少し変えました。(2013/12/8)
- NO_JAG、NO_CDEF マクロを導入しました。また、Stat のコンパイルが失敗するので行列の const を外しました。(2013/12/4)
- cdef と全ての行列と可変列行列の定義に const を加えました。(2013/12/3)
- SAVE_MEM マクロを導入しました。(2013/12/1)
- Range で解除と再設定を禁止しました。INT 型の亜種 INTF 型を導入しました。(2013/11/27)
- pocom.h で最後に #undef PDEF_H を入れて、変数定義と計算ルーチンを交互に書けるようになりました。(2013/11/26)
- MEM_LIMIT マクロを道入しました。(2013/11/24)
- VC++の浮動小数点の一部の警告を無効にすることで、計算ルーチンを自然に書けるようになりました。(2013/11/23)
- JUMP_RAND,BACK_RAND マクロを復活させました。NoList を AUTO マクロで設定できなくしました。(2013/11/19)
- 文字コードの判定をデータではなく、ソースファイルで行うことで小さくした(2013/11/18)
- バージョン 3。THIS_IS,INT_64,INT_32,PRIz マクロの導入、Int,Unsigned 型の導入、GetMem の改良。ドキュメントの修正。(2013/11/11)
- Free 関係のエラーメッセージを追加しました。(2013/9/28)
- UAC の関係で、Update.exe のファイル名を MakeSame.exe に変えました。(2013/9/19)
- ポコム関数 Free を追加しました。(2013/8/24)
- 前回の修正の後、エラーメッセージが乱れるようになったのを修正しました。(2013/7/15)
- ALIGN_MEM を指定したときにアドレスだけでなくサイズもアラインするようにした。(2013/6/26)
- マクロ NO_RAND を復活させ、Encode 関数を廃止しました。(2013/6/16)
- gcc-3 でコンパイルしたときに警告が出ていたのを抑止しました。(2013/5/5)
- Print と PrintCSV の効率を改善しました。(2013/5/1)
- 可変列行列の列幅を保持する型を restrict を有効にするため int* から ivec に変更しました。(2013/4/6)
- 制御構造体のメンバ名を変更しました。(2013/4/5)
- FLOAT_MAX を FLT_MAX の代用としていたのを build2.exe の改良によりやめました。(2013/4/3)
- FLOAT_REAL を有効にして浮動小数点の16進表示をしたときに10桁で表示するようにしました。(2013/4/3)
- FLOAT_REAL を有効にした時に警告が出るのを抑止しました。(2013/4/2)
- 浮動小数点の16進数表示が gcc -O4 で上手くいかなかったのを修正しました。(2013/3/30)
- 浮動小数点の Format を -2 、-3 にすると16進数で表示するようにした。(2013/3/30)
- エラーメッセージを少し変更しました。(2013/3/27)
- pocom.h 内の関数の順序を整理し、コメントを加え、読みやすくしました。(2013/3/24)
- CODE,CVEC,CMAT,CJAG のエラーチェックの方法を変更しました(その3)。(2013/3/24)
- うっかりエラー処理を試すためのソースファイルを30分間アップロードしていたのを元に戻しました。(2013/3/23)
- CODE,CVEC,CMAT,CJAG のエラーチェックの方法を変更しました(その2)。(2013/3/23)
- CODE,CVEC,CMAT,CJAG のエラーチェックの方法を変更しました。(2013/3/22)
- FreeWord( )、AllocWord( )、CheckWord( )、の引数のアンダーバーを省略するようにしました。(2013/3/20)
- SizeChangedBy( )、ReadCodeRange( )、ReadIntRange( )、ReadRealRange( ) を追加しました。(2013/3/20)
- ReadCode( )、ReadInt( )、ReadReal( ) の引数を少なくしました。(2013/3/20)
- 範囲条件リストの名前を cond から range に変更して、ドキュメントも修正しました。(2013/3/19)
- 内部の型名の変更をして、ドキュメントも修正しました。(2013/3/15)
- メモリの確保を工夫して、大きな可変列行列の読み込みが最大 35% 高速になりました。(2013/3/14)
- HIT_ENTER,CHECK_MEM,FLOAT_REAL 指定するときに -DHIT_ENTER=1 としなくても、-DHIT_ENTER でもよくなりました。(2013/3/5)
- NO_ENCODE,NO_RAND,NO_LIST,BACK_RAND,JUMP_RAND を廃止し、常に全機能が組み込まれるようにしました。(2013/3/2)
- マニュアルに gcc でコンパイルするときに -lrt が必要になったのに書いてなかったので修正しました。(2013/2/17)
- 行列を読み込む時、メモリを効率よく確保するようにしました。(2013/2/17)
- 標準関数 ClockSec() と LapSec() を追加しました。(2013/2/10)
- Clock と Lap の時間表示をシンプルにし、linux で CPU 時間から実時間にしました。(2013/2/9)
- Int16_t と Uint16_t を削除ました。マクロ FLOAT_REAL を追加し、
OpenCL 等で float を使えるようになりました。(2013/2/8)
- ポコム関数 Clock に引数を付けられようにしました。また、ポコム関数 Lap を追加しました。(2013/1/27)
- C99 では restrict を、gcc と vc++ では __restrict を RESTRICT に定義するようにしました。(2013/1/26)
- C99 の予約語 restrict に対応しました。(2013/1/25)
- pdef.h をメインソースに埋め込む裏ワザを思いついたので、pocom.html に記述しました。(2013/1/20)
- 乱数関係の便利なオプション関数を追加しました。マクロ BACK_RAND と JUMP_RAND で使用可能になります。
TinyMT で逆順に乱数を得たり、高速にジャンプできるようになりました。(2013/1/19)
- 乱数の効率化と Turbo C version 2.01 でのプログラムの大きさを小さくしました。(2013/1/16)
- マクロ NO_RAND を定義することで、プログラムを少し小さくできるようにしました。(2013/1/14)
- 標準関数 Rand( ) の追加と、負の整数16進数表示のときに、符号をつけるのをやめました。(2013/1/14)
- マクロ NO_ENCODE と NO_LIST を定義することで、プログラムを少し小さくできるようにしました。(2013/1/13)
- マクロ PDEF_H を定義することで "pdef.h" 以外のファイルを使うことができるようになりました。。(2013/1/11)
- ポコム関数 Encode を追加しました。(2013/1/8)
- 文字コード方式の自動判定方法の改良をしました。Turbo C version 2.01 に対応しました。(2013/1/6)
- 効率化とドキュメントの修正。EUC-jp の半角カナ文字に対応しました。(2013/1/5)
- 乱数生成をメルセンヌ・ツイスターから TinyMT に変更しました。(2013/1/4)
- -DCHECK_MEM=1 としたとき、変数の設定を全く行わない場合に起こる不具合を修正しました。(2013/1/4)
- ポコム関数 Append、List と標準変数 NoList を追加しました。(2013/1/3)
- マクロ NO_HIT_ENTER の代わりに HIT_ENTER にして、既定で終了時に[ENTER]キーを待たないようにしました。(2013/1/3)
- マクロ CHECK_MEM, NO_HIT_ENTER, ALIGN_MEM 定義することで、挙動を変更することができるようになった。(2013/1/2)
- メモリリークの診断ルーチンを埋め込み、情報を表示するようにした。さらにドキュメントの修正。(2013/1/2)
- ※重要 新しいポコムで、UTF-8 の BOM の処理に致命的なエラーがあったのを修正しました。(2013/1/1)
- 名前の長さが100文字を超える変数でエラーが起きた場合の対処をしました。(2012/12/31)
- 16 bit コンパイラで警告が出るようになっていたのを、出ないようにしました。(2012/12/30)
- EUC-jp 用を用意しました。ドキュメントの不備を修正しました。無駄なインクルードをやめました。(2012/12/29)
- Ubuntu 用を用意しました。(ソースの文字コードの変換・ハードリンクの設定)(2012/12/28)
- VC++2010 用の Make2010.bat を追加しました。(2012/12/28)
- gcc,g++ で出ていた警告を出ないようにしました。(2012/12/24)
- UTF8 を使う場合、半角カナとサロゲートペアで桁ずれが起こらないようにした(2012/12/24)
- バージョン 2.02。UTF8 に対応(2012/12/23)
- バージョン 2。build2 に対応させた。(2006/3/12)
- Alias関数を追加し、変数名を日本語化できるようにした(2005/2/25)
- 数値計算の名をポコムにした(2002/11/2)
- とりあえず公開(2002/7/16)