Releases: qojulia/SecondQuantizedAlgebra.jl
Releases · qojulia/SecondQuantizedAlgebra.jl
v0.7.2
v0.7.1
v0.7.0
SecondQuantizedAlgebra v0.7.0
Breaking changes
Fixed
- Averaging an indexed sum whose coefficient depends on the summation index no longer drops the scope or lets the index dangle outside the
Σ.averagepreviously stampedSumIndices/SumNonEqualmetadata on the average leaf and emittedcoeff * leaf; SymbolicUtils discards metadata on composite/numerically-scaled nodes, soaverage(Σ(u(kk,k), k))collapsed to a bareu(kk,k)and an index-dependent coefficient was hoisted outside the sum. Index-dependent terms are now wrapped in a dedicated moment-layer node (SumFunc/sym_sum) carrying the summation scope as aSumScopeargument, so the whole averaged body stays inside the sum and the representation survivesAdd/Mulcanonicalization. Because the scope rides as an argument (not metadata, whichisequal/hashignore), differently-scoped sums over the same body no longer wrongly cancel in a subtraction. Newis_indexed_sumpredicate;has_sum_metadata/get_sum_indices/get_sum_non_equalretained and now read the node (#175).
Changed
make_time_dependenton an averaged indexed sum now yieldsΣ(i) ⟨a_i⟩(t)(per-site time-dependent moments under the sum) instead of⟨Σ_i a_i⟩(t)(one collective lumped variable), matching the non-lifted displayΣ(i) ⟨a_i⟩and giving indexable per-site unknowns for indexed equations.- Operator prefactors are stored as a concrete
Coeffwith three forms (a nativeComplexF64fast path, a sparse parameter polynomial for products and sums of named parameters, and aComplex{Num}fallback) instead of alwaysComplex{Num}. Numeric and parameter-polynomial coefficient arithmetic stays native and never routes through SymbolicUtils hashconsing; a coefficient lowers toComplex{Num}only at the symbolic boundaries (substitute/average/printing/prefactor). The polynomial arithmetic is fully type-stable, with factor identity viaobjectid/===(which assumes SymbolicUtils hashconsing is enabled, the default). Polynomial coefficients are kept in canonical expanded form, so(g+h)^2is stored asg^2 + 2*g*h + h^2. Measured speedups overComplex{Num}: numeric power expansion about 2.1×, single-modeH^4about 2.65×, many-modeH^2about 3.5×, nested commutator about 2.4× (#164, #183).
Merged pull requests:
- Averaging an indexed sum (#179) (@oameye)
- fix: point Benchmarks badge to live /benchmark/ dir (#180) (@oameye)
- build(ci): only run Downstream when changes in src (#181) (@oameye)
- fix: point Benchmarks badge to live /benchmark/ dir (#182) (@oameye)
- perf: Native numeric and parameter-polynomial coefficients (#183) (@oameye)
Closed issues:
v0.6.5
SecondQuantizedAlgebra v0.6.5
Merged pull requests:
- feat: support @variables g::Number (#177) (@oameye)
v0.6.4
SecondQuantizedAlgebra v0.6.4
Merged pull requests:
v0.6.3
SecondQuantizedAlgebra v0.6.3
Merged pull requests:
v0.6.2
SecondQuantizedAlgebra v0.6.2
Merged pull requests:
v0.6.1
SecondQuantizedAlgebra v0.6.1
Merged pull requests:
v0.6.0
SecondQuantizedAlgebra v0.6.0
Breaking changes
- Average expressions now use
Numberas their Symbolicssymtype, and the newmake_time_dependenthelper lifts them into ModelingToolkit-style time-dependent unknowns while preserving average metadata for round-tripping.
Merged pull requests:
- build(deps): bump crate-ci/typos from 1.47.1 to 1.47.2 (#165) (@dependabot[bot])
- build(deps): bump codecov/codecov-action from 6 to 7 (#166) (@dependabot[bot])
- Average as mtk unknown (#168) (@oameye)
v0.5.2
SecondQuantizedAlgebra v0.5.2
Merged pull requests: