![](https://secure.gravatar.com/avatar/5a7d8a4d756bb1f1b2ea729a7e5dcbce.jpg?s=120&d=mm&r=g)
Curtis Cooper wrote:
Hi,
I'm using weave.inline to compare the performance of weave with several other methods of doing the same calculation. It is simply a matrix multiplication: Z = sin(X)*cos(Y). I have attached my program for you to peruse. I am in general very impressed with the usability and performance of weave. I have two questions, however:
1) Why does it tell me 'repairing catalog by removing key' every single time I run this program using 'python tryweave.py'? I thought the idea was for scipy-weave to only have to recompile the C++ portions if the C++ source code changes.
I think this is a bug in weave.inline. Incidentally, I ran into it just today, and also when trying to use some C code which called sin/cos. I may have a look at the weave code to fix it, but I can't make any promises as to when. weave is not quite trivial, and the last time I fixed something there, it took a bit of effort just to wrap my head around enough of the code to understand what to look for. If you can fix it quicker, by all means send a patch.
2) How can I use the sin and cos functions with weave.blitz? Up until now, I have had to comment out the weave_blitz version because I can't figure out how to add cmath support to my blitz++ expression.
You need to make sure that the math.h header is included, and that libm is linked in. Here's a trivial (scalar) example: def sinC(x): """sinC(x) -> sin(x). Implemented using the C sin() function. """ support = \ """ #include <math.h> """ code = \ """ return_val = sin(x); """ return inline(code,['x'], type_converters = converters.blitz, support_code = support, libraries = ['m'], ) Once you do those two things, your looping example with sin(X(i,j)) should work just fine. best, f