What's Changed
* Support single install from top-level directory by garth-wells in https://github.com/FEniCS/basix/pull/263
* Remove Intel 'Classic' compiler from CI by garth-wells in https://github.com/FEniCS/basix/pull/264
* Allow discontinuous elements by mscroggs in https://github.com/FEniCS/basix/pull/260
* Reset FFCx and DOLFINx branches by mscroggs in https://github.com/FEniCS/basix/pull/265
* Add Issac's GLL points on triangle and tetrahedron by mscroggs in https://github.com/FEniCS/basix/pull/267
* Disable GLL points on pyramid by mscroggs in https://github.com/FEniCS/basix/pull/271
* Round data_size up, not down by mscroggs in https://github.com/FEniCS/basix/pull/272
* Make numba requirement optional by mscroggs in https://github.com/FEniCS/basix/pull/273
* Generalise lattice creation by mscroggs in https://github.com/FEniCS/basix/pull/278
* Remove type_to_str and str_to_type functions from cpp by mscroggs in https://github.com/FEniCS/basix/pull/270
* Add Chebyshev point lattice by mscroggs in https://github.com/FEniCS/basix/pull/279
* Reset branches by mscroggs in https://github.com/FEniCS/basix/pull/280
* Update API to use vector by chrisrichardson in https://github.com/FEniCS/basix/pull/281
* Remove include set by mscroggs in https://github.com/FEniCS/basix/pull/282
* Add centroid simplex method by mscroggs in https://github.com/FEniCS/basix/pull/283
* Add GL points for Lagrange by mscroggs in https://github.com/FEniCS/basix/pull/284
* Use `lib/` when installing the C++ library using Python by garth-wells in https://github.com/FEniCS/basix/pull/287
* Use CMake relative path when installing with top level pip by garth-wells in https://github.com/FEniCS/basix/pull/288
* Do not install xtensor-blas via CMake by garth-wells in https://github.com/FEniCS/basix/pull/289
* Remove xtensor-blas dependency by garth-wells in https://github.com/FEniCS/basix/pull/291
* Add interpolation between elements by mscroggs in https://github.com/FEniCS/basix/pull/292
* Improve documentation of implementation by mscroggs in https://github.com/FEniCS/basix/pull/294
* Update docs by mscroggs in https://github.com/FEniCS/basix/pull/295
* Builds and tests manylinux wheels for various x86-64 Pythons by jhale in https://github.com/FEniCS/basix/pull/286
* Tweak wheel action. by jhale in https://github.com/FEniCS/basix/pull/297
* Jhale/wheel action tweaks by jhale in https://github.com/FEniCS/basix/pull/298
* Improve wheel creation by jhale in https://github.com/FEniCS/basix/pull/299
* Missing ref in build wheel action by jhale in https://github.com/FEniCS/basix/pull/300
* More RPATH adjustments by jhale in https://github.com/FEniCS/basix/pull/301
* add BDMCE and BDMCF to map of finite element names by mscroggs in https://github.com/FEniCS/basix/pull/302
* Improve documentation by mscroggs in https://github.com/FEniCS/basix/pull/303
* Add helper function that returns shape of the array used in FiniteElement::tabulate by garth-wells in https://github.com/FEniCS/basix/pull/308
* Remove duplicate tabulate by mscroggs in https://github.com/FEniCS/basix/pull/309
* reset FFCx branch by mscroggs in https://github.com/FEniCS/basix/pull/312
* Write some demos by mscroggs in https://github.com/FEniCS/basix/pull/307
* Allow creation of low order Lagrange without a variant by mscroggs in https://github.com/FEniCS/basix/pull/315
* Use an enum instead of a string for quadrature rules by mscroggs in https://github.com/FEniCS/basix/pull/317
* revert FFCx and DOLFINx branches to main by mscroggs in https://github.com/FEniCS/basix/pull/318
* Fix small typo by IgorBaratta in https://github.com/FEniCS/basix/pull/319
* Allow DG0 on a point by mscroggs in https://github.com/FEniCS/basix/pull/316
* Tighten up scoping by garth-wells in https://github.com/FEniCS/basix/pull/320
* Add JOSS paper by mscroggs in https://github.com/FEniCS/basix/pull/321
* Add VTK variant of Lagrange by mscroggs in https://github.com/FEniCS/basix/pull/293
* Add simple cpp demo by IgorBaratta in https://github.com/FEniCS/basix/pull/322
* Fix for 'maybe unused' variable in release mode by jorgensd in https://github.com/FEniCS/basix/pull/323
* Update JOSS paper by mscroggs in https://github.com/FEniCS/basix/pull/324
* Apply "iwyu" suggestions by IgorBaratta in https://github.com/FEniCS/basix/pull/326
* Use MODULE not SHARED in CMakeLists.txt by chrisrichardson in https://github.com/FEniCS/basix/pull/327
* Implement blocked interpolation by mscroggs in https://github.com/FEniCS/basix/pull/328
* Remove redundant function `FiniteElement::num_points` by garth-wells in https://github.com/FEniCS/basix/pull/329
* Added documentation of interpolation_matrix by mscroggs in https://github.com/FEniCS/basix/pull/330
* Correct shape in interpolation matrix docs by mscroggs in https://github.com/FEniCS/basix/pull/331
* Remove `compute_expansion_coefficients` and store dual matrix by mscroggs in https://github.com/FEniCS/basix/pull/333
* Remove interpolate() by mscroggs in https://github.com/FEniCS/basix/pull/334
* Revert to DOLFINx main by mscroggs in https://github.com/FEniCS/basix/pull/335
* Restructure implementation of Nedelec spaces by mscroggs in https://github.com/FEniCS/basix/pull/336
* Use fixed-width xtensor arrays now that we don't support the legacy I… by garth-wells in https://github.com/FEniCS/basix/pull/337
* Add AAE, AAF as alternative names by mscroggs in https://github.com/FEniCS/basix/pull/339
* Reduce quadrature orders used in element creation by mscroggs in https://github.com/FEniCS/basix/pull/338
* Add Xiao-Gimbutas quadrature on tetrahedra by mscroggs in https://github.com/FEniCS/basix/pull/340
* Return map function for an element by garth-wells in https://github.com/FEniCS/basix/pull/342
* Remove public map_type by jorgensd in https://github.com/FEniCS/basix/pull/344
* Improved CMake/pybind11/python3 interaction by jhale in https://github.com/FEniCS/basix/pull/343
* Add information about highest degree of polynomials in a finite element by mscroggs in https://github.com/FEniCS/basix/pull/346
* Change quadrature numbering to ijk by IgorBaratta in https://github.com/FEniCS/basix/pull/350
* Add tensor product representation of Lagrange on quads and hexes by mscroggs in https://github.com/FEniCS/basix/pull/349
* Add z direction for tensor product test by adeebkor in https://github.com/FEniCS/basix/pull/353
* Reordering of GLL quad points and weights by adeebkor in https://github.com/FEniCS/basix/pull/355
* Create FUNDING.yml by jhale in https://github.com/FEniCS/basix/pull/358
* Remove xtensor, make download via git explicit option by jhale in https://github.com/FEniCS/basix/pull/357
* Improve polyset by mscroggs in https://github.com/FEniCS/basix/pull/360
* Add contributing and support info to README by mscroggs in https://github.com/FEniCS/basix/pull/362
* Minor suggestions and typo fixes by IgorBaratta in https://github.com/FEniCS/basix/pull/364
* a -> an by mscroggs in https://github.com/FEniCS/basix/pull/365
* Allow integral moments to be taken against polynomials by mscroggs in https://github.com/FEniCS/basix/pull/361
* Set demo CMake language to CXX by garth-wells in https://github.com/FEniCS/basix/pull/367
* Store the Lagrange variant when creating a Lagrange element by mscroggs in https://github.com/FEniCS/basix/pull/368
* contributing: Fix typo by wence- in https://github.com/FEniCS/basix/pull/371
* Python packaging fixes by jhale in https://github.com/FEniCS/basix/pull/372
* Minor housekeeping by garth-wells in https://github.com/FEniCS/basix/pull/373
* Check if two elements are equal by mscroggs in https://github.com/FEniCS/basix/pull/374
* Add more Python versions to CI, including Python 3.10. by garth-wells in https://github.com/FEniCS/basix/pull/378
* Fix value shape for Lagrange elements by garth-wells in https://github.com/FEniCS/basix/pull/377
* Correct JOSS paper: functionals must be linear by mscroggs in https://github.com/FEniCS/basix/pull/380
* Add variants of serendipity in 1D by mscroggs in https://github.com/FEniCS/basix/pull/382
* Reset FFCx branch by mscroggs in https://github.com/FEniCS/basix/pull/383
* Add variants of DPC spaces by mscroggs in https://github.com/FEniCS/basix/pull/384
* Reset branches by mscroggs in https://github.com/FEniCS/basix/pull/385
* Variants of 2D and 3D serendipity by mscroggs in https://github.com/FEniCS/basix/pull/386
* reset branches by mscroggs in https://github.com/FEniCS/basix/pull/387
* Update syntax for wheel build by jhale in https://github.com/FEniCS/basix/pull/388
* Remove -DDEBUG definition that doesn't do anything. by garth-wells in https://github.com/FEniCS/basix/pull/389
* Store variant for discontinuous Lagrange by mscroggs in https://github.com/FEniCS/basix/pull/391
* Convert variant names to lowercase to allow eg "GLL" to be used by mscroggs in https://github.com/FEniCS/basix/pull/392
* Test if interpolation matrix is an identity matrix by mscroggs in https://github.com/FEniCS/basix/pull/396
* Make serendipity family polysets more stable by mscroggs in https://github.com/FEniCS/basix/pull/397
* Remove memory assignment in polyset by mscroggs in https://github.com/FEniCS/basix/pull/393
* Add & and const by mscroggs in https://github.com/FEniCS/basix/pull/398
* Avoid C++ errors by mscroggs in https://github.com/FEniCS/basix/pull/399
* Throw RuntimeError if user tries to make element with negative degree by mscroggs in https://github.com/FEniCS/basix/pull/400
* Implement discontinuous Regge by mscroggs in https://github.com/FEniCS/basix/pull/401
* Allow user to create a custom element by mscroggs in https://github.com/FEniCS/basix/pull/402
* Compute entity transformations algorithmically for all elements rather than implementing them for each element by mscroggs in https://github.com/FEniCS/basix/pull/406
* Remove `highest_degree` by mscroggs in https://github.com/FEniCS/basix/pull/408
* Validate inputs to `create_custom_element` by mscroggs in https://github.com/FEniCS/basix/pull/410
* Add custom element demo by mscroggs in https://github.com/FEniCS/basix/pull/407
* spaces before math in demo markup by mscroggs in https://github.com/FEniCS/basix/pull/411
* Add inline math to demo by mscroggs in https://github.com/FEniCS/basix/pull/412
* Raise more useful RuntimeErrors, include empty arrays in x and M by mscroggs in https://github.com/FEniCS/basix/pull/415
* Simplify calculation of e by mscroggs in https://github.com/FEniCS/basix/pull/416
* Wrap elements to be used directly in UFL by mscroggs in https://github.com/FEniCS/basix/pull/405
* Run DOLFINx C++ unit tests on PR CI by mscroggs in https://github.com/FEniCS/basix/pull/426
* Add docs to polyset.h by mscroggs in https://github.com/FEniCS/basix/pull/427
* Use integral moments to define Regge elements by mscroggs in https://github.com/FEniCS/basix/pull/413
* Add checks on dimension of entries in x and M when creating custom element by mscroggs in https://github.com/FEniCS/basix/pull/432
* Add HHJ element on a triangle by mscroggs in https://github.com/FEniCS/basix/pull/414
* Add scaled identity map by mscroggs in https://github.com/FEniCS/basix/pull/417
* Add demo for conforming CR custom element via custom element interface by mscroggs in https://github.com/FEniCS/basix/pull/433
* Add test that elements of the same family are continuous between different cell types by mscroggs in https://github.com/FEniCS/basix/pull/434
* Add names for HHJ element by mscroggs in https://github.com/FEniCS/basix/pull/435
* Add FFCx tests workflow by mscroggs in https://github.com/FEniCS/basix/pull/437
* Allow variants to be passed into more elements by mscroggs in https://github.com/FEniCS/basix/pull/436
* Reset FFCx branch by mscroggs in https://github.com/FEniCS/basix/pull/439
* Make custom element demo clearer by mscroggs in https://github.com/FEniCS/basix/pull/440
* Document polyset order by mscroggs in https://github.com/FEniCS/basix/pull/443
* Remove images from demo folder by mscroggs in https://github.com/FEniCS/basix/pull/445
New Contributors
* wence- made their first contribution in https://github.com/FEniCS/basix/pull/371
**Full Changelog**: https://github.com/FEniCS/basix/compare/v0.3.0...v0.4.0