Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > perl.module-authors > #3381
| Newsgroups | perl.module-authors |
|---|---|
| Path | csiph.com!goblin3!goblin.stu.neva.ru!panix!usenet.stanford.edu!nntp.perl.org |
| Return-Path | <lrg_ml@gmx.net> |
| Mailing-List | contact module-authors-help@perl.org; run by ezmlm |
| Delivered-To | mailing list module-authors@perl.org |
| X-Spam-Checker-Version | SpamAssassin 3.3.1 (2010-03-16) on mx3.develooper.com |
| X-Spam-Status | No, score=-4.9 required=6.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1598346492; bh=PeOk/wyM33+2PeHXFHMYvci+TIG3Zw9gQRE4qcJ/c3M=; h=X-UI-Sender-Class:From:To:Subject:Date:In-Reply-To:References; b=QTqFAvyF9ZpnAVduWXi5RCA1vn2ZSB+Uyx05Mj+fYsmvA9hBuiUfXvS076sXUbB77 H9fSmeZ4f98whG5n07iVxexFnGv4zZ7cb26sGSSI5rxERwxlC/rorzOTsdyPjkccG5 SZV7SNzSAQ0DQP6QVMl8fP++ufXgaZVi6Ofn527I= |
| X-UI-Sender-Class | 01bb95c1-4bf8-414a-932a-4f6e2808ef9c |
| To | module-authors@perl.org |
| Subject | Re: Namespace Math::Matrix::Banded |
| Date | Tue, 25 Aug 2020 11:02:49 +0200 |
| Message-ID | <2575593.AVJHp5y9rp@fresco> (permalink) |
| User-Agent | KMail/4.14.1 (Linux/3.16.0-11-amd64; KDE/4.14.2; x86_64; ; ) |
| In-Reply-To | <515bb1d3-9e14-181c-2e19-3b9b213524ac@holgerdanske.com> |
| References | <7011554.XXk20anvnv@fresco> <38055897.zlUFjgIoZr@fresco> <515bb1d3-9e14-181c-2e19-3b9b213524ac@holgerdanske.com> |
| MIME-Version | 1.0 |
| Content-Transfer-Encoding | quoted-printable |
| Content-Type | text/plain; charset="us-ascii" |
| X-Provags-ID | V03:K1:rpz8hTxAqqvuu054Gy0zMcdkYQViWpuSdp2S5Q+3TcRx0lVi2Fj 1ItUq9V1SL+rIM6kIbr6M1vGn73Bpfd6gqZtu1xHIUUqGMZ1vDMeAv+B2z+VgpfAjt8bGuv +UAPp0UCDTryrt2q0hVAMdz9Np+t53pFtED4zp7YI+N9/++2j/egaGQErL/MYylRgt2x/VY T2hLwg4o8HIP4jDET8NzA== |
| X-UI-Out-Filterresults | notjunk:1;V03:K0:Z/FhPY+N+Iw=:thczc9GhpCllD7G3Fal7Ta ly8iivbSk45hYwG2DAqBWVr3EEZKYyDI9Sz1AcfuHQJ1yp8oRB4jAyZFiRL05i5sKABiz46WU vfBZErEMo8Bo4EwaAsZAOuUqQHR9yEbAZWr3hfMy0IRwuqG2i8KWGO157IavBBvtpd4RR7ZyA 3zQfHbxn3XKER6sA8sHu0oigaN7gSP1ujCs7r6A6PVmFXC8EjL0052Lh/5ZlftYGQDKfHVrW4 GRBf2CcO6vtoUUbmv8xL7RKF02IvES0F3aM0U7VeSSPmmuJlICWbrkhutFJ6fLSVc7EgNIe3p h5fOhjCwLqgEPc8UmfgZzIqz7XIYRSQrJC+MefOu99GcjpJUftz3/znmUJqyO32fxjJiQje5h 2Lo5imZIGIAG4335t31EWZhE/KUe9mt9GHOZiNI6GyH0rb/lAzI5VisPLsrHsIf80RJeXesGE CYuA+md546Db8aPP23aSC4Ti8YbRubjXcroEV3EmzMnu1QKRDQbDfF4DrAZJhKqKtcLCDqM9O M12yEuG8CHaHPdx05+0m6VD+zebXh9D/FYyBcTMVIkulRfw7Z3vDkYuwMtVyff8Lox2Up2vrA pValOtwuwz8EmmN3+ik+K3V9p7yV4YUCxWUymb6PbKZCPrM4ssSdOh8IkiSqvwEAENUacIiXA XkCJMZfDE5dFevWo3ifuVVhESOn3akw/kqvXyY5k3atPXMfkWWAuxGYP/p3Lu/hQ0pbEzbWn0 OxoatccUlvKnWIMUrqoZkdP6T/nltqoLolKi0Rk7fbP6xV+S2LU6L1VIBvVQj6KtHU3J567Ol wb+qit4zYxbLbRZOHIEzJoBFLbtDwu2kr3OuQnyRc5XgwLYpkhI6731a5WbhOyq820HDcu9XH ZVusi/ipllj5uxvCSsorPWNchjR/aLZwzw6fsF8PE8ewfmHYIOXm7+TqYd91pysJ6smRxJn12 +hQBH5Kf8cSmYEt+I8ZWjHo4AtTOAM30wzVeEMyJkb3LK1VVsOHUtaaht1PDaCCBJEeIAdEYC eR89bOj0ZmT4gJlJiAiUt7wGcwNsYZ+pYTC/ow9zibYGjOyFoUd3GiyQHc29hKZvnq/Zv/B4i t3y2XYunSjN9WI+w98d5f4Ok7+TcVwMk9e9j/+lOlyENk+QW4ENtrmJqKwYX8kpTL9VoPxpEj msiFMuh/RsTWHJqtSbtoWV/oKl8oCQKxMPsdM4y5n9UqkajUJBDZkEpWnAtjvP8qfEXao6R/m fYubdKjKOZMrXEDKP |
| X-PMX-Version | 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2019.11.28.70017 |
| X-PMX-Perl | Suspicious Attachment |
| X-PMX-Spam | Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, DKIM_ALIGNS 0, DKIM_SIGNATURE 0, INVALID_MSGID_NO_FQDN 0, IN_REP_TO 0, KNOWN_MTA_TFX 0, LEGITIMATE_SIGNS 0, MSG_THREAD 0, REFERENCES 0, SINGLE_URI_IN_BODY 0, SPF_PASS 0, SXL_IP_TFX_WM 0, URI_WITH_PATH_ONLY 0, __ANY_URI 0, __BODY_NO_MAILTO 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __DKIM_ALIGNS_1 0, __DKIM_ALIGNS_2 0, __DQ_NEG_HEUR 0, __DQ_NEG_IP 0, __FORWARDED_MSG 0, __FRAUD_WEBMAIL 0, __FRAUD_WEBMAIL_FROM 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_REFERENCES 0, __HTTPS_URI 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_TEXT_P 0, __MIME_TEXT_P1 0, __MIME_VERSION 0, __MSGID_DOMAIN_NOT_IN_HDRS 0, __NO_HTML_TAG_RAW 0, __PHISH_SPEAR_STRUCTURE_1 0, __REFERENCES 0, __SANE_MSGID 0, __SINGLE_URI_TEXT 0, __SUBJ_ALPHA_NEGATE 0, __SUBJ_REPLY 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_IN_BODY 0, __URI_NOT_IMG 0, __URI_NO_MAILTO 0, __URI_NS , __URI_WITH_PATH 0, __USER_AGENT 0, __blackholes.mail-abuse.org_ERROR , __zen.spamhaus.org_ERROR ' |
| Approved | news@nntp.perl.org |
| From | lrg_ml@gmx.net (Lutz Gehlen) |
| Lines | 238 |
| Xref | csiph.com perl.module-authors:3381 |
Show key headers only | View raw
Hi David On Monday, 24.08.2020 17:17:30 David Christensen wrote: > On 2020-08-24 06:46, Lutz Gehlen wrote: [...] > > On Sunday, 23.08.2020 06:37:47 David Christensen wrote: > >> On 2020-08-23 02:40, Lutz Gehlen wrote: > > [...] > > > >>> I am working on a set of modules dealing with banded matrices > >>> (aka band matrices or band diagonal matrices). These are a > >>> certain kind of sparse matrices where all entries are known to > >>> be 0 except close to the main diagonal. Obviously, this > >>> condition can be exploited for efficient storage and > >>> algorithms. > >> > >> Follow[ing] the application domain taxonomy names makes the > >> most sense [to me].> > > Hm, that depends on what you consider as the application domain. > > > > From an analytical (in a mathematical sense in contrast to > > > > numerical) point of view, there is a clear hierarchy. There are > > general (rectangular) matrices; square matrices are a subset of > > them, and symmetric matrices are again a subset of square > > matrices. You might argue that I should use the following > > namespaces: Math::Matrix::Banded > > Math::Matrix::Banded::Square > > Math::Matrix::Banded::Square::Symmetric > > I suppose that this is what you mean by following the > > application > > domain taxonomy or am I wrong? > > > > However, from a numerical point of view, the three types are > > treated rather separately. Specifically, for banded matrices, > > the three types are stored in different ways and in many cases, > > you would not apply an algorithm for general square matrices to > > a symmetric one even if you could, because there are more > > efficient/stable/etc algorithms at your disposal. Hence, you > > might rather consider them at the same taxonomic level. This is > > what I have in mind. > > > > One might think of looking at other libraries that implement > > this > > kind of software, but they are typically written in C or Fortran > > and rather tend to very short and cryptic function names like > > sgbtrf instead of hierarchical namespaces. > > I would favor an analytical mathematics taxonomy over a numerical > methods taxonomy or a computer science taxonomy. This should make > it easier for users who work in the field to grok the > distribution. I see your point, but I am not sure I agree. Users looking for these modules are interested in the computer science and even implementation part because they have a large problem that makes this necessary. From an analytical perspective the size of the matrix does not matter and if the user does not need to care then he/she will rather pick a general purpose matrix distribution. It does not make a lot of sense to take advantage of the banded structure of a 10x10 matrix. However, if it is a 10000x10000 matrix and I know its banded then I am acutely aware of and interested in this property and what it implies from a numerical perspective. > I would add these information architecture considerations; > > - If the term "rectangular matrix" is the general case for all > matrices, I would drop "rectangular" and just use "matrix". Yes, if I go the hierarchical way then this makes a lot of sense. > - If banded is a special case for rectangular matrices, square > matrices, and symmetric matrices, I would apply "banded" as a > suffix: > > > Thus: > > Math::Matrix::Banded > > Math::Matrix::Square::Banded > > Math::Matrix::Square::Symmetric::Banded This goes both ways. Yes, banded is a special case let's say of a square matrix, but square is also a special case of a banded matrix. The choice depends on which property you consider more fundamental or want to highlight more. I consider the bandedness as more fundamental for the reasons discussed above. I expect a potential user of my modules to look specifically for a distribution supporting banded matrices. That does not mean that the shape is not important, but the user will not type "square" into the search field, but "banded". Additionally, I like the idea by Neil Bowers to have a central Math::Matrix::Banded module whose constructor dispatches to the specific classes. I think it makes sense for them to sit in a shared namespace. > That said, each author could also document their implementation; > to allow direct usage and/or optimization by interested users. > > > >> If your implementation is OO and maps 1:1 with the taxonomy, > >> that > >> would be ideal. If not, I might have modules per the taxonomy > >> where it makes sense, and put everything else into > >> sub-directories organized by whatever makes sense for them > >> (such > >> as OO modules, utility functions, whatever). > > > > Not sure I understand the second part of your advice. However, > > my > > implementation is OO and arguably maps with the taxonomy as > > discussed above, so it might not be relevant. > > If your OO design does not map 1:1 with the chosen taxonomy, I was > suggesting a distribution tree similar to the following: > > Math-Matrix-Banded > > |-- lib > | > | |-- Math > | | > | | |-- Matrix > | | | > | | | |-- Banded > | | | | > | | | | |-- OO > | | | | | > | | | | | |-- <OO implementation tree> > | | | | | > | | | | |-- Util.pm > | | | | |-- <other stuff as required> > | | | | > | | | | Banded.pm > | | | | Square > | | | | > | | | | |-- Banded.pm > | | | | |-- Symmetric > | | | | | > | | | | | |-- Banded.pm > | > |-- t > | > | |-- <test scripts> > | > |-- MANIFEST > |-- Makefile.PL > |-- README > > The lib/Math/Matrix/Banded/OO directory would hold your > implementation: > > - The OO sub-directory would contain your OO implementation. > > - The file Util.pm would contain whatever non-OO stuff you need. > > - Other files and directories as needed. > > > The files: > > - lib/Math/Matrix/Banded.pm > > - lib/Math/Matrix/Square/Banded.pm > > - lib/Math/Matrix/Square/Symmetric/Banded.pm > > would provide documentation per the analytical mathematics > taxonomy and provide a translation layer from this taxonomy into > your OO implementation. Yourself, myself, and any other > author(s) would want to collaborate on the translation layer. Thank you for your elaborate explanation! > But, I now see a problem -- the Math::Matrix::Square namespace is > not properly contained within the Math-Matrix-Banded > distribution. Therefore, Math-Matrix-Square-Banded must be its > own distribution. Similarly, Math-Matrix-Square-Symmetric-Banded > must be its own distribution. If there is common stuff that can > be shared, put it into the first and make the latter two > dependent upon the first. Yes, in that case, separate distributions would be required. At the current stage of my implementation there is no shared code because the underlying data structures are specific to each case. There are dependencies, though, e.g. an object of one class producing an object of another. If I release the modules as separate distributions I will need to add inter-dependencies (avoiding circular ones!). Let's see. > The hardest part is planning for the unknown. What name do I use > when I create my FBP implementation? These names: [...] > You can chase your tail forever when it comes to these kinds of > questions... I can certainly see that :-). > >> But if there are other types of banded matrices, if those terms > >> are really at different levels, or if there are other taxonomy > >> issues, perhaps you should release multiple distributions -- > >> one > >> per work product, named per the taxonomy. The idea is that you > >> do not want to block future modules or distributions. > > > > Hm, they are the only three choices I foresee, but people might > > have other ideas. Hence, you have a point. > > > > Thinking about this point, I'm also getting second thoughts on > > using the Math::Matrix namespace to start with. There is a > > Math::Matrix distribution, does this imply that the entire > > Math::Matrix namespace should be considered "reserved"? > > I would consider CPAN user names to be "reserved". I would not > worry about picking a name Math-Matrix-*, so long as it does not > collide with any *.pm or *.pod file in any distribution. Ok, thanks for your advice. > p.s. I should mention the Polar Bear book [1]. > > > [1] > https://www.oreilly.com/library/view/information-architecture-4th/ > 9781491913529/ Thank you for the pointer. I find it hard to grasp from the descriptions on O'Reilly and Amazon what the book actually covers, which does not mean I shouldn't read it (possibly the opposite). Best wishes, Lutz
Back to perl.module-authors | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Namespace Math::Matrix::Banded lrg_ml@gmx.net (Lutz Gehlen) - 2020-08-23 11:40 +0200
Re: Namespace Math::Matrix::Banded dpchrist@holgerdanske.com (David Christensen) - 2020-08-23 06:37 -0700
Re: Namespace Math::Matrix::Banded lrg_ml@gmx.net (Lutz Gehlen) - 2020-08-24 15:46 +0200
Re: Namespace Math::Matrix::Banded dpchrist@holgerdanske.com (David Christensen) - 2020-08-24 17:17 -0700
Re: Namespace Math::Matrix::Banded lrg_ml@gmx.net (Lutz Gehlen) - 2020-08-25 11:02 +0200
Re: Namespace Math::Matrix::Banded dpchrist@holgerdanske.com (David Christensen) - 2020-08-25 13:30 -0700
Re: Namespace Math::Matrix::Banded lrg_ml@gmx.net (Lutz Gehlen) - 2020-08-25 11:03 +0200
csiph-web