TORRIX and SPARSE
Jose E. Marchesi
jemarch@gnu.org
Sat May 16 16:43:43 GMT 2026
Hello.
> Hi Jose,
>
> This is very interesting. I've only read the first dozen pages of
> TORRIX 1 and section 2.1, but it looks useful for doing finite field
> math for error-correcting codes, etc.
>
> Error correcting codes were my introduction to abstract algebra, and
> it's cool to see such an early system based on abstract algebra
> foundations. Few modern languages are as advanced. It's compelling
> that they chose Algol68 for this.
>
> (Of course, part of the appeal of GF(2) is that standard bit-wise
> operators suffice to implement it, so it can be done with simpler
> tools.)
I am still trying to get in touch with the CWI so they allow me to
release the TORRIX source code under a free software license.
In the meanwhile, if you are interested I can send you privately a copy
of the code ported to GNU Algol 68.
> This past year I've been studying and using the J programming language
> (a descendant of APL), and now I'm curious how TORRIX compares to APL
> and the array language family.
TORRIX matrices implement a lot of operators that transcend the Algol 68
operators on multiples.
But Algol 68's support for multiples is quite impressive by itself.
There is a very interesting little paper that compares Algol 68 and APL
in terms of array operations:
ARRAY REFERENCE OPERATIONS
J.B. Hext
University of Sidney
You can find it online at the ACM library:
https://dl.acm.org/doi/abs/10.1145/800026.808410
Also, in his "Algol 68 might-have-beens", van der Meulen mentions the
lack of:
- Support for slicing diagonals (and diagonal planes, etc up the
dimensions)
- Support for transposes.
Then he suggest the addition of a PERM (similar to AT, @) facility that
would allow to permutate dimensions in slices (in this example I am
using ! as representation for PERM, much like @ is AT in supper
stropping):
foo[!1,2] is equivalent to foo as it stands.
foo[!2,1] is equivalent to TRNSP foo.
foo[!1,1] is equivalent to 0 DIAG foo.
foo[!2,2] is equivalent to 0 DIAG foo following the column-indexing.
See
ALGOL68 MIGHT-HAVE-BEENS
S.G. van der Meulen
available online at:
https://dl.acm.org/doi/10.1145/872738.807137
That is one of the extensions we may want to consider to add to GNU
Algol 68.
>
> The TORRIX 1 bibliography does cite "{10} IVERSON, K.E., A programming
> language, John Wiley & Sons, New York, 1962", but I haven't found
> references in the text yet.
>
> Thanks for sharing.
>
> -Remington
>
> On 5/1/26 2:41 PM, Jose E. Marchesi wrote:
>> Hello.
>>
>> As mentioned in the meetup call, these are the two TORRIX
>> articles/books:
>>
>> TORRIX 1: A programming system for operations on vectors and matrices
>> over arbitrary fields and of variable size
>> - By S.G. van der Meulen and M. Veldhorst
>>
>> https://jemarch.net/torrix-1.pdf
>>
>> TORRIX 2: An analysis of sparse matrix storage schemes
>> - By M. Veldhorst
>>
>> https://jemarch.net/torrix-2.pdf
>>
>>
>> The first torrix is a system written in Algol68 that provides Vec and
>> Mat modes, for "vector" and "matrix" respectively, which are
>> variable-sized in the sense they are "total" arrays/matrices, i.e. they
>> conceptually expand in all directions to infinite, containing zeroes.
>>
>> I have transcribed and ported Torrix to ga68. It compiles. I cannot
>> publish it until I clarify the copyright with the CWI though.
>>
>> The second torrix book (SPARSE) studies the efficient storage of sparse
>> torrix Matrices, i.e. in which there are many zeroed areas. It develops
>> storage algorithms. In principle our Torrix implementation could be
>> expanded with it. The mode it provides is Rowmat, and some others.
>>
>> Salud!
More information about the Algol68
mailing list