TensorCast.jl Versions Save

It slices, it dices, it splices!

v0.4.8

3 weeks ago

TensorCast v0.4.8

Diff since v0.4.7

Merged pull requests:

  • allow LazyArrays 1 (#73) (@KristofferC)

v0.4.7

1 month ago

TensorCast v0.4.7

Diff since v0.4.6

Merged pull requests:

  • Add tests based on einops paper (#54) (@RomeoV)

Closed issues:

  • @cast into an SMatrix (#63)

v0.4.6

1 year ago

TensorCast v0.4.6

Diff since v0.4.5

Closed issues:

  • CUDA array scalar getindex error (#25)
  • scalar getindex when shared index changes order (#28)
  • Repeat example from the docs is broken (#46)
  • Smarter repeat? (#48)

Merged pull requests:

  • Allow repeat-like patterns (#51) (@mcabbott)

v0.4.5

1 year ago

TensorCast v0.4.5

Diff since v0.4.4

v0.4.4

1 year ago

TensorCast v0.4.4

Diff since v0.4.3

Closed issues:

  • Ternary operator not understood (#35)

v0.4.3

2 years ago

TensorCast v0.4.3

Diff since v0.4.2

v0.4.2

3 years ago

TensorCast v0.4.2

Diff since v0.4.1

Closed issues:

  • Inference failure in broadcasting (#45)

v0.4.1

3 years ago

TensorCast v0.4.1

Diff since v0.4.0

Closed issues:

  • Problem displaying error message (pretty not defined) (#32)

Merged pull requests:

  • Broadcast a splat (#43) (@mcabbott)

v0.4.0

3 years ago

TensorCast v0.4.0

Version 0.4 has significant changes:

  • Broadcasting options and index ranges are now written @cast @avx A[i,j] := B[i⊗j] (i ∈ 1:3) instead of @cast A[i,j] := B[i⊗j] i:3, axv (using LoopVectorization.jl for the broadcast, and supplying the range of i).
  • To return an array without naming it, write an underscore @cast _[i] := ... rather than omitting it entirely.
  • Some fairly obscure features have been removed for simplicity: Indexing by an array @cast A[i,k] := B[i,J[k]] and by a range @cast C[i] := f(D[1:3, i]) will no longer work.
  • Some dimension checks are inserted by default; previously the option assert did this.
  • It uses LazyStack.jl to combine handles slices, simplifying earlier code. This is lazier by default, write @cast A[i,k] := log(B[k][i]) lazy=false (with a new keyword option) to glue into an Array before broadcasting.
  • It uses TransmuteDims.jl to handle all permutations & many reshapes. This is lazier by default -- the earlier code sometimes copied to avoid reshaping a PermutedDimsArray. This isn't always faster, though, and can be disabled by lazy=false.

New features in 0.4:

  • Indices can appear ouside of indexing: @cast A[i,j] = i+j translates to A .= axes(A,1) .+ axes(A,2)'
  • The ternary operator ? : can appear on the right, and will be broadcast correctly.
  • All operations should now support OffsetArrays.jl.
  • You can repeat by broadcasting over indices not appearing on the right, such as @cast r[i,(k,j)] = m[i,j]

Diff since v0.3.3

Closed issues:

  • Allow naked indices? (#37)
  • Friendly request for new tag, for compat (#40)

Merged pull requests:

  • Allow indices to appear on RHS (#38) (@mcabbott)
  • Handle OffsetArrays better, even in reshape (#39) (@mcabbott)

v0.3.3

3 years ago

TensorCast v0.3.3

Diff since v0.3.2

Closed issues:

  • Slightly misleading error (DimensionMismatch) when destination is actually not defined (#30)

Merged pull requests:

  • Fix #32 (#41) (@mcabbott)

And, these are really for version 0.4, not tagged yet:

  • Simplify glue using LazyStack (#17) (@mcabbott)
  • Simplify by not allowing gather operations, nor indexing by ranges (#18) (@mcabbott)
  • CompatHelper: bump compat for "StaticArrays" to "1.0" (#29) (@github-actions[bot])
  • Use TransmuteDims (#31) (@mcabbott)
  • Turn on assertions by default (#33) (@mcabbott)
  • Re-work how options work (#34) (@mcabbott)
  • Change laziness options, introduce a keyword (#36) (@mcabbott)