Opened 15 years ago
Closed 15 years ago
#57 closed task (fixed)
corrections/review of "jacobson.lib"
Reported by: | Oleksandr | Owned by: | Oleksandr |
---|---|---|---|
Priority: | major | Milestone: | Release 3-1-0 |
Component: | singular-libs | Version: | |
Keywords: | Cc: | levandov |
Description
short summary:
1. the Smith Normal Form was different depending on an optional parameter... (it must be uniqe if it is called "the Smith NF"!) 2. explain what does unimodular mean in these cases (e.g. non-comm.) 3. jacobson(matrix(0)); leads to an error message... 4. jacob returs non-diagonal matrix (see comments in examples). 5. results of smith were diferent for the same input (different output formats?)
Attachments (5)
Change History (10)
Changed 15 years ago by
Attachment: | jacobson.lib added |
---|
comment:1 Changed 15 years ago by
Owner: | changed from levandov to Oleksandr |
---|
comment:2 Changed 15 years ago by
Status: | new → assigned |
---|
comment:3 Changed 15 years ago by
Summary: | review of "jacobson.lib" → corrections/review of "jacobson.lib" |
---|
Changed 15 years ago by
Attachment: | jacobson.diff added |
---|
Changed 15 years ago by
Attachment: | jacobson.lib.diff3 added |
---|
Inspecting changes 1: initial version, 2: my changes/sugestions 3: latest author's version
comment:4 Changed 15 years ago by
Cc: | levandov added |
---|
as far as i can judge, jacobson.lib still has the same (and therefore examples are omitted here) unfixed issues:
1. smith returns different results depending on an optional parameter 2. jacobson returns a non-diagonal matrix on the same trivial examples.
Moreover, there are minor bugs (or inconsistencies between code and proc. description) concerning optional argument hadling in both smith and jacobson, which were fixed in merged 'jacobson.diff' here above.
As a trivial issue i noticed unchanged L[i] notation in jacobson which is not consisten with similar (updated) lines in smith (fixed in merged 'jacobson.diff' here above)
NOTE: A list L of matrices {U,D,V} is returned. That is L[1]*M*L[3]=L[2], where @* L[2] is a diagonal matrix and L[1], L[3] square invertible (unimodular) matrices.
ps: as this is just a track system - simple plain strait blog message format is used here.
comment:5 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
ad 1. Now the varying behaviour of Smith wrt optional parameters
is well-documented, explained and illustrated in examples. Moreover:
there is a new procedure 'divideUnits' which takes a list on the
input and performs the normalization via the multiplication
of Jac/Smith? normal form and the left transformation with the
matrix, containing the inverses of unit diagonal elements.
ad 2. unimodular in the general context means square invertible matrix
ad 3. this is not true anymore since a couple of months
ad 4. Both Smith and Jacobson forms do work for rectangular matrices (see the intro to the library), so it is not a bug by any means.
Instead, it is a generalization, which is very important for applications. Moreover, not many CA systems can work with rectangular matrices, so it's good for Singular to be that general.
ad 5. see documentation and the proc 'divideUnits'
What Remains: BIG QUESTION: as far as I learned at the end of 90's in Kaiserslautern,
RETURN: stands for merely data type of the output and it must be as short as possible, while the explanations go into NOTE:.
Has this changed?
my corrected code with new descriptions