luna-complex

Luna-Flow/luna-complex は Luna Flow に複素数を提供します。ルートパッケージは、任意のスカラー T 上の環 T[i]/(i2+1)T[i]/(i^2 + 1) であるジェネリック型 Complex[T] を、その算術および luna-generic の構造インスタンスとともに定義します。float_backend パッケージは、Complex[Double] の解析関数(根、対数、べき乗、三角関数・双曲線関数とその逆関数)を数値的に安定な式で追加し、浮動小数点スカラー向けの能力トレイトも提供します。

このマニュアルは、MoonBit 0.10 上のバージョン 0.2.0(moon.mod に記載のバージョン)のコードを説明します。

パッケージ

パッケージインポートパス役割ページ
coreLuna-Flow/luna-complexジェネリックな Complex[T]: 構築、変更、算術、共役、構造インスタンスAPI · チュートリアル · 設計
float_backendLuna-Flow/luna-complex/float_backendComplex[Double] の解析関数。FloatingAnalyticScalar、FloatingSpecialValues、FloatingBackendScalarAPI · チュートリアル · 設計

ルートパッケージは core という名前で説明しています。float_backend は以前の double_ext パッケージを置き換えるものです。

読み進め方

はじめの一歩。 算術については core チュートリアル を、sqrt、log、sin などの関数については続けて float_backend チュートリアル を読んでください。

ライブラリを使う。 core API と float_backend API を手元に置いてください。後者には、負の実軸上での既知の逸脱を含め、各関数の分枝、特殊値、中断の振る舞いが記載されています。

コントリビュート。 代数とインスタンスが法則を満たすかについては core の設計 を、安定な式と分岐切断の導出については float_backend の設計 を読み、コントリビューションガイド も参照してください。

インストール

moon add Luna-Flow/luna-complex@0.2.0
import {
  "Luna-Flow/luna-complex" @complex,
  "Luna-Flow/luna-complex/float_backend" @fb,
}

ツールチェーン

moon.mod / moon.pkg マニフェストに対応した MoonBit moonc 0.10 以降。テストは wasm-gc、wasm、js、native で実行されます。

検証

moon check --target all
moon test
moon info