[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
* {I downloaded Blitz++, but when I try to gunzip it, I get "invalid compressed data--crc error"}
You forgot to set binary download mode in ftp. Do so with the "binary" command.
* {The compiler complains that there is no Array class, even though I've
included <blitz.h>
.}
You need to have the line:
using namespace blitz; |
after including <blitz.h>
.
* I can't use gcc on my elderly PC because it requires 45--150Mb to compile with Blitz++
Unfortunately this is true. If this problem is ever fixed, it will be by the gcc developers, so my best suggestion is to post a bug report to the gcc-bugs list.
* {I am using gcc under Solaris, and I get errors about "relocation against external symbol"}
This problem can be fixed by installing the gnu linker and
binutils. Peter Nordlund found that by using gnu-binutils-2.9.1
,
this problem disappeared. You can read a detailed
discussion at
http://oonumerics.org/blitz/support/blitz-support/archive/0029.html.
* {I am using gcc under Solaris, and the assembler gives me an error that a symbol is too long.}
This problem can also be fixed by installing the gnu linker and binutils. See the above question.
* DECcxx reports problems about "templates with C linkage"
This problem was caused by a problem in some versions of DECcxx's
`math.h' header: XOPEN_SOURCE_EXTENDED was causing an
extern "C" { ... }
section to have no closing brace.
There is a kludge which is included in recent versions of
Blitz++.
* {On some platforms (especially SGI) the testsuite program
minsumpow
fails with the error: Template instantiation resulted
in an unexpected function type of...
}
This is a known bug in the older versions of the EDG front end, which many C++ compilers use. There is no known fix. Most of Blitz++ will work, but you won't be able to use some array reductions.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
* For my problem, I need SVD, FFTs, QMRES, PLU, QR, ....
Blitz++ does not currently provide any of these. However, there are
numerous C++ and C packages out there which do, and it is easy to move data
back and forth between Blitz++ and other libraries. See these terms in the
index: creating an array from pre-existing data, data()
,
stride()
, extent()
, fortranArray
. For a list of other
numerical C++ libraries, see the Object Oriented Numerics Page at
http://oonumerics.org/oon/.
* Can Blitz++ be interfaced with Python?
Phil Austin has done so successfully. See a description of his setup in http://oonumerics.org/blitz/support/blitz-support/archive/0053.html.
Also see Harry Zuzan's Python/Blitz image processing example code at http://www.stat.duke.edu/~hz/blitz_py/index.html.
* {If I try to allocate an array which is too big, my program just crashes or goes into an infinite loop. Is there some way I can handle this more elegantly?}
Blitz++ uses new
to allocate memory for arrays. In theory, your
compiler should be throwing a bad_alloc
exception when you run out of
memory. If it does, you can use a try/catch
block to handle the out of
memory exception. If your compiler does not throw bad_alloc
, you can
install your own new handler to handle out of memory.
Here is an excerpt from the ISO/ANSI C++ standard which describes the
behaviour of new
:
set_new_handler()
was
a null pointer, throw bad_alloc
.
new_handler
(lib.new.handler). If the called function returns, the loop repeats.
You can use set_new_handler
to create a new handler which
will issue an error message or throw an exception. For
example:
void my_new_handler() { cerr << "Out of memory" << endl; cerr.flush(); abort(); } ... // First line in main(): set_new_handler(my_new_handler); |
* {When I pass arrays by value, the function which receives them can modify the array data. Why?}
It's a result of reference-counting. You have to think of array objects as being "handles" to underlying arrays. The function doesn't receive a copy of the array data, but rather a copy of the handle. The alternative would be to copy the array data when passing by value, which would be grossly inefficient.
* Why can't I use e.g. A >> 3
to do bitshifting on arrays?
The operators <<
and >>
are used for input/ouput of arrays.
It would cause problems with the expression templates implementation to also
use them for bitshifting. However, it is easy enough to define your own
bitshifting function -- see 3.10 Declaring your own math functions on arrays.
* When I write TinyMatrix * TinyVector
I get an error.
Try product(d2,d1)
. This works for matrix-matrix and matrix-vector
products.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |