]> gitweb.michael.orlitzky.com - sage.d.git/log
sage.d.git
4 years agoeja: fix random_instance() for JordanSpinEJA.
Michael Orlitzky [Sun, 22 Nov 2020 15:22:47 +0000 (10:22 -0500)]
eja: fix random_instance() for JordanSpinEJA.

4 years agoeja: add random_instance() for BilinearFormEJA.
Michael Orlitzky [Sun, 22 Nov 2020 14:57:43 +0000 (09:57 -0500)]
eja: add random_instance() for BilinearFormEJA.

4 years agoeja: alter BilinearFormEJA to take only a matrix argument.
Michael Orlitzky [Sun, 22 Nov 2020 14:32:32 +0000 (09:32 -0500)]
eja: alter BilinearFormEJA to take only a matrix argument.

The BilinearFormEJA constructor originally took both the size "n" and
a bilinear form matrix "B" that acted on the x-bar component of an
algebra element. This was a bit silly: except when n=0, we can
determine the size of the algebra from the bilinear form matrix.

Now, we insist that the entire matrix "B" be passed in, including the
upper-left "1" block. This allows us to pass in a matrix of size zero
to get the trivial algebra, and in all other cases, to infer that the
dimension of the algebra is the size of the matrix.

4 years agoeja: simplify the element-subalgebra one() method.
Michael Orlitzky [Sun, 22 Nov 2020 13:53:01 +0000 (08:53 -0500)]
eja: simplify the element-subalgebra one() method.

4 years agoeja: add a random comment.
Michael Orlitzky [Sat, 21 Nov 2020 19:00:44 +0000 (14:00 -0500)]
eja: add a random comment.

4 years agoeja: add yet another TODO.
Michael Orlitzky [Sat, 21 Nov 2020 18:58:45 +0000 (13:58 -0500)]
eja: add yet another TODO.

4 years agoeja: minor improvement to the algebra one() method.
Michael Orlitzky [Sat, 21 Nov 2020 18:57:32 +0000 (13:57 -0500)]
eja: minor improvement to the algebra one() method.

4 years agoeja: try to speed up super/subalgebra conversion.
Michael Orlitzky [Sat, 21 Nov 2020 18:39:32 +0000 (13:39 -0500)]
eja: try to speed up super/subalgebra conversion.

4 years agoeja: drop redundant vector->superalgebra-element conversion.
Michael Orlitzky [Sat, 21 Nov 2020 16:44:27 +0000 (11:44 -0500)]
eja: drop redundant vector->superalgebra-element conversion.

4 years agoeja: expand an existing subalgebra test.
Michael Orlitzky [Sat, 21 Nov 2020 16:37:50 +0000 (11:37 -0500)]
eja: expand an existing subalgebra test.

4 years agoeja: add another TODO item.
Michael Orlitzky [Sat, 21 Nov 2020 13:22:27 +0000 (08:22 -0500)]
eja: add another TODO item.

4 years agoeja: update a few TODO items.
Michael Orlitzky [Sat, 21 Nov 2020 13:19:19 +0000 (08:19 -0500)]
eja: update a few TODO items.

4 years agoeja: drop cached superalgebra basis from subalgebras.
Michael Orlitzky [Sat, 21 Nov 2020 13:16:09 +0000 (08:16 -0500)]
eja: drop cached superalgebra basis from subalgebras.

4 years agoeja: drop an unused variable.
Michael Orlitzky [Sat, 21 Nov 2020 12:37:35 +0000 (07:37 -0500)]
eja: drop an unused variable.

4 years agoeja: echelonize a matrix manually to ensure a decent algorithm is used.
Michael Orlitzky [Sat, 21 Nov 2020 02:32:57 +0000 (21:32 -0500)]
eja: echelonize a matrix manually to ensure a decent algorithm is used.

4 years agoeja: don't compute an unused vector space for the element subalgebra.
Michael Orlitzky [Sat, 21 Nov 2020 02:31:54 +0000 (21:31 -0500)]
eja: don't compute an unused vector space for the element subalgebra.

4 years agoeja: add a comment about sub-subalgebra representations.
Michael Orlitzky [Sat, 21 Nov 2020 02:30:51 +0000 (21:30 -0500)]
eja: add a comment about sub-subalgebra representations.

4 years agoeja: move the TrivialEJA random_instance() into an override method.
Michael Orlitzky [Sat, 21 Nov 2020 00:22:35 +0000 (19:22 -0500)]
eja: move the TrivialEJA random_instance() into an override method.

4 years agoeja: don't orthonormalize the basis when computing minimal polynomials.
Michael Orlitzky [Sat, 21 Nov 2020 00:20:45 +0000 (19:20 -0500)]
eja: don't orthonormalize the basis when computing minimal polynomials.

4 years agoeja: drop obsolete _a_regular_element() override method.
Michael Orlitzky [Fri, 20 Nov 2020 23:54:38 +0000 (18:54 -0500)]
eja: drop obsolete _a_regular_element() override method.

4 years agoeja: make _max_random_instance_size() abstract.
Michael Orlitzky [Fri, 20 Nov 2020 15:12:30 +0000 (10:12 -0500)]
eja: make _max_random_instance_size() abstract.

4 years agoeja: rename _max_test_case_size() -> _max_random_instance_size().
Michael Orlitzky [Fri, 20 Nov 2020 14:51:46 +0000 (09:51 -0500)]
eja: rename _max_test_case_size() -> _max_random_instance_size().

4 years agoeja: add inner_product() for DirectSumEJA.
Michael Orlitzky [Fri, 13 Nov 2020 15:34:30 +0000 (10:34 -0500)]
eja: add inner_product() for DirectSumEJA.

4 years agoeja: add inclusion maps for DirectSumEJA.
Michael Orlitzky [Fri, 13 Nov 2020 15:23:49 +0000 (10:23 -0500)]
eja: add inclusion maps for DirectSumEJA.

4 years agoeja: add projections for DirectSumEJA.
Michael Orlitzky [Fri, 13 Nov 2020 14:05:55 +0000 (09:05 -0500)]
eja: add projections for DirectSumEJA.

4 years agoeja: unindent a large "else" clause.
Michael Orlitzky [Tue, 10 Nov 2020 14:26:17 +0000 (09:26 -0500)]
eja: unindent a large "else" clause.

4 years agoeja: fix base ring of fast _charpoly_coefficients().
Michael Orlitzky [Tue, 10 Nov 2020 13:39:25 +0000 (08:39 -0500)]
eja: fix base ring of fast _charpoly_coefficients().

4 years agoeja: begin generalizing the charpoly-over-QQ optimizations.
Michael Orlitzky [Tue, 10 Nov 2020 03:19:20 +0000 (22:19 -0500)]
eja: begin generalizing the charpoly-over-QQ optimizations.

As a very simple first step, encode the fact that HadamardEJA and
BilinearFormEJA have rational bases within the type system. This
allows us to compute their charpolys over the rationals instead of
whatever their user-given base ring is.

4 years agoeja: split "check" args into check_field and check_axioms.
Michael Orlitzky [Tue, 10 Nov 2020 01:59:33 +0000 (20:59 -0500)]
eja: split "check" args into check_field and check_axioms.

4 years agoeja: add a few more TODO items.
Michael Orlitzky [Mon, 9 Nov 2020 17:04:38 +0000 (12:04 -0500)]
eja: add a few more TODO items.

4 years agoeja: improve how we get the "real part" of a possibly-complex trace.
Michael Orlitzky [Mon, 9 Nov 2020 16:59:21 +0000 (11:59 -0500)]
eja: improve how we get the "real part" of a possibly-complex trace.

4 years agoeja: enable consistency checks by default in (non-element) subalgebras.
Michael Orlitzky [Mon, 9 Nov 2020 14:37:54 +0000 (09:37 -0500)]
eja: enable consistency checks by default in (non-element) subalgebras.

4 years agoeja: pass check=False for known-good constructions.
Michael Orlitzky [Mon, 9 Nov 2020 14:28:21 +0000 (09:28 -0500)]
eja: pass check=False for known-good constructions.

4 years agoeja: pass check=False in the fast charpoly_coefficients() method.
Michael Orlitzky [Mon, 9 Nov 2020 12:45:25 +0000 (07:45 -0500)]
eja: pass check=False in the fast charpoly_coefficients() method.

4 years agoeja: use fuzzy equality test with inexact base rings.
Michael Orlitzky [Mon, 9 Nov 2020 12:44:59 +0000 (07:44 -0500)]
eja: use fuzzy equality test with inexact base rings.

4 years agoeja: check that the multiplication table is square with check=True.
Michael Orlitzky [Mon, 9 Nov 2020 12:07:19 +0000 (07:07 -0500)]
eja: check that the multiplication table is square with check=True.

4 years agoeja: check EJA properties with check=True.
Michael Orlitzky [Mon, 9 Nov 2020 11:46:15 +0000 (06:46 -0500)]
eja: check EJA properties with check=True.

4 years agoeja: add DirectSumEJA constructor (and not much else).
Michael Orlitzky [Sun, 8 Nov 2020 22:54:16 +0000 (17:54 -0500)]
eja: add DirectSumEJA constructor (and not much else).

4 years agoeja: add a link to a trac ticket in random_element().
Michael Orlitzky [Sun, 8 Nov 2020 21:49:34 +0000 (16:49 -0500)]
eja: add a link to a trac ticket in random_element().

4 years agoeja: make random_element() more random.
Michael Orlitzky [Sun, 8 Nov 2020 13:43:37 +0000 (08:43 -0500)]
eja: make random_element() more random.

4 years agoeja: add orthogonality examples/tests for the Peirce decomposition.
Michael Orlitzky [Sat, 7 Nov 2020 20:56:08 +0000 (15:56 -0500)]
eja: add orthogonality examples/tests for the Peirce decomposition.

4 years agoeja: add a TODO to fix random_element().
Michael Orlitzky [Sat, 7 Nov 2020 20:33:31 +0000 (15:33 -0500)]
eja: add a TODO to fix random_element().

4 years agoeja: add "of" to the algebra characteristic_polynomial() method name.
Michael Orlitzky [Sat, 7 Nov 2020 19:45:54 +0000 (14:45 -0500)]
eja: add "of" to the algebra characteristic_polynomial() method name.

4 years agoeja: add another TODO that I keep forgetting.
Michael Orlitzky [Sat, 7 Nov 2020 18:59:03 +0000 (13:59 -0500)]
eja: add another TODO that I keep forgetting.

4 years agoeja: remove wayward utf-8 comment.
Michael Orlitzky [Sat, 7 Nov 2020 18:58:01 +0000 (13:58 -0500)]
eja: remove wayward utf-8 comment.

4 years agoeja: let random_eja() return zero-dimensional algebras of all types.
Michael Orlitzky [Sat, 7 Nov 2020 18:00:38 +0000 (13:00 -0500)]
eja: let random_eja() return zero-dimensional algebras of all types.

4 years agoeja: fix two more tests to work in dimension zero.
Michael Orlitzky [Sat, 7 Nov 2020 18:00:23 +0000 (13:00 -0500)]
eja: fix two more tests to work in dimension zero.

4 years agoeja: make an inverse() test work in trivial algebras.
Michael Orlitzky [Fri, 6 Nov 2020 22:42:49 +0000 (17:42 -0500)]
eja: make an inverse() test work in trivial algebras.

4 years agoeja: make all tests work in trivial algebras.
Michael Orlitzky [Fri, 6 Nov 2020 14:22:45 +0000 (09:22 -0500)]
eja: make all tests work in trivial algebras.

This lets us drop the "nontrivial" argument to the random_eja()
function, because now we don't need it.

4 years agoeja: document why an a[0] access is safe.
Michael Orlitzky [Fri, 6 Nov 2020 13:44:07 +0000 (08:44 -0500)]
eja: document why an a[0] access is safe.

4 years agoeja: expound on an existing TODO item.
Michael Orlitzky [Thu, 5 Nov 2020 00:39:08 +0000 (19:39 -0500)]
eja: expound on an existing TODO item.

4 years agoeja: allow matrix algebras of "size" zero.
Michael Orlitzky [Thu, 5 Nov 2020 00:23:17 +0000 (19:23 -0500)]
eja: allow matrix algebras of "size" zero.

4 years agoeja: remove another completed TODO.
Michael Orlitzky [Thu, 5 Nov 2020 00:05:28 +0000 (19:05 -0500)]
eja: remove another completed TODO.

4 years agoeja: remove a completed TODO.
Michael Orlitzky [Thu, 5 Nov 2020 00:03:16 +0000 (19:03 -0500)]
eja: remove a completed TODO.

4 years agoeja: remove one use of nontrivial=True passed to random_eja().
Michael Orlitzky [Thu, 5 Nov 2020 00:02:31 +0000 (19:02 -0500)]
eja: remove one use of nontrivial=True passed to random_eja().

4 years agoeja: fix the fast matrix _charpoly_coefficients() method.
Michael Orlitzky [Wed, 4 Nov 2020 23:24:49 +0000 (18:24 -0500)]
eja: fix the fast matrix _charpoly_coefficients() method.

4 years agoeja: speed up _charpoly_coefficients when rank is cached.
Michael Orlitzky [Wed, 4 Nov 2020 22:28:56 +0000 (17:28 -0500)]
eja: speed up _charpoly_coefficients when rank is cached.

4 years agoeja: fix the determinant in trivial algebras.
Michael Orlitzky [Wed, 4 Nov 2020 15:14:52 +0000 (10:14 -0500)]
eja: fix the determinant in trivial algebras.

4 years agoeja: remove more vestigial charpoly stuff.
Michael Orlitzky [Wed, 4 Nov 2020 15:14:34 +0000 (10:14 -0500)]
eja: remove more vestigial charpoly stuff.

4 years agomakefile: don't allow tests to time out.
Michael Orlitzky [Wed, 4 Nov 2020 14:52:52 +0000 (09:52 -0500)]
makefile: don't allow tests to time out.

4 years agoeja: simplify and unify the charpoly/rank stuff.
Michael Orlitzky [Wed, 4 Nov 2020 13:31:51 +0000 (08:31 -0500)]
eja: simplify and unify the charpoly/rank stuff.

4 years agoeja: replace rank computation with length of charpoly coefficients.
Michael Orlitzky [Wed, 4 Nov 2020 13:01:11 +0000 (08:01 -0500)]
eja: replace rank computation with length of charpoly coefficients.

If we cache the solution to the charpoly system instead, then the
result is useful in more than one place (for the charpoly itself,
in particular).

4 years agoeja: get rid of the KnownRankEJA class.
Michael Orlitzky [Tue, 3 Nov 2020 19:43:30 +0000 (14:43 -0500)]
eja: get rid of the KnownRankEJA class.

Not needed now that I know how to compute rank.

4 years agoeja: reimplement random_eja() without KnownRankEJA.
Michael Orlitzky [Tue, 3 Nov 2020 13:34:36 +0000 (08:34 -0500)]
eja: reimplement random_eja() without KnownRankEJA.

4 years agoeja: fix tests and pre-cache ranks.
Michael Orlitzky [Tue, 3 Nov 2020 13:15:48 +0000 (08:15 -0500)]
eja: fix tests and pre-cache ranks.

4 years agoeja: replace the rank accessor with the full computation.
Michael Orlitzky [Tue, 3 Nov 2020 12:12:14 +0000 (07:12 -0500)]
eja: replace the rank accessor with the full computation.

4 years agoeja: use now somewhat-proven and fast rank computation.
Michael Orlitzky [Sun, 1 Nov 2020 00:19:42 +0000 (20:19 -0400)]
eja: use now somewhat-proven and fast rank computation.

4 years agoeja: add TODON'T use Cramer's rule.
Michael Orlitzky [Fri, 30 Oct 2020 19:32:38 +0000 (15:32 -0400)]
eja: add TODON'T use Cramer's rule.

4 years agoeja: add two more experimental rank computations.
Michael Orlitzky [Wed, 28 Oct 2020 15:04:52 +0000 (11:04 -0400)]
eja: add two more experimental rank computations.

4 years agoeja: add voodoo _rank_computation() method for EJAs.
Michael Orlitzky [Fri, 23 Oct 2020 20:16:58 +0000 (16:16 -0400)]
eja: add voodoo _rank_computation() method for EJAs.

4 years agoeja: drop the a_jordan_frame() method on EJAs.
Michael Orlitzky [Mon, 19 Oct 2020 14:30:10 +0000 (10:30 -0400)]
eja: drop the a_jordan_frame() method on EJAs.

I understand this better now, and don't expect this method to work
in general. It works for associative algebras, but we already know
how to find a Jordan frame in associative algebras: the spectral
decomposition, which works on the associative algebra alg({x}).

4 years agoRevert "eja: start experiment full_spectral_decomposition() method."
Michael Orlitzky [Mon, 19 Oct 2020 14:25:20 +0000 (10:25 -0400)]
Revert "eja: start experiment full_spectral_decomposition() method."

This reverts commit 6d32150d3f7c175473a1d590facce1ea7c5ca77a.
I don't think this will ever work reliably.

4 years agoeja: start experiment full_spectral_decomposition() method.
Michael Orlitzky [Sun, 18 Oct 2020 14:56:38 +0000 (10:56 -0400)]
eja: start experiment full_spectral_decomposition() method.

4 years agoeja: fix sub-subalgebra element construction.
Michael Orlitzky [Sun, 18 Oct 2020 05:24:18 +0000 (01:24 -0400)]
eja: fix sub-subalgebra element construction.

4 years agomjo/eja/eja_element_subalgebra.py: switch two tests back to QQ.
Michael Orlitzky [Sun, 18 Oct 2020 05:23:58 +0000 (01:23 -0400)]
mjo/eja/eja_element_subalgebra.py: switch two tests back to QQ.

4 years agomjo/eja/eja_element.py: test spectral decomposition in subalgebras.
Michael Orlitzky [Sun, 18 Oct 2020 05:23:09 +0000 (01:23 -0400)]
mjo/eja/eja_element.py: test spectral decomposition in subalgebras.

4 years agomjo/eja/eja_element.py: remove a dead line.
Michael Orlitzky [Sun, 18 Oct 2020 05:22:51 +0000 (01:22 -0400)]
mjo/eja/eja_element.py: remove a dead line.

4 years agoeja: make AA the default field because everything cool requires it.
Michael Orlitzky [Sun, 11 Oct 2020 21:24:17 +0000 (17:24 -0400)]
eja: make AA the default field because everything cool requires it.

4 years agomjo/eja/eja_algebra.py: fix unimportant left/right eigenspace terminology.
Michael Orlitzky [Sun, 11 Oct 2020 19:22:49 +0000 (15:22 -0400)]
mjo/eja/eja_algebra.py: fix unimportant left/right eigenspace terminology.

4 years agoeja: ignore errors more specifically in a_jordan_frame().
Michael Orlitzky [Sun, 11 Oct 2020 13:10:38 +0000 (09:10 -0400)]
eja: ignore errors more specifically in a_jordan_frame().

4 years agoeja: rename orthogonal_idempotents() to a_jordan_frame().
Michael Orlitzky [Sun, 11 Oct 2020 12:35:18 +0000 (08:35 -0400)]
eja: rename orthogonal_idempotents() to a_jordan_frame().

4 years agomjo/eja/eja_algebra.py: add WIP orthogonal_idempotents() method.
Michael Orlitzky [Sun, 11 Oct 2020 01:47:50 +0000 (21:47 -0400)]
mjo/eja/eja_algebra.py: add WIP orthogonal_idempotents() method.

4 years agomjo/ldlt.py: goodbye, use https://trac.sagemath.org/ticket/10332 instead.
Michael Orlitzky [Wed, 7 Oct 2020 21:21:59 +0000 (17:21 -0400)]
mjo/ldlt.py: goodbye, use https://trac.sagemath.org/ticket/10332 instead.

4 years agomjo/ldlt.py: add fast block-LDLT-based is_positive_semidefinite().
Michael Orlitzky [Mon, 5 Oct 2020 19:23:00 +0000 (15:23 -0400)]
mjo/ldlt.py: add fast block-LDLT-based is_positive_semidefinite().

4 years agomjo/ldlt.py: move implementation to SageMath proper.
Michael Orlitzky [Mon, 5 Oct 2020 17:55:19 +0000 (13:55 -0400)]
mjo/ldlt.py: move implementation to SageMath proper.

The actual block-LDLT code is now on the u/mjo/ticket/10332 branch.

4 years agomjo/ldlt.py: refactor into user-(un)friendly portions.
Michael Orlitzky [Sun, 4 Oct 2020 16:37:08 +0000 (12:37 -0400)]
mjo/ldlt.py: refactor into user-(un)friendly portions.

4 years agomjo/ldlt.py: delete naive implementations; fix tests.
Michael Orlitzky [Sun, 4 Oct 2020 16:11:25 +0000 (12:11 -0400)]
mjo/ldlt.py: delete naive implementations; fix tests.

4 years agomjo/ldlt.py: add examples and tests for block_ldlt().
Michael Orlitzky [Sun, 4 Oct 2020 16:07:00 +0000 (12:07 -0400)]
mjo/ldlt.py: add examples and tests for block_ldlt().

4 years agomjo/ldlt.py: make block_ldlt() work on Hermitian matrices, too.
Michael Orlitzky [Sun, 4 Oct 2020 13:40:50 +0000 (09:40 -0400)]
mjo/ldlt.py: make block_ldlt() work on Hermitian matrices, too.

4 years agomjo/ldlt.py: switch some row/column indexing around.
Michael Orlitzky [Sun, 4 Oct 2020 12:53:48 +0000 (08:53 -0400)]
mjo/ldlt.py: switch some row/column indexing around.

4 years agomjo/ldlt.py: rule #1 is never compute the inverse of a matrix.
Michael Orlitzky [Sun, 4 Oct 2020 12:27:37 +0000 (08:27 -0400)]
mjo/ldlt.py: rule #1 is never compute the inverse of a matrix.

4 years agomjo/ldlt.py: get fast block_ldlt() working.
Michael Orlitzky [Sun, 4 Oct 2020 02:48:04 +0000 (22:48 -0400)]
mjo/ldlt.py: get fast block_ldlt() working.

4 years agomjo/ldlt.py: fix a dimension in block_ldlt_naive().
Michael Orlitzky [Sun, 4 Oct 2020 02:11:19 +0000 (22:11 -0400)]
mjo/ldlt.py: fix a dimension in block_ldlt_naive().

4 years agomjo/ldlt.py: fix two bugs in the imperative block_ldlt() function.
Michael Orlitzky [Fri, 2 Oct 2020 22:41:30 +0000 (18:41 -0400)]
mjo/ldlt.py: fix two bugs in the imperative block_ldlt() function.

4 years agomjo/ldlt.py: begin fast block-LDLT implementation.
Michael Orlitzky [Fri, 2 Oct 2020 22:16:06 +0000 (18:16 -0400)]
mjo/ldlt.py: begin fast block-LDLT implementation.

4 years agomjo/ldlt.py: refactor the one-by-one block-LDLT pivot.
Michael Orlitzky [Fri, 2 Oct 2020 12:25:13 +0000 (08:25 -0400)]
mjo/ldlt.py: refactor the one-by-one block-LDLT pivot.

4 years agomjo/ldlt.py: start a naive Bunch-Kaufman block LDLT.
Michael Orlitzky [Fri, 2 Oct 2020 11:37:35 +0000 (07:37 -0400)]
mjo/ldlt.py: start a naive Bunch-Kaufman block LDLT.

4 years agomjo/ldlt.py: various efficiency improvements to ldlt_fast().
Michael Orlitzky [Mon, 28 Sep 2020 19:27:37 +0000 (15:27 -0400)]
mjo/ldlt.py: various efficiency improvements to ldlt_fast().

4 years agomjo/ldlt.py: avoid some intermediate variables in ldlt_fast().
Michael Orlitzky [Mon, 28 Sep 2020 18:41:12 +0000 (14:41 -0400)]
mjo/ldlt.py: avoid some intermediate variables in ldlt_fast().

4 years agomjo/ldlt.py: add a vaguely correct non-recursive ldlt_fast().
Michael Orlitzky [Mon, 28 Sep 2020 18:28:22 +0000 (14:28 -0400)]
mjo/ldlt.py: add a vaguely correct non-recursive ldlt_fast().