[net.lang.mod2] Open Array Parameters and matrices

ln63fhl@sdcc7.ucsd.EDU (David Cook) (10/13/86)

Has anyone figured out a way to get around the fact that
open parameters will only work for 1-D arrays and not for
matrices.  I am beginining to realize that mod2 is not a good 
language for linear algebraic applications despite its wealth
of structures and simplicity, but hoping someone can change my mind.
Maybe my problem is that things have to be elegant;  I can't stand
being forced to use FORTRAN type solutions in mod2!
............................................Thanx,
						  Dave Cook.

ken@ROCHESTER.ARPA (Comfy chair) (10/13/86)

I believe DEC's Modula-2 compiler has an extension to allow open
matrices and higher order arrays.

You could bypass the type checking by passing the address of the
array.  You'd still have to do your own indexing. This means passing
the dimensions as well.  Messy.

Perhaps a neater way is to pass a descriptor (a record containing the
address of the array, and the dimensions). I still don't see a way
around either the inefficiency of an indexing function, or the
verbosity of writing your own index computations.

Note that C (until C++) has the same problems.

Anybody have better ideas?

	Ken

broman%bugs@NOSC.ARPA (Vincent Broman) (10/14/86)

I don't see what is so abominably inefficient about a nice clean
indexing function on an array descriptor.  That would be the Natural
Solution to this problem as well as more general ones, such as how to
store symmetric arrays in half the space, how to switch from dense
to sparse storage of a matrix, etc, etc.

The function call overhead is all the additional burden required,
since the arithmetic of index computation must be done in any case.
The only other inefficiency might be when a smart optimizing compiler
can simplify some sequential accesses to the array, but isn't smart enough
(or given opportunity) to expand an indexing function call inline
in order to optimize it.

Vincent Broman, code 632,  Naval Ocean Systems Center, San Diego, CA 92152, USA
Phone: +1 619 225 2365        {seismo,caip,ihnp4,ucbvax}!\\\\\\\
Arpa: broman@bugs.nosc.mil Uucp: {floyd,moss,bang,hp-sdd,sdcsvax}!noscvax!broman

joel@DECWRL.DEC.COM (Joel McCormack) (10/29/86)

The current Modula-2 compiler at DEC allows you to declare things like ARRAY
OF ARRAY OF REAL, and the HIGH function takes an optional parameter for the
dimension number.  (Other extensions use HIGH(array) for the first dimension,
HIGH(array[0]) for the 2nd, etc.)

I would rather have something along the lines of Pascal's conformant arrays,
but ARRAY OF set a nasty precedent.  (Several years ago I asked Niklaus Wirth
what he planned to do about making Modula-2 suitable for implementing math
libraries; he said he really didn't care about that kind of programming.)

Standard Modula-2 supports only one-dimensional open arrays, and I don't know
what the ISO group is contemplating.

- Joel McCormack {ihnp4 decvax ucbvax allegra}!decwrl!joel
		 joel@decwrl.dec.com