Installed python-numeric 17.1.2-1 (all source i386)

Christopher C. Chimelis chris at debian.org
Fri Dec 1 18:58:50 CST 2000


Doh, found a problem and am still trying to figure out what the best way
to fix it is.  In Src/arrayobject.c, starting at around line 70:

int do_sliced_copy(char *dest, int *dest_strides, int *dest_dimensions,
                   int dest_nd, char *src, int *src_strides,
                   int *src_dimensions, int src_nd, int elsize,
                   int copies) {
        int i, j;               

        if (src_nd == 0 && dest_nd == 0) {
            switch(elsize) {
            case sizeof(char):
                memset(dest, *src, copies);
                break;                
            case sizeof(short):
                for(j=copies; j; --j, dest += sizeof(short))
                    *(short*)dest = *(short*)src;               
                break;
            case sizeof(long):
                for(j=copies; j; --j, dest += sizeof(int))
                    *(int*)dest = *(int*)src;
                break;
            case sizeof(double):
                for(j=copies; j; --j, dest += sizeof(double))
                    *(double*)dest = *(double*)src;
                break;  
            default: 
                for(j=copies; j; --j, dest += elsize)
                    memcpy(dest, src, elsize);
            }
            return 0;
        }

The problem is, that sizeof(long) = sizeof(double) on Alpha (and probably
on the other 64-bit archs).  So, what do you think the best method of
handling this is?

I don't know the package well anymore or else I'd fix it :-P

C



More information about the Numpy-discussion mailing list