BigInt ハンドルを複製
bi_clone h
h : 複製元ハンドル
(プラグイン / モジュール : hspmathex.dll)
BigInt ハンドル h と同じ値を持つ新しいハンドルを生成して返します。 BigInt は値セマンティクスで扱うべきなので、他の変数に「コピー」 したい場合は必ず bi_clone を通してください (同じハンドルを共有 すると片方の bi_free で両方が無効になります)。
#include "hspmathex.as"
a = bi_create_str("1000")
b = bi_clone(a)
bi_free a ; a を解放しても b は有効
sdim s, 64
bi_to_str b, s, 10
mes s ; => 1000
bi_free b
stop
| bi_create_int | int から BigInt ハンドルを生成 | (hspmathex.dll) |
| bi_free | ハンドルを解放 | (iron_bigint.hsp) |
| プラグイン / モジュール | 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 |