HP Forums

Full Version: SandMatrix Module becomes the "Mean Matrix Machine"
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
... or "MMM" for short ;-)

Just when you thought it was all done that could be done I figured out a way to squeeze in a full-fledged Matrix CATalog (for the R-Matrix and the Y-Matrix areas), as well as two programs for complex determinants (up to degree four) and matrix p-th. roots.

Not a bad way to round up this updating project, which highlights are listed below:
  • Support for CL Y-Registers; 3,072 in total that allow solving up to 55 x 55 determinants
  • faster MCODE versions of functions MTRACE, MIDN, MCON, and MZERO
  • New function to zero the diagonals, and anti-identity matrix building
  • Program to calculate Complex Determinats up to order 4
  • Program to calculate Matrix p-th. roots (principal value)
  • Updated manual with program listings and examples of use

And with these finishing touches I do declare the module done and complete.
I sent the ROM images to Monte today so it should be available in a few days for download.

Happy MMM'ing !
.
Hola, Ángel:

Congratulations and a few comments:

(06-17-2018 10:16 AM)Ángel Martin Wrote: [ -> ]Not a bad way to round up this updating project, which highlights are listed below:

It's "whose", not "which" ... 8-D.

Quote:
  • New function to zero the diagonals, and anti-identity matrix building
  • Program to calculate Complex Determinats up to order 4

Don't know a thing about this ROM of yours but I'll suggest the following in case you might consider it a worthwhile thing to do:

- the new function to zero the diagonals and anti-identity matrix building seem to me quite unimportant, I don't see any worthwhile applications for them apart from being used in one or two mini-challenges and such. I feel that including such miscellaneous functions in the ROM is a waste of space, like filler. If in some rare application you need either of them, they're quite easy to replicate with the existing functions. All IMHO, of course.

- on the other hand, and just in case the ROM doesn't actually include this functionality already (I don't really know), implementing matrix subarray handling would be a real must, as it's something very frequently needed and can't be replicated in user code without one or two complicated nested loops.

An Mcode implementation would run hundreds of times faster while saving lots of RAM. By subarray handling I'm referring of course to, e.g., clearing part of a matrix, extracting part of a matrix to another matrix, assigning a value to part of a matrix, copying part of a matrix into a part of another matrix (or even the same), as seen in my 71B code to recursively compute the determinant of a real/complex matrix by minor expansion. The 71B Math ROM doesn't include this functionality but if you're willing I don't see any reason why your MMM ROM can't include it as well.

- including a program to calculate "Complex Determinats" (sic) but only up to order 4 seems to me kinda lame. Either include a proper program which can do order N or else save the space for something more worthwhile. At just order 4 it's pretty miscellaneous as well.

All said with the best intention to motivate you to include the best, most useful functionality in your excellent ROM. You can also consider all of the above suggestions as a personal challenge ... :-)

Regards.
V.
.
(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ].
(06-17-2018 10:16 AM)Ángel Martin Wrote: [ -> ]Not a bad way to round up this updating project, which highlights are listed below:

It's "whose", not "which" ... 8-D.

What sais you? It ain't the first time I was critizized for/to my grammar yet didn't no saw those coming from a fellow comrade.... you say tomatoe I say tomaíto, but at the end of the day I'd rather reserve "whose" for people and friendly pets ;-)


(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ]Don't know a thing about this ROM of yours but I'll suggest the following in case you might consider it a worthwhile thing to do:

- the new function to zero the diagonals and anti-identity matrix building seem to me quite unimportant, I don't see any worthwhile applications for them apart from being used in one or two mini-challenges and such. I feel that including such miscellaneous functions in the ROM is a waste of space, like filler. If in some rare application you need either of them, they're quite easy to replicate with the existing functions. All IMHO, of course.

There are breakthrough enhancements and gap-filling ones. Of course the zero diagonalization belongs to the second kind and was only added to take even further advantage of the existing code for the MIDN function. No need to see more to that. And BTW you *do* know a lot about this ROM since it's fundamentally built upon the HP-41 Advantage; that you knew inside out at least when you wrote the "Long Live..." article- - which (or was it whose?) has made its way into the ROM, re-incarnated as the program POLFIT in case you wonder.


(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ]- on the other hand, and just in case the ROM doesn't actually include this functionality already (I don't really know), implementing matrix subarray handling would be a real must, as it's something very frequently needed and can't be replicated in user code without one or two complicated nested loops.

An Mcode implementation would run hundreds of times faster while saving lots of RAM. By subarray handling I'm referring of course to, e.g., clearing part of a matrix, extracting part of a matrix to another matrix, assigning a value to part of a matrix, copying part of a matrix into a part of another matrix (or even the same), as seen in my 71B code to recursively compute the determinant of a real/complex matrix by minor expansion. The 71B Math ROM doesn't include this functionality but if you're willing I don't see any reason why your MMM ROM can't include it as well.

No need to sing the excellencies of a well-designed subarray handling functionality, I've been suffering from the lack thereof ever since. The thing is this project's initial goal was to provide support for the CL Y-Registers. That alone justified a new release, and getting it done wasn't trivial. The MCODE in the advantage was derived from the CCD Module Array functions -you can tell which routines come from the CCD-era and which ones come from HP, a bit of a jigsaw puzzle where it wasn't trivial to insert here and there snippets to allow for RAM addresses above 0x3FF.


(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ]- including a program to calculate "Complex Determinants" but only up to order 4 seems to me kinda lame. Either include a proper program which can do order N or else save the space for something more worthwhile. At just order 4 it's pretty miscellaneous as well.

Here's where we disagree. I don't consider it to be lame, but I grant you the fact that it is not perfect. The recursive approach you used in the minor expansion routine is rather impossible with the function set in the Advantage, precisely due to the lack of capable subarray handling capability. Also don't forget you're using HP-BASIC (with complex number support, no less!!), which (or is it whose?) gives you access to a wonderful way to define variables and control their values very easily.

There are two functions (MMOVE and MSWAP ) that could be used as a proto-rudimentary sub-matrix handlers, but there's where the MCODE becomes real spaghetti quality, all very discouraging to patch. Also I ran out of available room (and frankly stamina, don't underestimate the taxing nature of the beast) to do more changes at least for this time...

(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ]All said with the best intention to motivate you to include the best, most useful functionality in your excellent ROM. You can also consider all of the above suggestions as a personal challenge ... :-)

Allay your fears, I know your comments are constructive and in no way take them the wrong way. Besides as I said, they are the most natural and best way to improve the module even further but it'll have to wait for the next project!


Best wishes,
ÁM
.
Hi, Ángel:

(06-18-2018 05:10 AM)Ángel Martin Wrote: [ -> ]
(06-17-2018 10:26 PM)Valentin Albillo Wrote: [ -> ]It's "whose", not "which" ... 8-D

It ain't the first time I was critizized for/to my grammar yet didn't no saw those coming from a fellow comrade. [...] but at the end of the day I'd rather reserve "whose" for people and friendly pets ;-)

[...]that you knew inside out at least when you wrote the "Long Live..." article- - which (or was it whose?) has made its way into the ROM

[...]don't forget you're using HP-BASIC (with complex number support, no less!!), which (or is it whose?) gives you access to a wonderful way[...]

Whatever. If you want to mock my well-meaning correction and play stubborn that's up to you.

Seems to me you're under the delusion that "whose" applies only to animated objects (such as people and pets) while "which" applies to inanimate ones (such as projects or their highlights) regardless of context but that's not so, context matters and in this case the key hint is "possessive" (highlights of the project), which is the reason why in your sentence "whose" would be utterly correct but "which" is an eyesore.

"Whose" implies possession. "Which" does not. But as they say, "You can lead a horse to water, but ..."

Quote:There are breakthrough enhancements and gap-filling ones. Of course the zero diagonalization belongs to the second kind and was only added to take even further advantage of the existing code for the MIDN function.

Understood. I thought so.

Quote:No need to sing the excellencies of a well-designed subarray handling functionality, I've been suffering from the lack thereof ever since.

I'm sure you do.

Quote:The thing is this project's initial goal was to provide support for the CL Y-Registers. That alone justified a new release, and getting it done wasn't trivial.

I'm sure it wasn't. Matter of fact, I'm sure very few people would have accomplished the feat, if any.

Quote:The recursive approach you used in the minor expansion routine is rather impossible with the function set in the Advantage, precisely due to the lack of capable subarray handling capability.

Precisely. Anyway, the determinant by minors expansion I mentioned was only meant as an example. As I told you in a past post, if I were to include a complex determinant function in a ROM I would never use the minors expansion approach because its running time and memory requirements make it completely unsuitable except for very low orders, 5x5 ot 6x6 at most, not to mention the use of recursion.

The only reason I posted code implementing it was because it's really easy to implement (4 lines, 3 lines if subarray handling were available), but for an NxN production program meant to be included in a ROM I would use LU decomposition and that's it. Discussing minors expansion is irrelevant and has nothing to do with the desirability of implementing subarray handling.

Quote:[...] but there's where the MCODE becomes real spaghetti quality, all very discouraging to patch. Also I ran out of available room (and frankly stamina, don't underestimate the taxing nature of the beast) to do more changes at least for this time...

I don't underestimate the nature of the beast, at all . As I said above, I don't think there are many people (if any) who could do it apart from yourself. If anything, perhaps I'm overestimating you ... ;-)

Quote:Allay your fears, I know your comments are constructive and in no way take them the wrong way.

I'm not so sure. Judging from the between-the-lines tone of your post I think that perhaps I might have struck a nerve with my well-meaning comments. If so (even though you wouldn't recognize it), I'm truly sorry, that wasn't my intention, it won't happen again.

Best regards.
V.
.
(06-18-2018 11:25 PM)Valentin Albillo Wrote: [ -> ]I'm not so sure. Judging from the between-the-lines tone of your post I think that perhaps I might have struck a nerve with my well-meaning comments. If so (even though you wouldn't recognize it), I'm truly sorry, that wasn't my intention, it won't happen again.

I would never say to a female companion "Have you put on a little weight?"

Regardless of my intent.

Sometimes silence is the best response Smile

~Mark
This thread is on the verge of being ultra-hijacked by side diversions, but I wanted to clear the air before it becomes too thick to breath

- There was no "between the lines" or otherwise tone in my last post, just my tongue-in cheek way to amuse myself with the poignant grammar correction. For the record, I do think language is a living thing and should reflect the personality and the mood of the speaker. When I write poetry I wear a different hat, but when I post SandMatrix code, well... so sorry if I relished too much in the content to the point of faulting the form. Neither was I being stubborn or flippant, if anything I was making fun of myself. And also for the record, my delusions (which undoubtedly exist, thank heavens for that) are not related to grammar.

-If this came across as a (feeble) intent to mock your well-meaning correction, then I failed miserably and feel saddened for it. I had no intent whatsoever to do so, never do it with anybody on the forum - written posts are perfect candidates for misunderstandings and wrong contextualization, we've all been here before and bought the T-shirts. Let alone with you Valentín, not just because of your stature in the field in question but also as a person I feel affinity with.

I hope this post doesn't ruffle feathers or prolongs the mishap - I consciously didn't follow Mark's wise advise in hopes that it'll be for the better, nor for the worse.

Thanks,
ÁM
I'm with you Ángel, I interpreted what you wrote as a joke.
I'll note that I'm a native English speaker who is far too used to self deprecating humour.

Pauli
Reference URL's