rontolisp:narrow-float-bits
(rontolisp:narrow-float-bits src format dst &key (start 0))
パックされた浮動小数点配列 src(single-float、double-float または bfloat16、
任意の階数)を、パックされた (unsigned-byte 16) ベクタ dst(f16 または bfloat16
のビットパターン。format(:float16 または :bfloat16)で選択)へ、src の
フラットインデックス 0 から dst のフラットインデックス start へ行優先で
狭めます。dst を返します。
これは rontolisp:float16-bits/rontolisp:bfloat16-bits のバルク版であり、
rontolisp:widen-float-bits の逆方向です。チェックポイントをより狭い幅で書き
戻す際に使います。各要素は対応するスカラー版のプリミティブとまったく同じ丸め
(両方式とも 最近接偶数丸め)になります。
bfloat16 のソースは値ではなくビットパターンを渡します。format が :bfloat16 の
ときは単純なコピーなので、テンソルはバイト単位でそのまま往復します。
インタプリタ、JVM、両方の WASM バックエンドで動作します。--no-gc にはパックされた
浮動小数点配列のモデルがなく、コンパイル時に拒否されます。bfloat16 のソースは
インタプリタと JVM のみです。その配列幅を持つ WASM バックエンドがないためです。