I've found some cases where longlong integer types are output incorrectly (off
by one). Here's an example:
#!/usr/bin/env perl
use strict;
use warnings;
use PDL;
my $a = pdl longlong(10555000100001144);
my $b = pdl longlong(10555000100001145);
my $ar = $a->get_dataref();
my $br = $b->get_dataref();
print $a." ".$b."\n";
print ${$ar}."\n";
print ${$br}."\n";
${$br} = "y".substr(${$br},1);
$b->upd_data();
print $a." ".$b."\n";
print ${$ar}."\n";
print ${$br}."\n";
print unpack("q",${$ar})." ".unpack("q",${$br})."\n";
exit;
I first try to create to PDLs with longlong type and differing by 1. If I write
out the values they're identical, the first print statement reporting:
10555000100001144 10555000100001144
I can check that these two are actually internally identical by outputting the
packed Perl string representation (second pair of print statements):
x��w�%
x��w�%
So, suppose I force the internal representations to be correct, by adjusting
the packed string representation of $b. Then I write out the same information:
10555000100001144 10555000100001144
x��w�%
y��w�%
So, now the internal representations differ as they should. But when I write
out the values they still look identical.
If I use unpack() to directly convert these strings to longlongs then I get
the expected result:
10555000100001144 10555000100001145
So, this seems to be a bug in displaying the longlong type.
Note that if I use 10555000100001146 instead of 10555000100001145 it works as
expected.
Here's the output from "pdl -V"
$ pdl -V
perlDL shell v1.354_001
PDL comes with ABSOLUTELY NO WARRANTY. For details, see the file
'COPYING' in the PDL distribution. This is free software and you
are welcome to redistribute it under certain conditions, see
the same file for details.
Summary of my PDL configuration
VERSION: PDL v2.4.11 (supports bad values)
$%PDL::Config = {
'BADVAL_PER_PDL' => '0',
'WITH_PROJ' => '0',
'PDL_CONFIG_VERSION' => '0.005',
'POSIX_THREADS_INC' => undef,
'FFTW_TYPE' => 'double',
'PDL_BUILD_DIR' => '/home/abenson/.cpan/build/PDL-2.4.11-
VeX7gG',
'FFTW_LIBS' => undef,
'WITH_FFTW' => '0',
'GSL_LIBS' => undef,
'WITH_IO_BROWSER' => '0',
'PROJ_INC' => undef,
'WHERE_PLPLOT_INCLUDE' => undef,
'HTML_DOCS' => '1',
'SKIP_KNOWN_PROBLEMS' => '0',
'WHERE_PLPLOT_LIBS' => undef,
'WITH_3D' => '0',
'WITH_POSIX_THREADS' => '1',
'POGL_VERSION' => '0.65',
'FFTW_INC' => undef,
'HIDE_TRYLINK' => '1',
'HDF_INC' => undef,
'WITH_HDF' => '0',
'POGL_WINDOW_TYPE' => 'glut',
'WITH_GD' => '0',
'WITH_BADVAL' => '1',
'FITS_LEGACY' => '1',
'WITH_SLATEC' => '1',
'BADVAL_USENAN' => '0',
'WITH_DEVEL_REPL' => '1',
'TEMPDIR' => '/tmp',
'PROJ_LIBS' => undef,
'USE_POGL' => '0',
'PDL_BUILD_VERSION' => '2.4.11',
'GD_LIBS' => undef,
'GSL_INC' => undef,
'GD_INC' => undef,
'WITH_GSL' => '0',
'OPTIMIZE' => undef,
'PDLDOC_IGNORE_AUTOLOADER' => '0',
'HDF_LIBS' => undef,
'POSIX_THREADS_LIBS' => undef,
'MALLOCDBG' => {},
'WITH_MINUIT' => '1',
'WITH_PLPLOT' => '0',
'MINUIT_LIB' => undef
};
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.6.18-53.el5, archname=x86_64-linux-thread-multi
uname='linux builder10.centos.org 2.6.18-53.el5 #1 smp mon nov 12 02:14:55
est 2007 x86_64 x86_64 x86_64 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -
fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -
Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -
Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -
Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.8 -
Dsitelib=/usr/lib/perl5/site_perl/5.8.8 -
Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.8 -
Darchlib=/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi -
Dsitearch=/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi -
Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi -
Darchname=x86_64-linux-thread-multi -Dvendorprefix=/usr -Dsiteprefix=/usr -
Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -
Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -
Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -
Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -
Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -
Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6
5.8.5 -Dscriptdir=/usr/bin'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=define uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -
Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -
D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-
protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -
Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-48)',
gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='gcc', ldflags =''
libpth=/usr/local/lib64 /lib64 /usr/lib64
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-
rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-
D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -
m64 -mtune=generic'
-Andrew
--
* Andrew Benson: http://users.obs.carnegiescience.edu/abenson/contact.html
* Galacticus: http://sites.google.com/site/galacticusmodel
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl