Lars, I would be happy for you to take a look at it. If you will send me a private e-mail to this address, I'll get my package to you. JC
Lars Kyllingstad Wrote: > JC wrote: > > I do a lot of linear work with economic models in D at work. For this > > reason I created small matrix and vector package that makes use of the > > ATLAS library. Most of the time I don't know the sizes of the matrices > > and vectors that I am working with until runtime. Because of this and to > > keep the memory contiguous, the backend of my package is implemented as > > a dynamic single dimensional array. > > Is your library available online? It would be helpful to be able to take > a look at it. > > > > Because of this and the fact that static arrays cannot exceed 16Mb > > (according to the D1 docs), I would suggest just working with > > opIndex(i,j) instead of the arrays themselves. > > > > Just my 2 cents, > > JC > > > > Lars Kyllingstad wrote: > >> I am writing a D library based some of the stuff in SLATEC, and I've > >> come to a point where I need to decide on a way to manipulate vectors > >> and matrices. To that end, I have some ideas and questions I would > >> like comments on from the community. > >> > >> Ideally, I want to restrict the user as little as possible, so I'm > >> writing heavily templated code in which one can use both > >> library-defined vector/matrix types and built-in arrays (both static > >> and dynamic). My reasons for this are: > >> > >> a) Different problems may benefit from different types. Sparse > >> matrices, dense matrices, triangular matrices, etc. can all be > >> represented differently based on efficiency and/or memory requirements. > >> > >> b) I hope that, at some point, my library will be of such a quality > >> that it may be useful to others, and in that event I will release it. > >> Interoperability with other libraries is therefore a goal for me, and > >> a part of this is to let the user choose other vector/matrix types > >> than the ones provided by me. > >> > >> c) Often, for reasons of both efficiency and simplicity, it is > >> desirable to use arrays directly. > >> > >> My first question goes to those among you who do a lot of linear > >> algebra in D: Do you think supporting both library types and arrays > >> is worth the trouble? Or should I just go with one and be done with it? > >> > >> > >> A user-defined matrix type would have opIndex(i,j) defined, and to > >> retrieve elements one would write m[i,j]. However, the syntax for > >> two-dimensional arrays is m[i][j], and this means I have to put a lot > >> of static ifs around my code, in order to check the type every time I > >> access a matrix. This leads me to my second question, which is a > >> suggestion for a language change, so I expect a lot of resistance. :) > >> > >> Would it be problematic to define m[i,j,...] to be equivalent to > >> m[i][j][...] for built-in arrays, so that arrays and user-defined > >> types could be used interchangeably? > >> > >> (And, importantly, are there anyone but me who think they would > >> benefit from this?) > >> > >> > >> -Lars