Changed - Add back the optimizations with the lazy `._chunks` that was removed in 0.19.0
0.20.0
Added - `e3nn.Irreps.mul_gcd` - `e3nn.IrrepsArray.extend_with_zeros` to extend an array with zeros, can be useful for residual connections
Changed - rewrite `e3nn.tensor_square` to be simpler (and faster?) - use `jax.scipy.special.lpmn_values` to implement `e3nn.legendre`. Faster on GPU and supports reverse-mode differentiation. - **[BREAKING]** Change the output format of `e3nn.legendre`!
Fixed - Add back a lazy `._chunks` in `e3nn.IrrepsArray` to fix issue 38
0.19.3
Fixed - Fix missing support for zero flags in `e3nn.elementwise_tensor_product`
0.19.2
Changed - **[BREAKING]** Move `Instruction`, `FunctionalTensorProduct` and `FunctionalFullyConnectedTensorProduct` into `e3nn.legacy` submodule - Reimplement `e3nn.tensor_product` and `e3nn.elementwise_tensor_product` in a simpler way
0.19.1
Added - `e3nn.utils.vmap` to propagate `zero_flags` in the vectorized function.
Changed - Simplify the tetris examples
Fixed - Example of what is fixed: assume `x.ndim = 2`, allow `x[:, None]` but prevent `x[:, :, None]` and `x[..., None]`
0.19.0
Changed - **[BREAKING]** `e3nn.flax.Linear` and `e3nn.haiku.Linear` now don't output the impossible irreps anymore. To force the output of all irreps, use `force_irreps_out = True`. For instance `e3nn.flax.Linear("0e + 1o")("0e")` will now return `"0e"` instead of `"0e + 1o"`. - **[BREAKING]** `e3nn.utils.assert_equivariant` has the same signature as `e3nn.utils.equivariance_test` - **[BREAKING]** Move `as_irreps_array`, `zeros` and `zeros_like` from `e3nn.IrrepsArray` to `e3nn` - **[BREAKING]** Move `IrrepsArray.from_list` to `e3nn.from_chunks` - **[BREAKING]** Rename `IrrepsArray.list` into `IrrepsArray.chunks` - **[BREAKING]** Rename `IrrepsArray.remove_nones` into `IrrepsArray.remove_zero_chunks` - `e3nn.IrrepsArray` has now only `.array` as data attribute.
Added - `e3nn.IrrepsArray.rechunk` - `e3nn.IrrepsArray.zero_flags` a tuple of bools that indicates which chunks are zero