-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTODO
112 lines (80 loc) · 4.4 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
============================================================
CLEM TODO ITEMS
============================================================
1. Figure out how to properly do integer division for gaussian blur
in bench-matrix.cl.
5. Try inlining the functions to avoid all of the type declarations!
This doesn't work. I think I need the type declarations to make
this go fast.
8. Need to set/get values from a given matrix type
appropriately. This is done now with mref which works in some
cases, but not in all cases. Should mref be a funciton that gets
compiled for each subclass and stored as a class allocated slot or
in the metaclass?
9. IN PROGRESS. scalar-ops should work between matrices of different
types. Slowly adding these. add and subtract now work for most
types.
10. IN PROGRES. Need to be able to convert from one matrix type to
another. I have a bunch of these.
15. mat-copy-proto needs to die a horrible death. replace these
instances with more type-aware, or at least optionally more
type-aware matrix creation functions.
16. Figure out what to do about col-vector, row-vector, and scalar in
the face of the typed matrices. This could get a bit messy. Need
to thin about how to handle this.
17. Mostly DONE. Add generics as appropriate.
18. Add conditions for dealing with type-errors on things like mat-subtr.
19. Figure out how to specify different destination types for things
like mat-add an mat-subtr.
20. SORT OF DONE - Add frobs for complex, real, and integer
matrices. Which frobs did you have in mind? A lot are there, more
needed.
22. Break out array math functions for operating on two-d arrays. This
will make functions like affine-transform available for use on
common-lisp arrays, not just clem matrices.
23. mat-add (and friends) need to take multiple args and have a fast
two-arg version that gets called as appropriate.
24. min-val -> mmin and max-val -> mmax
25. Add :initial-contents to the matrix class initargs
29. make scalar-mult external
============================================================
CLEM DONE TODO ITEMS
============================================================
2. DONE -- make metaclass for matrices to better handle type stuff
now we have a standard-matrix-class metaclass that handles much of
the type information.
3. DONE -- Remove specialized-matrix-class stuff and replace abstract
matrix types (like real-matrix, integer-matrix, float-matrix) with
subclasses of standard-matrix-class. Except that I didn't replace
the abstract matrix classes, but rather made them work. I think.
4. DONE -- (element-type matrix) is wrong! we should go through the
metaclass on this and not have this be part of the class at all!
element-type is now only part of the metaclass. I think.
6. DONE -- Make a type moved-element function that moves an element
from one matrix to another with things properly typed, coerced,
etc... This is at least partially done and works well enough,
although the list of supported matrices is minimal. However, it is
trivial to add more type conversions.
7. DONE -- This is a dup of 6. Need a better mechanism for creating,
populating, copying and converting to and from matrices of a given
type. How to create matrices of the following types: double-float,
single-float, unsigned-byte, signed-byte, unsigned-word,
signed-word, bit (or whatever the appropriate one bit type is)
11. DONE, I THINK. random-matrix should work. This should be working
now.
12. DONE. need functions to create a matrix of the same type, and of
the same type and dimensions. Yes, this could be more elegant,
but I think it works at the moment.
13. DONE. shared-initialize Ok, so being new to CL, I didn't know
about shared-initialize (and initialize-instance and
re-initialize-instance) so I didn't know how to get slots
initialized via make-instance. Now I now all this so I need to
remove the hacked up constructor functions I made and replace
everything with calls to make-instance.
14. DONE. rename unsinged-{byte,word,long} to ub{8,16,32}, etc...
21. DONE add multiply funcs for real and complex matrices!
esp. hadamard product for a bit-mask!!
26. DONE. fix optimized mat-mult of incongruent arrays. Should throw
an error. Thanks to MGR for reporting this.
28. DONE Export float-matrix
27. Add more docstrings: random-matrix