numpysane (0.24)

  * C broadcasting: I can pass strings in the extra, non-broadcastable
    arguments
  * C broadcasting: added support for precomputed cookies to do as much of
    the work as possible outside of the slice loop

 -- Dima Kogan <dkogan@debian.org>  Fri, 19 Jun 2020 10:55:47 -0700

numpysane (0.23)

  * Bug fix: C broadcasting doesn't write to uninitialized memory when
    given a size-0 matrix

 -- Dima Kogan <dkogan@debian.org>  Fri, 12 Jun 2020 19:16:25 -0700

numpysane (0.22)

  * broadcast_define() and the generated function checks its arguments for
    validity more thoroughly
  * outer() doesn't require identically-dimensioned input
  * mass rewrite of the documentation
  * Added C-level broadcasting
  * License change: any version of the LGPL instead of LGPL-3+

 -- Dima Kogan <dkogan@debian.org>  Sat, 14 Mar 2020 23:40:29 -0700

numpysane (0.20)

  * nps.matmult(..., out=out) produces in-place results when one of the
    arguments is 1D

 -- Dima Kogan <dkogan@debian.org>  Sat, 30 Nov 2019 18:20:49 -0800

numpysane (0.19)
    
  * Added mag() convenience function. mag(x) = sqrt(norm2(x))
  * Initial support for C-level broadcasting

 -- Dima Kogan <dima@secretsauce.net>  Thu, 28 Nov 2019 18:50:02 -0800
