]> gitweb.michael.orlitzky.com - sage.d.git/log
sage.d.git
4 years agomjo/matrix_vector: replace isomorphism with basis_representation().
Michael Orlitzky [Sun, 13 Sep 2020 16:51:45 +0000 (12:51 -0400)]
mjo/matrix_vector: replace isomorphism with basis_representation().

4 years agoinit.sage: use readline-like tab completion.
Michael Orlitzky [Fri, 28 Aug 2020 17:59:42 +0000 (13:59 -0400)]
init.sage: use readline-like tab completion.

4 years agoinit.sage: let the default LightBg colors apply.
Michael Orlitzky [Fri, 28 Aug 2020 17:53:25 +0000 (13:53 -0400)]
init.sage: let the default LightBg colors apply.

I use a light terminal background now.

4 years agoeja: implement JordanSpinEJA with BilinearFormEJA.
Michael Orlitzky [Tue, 9 Jun 2020 11:56:07 +0000 (07:56 -0400)]
eja: implement JordanSpinEJA with BilinearFormEJA.

4 years agoeja: make a BilinearFormEJA test do what it says.
Michael Orlitzky [Tue, 9 Jun 2020 11:41:47 +0000 (07:41 -0400)]
eja: make a BilinearFormEJA test do what it says.

4 years agoeja: re-disable base ring to algebra coercion.
Michael Orlitzky [Tue, 9 Jun 2020 10:25:01 +0000 (06:25 -0400)]
eja: re-disable base ring to algebra coercion.

4 years agoeja: new half-baked BilinearFormEJA class.
Michael Orlitzky [Mon, 8 Jun 2020 23:16:52 +0000 (19:16 -0400)]
eja: new half-baked BilinearFormEJA class.

4 years agoeja: fix the docs for the spin algebra multiplication.
Michael Orlitzky [Mon, 8 Jun 2020 23:16:29 +0000 (19:16 -0400)]
eja: fix the docs for the spin algebra multiplication.

4 years agoeja: add another TODO.
Michael Orlitzky [Thu, 2 Apr 2020 12:47:14 +0000 (08:47 -0400)]
eja: add another TODO.

4 years agomjo/cone: rawify some docstrings.
Michael Orlitzky [Sat, 1 Feb 2020 01:26:21 +0000 (20:26 -0500)]
mjo/cone: rawify some docstrings.

4 years agoinit.sage: add an alternate sitedir name.
Michael Orlitzky [Sat, 1 Feb 2020 01:25:39 +0000 (20:25 -0500)]
init.sage: add an alternate sitedir name.

4 years agomjo/eja/all.py: fix the name of an import.
Michael Orlitzky [Mon, 6 Jan 2020 13:31:28 +0000 (08:31 -0500)]
mjo/eja/all.py: fix the name of an import.

4 years agoeja: rename RealCartesianProductEJA -> HadamardEJA.
Michael Orlitzky [Fri, 27 Dec 2019 15:09:55 +0000 (10:09 -0500)]
eja: rename RealCartesianProductEJA -> HadamardEJA.

4 years agomjo/polynomial.py: add hacks for SageMath Trac #28855.
Michael Orlitzky [Mon, 9 Dec 2019 02:23:33 +0000 (21:23 -0500)]
mjo/polynomial.py: add hacks for SageMath Trac #28855.

4 years agomjo/symbol_sequence.py: fix another backslash escaping issue.
Michael Orlitzky [Mon, 9 Dec 2019 02:01:24 +0000 (21:01 -0500)]
mjo/symbol_sequence.py: fix another backslash escaping issue.

4 years agoeja: listify map/zip results for python-3.x compatibility.
Michael Orlitzky [Sun, 8 Dec 2019 00:01:13 +0000 (19:01 -0500)]
eja: listify map/zip results for python-3.x compatibility.

4 years agomjo/cone/doubly_nonnegative.py: don't check rank validity of None.
Michael Orlitzky [Sat, 7 Dec 2019 23:31:53 +0000 (18:31 -0500)]
mjo/cone/doubly_nonnegative.py: don't check rank validity of None.

4 years agomjo/interpolation.py: wrap map() calls in list() for python-3.x.
Michael Orlitzky [Sat, 7 Dec 2019 23:22:48 +0000 (18:22 -0500)]
mjo/interpolation.py: wrap map() calls in list() for python-3.x.

There's probably a better way to implement these functions for
python-3.x, but this fixes the tests for now.

4 years agocone/doubly_nonnegative.py: make two docstrings raw.
Michael Orlitzky [Sat, 7 Dec 2019 23:16:35 +0000 (18:16 -0500)]
cone/doubly_nonnegative.py: make two docstrings raw.

4 years agomjo: replace xrange() with range() for python-3.x compatibility.
Michael Orlitzky [Sat, 7 Dec 2019 23:15:29 +0000 (18:15 -0500)]
mjo: replace xrange() with range() for python-3.x compatibility.

4 years agoeja: use zip() instead of izip(), which doesn't exist in python-3.x.
Michael Orlitzky [Sat, 7 Dec 2019 23:09:48 +0000 (18:09 -0500)]
eja: use zip() instead of izip(), which doesn't exist in python-3.x.

4 years agosymbol_sequence.py: make a docstring raw.
Michael Orlitzky [Sat, 7 Dec 2019 23:09:26 +0000 (18:09 -0500)]
symbol_sequence.py: make a docstring raw.

5 years agoeja: rename is_minimal_idempotent() to is_primitive_idempotent().
Michael Orlitzky [Fri, 15 Nov 2019 17:44:03 +0000 (12:44 -0500)]
eja: rename is_minimal_idempotent() to is_primitive_idempotent().

The term "primitive" is more common in optimization, anyway. Also the
word "minimal" is a bit overloaded. Oh, and I added two more tests to
preclude zero from being primitive.

5 years agoeja: use peirce_decomposition() method to get the Peirce decomposition.
Michael Orlitzky [Fri, 15 Nov 2019 13:15:53 +0000 (08:15 -0500)]
eja: use peirce_decomposition() method to get the Peirce decomposition.

5 years agoeja: add another TODO before I forget.
Michael Orlitzky [Mon, 11 Nov 2019 16:26:21 +0000 (11:26 -0500)]
eja: add another TODO before I forget.

5 years agoeja: fix the Peirce decomposition and add docs/tests for it.
Michael Orlitzky [Sun, 10 Nov 2019 18:39:19 +0000 (13:39 -0500)]
eja: fix the Peirce decomposition and add docs/tests for it.

5 years agoeja: allow subalgebra_idempotent() to work in trivial EJAs.
Michael Orlitzky [Sun, 10 Nov 2019 15:47:42 +0000 (10:47 -0500)]
eja: allow subalgebra_idempotent() to work in trivial EJAs.

Every element is nilpotent in a trivial EJA, but we also know the only
idempotent element in such an algebra: its sole occupant. So return it.

5 years agoeja: add another non-element subalgebra example.
Michael Orlitzky [Sun, 10 Nov 2019 14:57:58 +0000 (09:57 -0500)]
eja: add another non-element subalgebra example.

5 years agoeja: make two subalgebra tests more general.
Michael Orlitzky [Sun, 10 Nov 2019 14:40:25 +0000 (09:40 -0500)]
eja: make two subalgebra tests more general.

All of the subalgebra tests are element-subalgebra tests, because I
copied them from the element-subalgebra class. I'll slowly make them
more robust.

5 years agoeja: remove redundant subalgebra stuff out of element subalgebras.
Michael Orlitzky [Sun, 10 Nov 2019 14:20:59 +0000 (09:20 -0500)]
eja: remove redundant subalgebra stuff out of element subalgebras.

These were simply remnants of a copy/paste refactoring.

5 years agoeja: don't wait for a non-nilpotent element in trivial algebras.
Michael Orlitzky [Sun, 10 Nov 2019 14:10:43 +0000 (09:10 -0500)]
eja: don't wait for a non-nilpotent element in trivial algebras.

5 years agoeja: remove broken one() implementation in subalgebras.
Michael Orlitzky [Sun, 10 Nov 2019 13:52:44 +0000 (08:52 -0500)]
eja: remove broken one() implementation in subalgebras.

The one() implementetion for the algebra generated by an element is
not, in general, correct for a subalgebra. Subalgebras can have
different identities than superalgebras -- take the Peirce
decomposition, for example.

5 years agoeja: remove a TODO that is done in theory.
Michael Orlitzky [Sun, 10 Nov 2019 01:56:51 +0000 (20:56 -0500)]
eja: remove a TODO that is done in theory.

5 years agoeja: start experimenting with single-element Peirce decomposition.
Michael Orlitzky [Sun, 10 Nov 2019 01:56:18 +0000 (20:56 -0500)]
eja: start experimenting with single-element Peirce decomposition.

5 years agoeja: refactor the element subalgebra stuff into generic subalgebra.
Michael Orlitzky [Sun, 10 Nov 2019 00:42:25 +0000 (19:42 -0500)]
eja: refactor the element subalgebra stuff into generic subalgebra.

A messy job, but I got the tests passing. They certainly need some
cleanup, and we should test non-element subalgebras too.

5 years agoeja: move eja_subalgebra to eja_element_subalgebra.
Michael Orlitzky [Sat, 9 Nov 2019 22:57:42 +0000 (17:57 -0500)]
eja: move eja_subalgebra to eja_element_subalgebra.

The plan is to cut/paste out all the stuff that works for a generic subalgebra.

5 years agoeja: add a priority TODO.
Michael Orlitzky [Sat, 9 Nov 2019 19:51:23 +0000 (14:51 -0500)]
eja: add a priority TODO.

5 years agoeja: drop custom gram_schmidt() routine that isn't noticeably faster.
Michael Orlitzky [Tue, 29 Oct 2019 01:57:11 +0000 (21:57 -0400)]
eja: drop custom gram_schmidt() routine that isn't noticeably faster.

Using Gram-Schmidt in SageMath is a bit of a pain, since you have to
put your vector space elements into a matrix, which means you have to
convert them to vectors first. And then you wind up transposing the
matrix twice, and then you have to convert everything back to vectors
and then back to algebra elements, dropping the zero vectors/elements
in the process. Sounds slow, right?

Well, testing shows that jumping through all those hoops and using the
default implementation isn't much slower than the custom routine I
wrote. So, for now, let's delete it.

Beware that this breaks the construction of subalgebras when the field
is not exact because SageMath won't orthonormalize over an inexact
field.

5 years agoeja: add is_minimal_idempotent() for elements.
Michael Orlitzky [Fri, 18 Oct 2019 23:13:16 +0000 (19:13 -0400)]
eja: add is_minimal_idempotent() for elements.

5 years agoeja: update the TODO.
Michael Orlitzky [Tue, 15 Oct 2019 12:29:25 +0000 (08:29 -0400)]
eja: update the TODO.

5 years agoeja: add a new TrivialEJA class and some tests for it.
Michael Orlitzky [Tue, 15 Oct 2019 12:28:08 +0000 (08:28 -0400)]
eja: add a new TrivialEJA class and some tests for it.

5 years agoeja: define the trace of an element in a trivial algebra.
Michael Orlitzky [Tue, 15 Oct 2019 12:27:44 +0000 (08:27 -0400)]
eja: define the trace of an element in a trivial algebra.

5 years agoeja: simplify the algebra charpoly method a bit.
Michael Orlitzky [Tue, 15 Oct 2019 12:23:10 +0000 (08:23 -0400)]
eja: simplify the algebra charpoly method a bit.

5 years agoeja: fix a rank test to work on trivial algebras.
Michael Orlitzky [Tue, 15 Oct 2019 12:15:43 +0000 (08:15 -0400)]
eja: fix a rank test to work on trivial algebras.

5 years agoeja: make some element tests work in trivial algebras.
Michael Orlitzky [Tue, 15 Oct 2019 12:13:41 +0000 (08:13 -0400)]
eja: make some element tests work in trivial algebras.

5 years agoeja: make two operator tests work in trivial algebras.
Michael Orlitzky [Tue, 15 Oct 2019 12:10:46 +0000 (08:10 -0400)]
eja: make two operator tests work in trivial algebras.

5 years agoeja: add the unique spectral_decomposition() for elements.
Michael Orlitzky [Mon, 14 Oct 2019 13:43:38 +0000 (09:43 -0400)]
eja: add the unique spectral_decomposition() for elements.

5 years agoeja: define subalgebra_generated_by() to contain the identity.
Michael Orlitzky [Mon, 14 Oct 2019 13:43:17 +0000 (09:43 -0400)]
eja: define subalgebra_generated_by() to contain the identity.

5 years agoeja: remove obsolete workaround for SageMath trac ticket #28327.
Michael Orlitzky [Mon, 14 Oct 2019 13:26:26 +0000 (09:26 -0400)]
eja: remove obsolete workaround for SageMath trac ticket #28327.

5 years agoeja: add TODO for the TrivialEJA class.
Michael Orlitzky [Mon, 14 Oct 2019 13:25:41 +0000 (09:25 -0400)]
eja: add TODO for the TrivialEJA class.

5 years agoeja: remove EJA tests from the operator spectral decomposition.
Michael Orlitzky [Mon, 14 Oct 2019 13:03:38 +0000 (09:03 -0400)]
eja: remove EJA tests from the operator spectral decomposition.

The operator spectral decomposition is the usual linear algebra one,
so it doesn't make sense to test EJA results there.

5 years agoeja: add a test for the inverse via charpoly.
Michael Orlitzky [Sun, 13 Oct 2019 00:15:09 +0000 (20:15 -0400)]
eja: add a test for the inverse via charpoly.

5 years agoeja: declare a utf-8 encoding and use it to write Korányi.
Michael Orlitzky [Sun, 13 Oct 2019 00:02:23 +0000 (20:02 -0400)]
eja: declare a utf-8 encoding and use it to write Korányi.

5 years agoeja: add another test for element inverses.
Michael Orlitzky [Thu, 10 Oct 2019 13:26:08 +0000 (09:26 -0400)]
eja: add another test for element inverses.

5 years agoeja: add inverse() method for operators.
Michael Orlitzky [Thu, 10 Oct 2019 13:24:17 +0000 (09:24 -0400)]
eja: add inverse() method for operators.

5 years agoeja: add is_invertible() for operators.
Michael Orlitzky [Thu, 10 Oct 2019 13:04:51 +0000 (09:04 -0400)]
eja: add is_invertible() for operators.

5 years agoeja: add more tests for the (now-working) spectral_decomposition().
Michael Orlitzky [Fri, 30 Aug 2019 15:50:57 +0000 (11:50 -0400)]
eja: add more tests for the (now-working) spectral_decomposition().

5 years agoeja: fix one() for subalgebras with orthonormal bases.
Michael Orlitzky [Fri, 30 Aug 2019 15:50:12 +0000 (11:50 -0400)]
eja: fix one() for subalgebras with orthonormal bases.

5 years agoeja: allow random_eja() to take a "field" argument.
Michael Orlitzky [Fri, 30 Aug 2019 15:48:59 +0000 (11:48 -0400)]
eja: allow random_eja() to take a "field" argument.

5 years agoeja: get a rudimentary spectral decomposition for operators working.
Michael Orlitzky [Fri, 30 Aug 2019 02:48:51 +0000 (22:48 -0400)]
eja: get a rudimentary spectral decomposition for operators working.

5 years agoeja: add "check" parameter to check if our field is real.
Michael Orlitzky [Fri, 30 Aug 2019 00:32:55 +0000 (20:32 -0400)]
eja: add "check" parameter to check if our field is real.

5 years agoeja: ensure that we can construct quaternion matrices over AA and RR.
Michael Orlitzky [Fri, 30 Aug 2019 00:17:41 +0000 (20:17 -0400)]
eja: ensure that we can construct quaternion matrices over AA and RR.

5 years agoeja: fix ComplexHermitianEJA over AA and RR.
Michael Orlitzky [Fri, 30 Aug 2019 00:13:36 +0000 (20:13 -0400)]
eja: fix ComplexHermitianEJA over AA and RR.

5 years agoeja: simplify the way we do field extensions.
Michael Orlitzky [Fri, 30 Aug 2019 00:11:25 +0000 (20:11 -0400)]
eja: simplify the way we do field extensions.

5 years agoAdd even more TODO items.
Michael Orlitzky [Thu, 29 Aug 2019 23:08:55 +0000 (19:08 -0400)]
Add even more TODO items.

5 years agoeja: ensure that we can construct RealSymmetricEJA over AA and RR.
Michael Orlitzky [Thu, 29 Aug 2019 23:08:33 +0000 (19:08 -0400)]
eja: ensure that we can construct RealSymmetricEJA over AA and RR.

5 years agoeja: reword a comment.
Michael Orlitzky [Thu, 29 Aug 2019 15:52:25 +0000 (11:52 -0400)]
eja: reword a comment.

5 years agoeja: add some more TODO items.
Michael Orlitzky [Thu, 29 Aug 2019 15:46:47 +0000 (11:46 -0400)]
eja: add some more TODO items.

5 years agoRevert "eja: always use the rationals for denormalized bases."
Michael Orlitzky [Thu, 29 Aug 2019 15:45:52 +0000 (11:45 -0400)]
Revert "eja: always use the rationals for denormalized bases."

This reverts commit 1e3bfabaac18a1118fc4afd632265d91d3d0ec6c.
It broke the tests, and next time I'll do it one step at a time
to keep them working.

5 years agoeja: fix a copy/paste-o.
Michael Orlitzky [Thu, 29 Aug 2019 15:45:31 +0000 (11:45 -0400)]
eja: fix a copy/paste-o.

5 years agoeja: insist that operator matrix base ring matches its domain's.
Michael Orlitzky [Thu, 29 Aug 2019 15:41:04 +0000 (11:41 -0400)]
eja: insist that operator matrix base ring matches its domain's.

5 years agoeja: fix some tests that broke with the gram-schmidt commit.
Michael Orlitzky [Thu, 29 Aug 2019 15:30:02 +0000 (11:30 -0400)]
eja: fix some tests that broke with the gram-schmidt commit.

5 years agoeja: ensure that we get a polynomial over the right ring in _charpoly_coeff().
Michael Orlitzky [Thu, 29 Aug 2019 14:06:01 +0000 (10:06 -0400)]
eja: ensure that we get a polynomial over the right ring in _charpoly_coeff().

5 years agoeja: convert back the the starting field after quaternion embedding.
Michael Orlitzky [Thu, 29 Aug 2019 13:44:07 +0000 (09:44 -0400)]
eja: convert back the the starting field after quaternion embedding.

We already do this for the complex simple EJA, and this un-breaks using
other fields.

5 years agoeja: always use the rationals for denormalized bases.
Michael Orlitzky [Thu, 29 Aug 2019 13:43:34 +0000 (09:43 -0400)]
eja: always use the rationals for denormalized bases.

5 years agoeja: add a WIP gram-schmidt for EJA elements.
Michael Orlitzky [Thu, 29 Aug 2019 12:56:56 +0000 (08:56 -0400)]
eja: add a WIP gram-schmidt for EJA elements.

This doesn't really work right now because we need a whole bunch of
algebraic numbers that we don't know a priori. I might need to suck
it up and just use AA instead of quadratic number fields.

5 years agoeja: remove an unused is_Matrix import.
Michael Orlitzky [Thu, 29 Aug 2019 12:55:18 +0000 (08:55 -0400)]
eja: remove an unused is_Matrix import.

5 years agoeja: fix incorrect usage of "Jordan axiom" -- I meant "associativity."
Michael Orlitzky [Tue, 27 Aug 2019 14:30:16 +0000 (10:30 -0400)]
eja: fix incorrect usage of "Jordan axiom" -- I meant "associativity."

5 years agoeja: introduce an intermediate class for "concrete" algebras.
Michael Orlitzky [Mon, 26 Aug 2019 04:00:00 +0000 (00:00 -0400)]
eja: introduce an intermediate class for "concrete" algebras.

There were two TODO items that are basically impossible: we can't
construct a "random" EJA from (say) an associative matrix algebra,
mainly because we don't know its rank. For that reason, it doesn't
make sense to have random_instance() defined in the parent class.
Now there's a subclass (KnownRankEJA) with those methods.

5 years agoeja: refactor the matrix EJA hierarchy (mainly constructors) a bit.
Michael Orlitzky [Mon, 26 Aug 2019 03:40:41 +0000 (23:40 -0400)]
eja: refactor the matrix EJA hierarchy (mainly constructors) a bit.

5 years agoeja: simplify two subclass docstrings.
Michael Orlitzky [Mon, 26 Aug 2019 03:35:55 +0000 (23:35 -0400)]
eja: simplify two subclass docstrings.

5 years agoeja: use izip() instead of zip() in a few places.
Michael Orlitzky [Mon, 26 Aug 2019 03:31:56 +0000 (23:31 -0400)]
eja: use izip() instead of zip() in a few places.

5 years agoeja: use keywords to pass keyword args (makes constructor more robust).
Michael Orlitzky [Mon, 26 Aug 2019 02:53:56 +0000 (22:53 -0400)]
eja: use keywords to pass keyword args (makes constructor more robust).

5 years agoeja: simplify "span of powers" computation in subalgebras.
Michael Orlitzky [Mon, 26 Aug 2019 00:13:28 +0000 (20:13 -0400)]
eja: simplify "span of powers" computation in subalgebras.

5 years agoeja: replace range() by xrange() in a few places.
Michael Orlitzky [Sun, 25 Aug 2019 23:09:03 +0000 (19:09 -0400)]
eja: replace range() by xrange() in a few places.

5 years agoeja: use precomputed operator in two tests.
Michael Orlitzky [Sun, 25 Aug 2019 22:45:22 +0000 (18:45 -0400)]
eja: use precomputed operator in two tests.

5 years agoeja: speed up the computation of element powers.
Michael Orlitzky [Sun, 25 Aug 2019 22:39:15 +0000 (18:39 -0400)]
eja: speed up the computation of element powers.

5 years agoeja: fix a bug in the charpoly fast path for complex/quaternion matrices.
Michael Orlitzky [Sat, 24 Aug 2019 04:06:56 +0000 (00:06 -0400)]
eja: fix a bug in the charpoly fast path for complex/quaternion matrices.

5 years agoeja: refactor and fix the fast charpoly stuff that I broke recently.
Michael Orlitzky [Sat, 24 Aug 2019 02:09:08 +0000 (22:09 -0400)]
eja: refactor and fix the fast charpoly stuff that I broke recently.

5 years agoeja: fix computation of the max test case sizes.
Michael Orlitzky [Sat, 24 Aug 2019 02:08:53 +0000 (22:08 -0400)]
eja: fix computation of the max test case sizes.

5 years agoeja: make a test agree with its comment.
Michael Orlitzky [Sat, 24 Aug 2019 02:06:28 +0000 (22:06 -0400)]
eja: make a test agree with its comment.

5 years agoeja: add fast natural_inner_product() overrides for complex/quaternions.
Michael Orlitzky [Sat, 24 Aug 2019 01:44:29 +0000 (21:44 -0400)]
eja: add fast natural_inner_product() overrides for complex/quaternions.

5 years agoeja: add the RealMatrixEuclideanJordanAlgebra class.
Michael Orlitzky [Sat, 24 Aug 2019 01:13:48 +0000 (21:13 -0400)]
eja: add the RealMatrixEuclideanJordanAlgebra class.

We already had analogues for complex and quaternion matrices. The real
one should have been there all along too.

5 years agoeja: drop some very slow and very pointless rank() tests.
Michael Orlitzky [Sat, 24 Aug 2019 00:45:05 +0000 (20:45 -0400)]
eja: drop some very slow and very pointless rank() tests.

5 years agoeja: replace RR with RLF in one test.
Michael Orlitzky [Sat, 24 Aug 2019 00:29:36 +0000 (20:29 -0400)]
eja: replace RR with RLF in one test.

I guess we occasionally get fractions (in QQ) that aren't in RR due
to precision issues? Whatever, they're in RLF.

5 years agoeja: add random_elements() method to get multiple random elements at once.
Michael Orlitzky [Sat, 24 Aug 2019 00:02:28 +0000 (20:02 -0400)]
eja: add random_elements() method to get multiple random elements at once.

5 years agoeja: remove some unused imports from eja_utils.
Michael Orlitzky [Fri, 23 Aug 2019 23:53:02 +0000 (19:53 -0400)]
eja: remove some unused imports from eja_utils.

5 years agoeja: delete redundant Jordan axiom tests.
Michael Orlitzky [Fri, 23 Aug 2019 23:26:45 +0000 (19:26 -0400)]
eja: delete redundant Jordan axiom tests.

5 years agoeja: refactor the class hierarchy to separate the matrix EJAs.
Michael Orlitzky [Fri, 23 Aug 2019 20:14:18 +0000 (16:14 -0400)]
eja: refactor the class hierarchy to separate the matrix EJAs.

5 years agoeja: delete unused vec2mat() function.
Michael Orlitzky [Fri, 23 Aug 2019 19:22:56 +0000 (15:22 -0400)]
eja: delete unused vec2mat() function.