Wednesday, 31 July 2013

Slow progress

This morning I implemented the new matrix expression evaluation code which operates without temporary merging. This was done without particular difficulty, and works as expected. I did not implement the full class fmpz_matxx for now, though. Instead, I will brush up the classes we have so far with respect to the things which I have learned since I started:

  • lazy functions with more than two arguments
  • lazy functions with more than one return value
  • more member functions, and in general the changes in naming conventions discussed on the list
  • generic coefficient access
  • static assert

The one thing I have worked on today is lazy functions with more than one return value, implemented using a lazy tuple class. This is a bit tricky (as expected), but I think I have a working design and implementation now. It allows writing things such as

fmpzxx a;
int b;
ltupleref(a, b) = some_lazy_function(17) 
tassert(some_lazy_function(17) == ltuple(a, b))

No comments:

Post a Comment