Vectors and matrices

JC jcrapuchettes at gmail.com
Mon Apr 20 15:08:39 PDT 2009


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




More information about the Digitalmars-d mailing list