Opened 14 years ago

Closed 14 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)

jacobson.lib (24.1 KB) - added by Oleksandr 14 years ago.
jacobson.diff (24.7 KB) - added by Oleksandr 14 years ago.
my corrected code with new descriptions
jacobson.lib.diff.txt (24.7 KB) - added by Oleksandr 14 years ago.
same, viewable version
jacobson.lib.diff3 (24.9 KB) - added by Oleksandr 14 years ago.
Inspecting changes 1: initial version, 2: my changes/sugestions 3: latest author's version
jacobson.tst (2.9 KB) - added by Oleksandr 14 years ago.
my tests for jacobson.lib

Download all attachments as: .zip

Change History (10)

Changed 14 years ago by Oleksandr

Attachment: jacobson.lib added

comment:1 Changed 14 years ago by Oleksandr

Owner: changed from levandov to Oleksandr

comment:2 Changed 14 years ago by Oleksandr

Status: newassigned

comment:3 Changed 14 years ago by Oleksandr

Summary: review of "jacobson.lib"corrections/review of "jacobson.lib"

Changed 14 years ago by Oleksandr

Attachment: jacobson.diff added

my corrected code with new descriptions

Changed 14 years ago by Oleksandr

Attachment: jacobson.lib.diff.txt added

same, viewable version

Changed 14 years ago by Oleksandr

Attachment: jacobson.lib.diff3 added

Inspecting changes 1: initial version, 2: my changes/sugestions 3: latest author's version

comment:4 Changed 14 years ago by Oleksandr

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.

Changed 14 years ago by Oleksandr

Attachment: jacobson.tst added

my tests for jacobson.lib

comment:5 Changed 14 years ago by levandov

Resolution: fixed
Status: assignedclosed

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?

Note: See TracTickets for help on using tickets.