BigInt を 2 つの int32 (64bit 分割) に変換
bi_to_int64 h, var
h : BigInt ハンドル var : 出力変数 (int 配列 2 要素以上)
(プラグイン / モジュール : hspmathex.dll)
BigInt ハンドル h の値を 64bit として取り出し、2 つの int32 に 分割して var に格納します。 var(0) : 下位 32bit (符号無し相当のビットパターン) var(1) : 上位 32bit (符号付き) 値が 64bit に収まらない場合は下位 64bit だけが取り出されます。 stat は成功時 0 です。
#include "hspmathex.as"
h = bi_create_str("10000000000") ; 0x2540BE400
dim v, 2
bi_to_int64 h, v
mes "lo = "+strf("0x%08X", v(0))
mes "hi = "+strf("0x%08X", v(1))
bi_free h
stop
| bi_to_int64_split | BigInt を 2 つの変数に 64bit 分割して取り出す | (hspmathex.dll) |
| bi_to_int32 | BigInt を 32bit 整数に変換 | (hspmathex.dll) |
| bi_create_int64_split | 2 つの int32 から 64bit 値を合成して BigInt を生成 | (hspmathex.dll) |
| プラグイン / モジュール | hspmathex.dll |
| バージョン | 3.8 |
| 作成日 | 2026/04/18 |
| 著作者 | IronHSP |
| URL | https://github.com/inovia/IronHSP |
| 備考 | hspmathex.dll は次の 3 種類の API を 1 つの DLL で提供します。
------------------------------------------------------------ (1) HSPVAR 拡張型 - 通常の変数と同じ感覚で扱える任意精度数値型 ------------------------------------------------------------ #include "hspmathex.as" 追加される変数型: bigint ... 任意精度整数 (Java の BigInteger 相当) bigdec ... 任意精度10進固定小数 (Java の BigDecimal 相当) これらの型の変数は + - * / \ & | ^ == != < > <= >= 等の演算子で 自然に書けます。文字列化は str()、型名は vartype() で取得できます。 変数の寿命管理 (メモリ解放) は HSPVAR 機構が自動で行うため、 ハンドルを明示的に解放する必要はありません。 ------------------------------------------------------------ (2) ハンドルベース API - 高速・低オーバーヘッドのスタイル ------------------------------------------------------------ bi_* : BigInt 操作 (bi_create_str / bi_add / bi_mul / ...) bigdec_* : BigDec 操作 (bigdec_create / bigdec_div / bigdec_sqrt / ...) 整数や文字列からハンドル (int) を生成し、各演算関数はハンドルを 受け取って結果ハンドルを返します。不要になったハンドルは必ず bi_free / bigdec_free で解放してください。忘れるとリークします。 ハンドル 0 は常に無効値です (失敗時に返されます)。 ------------------------------------------------------------ (3) SIMD API - SSE/AVX/AVX2 ベクトル演算 ------------------------------------------------------------ simd_has_* : 実行 CPU の SIMD 対応判定 (CPUID + XGETBV) simd_cpu_name : CPU ブランド名取得 simd_*_d : double 配列演算 (AVX 優先、SSE2 フォールバック) simd_*_i : int32 配列演算 (AVX2 優先、SSE2 フォールバック) simd_*_f : float 配列演算 (AVX 優先、SSE フォールバック) simd_matmul_* : 行列積 (row-major, f/d 両対応) simd_pixel_* : 画像処理 (alpha ブレンド / グレースケール) SIMD 関数群は C ABI の __cdecl としてエクスポートされているため、 通常は iron_simd.hsp のラッパを介して呼び出すのが簡単です。 #uselib で直接呼ぶこともできます。 ------------------------------------------------------------ 依存: hspmathex.dll (x64 では hspmathex_64.dll) を実行ファイルと 同じディレクトリに配置してください。 サンプル: #include "hspmathex.as" a = bigint("12345678901234567890") b = bigint("99999999999999999999") c = a + b mes str(c) mes vartype(a) stop |
| タイプ | 拡張命令 |
| グループ | hspmathex |
| 対応環境 |
|
| hs ファイル | hsphelp\hspmathex.hs |