From bug-octave-request at bevo dot che dot wisc dot edu Fri Dec 14 12:08:32 2001 Subject: OCST sysmult() reduces the numerator order of the result? From: Vjekoslav Matic To: bug-octave at bevo dot che dot wisc dot edu Date: Fri, 14 Dec 2001 12:07:53 -0600 -------- Bug report for Octave 2.1.33 configured for %OCTAVE_CANONICAL_HOST_TYPE% Description: ----------- (Perhaps you already received this, I am not sure if bug_report sent it actually or not). When multiplying two systems with sysmult() from package OCST, if one of them has a highest denominator coefficient smaller than cca. 1E-15, the numerator of the result is reduced to order zero. The source of the problem could be in wrong update of the numerator upon the normalization of the denominator. In following example order(D.num) should be = order(A.num) since B = 1 ! The problem comes up also if B.num and B.den are of other orders than zero. See also bode(A) and bode(D). A = tf2sys([1,1],[1E-16,1]); B = tf2sys([1],[1]); # B = 1 C = sysmult(A,B); D = sysupdate(C,"tf"); disp(A.num) disp(D.num) Pleas let me know if this was not a bug at all but rather my misconception of sysmult(). Regards, Vjeko Repeat-By: --------- See "Description" above. Fix: --- Why not just to multiply the numerators and denumerators in "tf" mode as here: function C = sysmult(A,B) A = sysupdate(A,"tf"); B = sysupdate(B,"tf"); C = tf2sys(conv(A.num,B.num),conv(A.den,B.den)); endfunction Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux grlin2 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 unknown configure opts: i386-redhat-linux --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --enable-dl --enable-shared --enable-rpath --enable-lite-kernel --enable-picky-flags --enable-static=no Fortran compiler: g77 FFLAGS: -O2 -march=i386 -mcpu=i686 F2C: F2CFLAGS: FLIBS: -lg2c -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96 -L/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../.. -lm CPPFLAGS: INCFLAGS: -I. -I. -I./liboctave -I./src -I./libcruft/misc -I./glob -I./glob C compiler: gcc, version 2.96 20000731 (Red Hat Linux 7.1 2.96-79) CFLAGS: -O2 -march=i386 -mcpu=i686 CPICFLAG: -fPIC C++ compiler: c++, version 2.96 20000731 (Red Hat Linux 7.1 2.96-79) CXXFLAGS: -O2 -march=i386 -mcpu=i686 CXXPICFLAG: -fPIC LDFLAGS: -g LIBFLAGS: -L. RLD_FLAG: -Xlinker -rpath -Xlinker /usr/lib/octave-2.1.33 TERMLIBS: -lncurses LIBS: -ldl -lz -lm LEXLIB: LIBPLPLOT: LIBDLFCN: LIBGLOB: ./glob/glob.o ./glob/fnmatch.o DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_READLINE=1 -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DHAVE_LIBM=1 -DHAVE_LIBZ=1 -DF77_APPEND_UNDERSCORE=1 -DOCTAVE_LITE=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 -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_FNMATCH_H=1 -DHAVE_GLOB_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_SGTTY_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_TERMIO_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=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_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LINK=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_POLL=1 -DHAVE_PUTENV=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_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 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TM_ZONE=1 -DHAVE_GR_PASSWD=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 -DGNUPLOT_HAS_MULTIPLOT=1 -DGNUPLOT_HAS_FRAMES=1 User-preferences (please do not edit this section): -------------------------------------------------- EDITOR = "emacs" EXEC_PATH = ":.:/users/vmatic/bin:/users/vmatic/bin/Linux2.4.2-2:/usr/local/bin:/usr/ucb:/usr/bin:/usr/sbin:/usr/ucb:/etc:/usr/bin:/bin:/usr/X11R6/bin:/usr/local/bin:/opt/bin:/usr/X11R6/bin:/usr/local/samba/bin:/usr/ccs/bin:/cad/bin:/usr/openwin/bin:/usr/openwin/demo:/usr/demo/SOUND/bin:/usr/local/office52/program:/utils/CentreWare/dcpr/bin:/utils/CentreWare/contrib/bin" IMAGEPATH = ".:/usr/share/octave/2.1.33/imagelib//" INFO_FILE = "/usr/share/info/octave.info" INFO_PROGRAM = "info" LOADPATH = ".:~/tools/octave_lib//:.:/usr/libexec/octave/2.1.33/site/oct/i386-redhat-linux-gnu//:/usr/libexec/octave/site/oct/i386-redhat-linux-gnu//:/usr/share/octave/2.1.33/site/m//:/usr/share/octave/site/m//:/usr/libexec/octave/2.1.33/oct/i386-redhat-linux-gnu//:/usr/share/octave/2.1.33/m//" PAGER = "less -e -P'-- less ?pB(%pB\\%):--. (f)orward, (b)ack, (q)uit$'" PS1 = "\\s:\\#> " PS2 = "> " PS4 = "+ " automatic_replot = 0 beep_on_error = 0 completion_append_char = " " default_eval_print_flag = 1 # default_global_variable_value = default_return_value = [] default_save_format = "ascii" define_all_return_values = 0 do_fortran_indexing = 0 echo_executing_commands = 0 empty_list_elements_ok = "warn" fixed_point_format = 0 gnuplot_binary = "gnuplot" gnuplot_command_end = "\n" gnuplot_command_plot = "pl" gnuplot_command_replot = "cle;rep" gnuplot_command_splot = "sp" gnuplot_command_title = "t" gnuplot_command_using = "u" gnuplot_command_with = "w" gnuplot_has_frames = 1 gnuplot_has_multiplot = 1 history_file = "/users/vmatic/.octave_hist" history_size = 1024 ignore_function_time_stamp = "system" implicit_num_to_str_ok = 0 implicit_str_to_num_ok = 0 initialize_global_variables = 0 max_recursion_depth = 256 ok_to_lose_imaginary_part = "warn" output_max_field_width = 10 output_precision = 5 page_output_immediately = 0 page_screen_output = 1 prefer_column_vectors = 1 print_answer_id_name = 1 print_empty_dimensions = 1 print_rhs_assign_val = 0 propagate_empty_matrices = 1 resize_on_range_error = 1 return_last_computed_value = 0 save_precision = 15 saving_history = 1 silent_functions = 0 split_long_rows = 1 string_fill_char = " " struct_levels_to_print = 2 suppress_verbose_help_message = 0 treat_neg_dim_as_zero = 0 warn_assign_as_truth_value = 1 warn_divide_by_zero = 1 warn_function_name_clash = 1 warn_future_time_stamp = 1 warn_missing_semicolon = 0 warn_variable_switch_label = 0 whitespace_in_literal_matrix = -- ============================================== Vjekoslav Matic Digital/System Design Engineer e-mail: vjekoslav dot matic at diasemi dot com DIALOG SEMICONDUCTOR Kärntner Strasse 518 A-8054 Graz-Seiersberg AUSTRIA Tel. +43 (316) 28 26 50 - 22 Fax. +43 (316) 28 26 50 - 10 http://www.dialog-semiconductor.com ============================================== ------------------------------------------------------------- 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 -------------------------------------------------------------