mutable API
Luna-Flow/luna-poly/mutable はミュータブルな多項式層のファサードです。自前の定義は持たず、共有の core の語彙、Luna-Flow/luna-generic の共通代数トレイト、4 つのミュータブル表現を再エクスポートするため、1 回のインポートで実行指向の API 全体を利用できます。immut ファサードと同じ名前をエクスポートします。
import {
"Luna-Flow/luna-poly/mutable",
}
以下の名前はすべて pub using による別名です。@mutable.DensePolynomial は @mutable/dense.DensePolynomial そのもの であり、@mutable.ExponentVector は @core.ExponentVector そのもの、つまり @immut.ExponentVector と同じ型です。メソッドは型を定義しているパッケージのページで説明しています。
多項式型
DensePolynomial
ミュータブルな密な一変数多項式です。mutable/dense API を参照してください。
pub using @dense {type DensePolynomial}
TermPolynomial
ソート済みの項配列で表されたミュータブルな多変数多項式です。mutable/term API を参照してください。
pub using @term {type TermPolynomial}
SparsePolynomial
順序付きマップで表されたミュータブルな多変数多項式です。mutable/sparse API を参照してください。
pub using @sparse {type SparsePolynomial}
ContextPolynomial, ContextSubstitutionValue
名前付き変数コンテキスト上のミュータブルな多項式と、その代入のペイロードです。mutable/context API を参照してください。
pub using @context {type ContextPolynomial}
pub using @context {type ContextSubstitutionValue}
この別名は型を再エクスポートしますが、コンストラクタを独立した値としては再エクスポートしません。期待される型が分かる位置では Scalar(v) と Polynomial(p) と書くか、完全な形 @mutable.ContextSubstitutionValue::Polynomial(p) を使ってください。
core の共有語彙
ExponentVector, Variable, VariableContext, PolynomialShape
単項式、名前付き変数、変数コンテキスト、形状メタデータです。core API を参照してください。
pub using @core {type ExponentVector}
pub using @core {type Variable}
pub using @core {type VariableContext}
pub using @core {type PolynomialShape}
UnivariateOps, MultivariateOps, ContextOps
辞書渡しによるジェネリックコードのための演算レコードです。core API を参照してください。
pub using @core {type UnivariateOps}
pub using @core {type MultivariateOps}
pub using @core {type ContextOps}
能力トレイト
観測トレイトとそのバンドルです。core API を参照してください。
pub using @core {trait HasLength}
pub using @core {trait HasDegree}
pub using @core {trait IsZero}
pub using @core {trait HasTermCount}
pub using @core {trait HasArity}
pub using @core {trait HasTotalDegree}
pub using @core {trait HasContext}
pub using @core {trait HasShape}
pub using @core {trait Clearable}
pub using @core {trait Copyable}
pub using @core {trait UnivariatePolynomial}
pub using @core {trait MultivariatePolynomial}
pub using @core {trait ContextualPolynomial}
pub using @core {trait MutablePolynomial}
すべてのミュータブルなコンテナは、それぞれの系統の観測バンドルに加えて Clearable、Copyable、MutablePolynomial を実装します。
luna-generic の代数トレイト
Zero, One, AddMonoid, MulMonoid, AddGroup, MulGroup, Semiring, Ring, Field, Num
Luna-Flow/luna-generic の代数的能力トレイトです。2 つ目のインポートなしで係数の制約を書けるように再エクスポートされています。
pub using @luna-generic {trait Zero}
pub using @luna-generic {trait One}
pub using @luna-generic {trait AddMonoid}
pub using @luna-generic {trait MulMonoid}
pub using @luna-generic {trait AddGroup}
pub using @luna-generic {trait MulGroup}
pub using @luna-generic {trait Semiring}
pub using @luna-generic {trait Ring}
pub using @luna-generic {trait Field}
pub using @luna-generic {trait Num}
fn[P : @mutable.MutablePolynomial + @mutable.IsZero] reset(p : P) -> Bool {
@mutable.Clearable::clear(p)
@mutable.IsZero::is_zero(p)
}
test "one import" {
let p = @mutable.DensePolynomial::from_coefficients([1, 1])
inspect(reset(p), content="true")
let s = @mutable.SparsePolynomial::from_array([([1U], 2)])
inspect(reset(s), content="true")
}