From bug-octave-request at bevo dot che dot wisc dot edu Sat Feb 14 09:53:22 2004 Subject: SQUEEZE returns result with less than two dimensions From: Schloegl Alois To: bug-octave at bevo dot che dot wisc dot edu Date: Sat, 14 Feb 2004 06:00:40 -0600 Bug report for Octave 2.1.53 configured for i686-pc-linux-gnu Description: ----------- Usually, all data elements have at least two dimensions, (i.e. rows and columns) For scalars, both are 1, for vectors either the number of rows or columns is 1. But the result of squeeze behaves differently. In case the result of SQUEEZE is a scalar or vector, rows and columns can not be obtained for this element. This is an inconsistancy. Repeat-By: --------- octave:7> size(randn(1,1)) ans = 1 1 octave:8> size(randn(6,1)) ans = 6 1 octave:9> size(squeeze(randn(1,6))) ans = 6 octave:10> columns(squeeze(randn(1,6))) error: element number 2 undefined in return list error: evaluating assignment expression near line 34, column 12 error: called from `columns' in file `/usr/local/share/octave/2.1.53/m/general/columns.m' octave:10> rows(squeeze(randn(1,6))) error: element number 2 undefined in return list error: evaluating assignment expression near line 34, column 12 error: called from `rows' in file `/usr/local/share/octave/2.1.53/m/general/rows.m' octave:10> size(squeeze(randn(1,1))) error: squeeze: invalid operation for scalar type error: evaluating argument list element number 1 octave:10> squeeze(randn(1,1)) error: squeeze: invalid operation for scalar type Fix: --- Squeeze should return a result with at least 2 dimensions. If the current algorithm yields a smaller number of dimensions, the dimensions should be filled up by 1's. Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux Edelweiss 2.4.22-1-k7 #5 Sat Oct 4 14:11:12 EST 2003 i686 GNU/Linux configure opts: '--enable-shared' Fortran compiler: g77 FFLAGS: -O F2C: F2CFLAGS: FLIBS: -L/usr/lib/gcc-lib/i486-linux/3.3.3 -L/usr/lib/gcc-lib/i486-linux/3.3.3/../../.. -lhdf5 -lz -lfrtbegin -lg2c -lm -lgcc_s CPPFLAGS: INCFLAGS: -I. -I. -I./liboctave -I./src -I./libcruft/misc -I./glob -I./glob C compiler: gcc, version 3.3.3 20040110 (prerelease) (Debian) CFLAGS: -g -O2 CPICFLAG: -fPIC C++ compiler: g++, version 3.3.3 CXXFLAGS: -g -O2 CXXPICFLAG: -fPIC LD_CXX: g++ LDFLAGS: LIBFLAGS: -L. RLD_FLAG: -Wl,-rpath -Wl,/usr/local/lib/octave-2.1.53 BLAS_LIBS: -lblas FFTW_LIBS: -lfftw LIBS: -lreadline -lncurses -ldl -lhdf5 -lz -lm LEXLIB: LIBPLPLOT: LIBDLFCN: LIBGLOB: ./glob/glob.o ./glob/fnmatch.o SED: /bin/sed DEFS: -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSEPCHAR=1 -DSEPCHAR_STR=":" -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DCXX_ISO_COMPLIANT_LIBRARY=1 -DCXX_ABI=gnu_v3 -DHAVE_LIBM=1 -DHAVE_HDF5_H=1 -DHAVE_HDF5=1 -DHAVE_FFTW_H=1 -DHAVE_FFTW=1 -DF77_FUNC(name,NAME)=name ## _ -DF77_FUNC_(name,NAME)=name ## __ -DHAVE_BLAS=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_NLINK_T=1 -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1 -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=std::string::npos -DHAVE_PLACEMENT_DELETE=1 -DHAVE_DYNAMIC_AUTO_ARRAYS=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NCURSES_H=1 -DHAVE_POLL_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_POLL_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SSTREAM=1 -DHAVE_TERMIO_H=1 -DHAVE_SGTTY_H=1 -DHAVE_GLOB_H=1 -DHAVE_FNMATCH_H=1 -DHAVE_ATEXIT=1 -DHAVE_BASENAME=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_KILL=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_MKSTEMP=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_POLL=1 -DHAVE_PUTENV=1 -DHAVE_RAISE=1 -DHAVE_READLINK=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SELECT=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGLONGJMP=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRFTIME=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRPTIME=1 -DHAVE_SYMLINK=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_VSNPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DHAVE_DLOPEN_API=1 -DENABLE_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_COPYSIGN=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DUSE_READLINE=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DYYTEXT_POINTER=1 -DGNUPLOT_BINARY="gnuplot" -DGNUPLOT_HAS_FRAMES=1 User-preferences (please do not edit this section): -------------------------------------------------- DEFAULT_EXEC_PATH = "/usr/local/libexec/octave/2.1.53/site/exec/i686-pc-linux-gnu:/usr/local/libexec/octave/site/exec/i686-pc-linux-gnu:/usr/local/libexec/octave/2.1.53/exec/i686-pc-linux-gnu:/usr/local/bin" DEFAULT_LOADPATH = ".:/usr/local/libexec/octave/2.1.53/site/oct/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/api-v4/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/site/m//:/usr/local/share/octave/site/api-v4/m//:/usr/local/share/octave/site/m//:/usr/local/libexec/octave/2.1.53/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/m//" EDITOR = "/cygdrive/t/matlab53/bin/medit.exe" EXEC_PATH = ":/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" IMAGEPATH = ".:/usr/local/share/octave/2.1.53/imagelib//" INFO_FILE = "/usr/local/info/octave.info" INFO_PROGRAM = "info" LOADPATH = "/home/schloegl/matlab/NaN:/home/schloegl/matlab/tsa:/home/schloegl/matlab/biosig/:/home/schloegl/matlab/biosig/noneeg:/home/schloegl/matlab/biosig/t500:/home/schloegl/matlab/biosig/t490:/home/schloegl/matlab/biosig/t400:/home/schloegl/matlab/biosig/t300:/home/schloegl/matlab/biosig/t250:/home/schloegl/matlab/biosig/t200:/home/schloegl/matlab/biosig/demo:.:/usr/local/libexec/octave/2.1.53/site/oct/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/api-v4/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/site/m//:/usr/local/share/octave/site/api-v4/m//:/usr/local/share/octave/site/m//:/usr/local/libexec/octave/2.1.53/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/m//:.:/usr/local/libexec/octave/2.1.53/site/oct/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/api-v4/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/site/m//:/usr/local/share/octave/s! ite/api-v4/m//:/usr/local/share/octave/site/m//:/usr/local/libexec/octave/2.1.53/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/m//:/home/schloegl/cvs/octave-forge//:.:/usr/local/libexec/octave/2.1.53/site/oct/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/api-v4/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/site/m//:/usr/local/share/octave/site/api-v4/m//:/usr/local/share/octave/site/m//:/usr/local/libexec/octave/2.1.53/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.53/m//:/home/schloegl/matlab/mylib:/home/schloegl/matlab/dpmi/tools:/home/schloegl/matlab/dpmi/steeg:/home/schloegl/matlab/dpmi/siesta:/home/schloegl/matlab/dpmi/ste:/home/schloegl/matlab/dpmi/gdf5:/home/schloegl/matlab/dpmi/edf:/home/schloegl/matlab/histo:/home/schloegl/matlab/dpmi/lindis:/home/schloegl/matlab/tarpe:/home/schloegl/matlab/octave:/cygdrive/t/eegSW/matlab/eeglab4.1" PAGER = "less -e -P'-- less ?pB(%pB\\%):--. (f)orward, (b)ack, (q)uit$'" PS1 = "\\s:\\#> " PS2 = "> " PS4 = "+ " automatic_replot = 1 beep_on_error = 0 completion_append_char = " " crash_dumps_octave_core = 1 default_save_format = "ascii" echo_executing_commands = 0 fixed_point_format = 0 gnuplot_binary = "gnuplot" gnuplot_command_end = "\n" gnuplot_command_plot = "pl" gnuplot_command_replot = "rep" gnuplot_command_splot = "sp" gnuplot_command_title = "t" gnuplot_command_using = "u" gnuplot_command_with = "w" gnuplot_has_frames = 1 history_file = "/home/schloegl/.octave_hist" history_size = 1024 ignore_function_time_stamp = "system" max_recursion_depth = 256 output_max_field_width = 10 output_precision = 5 page_output_immediately = 0 page_screen_output = 1 print_answer_id_name = 1 print_empty_dimensions = 1 print_rhs_assign_val = 0 # return_last_computed_value = save_precision = 15 saving_history = 1 sighup_dumps_octave_core = 1 sigterm_dumps_octave_core = 1 silent_functions = 0 split_long_rows = 1 string_fill_char = " " struct_levels_to_print = 2 suppress_verbose_help_message = 0 warn_assign_as_truth_value = 1 warn_divide_by_zero = 1 warn_empty_list_elements = 0 warn_fortran_indexing = 0 warn_function_name_clash = 1 warn_future_time_stamp = 1 warn_imag_to_real = 0 warn_missing_semicolon = 0 warn_neg_dim_as_zero = 0 warn_num_to_str = 1 warn_resize_on_range_error = 0 warn_separator_insert = 0 warn_single_quote_string = 0 warn_str_to_num = 0 warn_undefined_return_values = 1 warn_variable_switch_label = 0 ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------