This list is closed, nobody may subscribe to it.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(10) |
Aug
(5) |
Sep
(3) |
Oct
(41) |
Nov
(41) |
Dec
(33) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(75) |
Feb
(10) |
Mar
(170) |
Apr
(174) |
May
(66) |
Jun
(11) |
Jul
(10) |
Aug
(44) |
Sep
(73) |
Oct
(28) |
Nov
(139) |
Dec
(52) |
2003 |
Jan
(35) |
Feb
(93) |
Mar
(62) |
Apr
(10) |
May
(55) |
Jun
(70) |
Jul
(37) |
Aug
(16) |
Sep
(56) |
Oct
(31) |
Nov
(57) |
Dec
(83) |
2004 |
Jan
(85) |
Feb
(67) |
Mar
(27) |
Apr
(37) |
May
(75) |
Jun
(85) |
Jul
(160) |
Aug
(68) |
Sep
(104) |
Oct
(25) |
Nov
(39) |
Dec
(23) |
2005 |
Jan
(10) |
Feb
(45) |
Mar
(43) |
Apr
(19) |
May
(108) |
Jun
(31) |
Jul
(41) |
Aug
(23) |
Sep
(65) |
Oct
(58) |
Nov
(44) |
Dec
(54) |
2006 |
Jan
(96) |
Feb
(27) |
Mar
(69) |
Apr
(59) |
May
(67) |
Jun
(35) |
Jul
(13) |
Aug
(461) |
Sep
(160) |
Oct
(399) |
Nov
(32) |
Dec
(72) |
2007 |
Jan
(316) |
Feb
(305) |
Mar
(318) |
Apr
(54) |
May
(194) |
Jun
(173) |
Jul
(282) |
Aug
(91) |
Sep
(227) |
Oct
(365) |
Nov
(168) |
Dec
(18) |
2008 |
Jan
(71) |
Feb
(111) |
Mar
(155) |
Apr
(173) |
May
(70) |
Jun
(67) |
Jul
(55) |
Aug
(83) |
Sep
(32) |
Oct
(68) |
Nov
(80) |
Dec
(29) |
2009 |
Jan
(46) |
Feb
(18) |
Mar
(95) |
Apr
(76) |
May
(140) |
Jun
(98) |
Jul
(84) |
Aug
(123) |
Sep
(94) |
Oct
(131) |
Nov
(142) |
Dec
(125) |
2010 |
Jan
(128) |
Feb
(158) |
Mar
(172) |
Apr
(134) |
May
(94) |
Jun
(84) |
Jul
(32) |
Aug
(127) |
Sep
(167) |
Oct
(109) |
Nov
(69) |
Dec
(78) |
2011 |
Jan
(39) |
Feb
(58) |
Mar
(52) |
Apr
(47) |
May
(56) |
Jun
(76) |
Jul
(55) |
Aug
(54) |
Sep
(165) |
Oct
(255) |
Nov
(328) |
Dec
(263) |
2012 |
Jan
(82) |
Feb
(147) |
Mar
(400) |
Apr
(216) |
May
(209) |
Jun
(160) |
Jul
(86) |
Aug
(141) |
Sep
(156) |
Oct
(6) |
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(2) |
2016 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(8) |
Jul
(2) |
Aug
(5) |
Sep
(9) |
Oct
|
Nov
|
Dec
|
From: <prn...@us...> - 2012-03-18 16:05:23
|
Revision: 9948 http://octave.svn.sourceforge.net/octave/?rev=9948&view=rev Author: prnienhuis Date: 2012-03-18 16:05:16 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Fixed texinfo header Modified Paths: -------------- trunk/octave-forge/main/io/src/cell2csv.cc trunk/octave-forge/main/io/src/csv2cell.cc Modified: trunk/octave-forge/main/io/src/cell2csv.cc =================================================================== --- trunk/octave-forge/main/io/src/cell2csv.cc 2012-03-18 15:35:02 UTC (rev 9947) +++ trunk/octave-forge/main/io/src/cell2csv.cc 2012-03-18 16:05:16 UTC (rev 9948) @@ -19,17 +19,17 @@ #include <octave/Cell.h> DEFUN_DLD (cell2csv, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Loadable Function} {} cell2csv (@var{file}, @var{c})\n" - "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep})\n" - "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep}, @var{prot})\n" - "\n" - "Create a CSV file from a cell array. " - "@var{sep} (character value) changes the character used to separate two fields. " - "The default value is a comma " - "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " - "Default value is a double quote (@code{\"}).\n" - "@end deftypefn") { + "-*- texinfo -*-\n" + "@deftypefn {Loadable Function} {} cell2csv (@var{file}, @var{c})\n" + "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep})\n" + "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep}, @var{prot})\n" + "\n" + "Create a CSV file from a cell array. " + "@var{sep} (character value) changes the character used to separate two fields. " + "The default value is a comma " + "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " + "Default value is a double quote (@code{\"}).\n" + "@end deftypefn") { /* Check argument */ if ((args.length() < 2) || (args.length() > 4)) { Modified: trunk/octave-forge/main/io/src/csv2cell.cc =================================================================== --- trunk/octave-forge/main/io/src/csv2cell.cc 2012-03-18 15:35:02 UTC (rev 9947) +++ trunk/octave-forge/main/io/src/csv2cell.cc 2012-03-18 16:05:16 UTC (rev 9948) @@ -21,13 +21,12 @@ #define MAXSTRINGLENGTH 4096 DEFUN_DLD (csv2cell, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Loadable Function} {@var{c} = } csv2cell (@var{file})\n" + "-*- texinfo -*-\n" + "@deftypefn {Loadable Function} {@var{c} = } csv2cell (@var{file})\n" "@deftypefnx {Loadable Function} {@var{c} = } csv2cell (@var{file}, @var{sep})\n" "@deftypefnx {Loadable Function} {@var{c} = } csv2cell (@var{file}, @var{sep}, @var{prot})\n" "\n" - "Read a CSV (Comma Separated Values) file and convert it into a " - "cell. " + "Read a CSV (Comma Separated Values) file and convert it into a cell array. " "@var{sep} (a character value) changes the character used to separate two fields. " "The default value is a comma " "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-03-18 15:21:39
|
Revision: 9946 http://octave.svn.sourceforge.net/octave/?rev=9946&view=rev Author: cdf Date: 2012-03-18 15:21:33 +0000 (Sun, 18 Mar 2012) Log Message: ----------- omp fix Modified Paths: -------------- trunk/octave-forge/extra/nurbs/src/bspeval.cc Modified: trunk/octave-forge/extra/nurbs/src/bspeval.cc =================================================================== --- trunk/octave-forge/extra/nurbs/src/bspeval.cc 2012-03-18 14:22:27 UTC (rev 9945) +++ trunk/octave-forge/extra/nurbs/src/bspeval.cc 2012-03-18 15:21:33 UTC (rev 9946) @@ -44,10 +44,10 @@ octave_value_list retval; if (!bspeval_bad_arguments (args)) { - int d = args(0).int_value(); - const Matrix c = args(1).matrix_value(); - const RowVector k = args(2).row_vector_value(); - const NDArray u = args(3).array_value(); + int d = args(0).int_value(); + Matrix c = args(1).matrix_value(); + RowVector k = args(2).row_vector_value(); + NDArray u = args(3).array_value(); octave_idx_type nu = u.length(); octave_idx_type mc = c.rows(), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <prn...@us...> - 2012-03-18 14:22:35
|
Revision: 9945 http://octave.svn.sourceforge.net/octave/?rev=9945&view=rev Author: prnienhuis Date: 2012-03-18 14:22:27 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Update to v. 1.0.18 Modified Paths: -------------- trunk/octave-forge/main/io/DESCRIPTION trunk/octave-forge/main/io/INDEX trunk/octave-forge/main/io/NEWS Modified: trunk/octave-forge/main/io/DESCRIPTION =================================================================== --- trunk/octave-forge/main/io/DESCRIPTION 2012-03-18 13:31:18 UTC (rev 9944) +++ trunk/octave-forge/main/io/DESCRIPTION 2012-03-18 14:22:27 UTC (rev 9945) @@ -1,6 +1,6 @@ Name: io -Version: 1.0.17 -Date: 2012-02-27 +Version: 1.0.18 +Date: 2012-03-18 Author: Various Authors Maintainer: Philip Nienhuis <prn...@us...> Title: Input/Output Modified: trunk/octave-forge/main/io/INDEX =================================================================== --- trunk/octave-forge/main/io/INDEX 2012-03-18 13:31:18 UTC (rev 9944) +++ trunk/octave-forge/main/io/INDEX 2012-03-18 14:22:27 UTC (rev 9945) @@ -5,6 +5,13 @@ Miscellaneous conversion functions object2json pch2mat +CSV file functions + csv2cell + csvconcat + csvexplode +XML I/O + xmlread + xmlwrite Spreadsheet I/O user functions for MS-Excel oct2xls xls2oct Modified: trunk/octave-forge/main/io/NEWS =================================================================== --- trunk/octave-forge/main/io/NEWS 2012-03-18 13:31:18 UTC (rev 9944) +++ trunk/octave-forge/main/io/NEWS 2012-03-18 14:22:27 UTC (rev 9945) @@ -1,22 +1,25 @@ Summary of important user-visible changes for releases of the io package =============================================================================== -io-1.0.18 Release Date: TBA Release Manager: Philip Nienhuis +io-1.0.18 Release Date: 2012-03-18 Release Manager: Philip Nienhuis =============================================================================== +** The following functions have been imported from the miscellaneous package: + cell2csv csvconcat xmlread + csv2cell csvexplode xmlwrite + Their error messages and help messages have been cleaned up a bit. + ** Bug fixes: --- odsfinfo: fixed "wrong type argument `cell'" bug when run interactively. --- xlsopen, odsopen: fixed messed up screen output due to UNO usage warning. ---- csv2cell: checks if file is empty annd return an empty cell if so. +--- csv2cell: checks if file is empty and if so, return an empty cell. -** Adapted to internal LibreOffice-3.5-final changes. +** Adapted to internal LibreOffice-3.5-final changes. + Some bugs (flashing LO screens) still have to be fixed upstream - see here: + https://bugs.freedesktop.org/show_bug.cgi?id=42470 ** Tried OpenXLS-6.0.7.jar. Reads OK, still unusable for writing .xls files. -** The following functions have been imported from the miscellaneous package: - cell2csv csvconcat xmlread - csv2cell csvexplode xmlwrite - =============================================================================== io-1.0.17 Release Date: 2012-02-27 Release Manager: Philip Nienhuis =============================================================================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <prn...@us...> - 2012-03-18 13:31:25
|
Revision: 9944 http://octave.svn.sourceforge.net/octave/?rev=9944&view=rev Author: prnienhuis Date: 2012-03-18 13:31:18 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Fixed texinfo header (to be compatible w. get_first_help_sentence.m) Modified Paths: -------------- trunk/octave-forge/main/io/inst/append_save.m trunk/octave-forge/main/io/inst/getusedrange.m trunk/octave-forge/main/io/inst/oct2xls.m trunk/octave-forge/main/io/inst/ods2oct.m trunk/octave-forge/main/io/inst/odsopen.m trunk/octave-forge/main/io/inst/odsread.m trunk/octave-forge/main/io/inst/odswrite.m trunk/octave-forge/main/io/inst/xls2oct.m trunk/octave-forge/main/io/inst/xlswrite.m Modified: trunk/octave-forge/main/io/inst/append_save.m =================================================================== --- trunk/octave-forge/main/io/inst/append_save.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/append_save.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -14,7 +14,7 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## ## append_save M-file function -## + ## Objective: be able to add variables to existing save files. Works for ## all the types of save files that "save" supports. ## Modified: trunk/octave-forge/main/io/inst/getusedrange.m =================================================================== --- trunk/octave-forge/main/io/inst/getusedrange.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/getusedrange.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -18,7 +18,7 @@ ## @deftypefn {Function File} [ @var{toprow#}, @var{bottomrow#}, @var{leftcol#}, @var{rightcol#} ] = getusedrange (@var{spptr}, @var{shindex#}) ## Find occupied data range in worksheet @var{shindex#} in a spreadsheet ## pointed to in struct @var{spptr} (either MS-Excel or -## OpenOffice Calc). +## OpenOffice_org Calc). ## ## @var{shindex#} must be numeric and is 1-based. @var{spptr} can either ## refer to an MS-Excel spreadsheet (spptr returned by xlsopen) or an Modified: trunk/octave-forge/main/io/inst/oct2xls.m =================================================================== --- trunk/octave-forge/main/io/inst/oct2xls.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/oct2xls.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} [ @var{xls}, @var{rstatus} ] = oct2xls (@var{arr}, @var{xls}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} [ @var{xls}, @var{rstatus} ] = oct2xls (@var{arr}, @var{xls}, @var{wsh}, @var{range}, @var{options}) ## -## Add data in 1D/2D CELL array @var{arr} into a range specified in +## Add data in 1D/2D CELL array @var{arr} into a cell range specified in ## @var{range} in worksheet @var{wsh} in an Excel spreadsheet file ## pointed to in structure @var{xls}. ## Return argument @var{xls} equals supplied argument @var{xls} and is Modified: trunk/octave-forge/main/io/inst/ods2oct.m =================================================================== --- trunk/octave-forge/main/io/inst/ods2oct.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/ods2oct.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} [ @var{rawarr}, @var{ods}, @var{rstatus} ] = ods2oct (@var{ods}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} [ @var{rawarr}, @var{ods}, @var{rstatus} ] = ods2oct (@var{ods}, @var{wsh}, @var{range}, @var{options}) ## -## Read data contained within range @var{range} from worksheet @var{wsh} +## Read data contained within cell range @var{range} from worksheet @var{wsh} ## in an OpenOffice_org Calc spreadsheet file pointed to in struct @var{ods}. ## ## @var{ods} is supposed to have been created earlier by odsopen in the Modified: trunk/octave-forge/main/io/inst/odsopen.m =================================================================== --- trunk/octave-forge/main/io/inst/odsopen.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/odsopen.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -19,7 +19,7 @@ ## @deftypefnx {Function File} @var{ods} = odsopen (@var{filename}, @var{readwrite}) ## @deftypefnx {Function File} @var{ods} = odsopen (@var{filename}, @var{readwrite}, @var{reqintf}) ## Get a pointer to an OpenOffice_org spreadsheet in the form of return -## argument @var{ods}. +## argument (struct) @var{ods}. ## ## Calling odsopen without specifying a return argument is fairly useless! ## Modified: trunk/octave-forge/main/io/inst/odsread.m =================================================================== --- trunk/octave-forge/main/io/inst/odsread.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/odsread.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} [@var{numarr}, @var{txtarr}, @var{rawarr}, @var{limits}] = odsread (@var{filename}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} [@var{numarr}, @var{txtarr}, @var{rawarr}, @var{limits}] = odsread (@var{filename}, @var{wsh}, @var{range}, @var{reqintf}) ## -## Read data contained in range @var{range} from worksheet @var{wsh} +## Read data contained from cell range @var{range} in worksheet @var{wsh} ## in OpenOffice_org Calc spreadsheet file @var{filename}. ## ## You need the octave-forge java package (> 1.2.6) and one or both of Modified: trunk/octave-forge/main/io/inst/odswrite.m =================================================================== --- trunk/octave-forge/main/io/inst/odswrite.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/odswrite.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -19,8 +19,8 @@ ## @deftypefnx {Function File} @var{rstatus} = odswrite (@var{filename}, @var{arr}, @var{wsh}) ## @deftypefnx {Function File} @var{rstatus} = odswrite (@var{filename}, @var{arr}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} @var{rstatus} = odswrite (@var{filename}, @var{arr}, @var{wsh}, @var{range}, @var{reqintf}) -## Add data in 1D/2D array @var{arr} to sheet @var{wsh} in -## OpenOffice_org Calc spreadsheet file @var{filename} in range @var{range}. +## Add data in 1D/2D array @var{arr} into sheet @var{wsh} in +## OpenOffice_org Calc spreadsheet file @var{filename} in cell range @var{range}. ## ## @var{rstatus} returns 1 if write succeeded, 0 otherwise. ## Modified: trunk/octave-forge/main/io/inst/xls2oct.m =================================================================== --- trunk/octave-forge/main/io/inst/xls2oct.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/xls2oct.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} [ @var{rawarr}, @var{xls}, @var{rstatus} ] = xls2oct (@var{xls}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} [ @var{rawarr}, @var{xls}, @var{rstatus} ] = xls2oct (@var{xls}, @var{wsh}, @var{range}, @var{options}) ## -## Read data contained within range @var{range} from worksheet @var{wsh} +## Read data contained within cell range @var{range} from worksheet @var{wsh} ## in an Excel spreadsheet file pointed to in struct @var{xls}. ## ## @var{xls} is supposed to have been created earlier by xlsopen in the Modified: trunk/octave-forge/main/io/inst/xlswrite.m =================================================================== --- trunk/octave-forge/main/io/inst/xlswrite.m 2012-03-18 12:59:01 UTC (rev 9943) +++ trunk/octave-forge/main/io/inst/xlswrite.m 2012-03-18 13:31:18 UTC (rev 9944) @@ -20,7 +20,7 @@ ## @deftypefnx {Function File} @var{rstatus} = xlswrite (@var{filename}, @var{arr}, @var{wsh}, @var{range}) ## @deftypefnx {Function File} @var{rstatus} = xlswrite (@var{filename}, @var{arr}, @var{wsh}, @var{range}, @var{reqintf}) ## Add data in 1D/2D array @var{arr} to worksheet @var{wsh} in Excel -## spreadsheet file @var{filename} in range @var{range}. +## spreadsheet file @var{filename} in cell range @var{range}. ## ## @var{rstatus} returns 1 if write succeeded, 0 otherwise. ## This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <prn...@us...> - 2012-03-18 12:59:07
|
Revision: 9943 http://octave.svn.sourceforge.net/octave/?rev=9943&view=rev Author: prnienhuis Date: 2012-03-18 12:59:01 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Fixed texinfo headers, improved clarity of error messages Modified Paths: -------------- trunk/octave-forge/main/io/src/cell2csv.cc trunk/octave-forge/main/io/src/csv2cell.cc trunk/octave-forge/main/io/src/csvconcat.cc trunk/octave-forge/main/io/src/csvexplode.cc trunk/octave-forge/main/io/src/xmltree.c Modified: trunk/octave-forge/main/io/src/cell2csv.cc =================================================================== --- trunk/octave-forge/main/io/src/cell2csv.cc 2012-03-18 12:58:03 UTC (rev 9942) +++ trunk/octave-forge/main/io/src/cell2csv.cc 2012-03-18 12:59:01 UTC (rev 9943) @@ -24,11 +24,11 @@ "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep})\n" "@deftypefnx {Loadable Function} {} cell2csv (@var{file}, @var{c}, @var{sep}, @var{prot})\n" "\n" - "Create a CSV file from a cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" + "Create a CSV file from a cell array. " + "@var{sep} (character value) changes the character used to separate two fields. " + "The default value is a comma " + "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " + "Default value is a double quote (@code{\"}).\n" "@end deftypefn") { /* Check argument */ @@ -44,20 +44,20 @@ std::string sep = (args.length() > 2) ? args(2).string_value() : ","; if (sep.length() != 1) { - error("Only on charactere need as separator\n"); + error("cell2csv: separator can only be one character\n"); return octave_value(); } std::string prot = (args.length() > 3) ? args(3).string_value() : "\""; if (prot.length() != 1) { - error("Only on charactere need as protector\n"); + error("cell2csv: protector can only be one character\n"); return octave_value(); } /* Open file */ std::ofstream fd(file.c_str()); if (!fd.is_open()) { - error("cannot write %s\n", file.c_str()); + error("cell2csv: cannot open file %s for writing\n", file.c_str()); return octave_value(); } @@ -98,7 +98,7 @@ else if (!c(i, j).is_empty()) { /* Output NaN value */ - warning ("not a real or a string\n"); + warning ("cell2csv: empty cell or not a real or a string value - converted to 'NaN'\n"); word += "NaN"; } Modified: trunk/octave-forge/main/io/src/csv2cell.cc =================================================================== --- trunk/octave-forge/main/io/src/csv2cell.cc 2012-03-18 12:58:03 UTC (rev 9942) +++ trunk/octave-forge/main/io/src/csv2cell.cc 2012-03-18 12:59:01 UTC (rev 9943) @@ -28,10 +28,11 @@ "\n" "Read a CSV (Comma Separated Values) file and convert it into a " "cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" + "@var{sep} (a character value) changes the character used to separate two fields. " + "The default value is a comma " + "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " + "The default is a double quote (@code{\"}).\n" + "The maximum line width of the csv file is 4092 characters.\n" "@end deftypefn") { /* Get arguments */ @@ -48,7 +49,7 @@ const std::string _sep = (nargin > 1) ? args (1).string_value () : ","; if (_sep.length() != 1) { - error ("csv2cell: only on charactere need as separator"); + error ("csv2cell: separator value can only be one character\n"); return retval; } char sep = _sep[0]; @@ -56,7 +57,7 @@ const std::string _prot = (nargin > 2) ? args (2).string_value () : "\""; if (_prot.length() != 1) { - error ("csv2cell: only on charactere need as protector"); + error ("csv2cell: protector value can be only one character\n"); return retval; } char prot = _prot[0]; @@ -65,7 +66,7 @@ std::ifstream fd (file.c_str ()); if (!fd.is_open ()) { - error ("csv2cell: cannot read %s", file.c_str()); + error ("csv2cell: cannot open file %s for reading\n", file.c_str()); return retval; } fd.seekg (0, std::ios::end); @@ -118,7 +119,7 @@ fd.seekg (0, std::ios::beg); if (!fd.good ()) { - error ("csv2cell: cannot reread %s", file.c_str ()); + error ("csv2cell: cannot reread %s\n", file.c_str ()); return retval; } @@ -149,7 +150,7 @@ if (j == nbcolumns) { fd.close (); - error ("csv2cell: incorrect CSV file, line %d too long", i+1); + error ("csv2cell: incorrect CSV file, line %d too long\n", i+1); return retval; } @@ -180,7 +181,7 @@ if (j != nbcolumns) { fd.close (); - error ("csv2cell: incorrect CSV file, line %d too short", i+1); + error ("csv2cell: incorrect CSV file, line %d too short\n", i+1); return retval; } } Modified: trunk/octave-forge/main/io/src/csvconcat.cc =================================================================== --- trunk/octave-forge/main/io/src/csvconcat.cc 2012-03-18 12:58:03 UTC (rev 9942) +++ trunk/octave-forge/main/io/src/csvconcat.cc 2012-03-18 12:59:01 UTC (rev 9943) @@ -23,10 +23,10 @@ "@deftypefnx {Loadable Function} {@var{str} = } csvconcat (@var{c}, @var{sep}, @var{prot})\n" "\n" "Concatenate a cell into a CSV string or array of strings. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" + "@var{sep} (character value) changes the character used to separate two fields. " + "The default value is a comma " + "(@code{,}). @var{prot} (character value) changes the character used to protect a string. " + "The default is a double quote (@code{\"}).\n" "@end deftypefn") { /* Check argument */ @@ -40,13 +40,13 @@ std::string sep = (args.length() > 1) ? args(1).string_value() : ","; if (sep.length() != 1) { - error("Only on charactere need as separator\n"); + error("csvconcat: separator can only be one character\n"); return octave_value(); } std::string prot = (args.length() > 2) ? args(2).string_value() : "\""; if (prot.length() != 1) { - error("Only on charactere need as protector\n"); + error("csvconcat: protector can only be one character\n"); return octave_value(); } @@ -87,7 +87,7 @@ else { /* Output NaN value */ - warning ("not a real or a string\n"); + warning ("csvconcat: empty cell or not a real or string value - converted to 'NaN'\n"); word += "NaN"; } } Modified: trunk/octave-forge/main/io/src/csvexplode.cc =================================================================== --- trunk/octave-forge/main/io/src/csvexplode.cc 2012-03-18 12:58:03 UTC (rev 9942) +++ trunk/octave-forge/main/io/src/csvexplode.cc 2012-03-18 12:59:01 UTC (rev 9943) @@ -23,10 +23,9 @@ "@deftypefnx {Loadable Function} {@var{c} = } csvexplode (@var{str}, @var{sep}, @var{prot})\n" "\n" "Explode a CSV string into a cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" + "@var{sep} (character value) changes the character used to separate two fields. " + "The default value is a comma (@code{,}). @var{prot} (character value) changes " + "the character used to protect a string. The default is a double quote (@code{\"}).\n" "@end deftypefn") { /* Check argument */ @@ -46,14 +45,14 @@ std::string _sep = (args.length() > 1) ? args(1).string_value() : ","; if (_sep.length() != 1) { - error("Only on charactere need as separator\n"); + error("csvexplode: separator can only be one character\n"); return octave_value(); } char sep = _sep[0]; std::string _prot = (args.length() > 2) ? args(2).string_value() : "\""; if (_prot.length() != 1) { - error("Only on charactere need as protector\n"); + error("csvexplode: protector can only be one character\n"); return octave_value(); } char prot = _prot[0]; Modified: trunk/octave-forge/main/io/src/xmltree.c =================================================================== --- trunk/octave-forge/main/io/src/xmltree.c 2012-03-18 12:58:03 UTC (rev 9942) +++ trunk/octave-forge/main/io/src/xmltree.c 2012-03-18 12:59:01 UTC (rev 9943) @@ -23,7 +23,7 @@ element *new; new = (element *) malloc (sizeof(element)); if (!new) - perror("xml: no enough memory for new_element()\n"); + perror("xmltree: not enough memory for new_element()\n"); new->next = new->child = NULL; @@ -152,7 +152,7 @@ list *new; new = (list *) malloc (sizeof(list)); if (!new) - perror("xml: no enough memory for new_list()\n"); + perror("xmltree: not enough memory for new_list()\n"); new->prev = father; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <prn...@us...> - 2012-03-18 12:58:10
|
Revision: 9942 http://octave.svn.sourceforge.net/octave/?rev=9942&view=rev Author: prnienhuis Date: 2012-03-18 12:58:03 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Added "xmlwrite:" to several error messages Modified Paths: -------------- trunk/octave-forge/main/io/inst/xmlwrite.m Modified: trunk/octave-forge/main/io/inst/xmlwrite.m =================================================================== --- trunk/octave-forge/main/io/inst/xmlwrite.m 2012-03-18 12:33:00 UTC (rev 9941) +++ trunk/octave-forge/main/io/inst/xmlwrite.m 2012-03-18 12:58:03 UTC (rev 9942) @@ -17,7 +17,7 @@ ## @deftypefn {Function File} {@var{nb} =} xmlwrite (@var{filename}, @var{value}) ## @deftypefnx {Function File} {@var{nb} =} xmlwrite (@var{fd}, @var{value}, [@var{name}]) ## -## Write a @var{value} into @var{filename} (@var{fd}) as a XML file. +## Write a @var{value} into @var{filename} (@var{fd}) as an XML file. ## ##The number of elements (@var{nb}) or 0 is returned. ## @end deftypefn @@ -45,7 +45,7 @@ ## Open file fd = fopen (filename, "w"); if fd <= 0 - error("error opening file \"%s\"\n", filename); + error("xmlwrite: error opening file \"%s\"\n", filename); endif ## XML header @@ -189,7 +189,7 @@ else ## Unknown type - error("unknown type\n"); + error("xmlwrite: unknown type\n"); endif nb++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-18 12:33:09
|
Revision: 9941 http://octave.svn.sourceforge.net/octave/?rev=9941&view=rev Author: jpicarbajal Date: 2012-03-18 12:33:00 +0000 (Sun, 18 Mar 2012) Log Message: ----------- geometry: Bump version. Waiting for feedback on installation bug Modified Paths: -------------- trunk/octave-forge/main/geometry/DESCRIPTION trunk/octave-forge/main/geometry/INDEX trunk/octave-forge/main/geometry/NEWS Added Paths: ----------- trunk/octave-forge/main/geometry/inst/geom2d/geom2d_Contents.m Removed Paths: ------------- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m Modified: trunk/octave-forge/main/geometry/DESCRIPTION =================================================================== --- trunk/octave-forge/main/geometry/DESCRIPTION 2012-03-18 12:24:58 UTC (rev 9940) +++ trunk/octave-forge/main/geometry/DESCRIPTION 2012-03-18 12:33:00 UTC (rev 9941) @@ -1,6 +1,6 @@ Name: Geometry -Version: 1.4.0 -Date: 2012-01-25 +Version: 1.4.1 +Date: 2012-03-18 Author: David Legland <dav...@gr...>, José Luis García Pallero <jgp...@gm...>, Juan Pablo Carbajal <car...@if...> Maintainer: Juan Pablo Carbajal <car...@if...> Title: Computational Geometry Modified: trunk/octave-forge/main/geometry/INDEX =================================================================== --- trunk/octave-forge/main/geometry/INDEX 2012-03-18 12:24:58 UTC (rev 9940) +++ trunk/octave-forge/main/geometry/INDEX 2012-03-18 12:33:00 UTC (rev 9941) @@ -1,6 +1,6 @@ geometry >> Computational Geometry 2D Descriptive - geometry_Contents + geom2d_Contents points2d vectors2d angles2d Modified: trunk/octave-forge/main/geometry/NEWS =================================================================== --- trunk/octave-forge/main/geometry/NEWS 2012-03-18 12:24:58 UTC (rev 9940) +++ trunk/octave-forge/main/geometry/NEWS 2012-03-18 12:33:00 UTC (rev 9941) @@ -1,11 +1,16 @@ Summary of important user-visible changes for releases of the geometry package =============================================================================== -geometry-1.4.X Release Date: XX Release Manager: Juan Pablo Carbajal +geometry-1.4.1 Release Date: 2012-03-18 Release Manager: Juan Pablo Carbajal =============================================================================== +* Renamed functions + - Contents.m renamed to geom2d_Contents to avoid clashes. + * Bug fixes - @svg/path2polygon.m + - Fix addpath/rmpath installation warnings + - Fix octclip/src/Makefile * Known issues - simplifypolygon.m returns empty polygons when points are repeated, i.e when Copied: trunk/octave-forge/main/geometry/inst/geom2d/geom2d_Contents.m (from rev 9939, trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m) =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/geom2d_Contents.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/geom2d_Contents.m 2012-03-18 12:33:00 UTC (rev 9941) @@ -0,0 +1,223 @@ +%% Copyright (c) 2011, INRA +%% 2007-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} geom2d_Contents () +%% Geometry 2D Toolbox +%% Version 1.2.0 21-Oct-2011 . +%% +%% Library to handle and visualize geometric primitives such as points, +%% lines, circles and ellipses, polygons... +%% +%% The goal is to provide a low-level library for manipulating geometrical +%% primitives, making easier the development of more complex geometric +%% algorithms. +%% +%% Most functions works for planar shapes, but some ones have been +%% extended to 3D or to any dimension. +%% +%% Points +%% points2d - Description of functions operating on points +%% clipPoints - Clip a set of points by a box +%% centroid - Compute centroid (center of mass) of a set of points +%% midPoint - Middle point of two points or of an edge +%% isCounterClockwise - Compute relative orientation of 3 points +%% polarPoint - Create a point from polar coordinates (rho + theta) +%% angle2Points - Compute horizontal angle between 2 points +%% angle3Points - Compute oriented angle made by 3 points +%% angleSort - Sort points in the plane according to their angle to origin +%% distancePoints - Compute distance between two points +%% minDistancePoints - Minimal distance between several points +%% transformPoint - Transform a point with an affine transform +%% drawPoint - Draw the point on the axis. +%% +%% Vectors +%% vectors2d - Description of functions operating on plane vectors +%% createVector - Create a vector from two points +%% vectorNorm - Compute norm of a vector, or of a set of vectors +%% vectorAngle - Angle of a vector, or between 2 vectors +%% normalizeVector - Normalize a vector to have norm equal to 1 +%% isPerpendicular - Check orthogonality of two vectors +%% isParallel - Check parallelism of two vectors +%% transformVector - Transform a vector with an affine transform +%% rotateVector - Rotate a vector by a given angle +%% +%% Straight lines +%% lines2d - Description of functions operating on planar lines +%% createLine - Create a straight line from 2 points, or from other inputs +%% medianLine - Create a median line between two points +%% cartesianLine - Create a straight line from cartesian equation coefficients +%% orthogonalLine - Create a line orthogonal to another one. +%% parallelLine - Create a line parallel to another one. +%% intersectLines - Return all intersection points of N lines in 2D +%% lineAngle - Computes angle between two straight lines +%% linePosition - Position of a point on a line +%% lineFit - Fit a straight line to a set of points +%% clipLine - Clip a line with a box +%% reverseLine - Return same line but with opposite orientation +%% transformLine - Transform a line with an affine transform +%% drawLine - Draw the line on the current axis +%% +%% Edges (line segments between 2 points) +%% edges2d - Description of functions operating on planar edges +%% createEdge - Create an edge between two points, or from a line +%% edgeToLine - Convert an edge to a straight line +%% edgeAngle - Return angle of edge +%% edgeLength - Return length of an edge +%% midPoint - Middle point of two points or of an edge +%% edgePosition - Return position of a point on an edge +%% clipEdge - Clip an edge with a rectangular box +%% reverseEdge - Intervert the source and target vertices of edge +%% intersectEdges - Return all intersections between two set of edges +%% intersectLineEdge - Return intersection between a line and an edge +%% transformEdge - Transform an edge with an affine transform +%% drawEdge - Draw an edge given by 2 points +%% drawCenteredEdge - Draw an edge centered on a point +%% +%% Rays +%% rays2d - Description of functions operating on planar rays +%% createRay - Create a ray (half-line), from various inputs +%% bisector - Return the bisector of two lines, or 3 points +%% clipRay - Clip a ray with a box +%% drawRay - Draw a ray on the current axis +%% +%% Relations between points and lines +%% distancePointEdge - Minimum distance between a point and an edge +%% distancePointLine - Minimum distance between a point and a line +%% projPointOnLine - Project of a point orthogonally onto a line +%% pointOnLine - Create a point on a line at a given position on the line +%% isPointOnLine - Test if a point belongs to a line +%% isPointOnEdge - Test if a point belongs to an edge +%% isPointOnRay - Test if a point belongs to a ray +%% isLeftOriented - Test if a point is on the left side of a line +%% +%% Circles +%% circles2d - Description of functions operating on circles +%% createCircle - Create a circle from 2 or 3 points +%% createDirectedCircle - Create a directed circle +%% intersectCircles - Intersection points of two circles +%% intersectLineCircle - Intersection point(s) of a line and a circle +%% circleAsPolygon - Convert a circle into a series of points +%% circleArcAsCurve - Convert a circle arc into a series of points +%% isPointInCircle - Test if a point is located inside a given circle +%% isPointOnCircle - Test if a point is located on a given circle. +%% enclosingCircle - Find the minimum circle enclosing a set of points. +%% radicalAxis - Compute the radical axis (or radical line) of 2 circles +%% drawCircle - Draw a circle on the current axis +%% drawCircleArc - Draw a circle arc on the current axis +%% +%% Ellipses +%% ellipses2d - Description of functions operating on ellipses +%% inertiaEllipse - Inertia ellipse of a set of points +%% isPointInEllipse - Check if a point is located inside a given ellipse +%% ellipseAsPolygon - Convert an ellipse into a series of points +%% drawEllipse - Draw an ellipse on the current axis +%% drawEllipseArc - Draw an ellipse arc on the current axis +%% +%% Geometric transforms +%% transforms2d - Description of functions operating on transforms +%% createTranslation - Create the 3*3 matrix of a translation +%% createRotation - Create the 3*3 matrix of a rotation +%% createScaling - Create the 3*3 matrix of a scaling in 2 dimensions +%% createHomothecy - Create the the 3x3 matrix of an homothetic transform +%% createBasisTransform - Compute matrix for transforming a basis into another basis +%% createLineReflection - Create the the 3x3 matrix of a line reflection +%% fitAffineTransform2d - Fit an affine transform using two point sets +%% +%% Angles +%% angles2d - Description of functions for manipulating angles +%% normalizeAngle - Normalize an angle value within a 2*PI interval +%% angleAbsDiff - Absolute difference between two angles +%% angleDiff - Difference between two angles +%% deg2rad - Convert angle from degrees to radians +%% rad2deg - Convert angle from radians to degrees +%% +%% Boxes +%% boxes2d - Description of functions operating on bounding boxes +%% intersectBoxes - Intersection of two bounding boxes +%% mergeBoxes - Merge two boxes, by computing their greatest extent +%% randomPointInBox - Generate random point within a box +%% drawBox - Draw a box defined by coordinate extents +%% +%% Various drawing functions +%% drawBezierCurve - Draw a cubic bezier curve defined by 4 control points +%% drawParabola - Draw a parabola on the current axis +%% drawOrientedBox - Draw centered oriented rectangle +%% drawRect - Draw rectangle on the current axis +%% drawArrow - Draw an arrow on the current axis +%% drawLabels - Draw labels at specified positions +%% drawShape - Draw various types of shapes (circles, polygons...) +%% +%% Other shapes +%% squareGrid - Generate equally spaces points in plane. +%% hexagonalGrid - Generate hexagonal grid of points in the plane. +%% triangleGrid - Generate triangular grid of points in the plane. +%% crackPattern - Create a (bounded) crack pattern tessellation +%% crackPattern2 - Create a (bounded) crack pattern tessellation +%% +%% +%% Credits: +%% * function 'enclosingCircle' rewritten from a file from Yazan Ahed +%% , available on Matlab File Exchange +%% +%% @end deftypefn + +function geom2d_Contents () + + help('geom2d_Contents'); + + %% Deprecated functions + + % createMedian - create a median line + % minDistance - compute minimum distance between a point and a set of points + % homothecy - create a homothecy as an affine transform + % rotation - return 3*3 matrix of a rotation + % translation - return 3*3 matrix of a translation + % scaling - return 3*3 matrix of a scaling in 2 dimensions + % lineSymmetry - create line symmetry as 2D affine transform + % vecnorm - compute norm of vector or of set of vectors + % normalize - normalize a vector + % onCircle - test if a point is located on a given circle. + % inCircle - test if a point is located inside a given circle. + % onEdge - test if a point belongs to an edge + % onLine - test if a point belongs to a line + % onRay - test if a point belongs to a ray + % invertLine - return same line but with opposite orientation + % clipLineRect - clip a line with a polygon + % formatAngle - Ensure an angle value is comprised between 0 and 2*PI + + + %% Others... + % drawRect2 - Draw centered rectangle on the current axis + +endfunction Deleted: trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m 2012-03-18 12:24:58 UTC (rev 9940) +++ trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m 2012-03-18 12:33:00 UTC (rev 9941) @@ -1,224 +0,0 @@ -%% Copyright (c) 2011, INRA -%% 2007-2011, David Legland <dav...@gr...> -%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> -%% -%% All rights reserved. -%% (simplified BSD License) -%% -%% Redistribution and use in source and binary forms, with or without -%% modification, are permitted provided that the following conditions are met: -%% -%% 1. Redistributions of source code must retain the above copyright notice, this -%% list of conditions and the following disclaimer. -%% -%% 2. Redistributions in binary form must reproduce the above copyright notice, -%% this list of conditions and the following disclaimer in the documentation -%% and/or other materials provided with the distribution. -%% -%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -%% POSSIBILITY OF SUCH DAMAGE. -%% -%% The views and conclusions contained in the software and documentation are -%% those of the authors and should not be interpreted as representing official -%% policies, either expressed or implied, of copyright holder. - -%% -*- texinfo -*- -%% @deftypefn {Function File} geometry_Contents () -%% Geometry 2D Toolbox -%% Version 1.2.0 21-Oct-2011 . -%% -%% Library to handle and visualize geometric primitives such as points, -%% lines, circles and ellipses, polygons... -%% -%% The goal is to provide a low-level library for manipulating geometrical -%% primitives, making easier the development of more complex geometric -%% algorithms. -%% -%% Most functions works for planar shapes, but some ones have been -%% extended to 3D or to any dimension. -%% -%% Points -%% points2d - Description of functions operating on points -%% clipPoints - Clip a set of points by a box -%% centroid - Compute centroid (center of mass) of a set of points -%% midPoint - Middle point of two points or of an edge -%% isCounterClockwise - Compute relative orientation of 3 points -%% polarPoint - Create a point from polar coordinates (rho + theta) -%% angle2Points - Compute horizontal angle between 2 points -%% angle3Points - Compute oriented angle made by 3 points -%% angleSort - Sort points in the plane according to their angle to origin -%% distancePoints - Compute distance between two points -%% minDistancePoints - Minimal distance between several points -%% transformPoint - Transform a point with an affine transform -%% drawPoint - Draw the point on the axis. -%% -%% Vectors -%% vectors2d - Description of functions operating on plane vectors -%% createVector - Create a vector from two points -%% vectorNorm - Compute norm of a vector, or of a set of vectors -%% vectorAngle - Angle of a vector, or between 2 vectors -%% normalizeVector - Normalize a vector to have norm equal to 1 -%% isPerpendicular - Check orthogonality of two vectors -%% isParallel - Check parallelism of two vectors -%% transformVector - Transform a vector with an affine transform -%% rotateVector - Rotate a vector by a given angle -%% -%% Straight lines -%% lines2d - Description of functions operating on planar lines -%% createLine - Create a straight line from 2 points, or from other inputs -%% medianLine - Create a median line between two points -%% cartesianLine - Create a straight line from cartesian equation coefficients -%% orthogonalLine - Create a line orthogonal to another one. -%% parallelLine - Create a line parallel to another one. -%% intersectLines - Return all intersection points of N lines in 2D -%% lineAngle - Computes angle between two straight lines -%% linePosition - Position of a point on a line -%% lineFit - Fit a straight line to a set of points -%% clipLine - Clip a line with a box -%% reverseLine - Return same line but with opposite orientation -%% transformLine - Transform a line with an affine transform -%% drawLine - Draw the line on the current axis -%% -%% Edges (line segments between 2 points) -%% edges2d - Description of functions operating on planar edges -%% createEdge - Create an edge between two points, or from a line -%% edgeToLine - Convert an edge to a straight line -%% edgeAngle - Return angle of edge -%% edgeLength - Return length of an edge -%% midPoint - Middle point of two points or of an edge -%% edgePosition - Return position of a point on an edge -%% clipEdge - Clip an edge with a rectangular box -%% reverseEdge - Intervert the source and target vertices of edge -%% intersectEdges - Return all intersections between two set of edges -%% intersectLineEdge - Return intersection between a line and an edge -%% transformEdge - Transform an edge with an affine transform -%% drawEdge - Draw an edge given by 2 points -%% drawCenteredEdge - Draw an edge centered on a point -%% -%% Rays -%% rays2d - Description of functions operating on planar rays -%% createRay - Create a ray (half-line), from various inputs -%% bisector - Return the bisector of two lines, or 3 points -%% clipRay - Clip a ray with a box -%% drawRay - Draw a ray on the current axis -%% -%% Relations between points and lines -%% distancePointEdge - Minimum distance between a point and an edge -%% distancePointLine - Minimum distance between a point and a line -%% projPointOnLine - Project of a point orthogonally onto a line -%% pointOnLine - Create a point on a line at a given position on the line -%% isPointOnLine - Test if a point belongs to a line -%% isPointOnEdge - Test if a point belongs to an edge -%% isPointOnRay - Test if a point belongs to a ray -%% isLeftOriented - Test if a point is on the left side of a line -%% -%% Circles -%% circles2d - Description of functions operating on circles -%% createCircle - Create a circle from 2 or 3 points -%% createDirectedCircle - Create a directed circle -%% intersectCircles - Intersection points of two circles -%% intersectLineCircle - Intersection point(s) of a line and a circle -%% circleAsPolygon - Convert a circle into a series of points -%% circleArcAsCurve - Convert a circle arc into a series of points -%% isPointInCircle - Test if a point is located inside a given circle -%% isPointOnCircle - Test if a point is located on a given circle. -%% enclosingCircle - Find the minimum circle enclosing a set of points. -%% radicalAxis - Compute the radical axis (or radical line) of 2 circles -%% drawCircle - Draw a circle on the current axis -%% drawCircleArc - Draw a circle arc on the current axis -%% -%% Ellipses -%% ellipses2d - Description of functions operating on ellipses -%% inertiaEllipse - Inertia ellipse of a set of points -%% isPointInEllipse - Check if a point is located inside a given ellipse -%% ellipseAsPolygon - Convert an ellipse into a series of points -%% drawEllipse - Draw an ellipse on the current axis -%% drawEllipseArc - Draw an ellipse arc on the current axis -%% -%% Geometric transforms -%% transforms2d - Description of functions operating on transforms -%% createTranslation - Create the 3*3 matrix of a translation -%% createRotation - Create the 3*3 matrix of a rotation -%% createScaling - Create the 3*3 matrix of a scaling in 2 dimensions -%% createHomothecy - Create the the 3x3 matrix of an homothetic transform -%% createBasisTransform - Compute matrix for transforming a basis into another basis -%% createLineReflection - Create the the 3x3 matrix of a line reflection -%% fitAffineTransform2d - Fit an affine transform using two point sets -%% -%% Angles -%% angles2d - Description of functions for manipulating angles -%% normalizeAngle - Normalize an angle value within a 2*PI interval -%% angleAbsDiff - Absolute difference between two angles -%% angleDiff - Difference between two angles -%% deg2rad - Convert angle from degrees to radians -%% rad2deg - Convert angle from radians to degrees -%% -%% Boxes -%% boxes2d - Description of functions operating on bounding boxes -%% intersectBoxes - Intersection of two bounding boxes -%% mergeBoxes - Merge two boxes, by computing their greatest extent -%% randomPointInBox - Generate random point within a box -%% drawBox - Draw a box defined by coordinate extents -%% -%% Various drawing functions -%% drawBezierCurve - Draw a cubic bezier curve defined by 4 control points -%% drawParabola - Draw a parabola on the current axis -%% drawOrientedBox - Draw centered oriented rectangle -%% drawRect - Draw rectangle on the current axis -%% drawArrow - Draw an arrow on the current axis -%% drawLabels - Draw labels at specified positions -%% drawShape - Draw various types of shapes (circles, polygons...) -%% -%% Other shapes -%% squareGrid - Generate equally spaces points in plane. -%% hexagonalGrid - Generate hexagonal grid of points in the plane. -%% triangleGrid - Generate triangular grid of points in the plane. -%% crackPattern - Create a (bounded) crack pattern tessellation -%% crackPattern2 - Create a (bounded) crack pattern tessellation -%% -%% -%% Credits: -%% * function 'enclosingCircle' rewritten from a file from Yazan Ahed -%% , available on Matlab File Exchange -%% -%% @end deftypefn - -function geometry_Contents () - - help('Contents'); - - %% Deprecated functions - - % createMedian - create a median line - % minDistance - compute minimum distance between a point and a set of points - % homothecy - create a homothecy as an affine transform - % rotation - return 3*3 matrix of a rotation - % translation - return 3*3 matrix of a translation - % scaling - return 3*3 matrix of a scaling in 2 dimensions - % lineSymmetry - create line symmetry as 2D affine transform - % vecnorm - compute norm of vector or of set of vectors - % normalize - normalize a vector - % onCircle - test if a point is located on a given circle. - % inCircle - test if a point is located inside a given circle. - % onEdge - test if a point belongs to an edge - % onLine - test if a point belongs to a line - % onRay - test if a point belongs to a ray - % invertLine - return same line but with opposite orientation - % clipLineRect - clip a line with a polygon - % formatAngle - Ensure an angle value is comprised between 0 and 2*PI - - - %% Others... - % drawRect2 - Draw centered rectangle on the current axis - -endfunction - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-18 12:25:04
|
Revision: 9940 http://octave.svn.sourceforge.net/octave/?rev=9940&view=rev Author: jpicarbajal Date: 2012-03-18 12:24:58 +0000 (Sun, 18 Mar 2012) Log Message: ----------- linear-algebra: style fix to nmf_pg Modified Paths: -------------- trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m Modified: trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m =================================================================== --- trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m 2012-03-18 00:04:27 UTC (rev 9939) +++ trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m 2012-03-18 12:24:58 UTC (rev 9940) @@ -139,7 +139,7 @@ if verbose fprintf ('--- Factorizing %d-by-%d matrix into %d-by-%d times %d-by-%d\n',... r,c,Wr,Wc,Hr,Hc); - fprintf ('Initial gradient norm = %f', initgrad); + fprintf ("Initial gradient norm = %f\n", initgrad); fflush (stdout); text_waitbar(0,'Please wait ...'); end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-03-18 00:04:34
|
Revision: 9939 http://octave.svn.sourceforge.net/octave/?rev=9939&view=rev Author: cdf Date: 2012-03-18 00:04:27 +0000 (Sun, 18 Mar 2012) Log Message: ----------- get ready for new release Modified Paths: -------------- trunk/octave-forge/extra/nurbs/DESCRIPTION Modified: trunk/octave-forge/extra/nurbs/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/nurbs/DESCRIPTION 2012-03-17 20:46:12 UTC (rev 9938) +++ trunk/octave-forge/extra/nurbs/DESCRIPTION 2012-03-18 00:04:27 UTC (rev 9939) @@ -1,6 +1,6 @@ Name: Nurbs -Version: 1.3.5 -Date: 2011-08-26 +Version: 1.3.6 +Date: 2012-03-17 Author: Mark Spink, Daniel Claxton, Carlo de Falco, Rafael Vazquez Maintainer: Carlo de Falco and Rafael Vazquez Title: Nurbs. @@ -10,5 +10,5 @@ Autoload: no License: GPL version 2 or later Url: http://octave.sf.net -SVNRelease: 8477 +SVNRelease: 9939 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tho...@us...> - 2012-03-17 20:46:18
|
Revision: 9938 http://octave.svn.sourceforge.net/octave/?rev=9938&view=rev Author: thomas-weber Date: 2012-03-17 20:46:12 +0000 (Sat, 17 Mar 2012) Log Message: ----------- Drop executable bit from prs_spice.m Property Changed: ---------------- trunk/octave-forge/extra/ocs/inst/prs/prs_spice.m Property changes on: trunk/octave-forge/extra/ocs/inst/prs/prs_spice.m ___________________________________________________________________ Deleted: svn:executable - * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-17 19:05:46
|
Revision: 9937 http://octave.svn.sourceforge.net/octave/?rev=9937&view=rev Author: paramaniac Date: 2012-03-17 19:05:40 +0000 (Sat, 17 Mar 2012) Log Message: ----------- control-devel: compare measured with simulated output in an example Modified Paths: -------------- trunk/octave-forge/extra/control-devel/devel/test_slident.m Modified: trunk/octave-forge/extra/control-devel/devel/test_slident.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-17 16:00:05 UTC (rev 9936) +++ trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-17 19:05:40 UTC (rev 9937) @@ -2075,6 +2075,25 @@ assert (s, se, 1e-4); + + +figure (1) +plot (Y) + +P = ss (a, b, c, d, 1); + +figure (2) +lsim (P, U) +%lsim (P, U, [], x0) % initial values dependent on realization, IB01BD != IB01CD + + +[y, t] = lsim (P, U); + +figure (3) +plot (t, Y, 'b', t, y, 'r') +legend ('y measured', 'y simulated', 'location', 'southeast') +axis tight + %n %sv This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-17 16:00:11
|
Revision: 9936 http://octave.svn.sourceforge.net/octave/?rev=9936&view=rev Author: paramaniac Date: 2012-03-17 16:00:05 +0000 (Sat, 17 Mar 2012) Log Message: ----------- control-devel: check results with assert Modified Paths: -------------- trunk/octave-forge/extra/control-devel/devel/test_slident.m trunk/octave-forge/extra/control-devel/src/slident.cc Modified: trunk/octave-forge/extra/control-devel/devel/test_slident.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-17 12:41:13 UTC (rev 9935) +++ trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-17 16:00:05 UTC (rev 9936) @@ -2033,6 +2033,48 @@ [a, b, c, d, q, ry, s, k] = slident (Y, U, nobr, meth, alg, jobd, batch, conct, ctrl, rcond, tol) + +ae = [ 0.8924 0.3887 0.1285 0.1716 + -0.0837 0.6186 -0.6273 -0.4582 + 0.0052 0.1307 0.6685 -0.6755 + 0.0055 0.0734 -0.2148 0.4788 ]; + +ce = [ -0.4442 0.6663 0.3961 0.4102 ]; + +be = [ -0.2142 + -0.1968 + 0.0525 + 0.0361 ]; + +de = [ -0.0041 ]; + +ke = [ -1.9513 + -0.1867 + 0.6348 + -0.3486 ]; + +qe = [ 0.0052 0.0005 -0.0017 0.0009 + 0.0005 0.0000 -0.0002 0.0001 + -0.0017 -0.0002 0.0006 -0.0003 + 0.0009 0.0001 -0.0003 0.0002 ]; + +rye = [ 0.0012 ]; + +se = [ -0.0025 + -0.0002 + 0.0008 + -0.0005 ]; + +assert (a, ae, 1e-4); +assert (b, be, 1e-4); +assert (c, ce, 1e-4); +assert (d, de, 1e-4); +assert (k, ke, 1e-4); +assert (q, qe, 1e-4); +assert (ry, rye, 1e-4); +assert (s, se, 1e-4); + + %n %sv Modified: trunk/octave-forge/extra/control-devel/src/slident.cc =================================================================== --- trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 12:41:13 UTC (rev 9935) +++ trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 16:00:05 UTC (rev 9936) @@ -556,6 +556,11 @@ //////////////////////////////////////////////////////////////////////////////////// // SLICOT IB01CD - estimating the initial state // //////////////////////////////////////////////////////////////////////////////////// + +// TODO: use only one iwork and dwork for all three slicot routines +// ldwork = max (ldwork_a, ldwork_b, ldwork_c) + + /* // arguments in char jobx0 = 'X'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-17 12:41:20
|
Revision: 9935 http://octave.svn.sourceforge.net/octave/?rev=9935&view=rev Author: jpicarbajal Date: 2012-03-17 12:41:13 +0000 (Sat, 17 Mar 2012) Log Message: ----------- geometry: fixing install Modified Paths: -------------- trunk/octave-forge/main/geometry/PKG_ADD trunk/octave-forge/main/geometry/PKG_DEL trunk/octave-forge/main/geometry/inst/octclip/src/Makefile Modified: trunk/octave-forge/main/geometry/PKG_ADD =================================================================== --- trunk/octave-forge/main/geometry/PKG_ADD 2012-03-17 10:23:00 UTC (rev 9934) +++ trunk/octave-forge/main/geometry/PKG_ADD 2012-03-17 12:41:13 UTC (rev 9935) @@ -1,20 +1,29 @@ %1 dirlist = {"geom2d","io","polygons2d","shape2d","octclip", "graphs"}; dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +pp = strsplit (dirname,filesep (), true); +%% Check if prefix was used +[pkg_folder dep_folder] = pkg ("prefix"); +pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; + %% If we are in Architecture dependent folder add from outside arch = cstrcat (octave_config_info ("canonical_host_type"), "-", octave_config_info ("api_version")); -pp = strsplit (dirname,filesep (), true); -if strcmp(arch , pp{end}) +if strcmp (arch , pp{end}) dirname = [strcat(filesep(),{pp{1:end-1}}){:}]; + pkg_folder = strsplit (pkg_folder,filesep (), true); + pkg_folder = [strcat(filesep(),{pkg_folder{1:end-1}}){:}]; end if (! exist (fullfile (dirname, "inst"), "dir")) +%% Installing for ii=1:length (dirlist) - addpath ( [ dirname filesep dirlist{ii}],"-end") + addpath ( [ pkg_folder filesep() dirlist{ii}],"-end") endfor else +%% Testing warning("geometry:Devel","Adding path for testing."); for ii=1:length(dirlist) addpath ([ dirname "/inst/" dirlist{ii}]) Modified: trunk/octave-forge/main/geometry/PKG_DEL =================================================================== --- trunk/octave-forge/main/geometry/PKG_DEL 2012-03-17 10:23:00 UTC (rev 9934) +++ trunk/octave-forge/main/geometry/PKG_DEL 2012-03-17 12:41:13 UTC (rev 9935) @@ -1,20 +1,28 @@ %1 dirlist = {"geom2d","io","polygons2d","shape2d","octclip","graphs"}; dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +pp = strsplit (dirname,filesep (), true); +%% Check if prefix was used +[pkg_folder dep_folder] = pkg ("prefix"); +pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; + %% If we are not in Architecture dependent folder arch = cstrcat (octave_config_info ("canonical_host_type"), "-", octave_config_info ("api_version")); pp = strsplit (dirname,filesep (), true); if strcmp(arch , pp{end}) dirname = [strcat(filesep(),{pp{1:end-1}}){:}]; + pkg_folder = strsplit (pkg_folder,filesep (), true); + pkg_folder = [strcat(filesep(),{pkg_folder{1:end-1}}){:}]; end if (! exist (fullfile (dirname, "inst"), "dir")) +## Run this if the package is installed for ii=1:length (dirlist) - ## Run this if the package is installed - rmpath ( [ dirname filesep dirlist{ii}]) - end + rmpath ( [ pkg_folder filesep() dirlist{ii}]) + endfor else warning("geometry:Devel","Removing path for testing."); for ii=1:length(dirlist) Modified: trunk/octave-forge/main/geometry/inst/octclip/src/Makefile =================================================================== --- trunk/octave-forge/main/geometry/inst/octclip/src/Makefile 2012-03-17 10:23:00 UTC (rev 9934) +++ trunk/octave-forge/main/geometry/inst/octclip/src/Makefile 2012-03-17 12:41:13 UTC (rev 9935) @@ -5,15 +5,15 @@ CLIPOBJECT = compilador.o errores.o eucli.o fgeneral.o greiner.o polig.o \ ptopol.o segmento.o ventorno.o +FLAGS = -Wall -Wextra -all: _oc_polybool.oct - %.o: %.c - $(MKOCTFILE) -I. -c $< + $(MKOCTFILE) $(FLAGS) -I. -c $< %.oct: %.cc $(CLIPOBJECT) - $(MKOCTFILE) -v -I. $(CLIPOBJECT) -s $< + $(MKOCTFILE) $< $(CLIPOBJECT) $(FLAGS) -v -I. +all: _oc_polybool.oct clean: rm -rf *.o *~ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-17 10:23:06
|
Revision: 9934 http://octave.svn.sourceforge.net/octave/?rev=9934&view=rev Author: jpicarbajal Date: 2012-03-17 10:23:00 +0000 (Sat, 17 Mar 2012) Log Message: ----------- geometry: fixing index Modified Paths: -------------- trunk/octave-forge/main/geometry/INDEX Modified: trunk/octave-forge/main/geometry/INDEX =================================================================== --- trunk/octave-forge/main/geometry/INDEX 2012-03-17 10:22:29 UTC (rev 9933) +++ trunk/octave-forge/main/geometry/INDEX 2012-03-17 10:23:00 UTC (rev 9934) @@ -1,6 +1,6 @@ geometry >> Computational Geometry 2D Descriptive - Contents + geometry_Contents points2d vectors2d angles2d This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-17 10:22:35
|
Revision: 9933 http://octave.svn.sourceforge.net/octave/?rev=9933&view=rev Author: jpicarbajal Date: 2012-03-17 10:22:29 +0000 (Sat, 17 Mar 2012) Log Message: ----------- geometry: fixing contents to avoid overlaping Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m Modified: trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m 2012-03-17 10:15:54 UTC (rev 9932) +++ trunk/octave-forge/main/geometry/inst/geom2d/geometry_Contents.m 2012-03-17 10:22:29 UTC (rev 9933) @@ -32,7 +32,7 @@ %% policies, either expressed or implied, of copyright holder. %% -*- texinfo -*- -%% @deftypefn {Function File} Contents () +%% @deftypefn {Function File} geometry_Contents () %% Geometry 2D Toolbox %% Version 1.2.0 21-Oct-2011 . %% @@ -192,7 +192,7 @@ %% %% @end deftypefn -function Contents () +function geometry_Contents () help('Contents'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-17 10:16:01
|
Revision: 9932 http://octave.svn.sourceforge.net/octave/?rev=9932&view=rev Author: jpicarbajal Date: 2012-03-17 10:15:54 +0000 (Sat, 17 Mar 2012) Log Message: ----------- linear-algebra: nmf_pg ready to release Modified Paths: -------------- trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m Modified: trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m =================================================================== --- trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m 2012-03-17 08:50:48 UTC (rev 9931) +++ trunk/octave-forge/main/linear-algebra/devel/nmf_pg.m 2012-03-17 10:15:54 UTC (rev 9932) @@ -58,18 +58,42 @@ ## 2012 - Modified and adapted to Octave 3.6.1 by ## Juan Pablo Carbajal <car...@if...> -function [W, H] = nmf_pg (V, Winit=[], Hinit=[], tol=1e-6, timelimit=1, maxiter=100) +function [W, H] = nmf_pg (V, varargin) + # JuanPi Fri 16 Mar 2012 10:49:11 AM CET # TODO: # - finish docstring -# - verbose optional # - avoid multiple transpositions -# - vectorize loops + + # --- Parse arguments --- # + parser = inputParser (); + parser.FunctionName = "nmf_pg"; + parser = addParamValue (parser,'Winit', [], @ismatrix); + parser = addParamValue (parser,'Hinit', [], @ismatrix); + parser = addParamValue (parser,'Tol', 1e-6, @(x)x>0); + parser = addParamValue (parser,'TimeLimit', 10, @(x)x>0); + parser = addParamValue (parser,'MaxIter', 100, @(x)x>0); + parser = addParamValue (parser,'MaxSubIter', 1e3, @(x)x>0); + parser = addParamValue (parser,'Verbose', true); + parser = parse(parser,varargin{:}); + + Winit = parser.Results.Winit; + Hinit = parser.Results.Hinit; + tol = parser.Results.Tol; + timelimit = parser.Results.TimeLimit; + maxiter = parser.Results.MaxIter; + maxsubiter = parser.Results.MaxSubIter; + verbose = parser.Results.Verbose; + + clear parser + # ------ # + + # --- Initialize matrices --- # [r c] = size (V); - Hgiven = !isempty (Hinit) - Wgiven = !isempty (Winit) + Hgiven = !isempty (Hinit); + Wgiven = !isempty (Winit); if Wgiven && !Hgiven - + W = Winit; H = ones (size (W,2),c); @@ -94,55 +118,82 @@ H = Hinit; end + [Hr,Hc] = size(H); + [Wr,Wc] = size(W); + # start tracking time initt = cputime (); gradW = W*(H*H') - V*H'; gradH = (W'*W)*H - W'*V; - + initgrad = norm([gradW; gradH'],'fro'); - - fprintf('Init gradient norm %f\n', initgrad); - + + # Tolerances for matrices tolW = max(0.001,tol)*initgrad; tolH = tolW; - for iter=1:maxiter, + # ------ # - % stopping condition + # --- Main Loop --- # + if verbose + fprintf ('--- Factorizing %d-by-%d matrix into %d-by-%d times %d-by-%d\n',... + r,c,Wr,Wc,Hr,Hc); + fprintf ('Initial gradient norm = %f', initgrad); + fflush (stdout); + text_waitbar(0,'Please wait ...'); + end + + for iter = 1:maxiter + + # stopping condition projnorm = norm ( [ gradW(gradW<0 | W>0); gradH(gradH<0 | H>0) ] ); - if projnorm < tol*initgrad || cputime-initt > timelimit, - break; + stop_cond = [projnorm < tol*initgrad , cputime-initt > timelimit]; + if any (stop_cond) + if stop_cond(2) + warning('mnf_pg:MaxIter',["Time limit exceeded.\n" ... + "Could be solved increasing TimeLimit.\n"]); + end + break end - - [W, gradW, iterW] = nlssubprob(V', H', W', tolW, 1000); + + + # FIXME: avoid multiple transpositions + [W, gradW, iterW] = nlssubprob(V', H', W', tolW, maxsubiter, verbose); W = W'; gradW = gradW'; - + if iterW == 1, tolW = 0.1 * tolW; end - [H, gradH, iterH] = nlssubprob(V, W, H, tolH, 1000); + [H, gradH, iterH] = nlssubprob(V, W, H, tolH, maxsubiter, verbose); if iterH == 1, - tolH = 0.1 * tolH; + tolH = 0.1 * tolH; end if (iterW == 1 && iterH == 1 && tolH + tolW < tol*initgrad), - fprintf('Failed to move\n'); break; + warning ('nmf_pg:InvalidArgument','Failed to move'); + break end - - if rem(iter,10)==0 - fprintf('.'); - end + if verbose + text_waitbar (iter/maxiter); + end end - - fprintf('\nIter = %d Final proj-grad norm %f\n', iter, projnorm); + if iter == maxiter + warning('mnf_pg:MaxIter',["Reached maximum iterations in main loop.\n" ... + "Could be solved increasing MaxIter.\n"]); + end + + if verbose + fprintf ('\nIterations = %d\nFinal proj-grad norm = %f\n', iter, projnorm); + fflush (stdout); + end endfunction -function [H, grad,iter] = nlssubprob(V,W,Hinit,tol,maxiter) +function [H, grad,iter] = nlssubprob(V,W,Hinit,tol,maxiter,verbose) % H, grad: output solution and gradient % iter: #iterations used % V, W: constant matrices @@ -150,28 +201,28 @@ % tol: stopping tolerance % maxiter: limit of iterations - H = Hinit; + H = Hinit; WtV = W'*V; - WtW = W'*W; + WtW = W'*W; alpha = 1; beta = 0.1; - + for iter=1:maxiter grad = WtW*H - WtV; projgrad = norm ( grad(grad < 0 | H >0) ); - + if projgrad < tol, break end - % search step size + % search step size Hn = max(H - alpha*grad, 0); d = Hn-H; gradd = sum ( sum (grad.*d) ); dQd = sum ( sum ((WtW*d).*d) ); - - if gradd + 0.5*dQd > 0.01*gradd, + + if gradd + 0.5*dQd > 0.01*gradd, % decrease alpha while 1, alpha *= beta; @@ -179,37 +230,38 @@ d = Hn-H; gradd = sum (sum (grad.*d) ); dQd = sum (sum ((WtW*d).*d)); - + if gradd + 0.5*dQd <= 0.01*gradd || alpha < 1e-20 H = Hn; break end - + endwhile - - else + + else % increase alpha while 1, Hp = Hn; alpha /= beta; - Hn = max(H - alpha*grad, 0); + Hn = max (H - alpha*grad, 0); d = Hn-H; gradd = sum ( sum (grad.*d) ); dQd = sum (sum ( (WtW*d).*d ) ); - + if gradd + 0.5*dQd > 0.01*gradd || Hn == Hp || alpha > 1e10 H = Hp; alpha *= beta; break end - - endwhile + + endwhile end - + endfor if iter == maxiter - fprintf('Max iter in nlssubprob\n'); + warning('mnf_pg:MaxIter',["Reached maximum iterations in nlssubprob\n" ... + "Could be solved increasing MaxSubIter.\n"]); end endfunction @@ -217,31 +269,27 @@ %!demo %! t = linspace (0,1,100)'; %! -%! % Build hump functions of different frequency +%! ## --- Build hump functions of different frequency %! W_true = arrayfun ( @(f)sin(2*pi*f*t).^2, linspace (0.5,2,4), ... %! 'uniformoutput', false ); %! W_true = cell2mat (W_true); -%! -%! % Build combinator vectors -%! c = (1:4)'; +%! ## --- Build combinator vectors +%! c = (1:4)'; %! H_true = arrayfun ( @(f)circshift(c,f), linspace (0,3,4), ... %! 'uniformoutput', false ); %! H_true = cell2mat (H_true); -%! -%! % Mix them +%! ## --- Mix them %! V = W_true*H_true; -%! -%! % give good inital guesses +%! ## --- Give good inital guesses %! Winit = W_true + 0.4*randn(size(W_true)); %! Hinit = H_true + 0.2*randn(size(H_true)); -%! -%! Factorize -%! [W H] = nmf_pg(V,Winit,Hinit,1e-6,1,1e3); +%! ## --- Factorize +%! [W H] = nmf_pg(V,'Winit',Winit,'Hinit',Hinit,'Tol',1e-6,'MaxIter',1e3); %! disp('True mixer') %! disp(H_true) %! disp('Rounded factorized mixer') %! disp(round(H)) -%! +%! ## --- Plot results %! plot(t,W,'o;factorized;') %! hold on %! plot(t,W_true,'-;True;') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-17 08:50:54
|
Revision: 9931 http://octave.svn.sourceforge.net/octave/?rev=9931&view=rev Author: paramaniac Date: 2012-03-17 08:50:48 +0000 (Sat, 17 Mar 2012) Log Message: ----------- control-devel: integrate Slicot IB01CD Modified Paths: -------------- trunk/octave-forge/extra/control-devel/src/slident.cc Removed Paths: ------------- trunk/octave-forge/extra/control-devel/devel/makefile_ident.m Deleted: trunk/octave-forge/extra/control-devel/devel/makefile_ident.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/makefile_ident.m 2012-03-17 07:20:50 UTC (rev 9930) +++ trunk/octave-forge/extra/control-devel/devel/makefile_ident.m 2012-03-17 08:50:48 UTC (rev 9931) @@ -1,54 +0,0 @@ -## ============================================================================== -## Developer Makefile for OCT-files -## ============================================================================== -## USAGE: * fetch control-devel from Octave-Forge by svn -## * add control-devel/inst, control-devel/src and control-devel/devel -## to your Octave path (by an .octaverc file) -## * run makefile_ident -## ============================================================================== - -homedir = pwd (); -develdir = fileparts (which ("makefile_ident")); -srcdir = [develdir, "/../src"]; -cd (srcdir); - -## preprocess the input-output data -mkoctfile IB01AD.f IB01MD.f IB01ND.f IB01OD.f IB01MY.f \ - MB04OD.f MB03UD.f MB04ID.f MA02AD.f MB03OD.f \ - MB04IY.f IB01OY.f MA02ED.f MA02FD.f MB04OY.f \ - "$(mkoctfile -p LAPACK_LIBS)" \ - "$(mkoctfile -p BLAS_LIBS)" \ - "$(mkoctfile -p FLIBS)" - -## estimating system matrices, Kalman gain, and covariances -mkoctfile IB01BD.f IB01PD.f MA02AD.f SB02MT.f SB02RD.f \ - SB02ND.f MB02UD.f MA02ED.f IB01PY.f MB03OD.f \ - MB02QY.f IB01PX.f SB02MS.f SB02RU.f SB02SD.f \ - MB01RU.f SB02QD.f SB02MV.f SB02MW.f SB02MR.f \ - MB02PD.f MB01SD.f MB04KD.f MB03UD.f MB04OD.f \ - MB04OY.f MB01VD.f select.f MB01UD.f SB03SY.f \ - MB01RX.f SB03MX.f SB03SX.f MB01RY.f SB03QY.f \ - SB03QX.f SB03MY.f SB04PX.f SB03MV.f SB03MW.f \ - "$(mkoctfile -p LAPACK_LIBS)" \ - "$(mkoctfile -p BLAS_LIBS)" - -## estimating the initial state -mkoctfile IB01CD.f TB01WD.f IB01RD.f IB01QD.f select.f \ - MB01TD.f MA02AD.f MB04OD.f MB04OY.f MB02UD.f \ - MB03UD.f MB01SD.f \ - "$(mkoctfile -p LAPACK_LIBS)" \ - "$(mkoctfile -p BLAS_LIBS)" \ - "$(mkoctfile -p FLIBS)" - -## fit state-space model to frequency response data -mkoctfile slsb10yd.cc \ - SB10YD.f DG01MD.f AB04MD.f SB10ZP.f AB07ND.f \ - MC01PD.f TD04AD.f TD03AY.f TB01PD.f TB01XD.f \ - AB07MD.f TB01UD.f TB01ID.f MB01PD.f MB03OY.f \ - MB01QD.f \ - "$(mkoctfile -p LAPACK_LIBS)" \ - "$(mkoctfile -p BLAS_LIBS)" - -system ("rm *.o"); -cd (homedir); - Modified: trunk/octave-forge/extra/control-devel/src/slident.cc =================================================================== --- trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 07:20:50 UTC (rev 9930) +++ trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 08:50:48 UTC (rev 9931) @@ -556,7 +556,75 @@ //////////////////////////////////////////////////////////////////////////////////// // SLICOT IB01CD - estimating the initial state // //////////////////////////////////////////////////////////////////////////////////// +/* + // arguments in + char jobx0 = 'X'; + char comuse = 'U'; + char jobbd = 'D'; + + // arguments out + int ldv = max (1, n); + + ColumnVector x0 (n); + Matrix (ldv, n); + + // workspace + int liwork_c = n; // if JOBX0 = 'X' and COMUSE <> 'C' + int ldwork_c; + + ldwork_c = ldw1 + n*( n + m + l ) + max (5*n, ldw1, min (ldw2, ldw3)) + + + // I can't find a definition for parameter 't' + +C The length of the array DWORK. +C LDWORK >= 2, if JOBX0 = 'N' and COMUSE <> 'C', or +C if max( N, M ) = 0. +C Otherwise, +C LDWORK >= LDW1 + N*( N + M + L ) + +C max( 5*N, LDW1, min( LDW2, LDW3 ) ), +C where, if COMUSE = 'C', then +C LDW1 = 2, if M = 0 or JOB = 'B', +C LDW1 = 3, if M > 0 and JOB = 'D', +C LDWa = t*L*(r + 1) + max( N + max( d, f ), 6*r ), +C LDW2 = LDWa, if M = 0 or JOB = 'B', +C LDW2 = max( LDWa, t*L*(r + 1) + 2*M*M + 6*M ), +C if M > 0 and JOB = 'D', +C LDWb = (b + r)*(r + 1) + +C max( q*(r + 1) + N*N*M + c + max( d, f ), 6*r ), +C LDW3 = LDWb, if M = 0 or JOB = 'B', +C LDW3 = max( LDWb, (b + r)*(r + 1) + 2*M*M + 6*M ), +C if M > 0 and JOB = 'D', +C r = N*M + a, +C a = 0, if JOBX0 = 'N', +C a = N, if JOBX0 = 'X'; +C b = 0, if JOB = 'B', +C b = L*M, if JOB = 'D'; +C c = 0, if JOBX0 = 'N', +C c = L*N, if JOBX0 = 'X'; +C d = 0, if JOBX0 = 'N', +C d = 2*N*N + N, if JOBX0 = 'X'; +C f = 2*r, if JOB = 'B' or M = 0, +C f = M + max( 2*r, M ), if JOB = 'D' and M > 0; +C q = b + r*L; +C and, if JOBX0 = 'X' and COMUSE <> 'C', then +C LDW1 = 2, +C LDW2 = t*L*(N + 1) + 2*N + max( 2*N*N, 4*N ), +C LDW3 = N*(N + 1) + 2*N + max( q*(N + 1) + 2*N*N + L*N, +C 4*N ), +C q = N*L. +C For good performance, LDWORK should be larger. + + + OCTAVE_LOCAL_BUFFER (int, iwork_c, liwork_c); + OCTAVE_LOCAL_BUFFER (double, dwork_c, ldwork_c); + + // error indicators + int iwarn_c = 0; + int info_c = 0; + + // SLICOT routine IB01CD F77_XFCN (ib01cd, IB01CD, (jobx0, comuse, job***, @@ -603,6 +671,7 @@ error_msg ("ident", info_c, 2, err_msg_c); warning_msg ("ident", iwarn_c, 6, warn_msg_c); +*/ // return values retval(0) = a; @@ -614,6 +683,8 @@ retval(5) = ry; retval(6) = s; retval(7) = k; + + //retval(8) = x0; //retval(0) = octave_value (n); //retval(1) = r; //retval(2) = sv; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-17 07:20:57
|
Revision: 9930 http://octave.svn.sourceforge.net/octave/?rev=9930&view=rev Author: paramaniac Date: 2012-03-17 07:20:50 +0000 (Sat, 17 Mar 2012) Log Message: ----------- control-devel: prepare computation of initial state Modified Paths: -------------- trunk/octave-forge/extra/control-devel/src/slident.cc Modified: trunk/octave-forge/extra/control-devel/src/slident.cc =================================================================== --- trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 02:55:09 UTC (rev 9929) +++ trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-17 07:20:50 UTC (rev 9930) @@ -67,6 +67,22 @@ bool* BWORK, int& IWARN, int& INFO); + int F77_FUNC (ib01cd, IB01CD) + (char& JOBX0, char& COMUSE, char& JOB, + int& N, int& M, int& L, + int& NSMP, + double* A, int& LDA, + double* B, int& LDB, + double* C, int& LDC, + double* D, int& LDD, + double* U, int& LDU, + double* Y, int& LDY, + double* X0, + double* V, int& LDV, + double& TOL, + int* IWORK, + double* DWORK, int& LDWORK, + int& IWARN, int& INFO); } // PKG_ADD: autoload ("slident", "devel_slicot_functions.oct"); @@ -85,6 +101,10 @@ } else { +//////////////////////////////////////////////////////////////////////////////////// +// SLICOT IB01AD - preprocess the input-output data // +//////////////////////////////////////////////////////////////////////////////////// + // arguments in char meth; char alg; @@ -359,9 +379,9 @@ int rs = 2*(m+l)*nobr; r.resize (rs, rs); -////////////////////////////////////////////////////////// -// SLICOT IB01BD - A, B, C, D // -////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +// SLICOT IB01BD - estimating system matrices, Kalman gain, and covariances // +//////////////////////////////////////////////////////////////////////////////////// // arguments in char job = 'A'; @@ -532,6 +552,57 @@ ry.resize (l, l); s.resize (n, l); k.resize (n, l); + +//////////////////////////////////////////////////////////////////////////////////// +// SLICOT IB01CD - estimating the initial state // +//////////////////////////////////////////////////////////////////////////////////// + + // SLICOT routine IB01CD + F77_XFCN (ib01cd, IB01CD, + (jobx0, comuse, job***, + n, m, l, + nsmp, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + u.fortran_vec (), ldu, + y.fortran_vec (), ldy, + x0.fortran_vec (), + v.fortran_vec (), ldv, + tolb, + iwork_c, + dwork_c, ldwork_c, + iwarn_c, info_c)); + + + if (f77_exception_encountered) + error ("ident: exception in SLICOT subroutine IB01CD"); + + static const char* err_msg_c[] = { + "0: OK", + "1: the QR algorithm failed to compute all the " + "eigenvalues of the matrix A (see LAPACK Library " + "routine DGEES); the locations DWORK(i), for " + "i = g+1:g+N*N, contain the partially converged " + "Schur form", + "2: the singular value decomposition (SVD) algorithm did " + "not converge"}; + + static const char* warn_msg_c[] = { + "0: OK", + "1: warning message not specified", + "2: warning message not specified", + "3: warning message not specified", + "4: the least squares problem to be solved has a " + "rank-deficient coefficient matrix", + "5: warning message not specified", + "6: the matrix A is unstable; the estimated x(0) " + "and/or B and D could be inaccurate"}; + + + error_msg ("ident", info_c, 2, err_msg_c); + warning_msg ("ident", iwarn_c, 6, warn_msg_c); // return values retval(0) = a; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-03-17 02:55:15
|
Revision: 9929 http://octave.svn.sourceforge.net/octave/?rev=9929&view=rev Author: slackydeb Date: 2012-03-17 02:55:09 +0000 (Sat, 17 Mar 2012) Log Message: ----------- ga: add unit tests for ga Modified Paths: -------------- trunk/octave-forge/main/ga/inst/ga.m Modified: trunk/octave-forge/main/ga/inst/ga.m =================================================================== --- trunk/octave-forge/main/ga/inst/ga.m 2012-03-16 22:29:17 UTC (rev 9928) +++ trunk/octave-forge/main/ga/inst/ga.m 2012-03-17 02:55:09 UTC (rev 9929) @@ -1,4 +1,4 @@ -## Copyright (C) 2008, 2010 Luca Favatella <sla...@gm...> +## Copyright (C) 2008, 2010, 2012 Luca Favatella <sla...@gm...> ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -71,7 +71,7 @@ ## @end deftypefn ## Author: Luca Favatella <sla...@gm...> -## Version: 6.0.0 +## Version: 6.0.1 function [x fval exitflag output population scores] = \ ga (fitnessfcn_or_problem, @@ -116,9 +116,39 @@ ## number of arguments +%!shared f, nvars +%! f = @rastriginsfcn; +%! nvars = 2; +%!error x = ga () +%!error x = ga (f) +%!error x = ga (f, nvars, []) +%!error x = ga (f, nvars, [], [], []) +%!error x = ga (f, nvars, [], [], [], [], []) +%!error x = ga (f, nvars, [], [], [], [], [], [], @(x) [[], []], gaoptimset (), []) ## type of arguments +# TODO +%!shared f, nvars +%! f = @rastriginsfcn; +%! nvars = 2; +#%!function [C, Ceq] = nonlcon (x) +#%! C = []; +#%! Ceq = []; +#%!endfunction +%!test x = ga (f, nvars); +%!test x = ga (f, nvars, [], []); +%!test x = ga (f, nvars, ones (3, nvars), ones (3, 1)); +%!test x = ga (f, nvars, [], [], [], []); +%!test x = ga (f, nvars, [], [], ones (4, nvars), ones (4, 1)); +%!test x = ga (f, nvars, [], [], [], [], [], []); +%!test x = ga (f, nvars, [], [], [], [], - Inf (1, nvars), Inf (1, nvars)); +%!test x = ga (f, nvars, [], [], [], [], - ones (1, nvars), ones (1, nvars)); +%!test x = ga (f, nvars, [], [], [], [], [], [], @(x) [[], []]); +#%!test x = ga (f, nvars, [], [], [], [], [], [], @nonlcon); +%!test x = ga (f, nvars, [], [], [], [], [], [], @(x) [[], []], gaoptimset ()); + + %!test x = ga (struct ("fitnessfcn", @rastriginsfcn, "nvars", 2, "options", gaoptimset ("FitnessLimit", 1e-7, "Generations", 1000))); %!test x = ga (struct ("fitnessfcn", @(x) rastriginsfcn (x(1:2)) + ((x(3) ** 2) - (cos (2 * pi * x(3))) + 1) + (x(4) ** 2), "nvars", 4, "options", gaoptimset ("EliteCount", 5, "FitnessLimit", 1e-7, "PopInitRange", [-2; 2], "PopulationSize", 200))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-03-16 22:29:26
|
Revision: 9928 http://octave.svn.sourceforge.net/octave/?rev=9928&view=rev Author: mmarzolla Date: 2012-03-16 22:29:17 +0000 (Fri, 16 Mar 2012) Log Message: ----------- fixed test cases Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf trunk/octave-forge/main/queueing/inst/ctmc_mtta.m trunk/octave-forge/main/queueing/inst/dtmc_check_P.m trunk/octave-forge/main/queueing/inst/dtmc_fpt.m trunk/octave-forge/main/queueing/inst/dtmc_mtta.m trunk/octave-forge/main/queueing/inst/qnvisits.m Modified: trunk/octave-forge/main/queueing/doc/queueing.html =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.html 2012-03-16 19:17:13 UTC (rev 9927) +++ trunk/octave-forge/main/queueing/doc/queueing.html 2012-03-16 22:29:17 UTC (rev 9928) @@ -817,13 +817,13 @@ <p><a name="doc_002ddtmc_005fcheck_005fP"></a> <div class="defun"> -— Function File: [<var>result</var> <var>err</var>] = <b>dtmc_check_P</b> (<var>P</var>)<var><a name="index-dtmc_005fcheck_005fP-1"></a></var><br> +— Function File: [<var>r</var> <var>err</var>] = <b>dtmc_check_P</b> (<var>P</var>)<var><a name="index-dtmc_005fcheck_005fP-1"></a></var><br> <blockquote> <p><a name="index-Markov-chain_002c-discrete-time-2"></a> -If <var>P</var> is a valid transition probability matrix, return -the size (number of rows or columns) of <var>P</var>. If <var>P</var> is not -a transition probability matrix, set <var>result</var> to zero, and -<var>err</var> to an appropriate error string. +Check if <var>P</var> is a valid transition probability matrix. If <var>P</var> +is valid, <var>r</var> is the size (number of rows or columns) of <var>P</var>. +If <var>P</var> is not a transition probability matrix, <var>r</var> is set to +zero, and <var>err</var> to an appropriate error string. </blockquote></div> @@ -871,14 +871,14 @@ — Function File: <var>p</var> = <b>dtmc</b> (<var>P</var>)<var><a name="index-dtmc-3"></a></var><br> — Function File: <var>p</var> = <b>dtmc</b> (<var>P, n, p0</var>)<var><a name="index-dtmc-4"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-discrete-time-5"></a><a name="index-Discrete-time-Markov-chain-6"></a><a name="index-Markov-chain_002c-stationary-probabilities-7"></a><a name="index-Stationary-probabilities-8"></a> -With a single argument, compute the steady-state probability vector -<var>p</var><code>(1), ..., </code><var>p</var><code>(N)</code> for a -Discrete-Time Markov Chain given the N \times N transition -probability matrix <var>P</var>. With three arguments, compute the -probability vector <var>p</var><code>(1), ..., </code><var>p</var><code>(N)</code> -after <var>n</var> steps, given initial probability vector <var>p0</var> at -time 0. + <p><a name="index-Markov-chain_002c-discrete-time-5"></a><a name="index-Discrete-time-Markov-chain-6"></a><a name="index-Markov-chain_002c-stationary-probabilities-7"></a><a name="index-Stationary-probabilities-8"></a><a name="index-Markov-chain_002c-transient-probabilities-9"></a><a name="index-Transient-probabilities-10"></a> +Compute steady-state or transient state occupancy probabilities for a +Discrete-Time Markov Chain. With a single argument, compute the +steady-state occupancy probability vector <var>p</var><code>(1), ..., +</code><var>p</var><code>(N)</code> given the N \times N transition probability matrix +<var>P</var>. With three arguments, compute the state occupancy +probabilities <var>p</var><code>(1), ..., </code><var>p</var><code>(N)</code> after <var>n</var> +steps, given initial occupancy probability vector <var>p0</var>. <p><strong>INPUTS</strong> @@ -942,9 +942,9 @@ <p><a name="doc_002ddtmc_005fbd"></a> <div class="defun"> -— Function File: <var>P</var> = <b>dtmc_bd</b> (<var>birth, death</var>)<var><a name="index-dtmc_005fbd-9"></a></var><br> +— Function File: <var>P</var> = <b>dtmc_bd</b> (<var>birth, death</var>)<var><a name="index-dtmc_005fbd-11"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-discrete-time-10"></a><a name="index-Birth_002ddeath-process-11"></a> + <p><a name="index-Markov-chain_002c-discrete-time-12"></a><a name="index-Birth_002ddeath-process-13"></a> Returns the N \times N transition probability matrix P for a birth-death process with given rates. @@ -994,15 +994,14 @@ <p><a name="doc_002ddtmc_005ffpt"></a> <div class="defun"> -— Function File: <var>M</var> = <b>dtmc_fpt</b> (<var>P</var>)<var><a name="index-dtmc_005ffpt-12"></a></var><br> -— Function File: <var>m</var> = <b>dtmc_fpt</b> (<var>P, i, j</var>)<var><a name="index-dtmc_005ffpt-13"></a></var><br> +— Function File: <var>M</var> = <b>dtmc_fpt</b> (<var>P</var>)<var><a name="index-dtmc_005ffpt-14"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-discrete-time-14"></a><a name="index-First-passage-times-15"></a> -If called with a single argument, computes the mean first passage -times <var>M</var><code>(i,j)</code>, that are the average number of transitions before -state <var>j</var> is reached, starting from state <var>i</var>, for all -1 \leq i, j \leq N. If called with three arguments, returns -the single value <var>m</var><code> = </code><var>M</var><code>(i,j)</code>. + <p><a name="index-First-passage-times-15"></a><a name="index-Mean-recurrence-times-16"></a> +Compute the mean first passage times matrix \bf M, such that +<var>M</var><code>(i,j)</code> is the average number of transitions before state +<var>j</var> is reached, starting from state <var>i</var>, for all 1 \leq +i, j \leq N. Diagonal elements of <var>M</var> are the mean recurrence +times. <p><strong>INPUTS</strong> @@ -1013,26 +1012,17 @@ P_i j = 1), and the rank of <var>P</var> must be equal to its dimension. - <br><dt><var>i</var><dd>Initial state. - - <br><dt><var>j</var><dd>Destination state. If <var>j</var> is a vector, returns the mean first passage -time to any state in <var>j</var>. - </dl> <p><strong>OUTPUTS</strong> <dl> -<dt><var>M</var><dd>If this function is called with a single argument, -<var>M</var><code>(i,j)</code> is the average number of transitions before state +<dt><var>M</var><dd><var>M</var><code>(i,j)</code> is the average number of transitions before state <var>j</var> is reached for the first time, starting from state <var>i</var>. -<var>M</var><code>(i,i)</code> is the <em>mean recurrence time</em>, and -represents the average time needed to return to state <var>i</var>. +<var>M</var><code>(i,i)</code> is the <em>mean recurrence time</em> of state +i, and represents the average time needed to return to state +<var>i</var>. - <br><dt><var>m</var><dd>If this function is called with three arguments, the result <var>m</var> -is the average number of transitions before state <var>j</var> is visited -for the first time, starting from state <var>i</var>. - </dl> </blockquote></div> @@ -1051,10 +1041,10 @@ <p><a name="doc_002ddtmc_005fmtta"></a> <div class="defun"> -— Function File: [<var>t</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P</var>)<var><a name="index-dtmc_005fmtta-16"></a></var><br> -— Function File: [<var>t</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P, p0</var>)<var><a name="index-dtmc_005fmtta-17"></a></var><br> +— Function File: [<var>t</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P</var>)<var><a name="index-dtmc_005fmtta-17"></a></var><br> +— Function File: [<var>t</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P, p0</var>)<var><a name="index-dtmc_005fmtta-18"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-disctete-time-18"></a><a name="index-Mean-time-to-absorption-19"></a> + <p><a name="index-Markov-chain_002c-disctete-time-19"></a><a name="index-Mean-time-to-absorption-20"></a><a name="index-Absorption-probabilities-21"></a> Compute the expected number of steps before absorption for the DTMC with N \times N transition probability matrix <var>P</var>. @@ -1079,9 +1069,10 @@ <br><dt><var>B</var><dd>When called with a single argument, <var>B</var> is a N \times N matrix where <var>B</var><code>(i,j)</code> is the probability of being absorbed -in state j, starting from state i; if j is not -absorbing, <var>B</var><code>(i,j) = 0</code>; if i is absorbing, then -<var>B</var><code>(i,i) = 1</code>. When called with two arguments, <var>B</var> is a +in state j, starting from transient state i; if +j is not absorbing, <var>B</var><code>(i,j) = 0</code>; if i is +absorbing, then <var>B</var><code>(i,i) = 1</code>. +When called with two arguments, <var>B</var> is a vector with N elements where <var>B</var><code>(j)</code> is the probability of being absorbed in state <var>j</var>, given initial state occupancy probabilities <var>p0</var>. @@ -1118,9 +1109,9 @@ <p><a name="doc_002dctmc_005fcheck_005fQ"></a> <div class="defun"> -— Function File: [<var>result</var> <var>err</var>] = <b>ctmc_check_Q</b> (<var>Q</var>)<var><a name="index-ctmc_005fcheck_005fQ-20"></a></var><br> +— Function File: [<var>result</var> <var>err</var>] = <b>ctmc_check_Q</b> (<var>Q</var>)<var><a name="index-ctmc_005fcheck_005fQ-22"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-21"></a> + <p><a name="index-Markov-chain_002c-continuous-time-23"></a> If <var>Q</var> is a valid infinitesimal generator matrix, return the size (number of rows or columns) of <var>Q</var>. If <var>Q</var> is not an infinitesimal generator matrix, set <var>result</var> to zero, and @@ -1171,10 +1162,10 @@ <p><a name="doc_002dctmc"></a> <div class="defun"> -— Function File: <var>p</var> = <b>ctmc</b> (<var>Q</var>)<var><a name="index-ctmc-22"></a></var><br> -— Function File: <var>p</var> = <b>ctmc</b> (<var>Q, t. p0</var>)<var><a name="index-ctmc-23"></a></var><br> +— Function File: <var>p</var> = <b>ctmc</b> (<var>Q</var>)<var><a name="index-ctmc-24"></a></var><br> +— Function File: <var>p</var> = <b>ctmc</b> (<var>Q, t. p0</var>)<var><a name="index-ctmc-25"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-24"></a><a name="index-Continuous-time-Markov-chain-25"></a><a name="index-Markov-chain_002c-state-occupancy-probabilities-26"></a><a name="index-Stationary-probabilities-27"></a> + <p><a name="index-Markov-chain_002c-continuous-time-26"></a><a name="index-Continuous-time-Markov-chain-27"></a><a name="index-Markov-chain_002c-state-occupancy-probabilities-28"></a><a name="index-Stationary-probabilities-29"></a> With a single argument, compute the stationary state occupancy probability vector <var>p</var>(1), <small class="dots">...</small>, <var>p</var>(N) for a Continuous-Time Markov Chain with infinitesimal generator matrix @@ -1237,9 +1228,9 @@ <p><a name="doc_002dctmc_005fbd"></a> <div class="defun"> -— Function File: <var>Q</var> = <b>ctmc_bd</b> (<var>birth, death</var>)<var><a name="index-ctmc_005fbd-28"></a></var><br> +— Function File: <var>Q</var> = <b>ctmc_bd</b> (<var>birth, death</var>)<var><a name="index-ctmc_005fbd-30"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-29"></a><a name="index-Birth_002ddeath-process-30"></a> + <p><a name="index-Markov-chain_002c-continuous-time-31"></a><a name="index-Birth_002ddeath-process-32"></a> Returns the N \times N infinitesimal generator matrix Q for a birth-death process with given rates. @@ -1300,10 +1291,10 @@ <p><a name="doc_002dctmc_005fexps"></a> <div class="defun"> -— Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, t, p </var>)<var><a name="index-ctmc_005fexps-31"></a></var><br> -— Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fexps-32"></a></var><br> +— Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, t, p </var>)<var><a name="index-ctmc_005fexps-33"></a></var><br> +— Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fexps-34"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-33"></a><a name="index-Expected-sojourn-time-34"></a> + <p><a name="index-Markov-chain_002c-continuous-time-35"></a><a name="index-Expected-sojourn-time-36"></a> With three arguments, compute the expected times <var>L</var><code>(i)</code> spent in each state i during the time interval [0,t], assuming that the state occupancy probabilities @@ -1383,10 +1374,10 @@ <p><a name="doc_002dctmc_005ftaexps"></a> <div class="defun"> -— Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, t, p</var>)<var><a name="index-ctmc_005ftaexps-35"></a></var><br> -— Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005ftaexps-36"></a></var><br> +— Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, t, p</var>)<var><a name="index-ctmc_005ftaexps-37"></a></var><br> +— Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005ftaexps-38"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-37"></a><a name="index-Time_002dalveraged-sojourn-time-38"></a> + <p><a name="index-Markov-chain_002c-continuous-time-39"></a><a name="index-Time_002dalveraged-sojourn-time-40"></a> Compute the <em>time-averaged sojourn time</em> <var>M</var><code>(i)</code>, defined as the fraction of the time interval [0,t] (or until absorption) spent in state i, assuming that the state @@ -1473,9 +1464,9 @@ <p><a name="doc_002dctmc_005fmtta"></a> <div class="defun"> -— Function File: <var>t</var> = <b>ctmc_mtta</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fmtta-39"></a></var><br> +— Function File: <var>t</var> = <b>ctmc_mtta</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fmtta-41"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-40"></a><a name="index-Mean-time-to-absorption-41"></a> + <p><a name="index-Markov-chain_002c-continuous-time-42"></a><a name="index-Mean-time-to-absorption-43"></a> Compute the Mean-Time to Absorption (MTTA) of the CTMC described by the infinitesimal generator matrix <var>Q</var>, starting from initial occupancy probabilities <var>p</var>. If there are no absorbing states, this @@ -1536,7 +1527,7 @@ Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998. - <p><a name="index-Bolch_002c-G_002e-42"></a><a name="index-Greiner_002c-S_002e-43"></a><a name="index-de-Meer_002c-H_002e-44"></a><a name="index-Trivedi_002c-K_002e-45"></a> + <p><a name="index-Bolch_002c-G_002e-44"></a><a name="index-Greiner_002c-S_002e-45"></a><a name="index-de-Meer_002c-H_002e-46"></a><a name="index-Trivedi_002c-K_002e-47"></a> <div class="node"> <a name="First-passage-times-(CTMC)"></a> <a name="First-passage-times-_0028CTMC_0029"></a> @@ -1551,10 +1542,10 @@ <p><a name="doc_002dctmc_005ffpt"></a> <div class="defun"> -— Function File: <var>M</var> = <b>ctmc_fpt</b> (<var>Q</var>)<var><a name="index-ctmc_005ffpt-46"></a></var><br> -— Function File: <var>m</var> = <b>ctmc_fpt</b> (<var>Q, i, j</var>)<var><a name="index-ctmc_005ffpt-47"></a></var><br> +— Function File: <var>M</var> = <b>ctmc_fpt</b> (<var>Q</var>)<var><a name="index-ctmc_005ffpt-48"></a></var><br> +— Function File: <var>m</var> = <b>ctmc_fpt</b> (<var>Q, i, j</var>)<var><a name="index-ctmc_005ffpt-49"></a></var><br> <blockquote> - <p><a name="index-Markov-chain_002c-continuous-time-48"></a><a name="index-First-passage-times-49"></a> + <p><a name="index-Markov-chain_002c-continuous-time-50"></a><a name="index-First-passage-times-51"></a> If called with a single argument, computes the mean first passage times <var>M</var><code>(i,j)</code>, the average times before state <var>j</var> is reached, starting from state <var>i</var>, for all 1 \leq i, j \leq @@ -1660,9 +1651,9 @@ <p><a name="doc_002dqnmm1"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmm1</b> (<var>lambda, mu</var>)<var><a name="index-qnmm1-50"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmm1</b> (<var>lambda, mu</var>)<var><a name="index-qnmm1-52"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fM_002f1_007d-system-51"></a> + <p><a name="index-g_t_0040math_007bM_002fM_002f1_007d-system-53"></a> Compute utilization, response time, average number of requests and throughput for a M/M/1 queue. @@ -1707,7 +1698,7 @@ and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, Section 6.3. - <p><a name="index-Bolch_002c-G_002e-52"></a><a name="index-Greiner_002c-S_002e-53"></a><a name="index-de-Meer_002c-H_002e-54"></a><a name="index-Trivedi_002c-K_002e-55"></a> + <p><a name="index-Bolch_002c-G_002e-54"></a><a name="index-Greiner_002c-S_002e-55"></a><a name="index-de-Meer_002c-H_002e-56"></a><a name="index-Trivedi_002c-K_002e-57"></a> <!-- M/M/m --> <div class="node"> <a name="The-M%2fM%2fm-System"></a> @@ -1733,10 +1724,10 @@ <p><a name="doc_002dqnmmm"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pm</var>] = <b>qnmmm</b> (<var>lambda, mu</var>)<var><a name="index-qnmmm-56"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pm</var>] = <b>qnmmm</b> (<var>lambda, mu, m</var>)<var><a name="index-qnmmm-57"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pm</var>] = <b>qnmmm</b> (<var>lambda, mu</var>)<var><a name="index-qnmmm-58"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pm</var>] = <b>qnmmm</b> (<var>lambda, mu, m</var>)<var><a name="index-qnmmm-59"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fM_002fm_007d-system-58"></a> + <p><a name="index-g_t_0040math_007bM_002fM_002fm_007d-system-60"></a> Compute utilization, response time, average number of requests in service and throughput for a M/M/m queue, a queueing system with m identical service centers connected to a single queue. @@ -1788,7 +1779,7 @@ and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, Section 6.5. - <p><a name="index-Bolch_002c-G_002e-59"></a><a name="index-Greiner_002c-S_002e-60"></a><a name="index-de-Meer_002c-H_002e-61"></a><a name="index-Trivedi_002c-K_002e-62"></a> + <p><a name="index-Bolch_002c-G_002e-61"></a><a name="index-Greiner_002c-S_002e-62"></a><a name="index-de-Meer_002c-H_002e-63"></a><a name="index-Trivedi_002c-K_002e-64"></a> <!-- M/M/inf --> <div class="node"> <a name="The-M%2fM%2finf-System"></a> @@ -1811,7 +1802,7 @@ <p><a name="doc_002dqnmminf"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmminf</b> (<var>lambda, mu</var>)<var><a name="index-qnmminf-63"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmminf</b> (<var>lambda, mu</var>)<var><a name="index-qnmminf-65"></a></var><br> <blockquote> <p>Compute utilization, response time, average number of requests and throughput for a M/M/\infty queue. This is a system with an @@ -1819,7 +1810,7 @@ system is always stable, regardless the values of the arrival and service rates. - <p><a name="index-g_t_0040math_007bM_002fM_002f_007dinf-system-64"></a> + <p><a name="index-g_t_0040math_007bM_002fM_002f_007dinf-system-66"></a> <p><strong>INPUTS</strong> @@ -1837,7 +1828,7 @@ different from the utilization, which in the case of M/M/\infty centers is always zero. - <p><a name="index-traffic-intensity-65"></a> + <p><a name="index-traffic-intensity-67"></a> <br><dt><var>R</var><dd>Service center response time. <br><dt><var>Q</var><dd>Average number of requests in the system (which is equal to the @@ -1865,7 +1856,7 @@ and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, Section 6.4. - <p><a name="index-Bolch_002c-G_002e-66"></a><a name="index-Greiner_002c-S_002e-67"></a><a name="index-de-Meer_002c-H_002e-68"></a><a name="index-Trivedi_002c-K_002e-69"></a> + <p><a name="index-Bolch_002c-G_002e-68"></a><a name="index-Greiner_002c-S_002e-69"></a><a name="index-de-Meer_002c-H_002e-70"></a><a name="index-Trivedi_002c-K_002e-71"></a> <!-- M/M/1/k --> <div class="node"> <a name="The-M%2fM%2f1%2fK-System"></a> @@ -1889,9 +1880,9 @@ <p><a name="doc_002dqnmm1k"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pK</var>] = <b>qnmm1k</b> (<var>lambda, mu, K</var>)<var><a name="index-qnmm1k-70"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pK</var>] = <b>qnmm1k</b> (<var>lambda, mu, K</var>)<var><a name="index-qnmm1k-72"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fM_002f1_002fK_007d-system-71"></a> + <p><a name="index-g_t_0040math_007bM_002fM_002f1_002fK_007d-system-73"></a> Compute utilization, response time, average number of requests and throughput for a M/M/1/K finite capacity system. In a M/M/1/K queue there is a single server; the maximum number of @@ -1958,9 +1949,9 @@ <p><a name="doc_002dqnmmmk"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pK</var>] = <b>qnmmmk</b> (<var>lambda, mu, m, K</var>)<var><a name="index-qnmmmk-72"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>, <var>pK</var>] = <b>qnmmmk</b> (<var>lambda, mu, m, K</var>)<var><a name="index-qnmmmk-74"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fM_002fm_002fK_007d-system-73"></a> + <p><a name="index-g_t_0040math_007bM_002fM_002fm_002fK_007d-system-75"></a> Compute utilization, response time, average number of requests and throughput for a M/M/m/K finite capacity system. In a M/M/m/K system there are m \geq 1 identical service @@ -2018,7 +2009,7 @@ and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, Section 6.6. - <p><a name="index-Bolch_002c-G_002e-74"></a><a name="index-Greiner_002c-S_002e-75"></a><a name="index-de-Meer_002c-H_002e-76"></a><a name="index-Trivedi_002c-K_002e-77"></a> + <p><a name="index-Bolch_002c-G_002e-76"></a><a name="index-Greiner_002c-S_002e-77"></a><a name="index-de-Meer_002c-H_002e-78"></a><a name="index-Trivedi_002c-K_002e-79"></a> <!-- Approximate M/M/m --> <div class="node"> @@ -2040,9 +2031,9 @@ <p><a name="doc_002dqnammm"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnammm</b> (<var>lambda, mu</var>)<var><a name="index-qnammm-78"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnammm</b> (<var>lambda, mu</var>)<var><a name="index-qnammm-80"></a></var><br> <blockquote> - <p><a name="index-Asymmetric-_0040math_007bM_002fM_002fm_007d-system-79"></a> + <p><a name="index-Asymmetric-_0040math_007bM_002fM_002fm_007d-system-81"></a> Compute <em>approximate</em> utilization, response time, average number of requests in service and throughput for an asymmetric M/M/m queue. In this system there are m different service centers @@ -2089,7 +2080,7 @@ and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998 - <p><a name="index-Bolch_002c-G_002e-80"></a><a name="index-Greiner_002c-S_002e-81"></a><a name="index-de-Meer_002c-H_002e-82"></a><a name="index-Trivedi_002c-K_002e-83"></a> + <p><a name="index-Bolch_002c-G_002e-82"></a><a name="index-Greiner_002c-S_002e-83"></a><a name="index-de-Meer_002c-H_002e-84"></a><a name="index-Trivedi_002c-K_002e-85"></a> <div class="node"> <a name="The-M%2fG%2f1-System"></a> <a name="The-M_002fG_002f1-System"></a> @@ -2105,9 +2096,9 @@ <p><a name="doc_002dqnmg1"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmg1</b> (<var>lambda, xavg, x2nd</var>)<var><a name="index-qnmg1-84"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmg1</b> (<var>lambda, xavg, x2nd</var>)<var><a name="index-qnmg1-86"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fG_002f1_007d-system-85"></a> + <p><a name="index-g_t_0040math_007bM_002fG_002f1_007d-system-87"></a> Compute utilization, response time, average number of requests and throughput for a M/G/1 system. The service time distribution is described by its mean <var>xavg</var>, and by its second moment @@ -2164,9 +2155,9 @@ <p><a name="doc_002dqnmh1"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmh1</b> (<var>lambda, mu, alpha</var>)<var><a name="index-qnmh1-86"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>p0</var>] = <b>qnmh1</b> (<var>lambda, mu, alpha</var>)<var><a name="index-qnmh1-88"></a></var><br> <blockquote> - <p><a name="index-g_t_0040math_007bM_002fH_005fm_002f1_007d-system-87"></a> + <p><a name="index-g_t_0040math_007bM_002fH_005fm_002f1_007d-system-89"></a> Compute utilization, response time, average number of requests and throughput for a M/H_m/1 system. In this system, the customer service times have hyper-exponential distribution: @@ -2248,7 +2239,7 @@ <li><a accesskey="6" href="#Utility-functions">Utility functions</a>: Utility functions to compute miscellaneous quantities </ul> -<p><a name="index-queueing-networks-88"></a> +<p><a name="index-queueing-networks-90"></a> <!-- INTRODUCTION --> <div class="node"> <a name="Introduction-to-QNs"></a> @@ -2509,13 +2500,13 @@ <p><a name="doc_002dqnmknode"></a> <div class="defun"> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/m-fcfs", S</var>)<var><a name="index-qnmknode-89"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/m-fcfs", S, m</var>)<var><a name="index-qnmknode-90"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/1-lcfs-pr", S</var>)<var><a name="index-qnmknode-91"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/1-ps", S</var>)<var><a name="index-qnmknode-92"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/1-ps", S, s2</var>)<var><a name="index-qnmknode-93"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/inf", S</var>)<var><a name="index-qnmknode-94"></a></var><br> -— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/inf", S, s2</var>)<var><a name="index-qnmknode-95"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/m-fcfs", S</var>)<var><a name="index-qnmknode-91"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/m-fcfs", S, m</var>)<var><a name="index-qnmknode-92"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"m/m/1-lcfs-pr", S</var>)<var><a name="index-qnmknode-93"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/1-ps", S</var>)<var><a name="index-qnmknode-94"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/1-ps", S, s2</var>)<var><a name="index-qnmknode-95"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/inf", S</var>)<var><a name="index-qnmknode-96"></a></var><br> +— Function File: <var>Q</var> = <b>qnmknode</b> (<var>"-/g/inf", S, s2</var>)<var><a name="index-qnmknode-97"></a></var><br> <blockquote> <p>Creates a node; this function can be used together with <code>qnsolve</code>. It is possible to create either single-class nodes @@ -2584,10 +2575,10 @@ <p><a name="doc_002dqnsolve"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"closed", N, QQ, V</var>)<var><a name="index-qnsolve-96"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"closed", N, QQ, V, Z</var>)<var><a name="index-qnsolve-97"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"open", lambda, QQ, V</var>)<var><a name="index-qnsolve-98"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"mixed", lambda, N, QQ, V</var>)<var><a name="index-qnsolve-99"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"closed", N, QQ, V</var>)<var><a name="index-qnsolve-98"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"closed", N, QQ, V, Z</var>)<var><a name="index-qnsolve-99"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"open", lambda, QQ, V</var>)<var><a name="index-qnsolve-100"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnsolve</b> (<var>"mixed", lambda, N, QQ, V</var>)<var><a name="index-qnsolve-101"></a></var><br> <blockquote> <p>General evaluator of QN models. Networks can be open, closed or mixed; single as well as multiclass networks are supported. @@ -2765,11 +2756,11 @@ <p><a name="doc_002dqnjackson"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnjackson</b> (<var>lambda, S, P </var>)<var><a name="index-qnjackson-100"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnjackson</b> (<var>lambda, S, P, m </var>)<var><a name="index-qnjackson-101"></a></var><br> -— Function File: <var>pr</var> = <b>qnjackson</b> (<var>lambda, S, P, m, k</var>)<var><a name="index-qnjackson-102"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnjackson</b> (<var>lambda, S, P </var>)<var><a name="index-qnjackson-102"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnjackson</b> (<var>lambda, S, P, m </var>)<var><a name="index-qnjackson-103"></a></var><br> +— Function File: <var>pr</var> = <b>qnjackson</b> (<var>lambda, S, P, m, k</var>)<var><a name="index-qnjackson-104"></a></var><br> <blockquote> - <p><a name="index-open-network_002c-single-class-103"></a><a name="index-Jackson-network-104"></a> + <p><a name="index-open-network_002c-single-class-105"></a><a name="index-Jackson-network-106"></a> With three or four input parameters, this function computes the steady-state occupancy probabilities for a Jackson network. With five input parameters, this function computes the steady-state probability @@ -2851,7 +2842,7 @@ Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, pp. 284–287. - <p><a name="index-Bolch_002c-G_002e-105"></a><a name="index-Greiner_002c-S_002e-106"></a><a name="index-de-Meer_002c-H_002e-107"></a><a name="index-Trivedi_002c-K_002e-108"></a> + <p><a name="index-Bolch_002c-G_002e-107"></a><a name="index-Greiner_002c-S_002e-108"></a><a name="index-de-Meer_002c-H_002e-109"></a><a name="index-Trivedi_002c-K_002e-110"></a> <h4 class="subsection">6.3.2 The Convolution Algorithm</h4> @@ -2885,10 +2876,10 @@ <p><a name="doc_002dqnconvolution"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolution</b> (<var>N, S, V</var>)<var><a name="index-qnconvolution-109"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolution</b> (<var>N, S, V, m</var>)<var><a name="index-qnconvolution-110"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolution</b> (<var>N, S, V</var>)<var><a name="index-qnconvolution-111"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolution</b> (<var>N, S, V, m</var>)<var><a name="index-qnconvolution-112"></a></var><br> <blockquote> - <p><a name="index-closed-network-111"></a><a name="index-normalization-constant-112"></a><a name="index-convolution-algorithm-113"></a> + <p><a name="index-closed-network-113"></a><a name="index-normalization-constant-114"></a><a name="index-convolution-algorithm-115"></a> This function implements the <em>convolution algorithm</em> for computing steady-state performance measures of product-form, single-class closed queueing networks. Load-independent service @@ -2979,20 +2970,20 @@ 16, number 9, september 1973, pp. 527–531. <a href="http://doi.acm.org/10.1145/362342.362345">http://doi.acm.org/10.1145/362342.362345</a> - <p><a name="index-Buzen_002c-J_002e-P_002e-114"></a> + <p><a name="index-Buzen_002c-J_002e-P_002e-116"></a> This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, <cite>Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, pp. 313–317. - <p><a name="index-Bolch_002c-G_002e-115"></a><a name="index-Greiner_002c-S_002e-116"></a><a name="index-de-Meer_002c-H_002e-117"></a><a name="index-Trivedi_002c-K_002e-118"></a> + <p><a name="index-Bolch_002c-G_002e-117"></a><a name="index-Greiner_002c-S_002e-118"></a><a name="index-de-Meer_002c-H_002e-119"></a><a name="index-Trivedi_002c-K_002e-120"></a> <!-- Convolution for load-dependent service centers --> <a name="doc_002dqnconvolutionld"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolutionld</b> (<var>N, S, V</var>)<var><a name="index-qnconvolutionld-119"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnconvolutionld</b> (<var>N, S, V</var>)<var><a name="index-qnconvolutionld-121"></a></var><br> <blockquote> - <p><a name="index-closed-network-120"></a><a name="index-normalization-constant-121"></a><a name="index-convolution-algorithm-122"></a><a name="index-load_002ddependent-service-center-123"></a> + <p><a name="index-closed-network-122"></a><a name="index-normalization-constant-123"></a><a name="index-convolution-algorithm-124"></a><a name="index-load_002ddependent-service-center-125"></a> This function implements the <em>convolution algorithm</em> for product-form, single-class closed queueing networks with general load-dependent service centers. @@ -3052,7 +3043,7 @@ Purdue University, feb, 1981 (revised). <a href="http://www.cs.purdue.edu/research/technical_reports/1980/TR%2080-354.pdf">http://www.cs.purdue.edu/research/technical_reports/1980/TR%2080-354.pdf</a> - <p><a name="index-Schwetman_002c-H_002e-124"></a> + <p><a name="index-Schwetman_002c-H_002e-126"></a> M. Reiser, H. Kobayashi, <cite>On The Convolution Algorithm for Separable Queueing Networks</cite>, In Proceedings of the 1976 ACM SIGMETRICS Conference on Computer Performance Modeling Measurement and @@ -3060,7 +3051,7 @@ 1976). SIGMETRICS '76. ACM, New York, NY, pp. 109–117. <a href="http://doi.acm.org/10.1145/800200.806187">http://doi.acm.org/10.1145/800200.806187</a> - <p><a name="index-Reiser_002c-M_002e-125"></a><a name="index-Kobayashi_002c-H_002e-126"></a> + <p><a name="index-Reiser_002c-M_002e-127"></a><a name="index-Kobayashi_002c-H_002e-128"></a> This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, <cite>Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, @@ -3072,7 +3063,7 @@ function f_i defined in Schwetman, <code>Some Computational Aspects of Queueing Network Models</code>. - <p><a name="index-Bolch_002c-G_002e-127"></a><a name="index-Greiner_002c-S_002e-128"></a><a name="index-de-Meer_002c-H_002e-129"></a><a name="index-Trivedi_002c-K_002e-130"></a> + <p><a name="index-Bolch_002c-G_002e-129"></a><a name="index-Greiner_002c-S_002e-130"></a><a name="index-de-Meer_002c-H_002e-131"></a><a name="index-Trivedi_002c-K_002e-132"></a> <h4 class="subsection">6.3.3 Open networks</h4> @@ -3080,10 +3071,10 @@ <p><a name="doc_002dqnopensingle"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopensingle</b> (<var>lambda, S, V</var>)<var><a name="index-qnopensingle-131"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopensingle</b> (<var>lambda, S, V, m</var>)<var><a name="index-qnopensingle-132"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopensingle</b> (<var>lambda, S, V</var>)<var><a name="index-qnopensingle-133"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopensingle</b> (<var>lambda, S, V, m</var>)<var><a name="index-qnopensingle-134"></a></var><br> <blockquote> - <p><a name="index-open-network_002c-single-class-133"></a><a name="index-BCMP-network-134"></a> + <p><a name="index-open-network_002c-single-class-135"></a><a name="index-BCMP-network-136"></a> Analyze open, single class BCMP queueing networks. <p>This function works for a subset of BCMP single-class open networks @@ -3176,16 +3167,16 @@ Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998. - <p><a name="index-Bolch_002c-G_002e-135"></a><a name="index-Greiner_002c-S_002e-136"></a><a name="index-de-Meer_002c-H_002e-137"></a><a name="index-Trivedi_002c-K_002e-138"></a> + <p><a name="index-Bolch_002c-G_002e-137"></a><a name="index-Greiner_002c-S_002e-138"></a><a name="index-de-Meer_002c-H_002e-139"></a><a name="index-Trivedi_002c-K_002e-140"></a> <!-- Open network with multiple classes --> <p><a name="doc_002dqnopenmulti"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopenmulti</b> (<var>lambda, S, V</var>)<var><a name="index-qnopenmulti-139"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopenmulti</b> (<var>lambda, S, V, m</var>)<var><a name="index-qnopenmulti-140"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopenmulti</b> (<var>lambda, S, V</var>)<var><a name="index-qnopenmulti-141"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnopenmulti</b> (<var>lambda, S, V, m</var>)<var><a name="index-qnopenmulti-142"></a></var><br> <blockquote> - <p><a name="index-open-network_002c-multiple-classes-141"></a> + <p><a name="index-open-network_002c-multiple-classes-143"></a> Exact analysis of open, multiple-class BCMP networks. The network can be made of <em>single-server</em> queueing centers (FCFS, LCFS-PR or PS) or delay centers (IS). This function assumes a network with @@ -3250,7 +3241,7 @@ 1984. <a href="http://www.cs.washington.edu/homes/lazowska/qsp/">http://www.cs.washington.edu/homes/lazowska/qsp/</a>. In particular, see section 7.4.1 ("Open Model Solution Techniques"). - <p><a name="index-Lazowska_002c-E_002e-D_002e-142"></a><a name="index-Zahorjan_002c-J_002e-143"></a><a name="index-Graham_002c-G_002e-S_002e-144"></a><a name="index-Sevcik_002c-K_002e-C_002e-145"></a> + <p><a name="index-Lazowska_002c-E_002e-D_002e-144"></a><a name="index-Zahorjan_002c-J_002e-145"></a><a name="index-Graham_002c-G_002e-S_002e-146"></a><a name="index-Sevcik_002c-K_002e-C_002e-147"></a> <h4 class="subsection">6.3.4 Closed Networks</h4> @@ -3258,11 +3249,11 @@ <p><a name="doc_002dqnclosedsinglemva"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemva-146"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedsinglemva-147"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedsinglemva-148"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemva-148"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedsinglemva-149"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>, <var>G</var>] = <b>qnclosedsinglemva</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedsinglemva-150"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-149"></a><a name="index-closed-network_002c-single-class-150"></a><a name="index-normalization-constant-151"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-151"></a><a name="index-closed-network_002c-single-class-152"></a><a name="index-normalization-constant-153"></a> Analyze closed, single class queueing networks using the exact Mean Value Analysis (MVA) algorithm. The following queueing disciplines are supported: FCFS, LCFS-PR, PS and IS (Infinite Server). This @@ -3363,7 +3354,7 @@ Multichain Queuing Networks</cite>, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. <a href="http://doi.acm.org/10.1145/322186.322195">http://doi.acm.org/10.1145/322186.322195</a> - <p><a name="index-Reiser_002c-M_002e-152"></a><a name="index-Lavenberg_002c-S_002e-S_002e-153"></a> + <p><a name="index-Reiser_002c-M_002e-154"></a><a name="index-Lavenberg_002c-S_002e-S_002e-155"></a> This implementation is described in R. Jain , <cite>The Art of Computer Systems Performance Analysis</cite>, Wiley, 1991, p. 577. Multi-server nodes <!-- and the computation of @math{G(N)}, --> @@ -3372,15 +3363,15 @@ Performance Evaluation with Computer Science Applications</cite>, Wiley, 1998, Section 8.2.1, "Single Class Queueing Networks". - <p><a name="index-Jain_002c-R_002e-154"></a><a name="index-Bolch_002c-G_002e-155"></a><a name="index-Greiner_002c-S_002e-156"></a><a name="index-de-Meer_002c-H_002e-157"></a><a name="index-Trivedi_002c-K_002e-158"></a> + <p><a name="index-Jain_002c-R_002e-156"></a><a name="index-Bolch_002c-G_002e-157"></a><a name="index-Greiner_002c-S_002e-158"></a><a name="index-de-Meer_002c-H_002e-159"></a><a name="index-Trivedi_002c-K_002e-160"></a> <!-- MVA for single class, closed networks with load dependent servers --> <a name="doc_002dqnclosedsinglemvald"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvald</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemvald-159"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvald</b> (<var>N, S, V, Z</var>)<var><a name="index-qnclosedsinglemvald-160"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvald</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemvald-161"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvald</b> (<var>N, S, V, Z</var>)<var><a name="index-qnclosedsinglemvald-162"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-161"></a><a name="index-closed-network_002c-single-class-162"></a><a name="index-load_002ddependent-service-center-163"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-163"></a><a name="index-closed-network_002c-single-class-164"></a><a name="index-load_002ddependent-service-center-165"></a> Exact MVA algorithm for closed, single class queueing networks with load-dependent service centers. This function supports FCFS, LCFS-PR, PS and IS nodes. For networks with only fixed-rate @@ -3438,15 +3429,15 @@ 1998, Section 8.2.4.1, “Networks with Load-Deèpendent Service: Closed Networks”. - <p><a name="index-Bolch_002c-G_002e-164"></a><a name="index-Greiner_002c-S_002e-165"></a><a name="index-de-Meer_002c-H_002e-166"></a><a name="index-Trivedi_002c-K_002e-167"></a> + <p><a name="index-Bolch_002c-G_002e-166"></a><a name="index-Greiner_002c-S_002e-167"></a><a name="index-de-Meer_002c-H_002e-168"></a><a name="index-Trivedi_002c-K_002e-169"></a> <!-- CMVA for single class, closed networks with a single load dependent servers --> <a name="doc_002dqncmva"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qncmva</b> (<var>N, S, Sld, V</var>)<var><a name="index-qncmva-168"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qncmva</b> (<var>N, S, Sld, V, Z</var>)<var><a name="index-qncmva-169"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qncmva</b> (<var>N, S, Sld, V</var>)<var><a name="index-qncmva-170"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qncmva</b> (<var>N, S, Sld, V, Z</var>)<var><a name="index-qncmva-171"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-170"></a><a name="index-CMVA-171"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-172"></a><a name="index-CMVA-173"></a> Implementation of the Conditional MVA (CMVA) algorithm, a numerically stable variant of MVA for load-dependent servers. CMVA is described in G. Casale, <cite>A Note on Stable Flow-Equivalent Aggregation in @@ -3500,19 +3491,19 @@ closed networks</cite>. Queueing Syst. Theory Appl., 60:193–202, December 2008. - <p><a name="index-Casale_002c-G_002e-172"></a> + <p><a name="index-Casale_002c-G_002e-174"></a> <!-- Approximate MVA for single class, closed networks --> <p><a name="doc_002dqnclosedsinglemvaapprox"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemvaapprox-173"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedsinglemvaapprox-174"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedsinglemvaapprox-175"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z, tol</var>)<var><a name="index-qnclosedsinglemvaapprox-176"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z, tol, iter_max</var>)<var><a name="index-qnclosedsinglemvaapprox-177"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V</var>)<var><a name="index-qnclosedsinglemvaapprox-175"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedsinglemvaapprox-176"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedsinglemvaapprox-177"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z, tol</var>)<var><a name="index-qnclosedsinglemvaapprox-178"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedsinglemvaapprox</b> (<var>N, S, V, m, Z, tol, iter_max</var>)<var><a name="index-qnclosedsinglemvaapprox-179"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029_002c-approximate-178"></a><a name="index-Approximate-MVA-179"></a><a name="index-Closed-network_002c-single-class-180"></a><a name="index-Closed-network_002c-approximate-analysis-181"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029_002c-approximate-180"></a><a name="index-Approximate-MVA-181"></a><a name="index-Closed-network_002c-single-class-182"></a><a name="index-Closed-network_002c-approximate-analysis-183"></a> Analyze closed, single class queueing networks using the Approximate Mean Value Analysis (MVA) algorithm. This function is based on approximating the number of customers seen at center k when a @@ -3591,20 +3582,20 @@ 1984. <a href="http://www.cs.washington.edu/homes/lazowska/qsp/">http://www.cs.washington.edu/homes/lazowska/qsp/</a>. In particular, see section 6.4.2.2 ("Approximate Solution Techniques"). - <p><a name="index-Lazowska_002c-E_002e-D_002e-182"></a><a name="index-Zahorjan_002c-J_002e-183"></a><a name="index-Graham_002c-G_002e-S_002e-184"></a><a name="index-Sevcik_002c-K_002e-C_002e-185"></a> + <p><a name="index-Lazowska_002c-E_002e-D_002e-184"></a><a name="index-Zahorjan_002c-J_002e-185"></a><a name="index-Graham_002c-G_002e-S_002e-186"></a><a name="index-Sevcik_002c-K_002e-C_002e-187"></a> <!-- MVA for multiple class, closed networks --> <p><a name="doc_002dqnclosedmultimva"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S </var>)<var><a name="index-qnclosedmultimva-186"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V</var>)<var><a name="index-qnclosedmultimva-187"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedmultimva-188"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedmultimva-189"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, P</var>)<var><a name="index-qnclosedmultimva-190"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, P, m</var>)<var><a name="index-qnclosedmultimva-191"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S </var>)<var><a name="index-qnclosedmultimva-188"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V</var>)<var><a name="index-qnclosedmultimva-189"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedmultimva-190"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedmultimva-191"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, P</var>)<var><a name="index-qnclosedmultimva-192"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimva</b> (<var>N, S, P, m</var>)<var><a name="index-qnclosedmultimva-193"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-192"></a><a name="index-closed-network_002c-multiple-classes-193"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-194"></a><a name="index-closed-network_002c-multiple-classes-195"></a> Analyze closed, multiclass queueing networks with K service centers and C independent customer classes (chains) using the Mean Value Analysys (MVA) algorithm. @@ -3734,7 +3725,7 @@ Multichain Queuing Networks</cite>, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. <a href="http://doi.acm.org/10.1145/322186.322195">http://doi.acm.org/10.1145/322186.322195</a> - <p><a name="index-Reiser_002c-M_002e-194"></a><a name="index-Lavenberg_002c-S_002e-S_002e-195"></a> + <p><a name="index-Reiser_002c-M_002e-196"></a><a name="index-Lavenberg_002c-S_002e-S_002e-197"></a> This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, <cite>Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications</cite>, Wiley, @@ -3744,18 +3735,18 @@ 1984. <a href="http://www.cs.washington.edu/homes/lazowska/qsp/">http://www.cs.washington.edu/homes/lazowska/qsp/</a>. In particular, see section 7.4.2.1 ("Exact Solution Techniques"). - <p><a name="index-Bolch_002c-G_002e-196"></a><a name="index-Greiner_002c-S_002e-197"></a><a name="index-de-Meer_002c-H_002e-198"></a><a name="index-Trivedi_002c-K_002e-199"></a><a name="index-Lazowska_002c-E_002e-D_002e-200"></a><a name="index-Zahorjan_002c-J_002e-201"></a><a name="index-Graham_002c-G_002e-S_002e-202"></a><a name="index-Sevcik_002c-K_002e-C_002e-203"></a> + <p><a name="index-Bolch_002c-G_002e-198"></a><a name="index-Greiner_002c-S_002e-199"></a><a name="index-de-Meer_002c-H_002e-200"></a><a name="index-Trivedi_002c-K_002e-201"></a><a name="index-Lazowska_002c-E_002e-D_002e-202"></a><a name="index-Zahorjan_002c-J_002e-203"></a><a name="index-Graham_002c-G_002e-S_002e-204"></a><a name="index-Sevcik_002c-K_002e-C_002e-205"></a> <!-- Approximate MVA, with Bard-Schweitzer approximation --> <a name="doc_002dqnclosedmultimvaapprox"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V</var>)<var><a name="index-qnclosedmultimvaapprox-204"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedmultimvaapprox-205"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedmultimvaapprox-206"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z, tol</var>)<var><a name="index-qnclosedmultimvaapprox-207"></a></var><br> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z, tol, iter_max</var>)<var><a name="index-qnclosedmultimvaapprox-208"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V</var>)<var><a name="index-qnclosedmultimvaapprox-206"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m</var>)<var><a name="index-qnclosedmultimvaapprox-207"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z</var>)<var><a name="index-qnclosedmultimvaapprox-208"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z, tol</var>)<var><a name="index-qnclosedmultimvaapprox-209"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnclosedmultimvaapprox</b> (<var>N, S, V, m, Z, tol, iter_max</var>)<var><a name="index-qnclosedmultimvaapprox-210"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029_002c-approximate-209"></a><a name="index-Approximate-MVA-210"></a><a name="index-Closed-network_002c-multiple-classes-211"></a><a name="index-Closed-network_002c-approximate-analysis-212"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029_002c-approximate-211"></a><a name="index-Approximate-MVA-212"></a><a name="index-Closed-network_002c-multiple-classes-213"></a><a name="index-Closed-network_002c-approximate-analysis-214"></a> Analyze closed, multiclass queueing networks with K service centers and C customer classes using the approximate Mean Value Analysys (MVA) algorithm. @@ -3840,12 +3831,12 @@ proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, feb. 1979, pp. 51–62. - <p><a name="index-Bard_002c-Y_002e-213"></a> + <p><a name="index-Bard_002c-Y_002e-215"></a> P. Schweitzer, <cite>Approximate Analysis of Multiclass Closed Networks of Queues</cite>, Proc. Int. Conf. on Stochastic Control and Optimization, jun 1979, pp. 25–29. - <p><a name="index-Schweitzer_002c-P_002e-214"></a> + <p><a name="index-Schweitzer_002c-P_002e-216"></a> This implementation is based on Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, <cite>Quantitative System Performance: Computer System Analysis Using Queueing Network Models</cite>, @@ -3856,7 +3847,7 @@ described above, as it computes the average response times R instead of the residence times. - <p><a name="index-Lazowska_002c-E_002e-D_002e-215"></a><a name="index-Zahorjan_002c-J_002e-216"></a><a name="index-Graham_002c-G_002e-S_002e-217"></a><a name="index-Sevcik_002c-K_002e-C_002e-218"></a> + <p><a name="index-Lazowska_002c-E_002e-D_002e-217"></a><a name="index-Zahorjan_002c-J_002e-218"></a><a name="index-Graham_002c-G_002e-S_002e-219"></a><a name="index-Sevcik_002c-K_002e-C_002e-220"></a> <h4 class="subsection">6.3.5 Mixed Networks</h4> @@ -3864,9 +3855,9 @@ <p><a name="doc_002dqnmix"></a> <div class="defun"> -— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnmix</b> (<var>lambda, N, S, V, m</var>)<var><a name="index-qnmix-219"></a></var><br> +— Function File: [<var>U</var>, <var>R</var>, <var>Q</var>, <var>X</var>] = <b>qnmix</b> (<var>lambda, N, S, V, m</var>)<var><a name="index-qnmix-221"></a></var><br> <blockquote> - <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-220"></a><a name="index-mixed-network-221"></a> + <p><a name="index-Mean-Value-Analysys-_0028MVA_0029-222"></a><a name="index-mixed-network-223"></a> Solution of mixed queueing networks through MVA. ... [truncated message content] |
From: <car...@us...> - 2012-03-16 19:17:19
|
Revision: 9927 http://octave.svn.sourceforge.net/octave/?rev=9927&view=rev Author: carandraug Date: 2012-03-16 19:17:13 +0000 (Fri, 16 Mar 2012) Log Message: ----------- strings: new package release Modified Paths: -------------- trunk/octave-forge/main/strings/DESCRIPTION Modified: trunk/octave-forge/main/strings/DESCRIPTION =================================================================== --- trunk/octave-forge/main/strings/DESCRIPTION 2012-03-16 19:15:01 UTC (rev 9926) +++ trunk/octave-forge/main/strings/DESCRIPTION 2012-03-16 19:17:13 UTC (rev 9927) @@ -1,6 +1,6 @@ Name: strings -Version: 1.0.7 -Date: 2009-05-03 +Version: 1.1.0 +Date: 2012-03-16 Author: various authors Maintainer: Octave-Forge community <oct...@li...> Title: String Handling. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-16 19:15:10
|
Revision: 9926 http://octave.svn.sourceforge.net/octave/?rev=9926&view=rev Author: carandraug Date: 2012-03-16 19:15:01 +0000 (Fri, 16 Mar 2012) Log Message: ----------- strings: update INDEX Modified Paths: -------------- trunk/octave-forge/main/strings/INDEX Modified: trunk/octave-forge/main/strings/INDEX =================================================================== --- trunk/octave-forge/main/strings/INDEX 2012-03-16 19:00:50 UTC (rev 9925) +++ trunk/octave-forge/main/strings/INDEX 2012-03-16 19:15:01 UTC (rev 9926) @@ -3,7 +3,6 @@ pcregexp Operations strsort - strtrim editdistance cstrcmp strjoin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-16 19:00:56
|
Revision: 9925 http://octave.svn.sourceforge.net/octave/?rev=9925&view=rev Author: carandraug Date: 2012-03-16 19:00:50 +0000 (Fri, 16 Mar 2012) Log Message: ----------- strings: fixing DESCRIPTION file to make it easier for parsers Modified Paths: -------------- trunk/octave-forge/main/strings/COPYING trunk/octave-forge/main/strings/DESCRIPTION Modified: trunk/octave-forge/main/strings/COPYING =================================================================== --- trunk/octave-forge/main/strings/COPYING 2012-03-16 18:35:18 UTC (rev 9924) +++ trunk/octave-forge/main/strings/COPYING 2012-03-16 19:00:50 UTC (rev 9925) @@ -1 +1 @@ -See the individual files for licenses. +See individual files for licenses Modified: trunk/octave-forge/main/strings/DESCRIPTION =================================================================== --- trunk/octave-forge/main/strings/DESCRIPTION 2012-03-16 18:35:18 UTC (rev 9924) +++ trunk/octave-forge/main/strings/DESCRIPTION 2012-03-16 19:00:50 UTC (rev 9925) @@ -1,12 +1,12 @@ Name: strings Version: 1.0.7 Date: 2009-05-03 -Author: Various Authors -Maintainer: The Octave Community +Author: various authors +Maintainer: Octave-Forge community <oct...@li...> Title: String Handling. Description: Additional manipulation functions Depends: octave (>= 3.6.0) Autoload: no -BuildRequires: pcre-devel -License: See individual files +BuildRequires: pcre-devel [Debian] libpcre3-dev +License: GPLv3+, modified BSD, public domain Url: http://octave.sf.net This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-16 18:35:26
|
Revision: 9924 http://octave.svn.sourceforge.net/octave/?rev=9924&view=rev Author: carandraug Date: 2012-03-16 18:35:18 +0000 (Fri, 16 Mar 2012) Log Message: ----------- strings: removed configure and autogen in favor of simpler easier to maintain Makefile. This won't allow for conditional building for availablity of libraries but current files are not working anyway, there is no one to maintain them, and package already has explicit that pcre is a requirement. Modified Paths: -------------- trunk/octave-forge/main/strings/src/Makefile Removed Paths: ------------- trunk/octave-forge/main/strings/src/Makeconf.in trunk/octave-forge/main/strings/src/autogen.sh trunk/octave-forge/main/strings/src/configure.base Deleted: trunk/octave-forge/main/strings/src/Makeconf.in =================================================================== --- trunk/octave-forge/main/strings/src/Makeconf.in 2012-03-16 18:23:51 UTC (rev 9923) +++ trunk/octave-forge/main/strings/src/Makeconf.in 2012-03-16 18:35:18 UTC (rev 9924) @@ -1,70 +0,0 @@ - -## Makeconf is automatically generated from Makeconf.base and Makeconf.add -## in the various subdirectories. To regenerate, use ./autogen.sh to -## create a new ./Makeconf.in, then use ./configure to generate a new -## Makeconf. - -OCTAVE_FORGE = 1 - -SHELL = @SHELL@ - -canonical_host_type = @canonical_host_type@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -mandir = @mandir@ -libdir = @libdir@ -datadir = @datadir@ -infodir = @infodir@ -includedir = @includedir@ -datarootdir = @datarootdir@ -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALLOCT=octinst.sh - -DESTDIR = - -RANLIB = @RANLIB@ -STRIP = @STRIP@ -LN_S = @LN_S@ - -AWK = @AWK@ - -# Most octave programs will be compiled with $(MKOCTFILE). Those which -# cannot use mkoctfile directly can request the flags that mkoctfile -# would use as follows: -# FLAG = $(shell $(MKOCTFILE) -p FLAG) -# The following flags are for compiling programs that are independent -# of Octave. How confusing. -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CPICFLAG = @CPICFLAG@ -CXX = @CXX@ -CXXFLAGS = @CXXFLAGS@ -CXXPICFLAG = @CXXPICFLAG@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -FPICFLAG = @FPICFLAG@ - -OCTAVE = @OCTAVE@ -OCTAVE_VERSION = @OCTAVE_VERSION@ -MKOCTFILE = @MKOCTFILE@ -DHAVE_OCTAVE_$(ver) -v -SHLEXT = @SHLEXT@ - -ver = @ver@ -MPATH = @mpath@ -OPATH = @opath@ -XPATH = @xpath@ -ALTMPATH = @altmpath@ -ALTOPATH = @altopath@ - -HAVE_PCRE=@HAVE_PCRE@ -HAVE_PCRE_CONFIG=@HAVE_PCRE_CONFIG@ - -%.o: %.c ; $(MKOCTFILE) -c $< -%.o: %.f ; $(MKOCTFILE) -c $< -%.o: %.cc ; $(MKOCTFILE) -c $< -%.oct: %.cc ; $(MKOCTFILE) $< Modified: trunk/octave-forge/main/strings/src/Makefile =================================================================== --- trunk/octave-forge/main/strings/src/Makefile 2012-03-16 18:23:51 UTC (rev 9923) +++ trunk/octave-forge/main/strings/src/Makefile 2012-03-16 18:35:18 UTC (rev 9924) @@ -1,18 +1,9 @@ -sinclude Makeconf +MKOCTFILE = mkoctfile -Wall -ifeq ($(HAVE_PCRE),yes) - PROGS:=pcregexp.oct -endif +all: pcregexp.oct -ifeq ($(HAVE_PCRE_CONFIG),yes) - PCRE_OPTIONS=$(shell pcre-config --cflags --libs) -else - PCRE_OPTIONS=-lpcre -endif +%.oct: %.cc + $(MKOCTFILE) $< -all: $(PROGS) - -pcregexp.oct: pcregexp.cc - $(MKOCTFILE) $< $(PCRE_OPTIONS) - -clean: ; -$(RM) *.o core octave-core *.oct *~ +clean: + rm -f *.o octave-core core *.oct *~ Deleted: trunk/octave-forge/main/strings/src/autogen.sh =================================================================== --- trunk/octave-forge/main/strings/src/autogen.sh 2012-03-16 18:23:51 UTC (rev 9923) +++ trunk/octave-forge/main/strings/src/autogen.sh 2012-03-16 18:35:18 UTC (rev 9924) @@ -1,27 +0,0 @@ -#! /bin/sh - -## Generate ./configure -rm -f configure.in -echo "dnl --- DO NOT EDIT --- Automatically generated by autogen.sh" > configure.in -cat configure.base >> configure.in -cat <<EOF >> configure.in - AC_OUTPUT(\$CONFIGURE_OUTPUTS) - dnl XXX FIXME XXX chmod is not in autoconf's list of portable functions - - echo " " - echo " \"\\\$prefix\" is \$prefix" - echo " \"\\\$exec_prefix\" is \$exec_prefix" - AC_MSG_RESULT([\$STATUS_MSG - -find . -name NOINSTALL -print # shows which toolboxes won't be installed -]) -EOF - -autoconf configure.in > configure.tmp -if [ diff configure.tmp configure > /dev/null 2>&1 ]; then - rm -f configure.tmp; -else - mv -f configure.tmp configure - chmod 0755 configure -fi -rm -f configure.in Deleted: trunk/octave-forge/main/strings/src/configure.base =================================================================== --- trunk/octave-forge/main/strings/src/configure.base 2012-03-16 18:23:51 UTC (rev 9923) +++ trunk/octave-forge/main/strings/src/configure.base 2012-03-16 18:35:18 UTC (rev 9924) @@ -1,340 +0,0 @@ -dnl The configure script is generated by autogen.sh from configure.base -dnl and the various configure.add files in the source tree. Edit -dnl configure.base and reprocess rather than modifying ./configure. - -dnl autoconf 2.13 certainly doesn't work! What is the minimum requirement? -AC_PREREQ(2.2) - -AC_INIT(configure.base) - -PACKAGE=octave-forge -MAJOR_VERSION=0 -MINOR_VERSION=1 -PATCH_LEVEL=0 - -dnl Kill caching --- this ought to be the default -define([AC_CACHE_LOAD], )dnl -define([AC_CACHE_SAVE], )dnl - -dnl uncomment to put support files in another directory -dnl AC_CONFIG_AUX_DIR(admin) - -VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) - -dnl need to find admin files, so keep track of the top dir. -TOPDIR=`pwd` -AC_SUBST(TOPDIR) - -dnl if mkoctfile doesn't work, then we need the following: -dnl AC_PROG_CXX -dnl AC_PROG_F77 - -dnl Need C compiler regardless so define it in a way that -dnl makes autoconf happy and we can override whatever we -dnl need with mkoctfile -p. -dnl XXX FIXME XXX should use mkoctfile to get CC and CFLAGS -AC_PROG_CC - -dnl XXX FIXME XXX need tests for -p -c -s in mkoctfile. - -dnl ******************************************************************* -dnl Sort out mkoctfile version number and install paths - -dnl XXX FIXME XXX latest octave has octave-config so we don't -dnl need to discover things here. Doesn't have --exe-site-dir -dnl but defines --oct-site-dir and --m-site-dir - -dnl Check for mkoctfile -AC_CHECK_PROG(MKOCTFILE,mkoctfile,mkoctfile) -test -z "$MKOCTFILE" && AC_MSG_WARN([no mkoctfile found on path]) - -AC_SUBST(ver) -AC_SUBST(subver) -AC_SUBST(mpath) -AC_SUBST(opath) -AC_SUBST(xpath) -AC_SUBST(altpath) -AC_SUBST(altmpath) -AC_SUBST(altopath) - -AC_ARG_WITH(path, - [ --with-path install path prefix], - [ path=$withval ]) -AC_ARG_WITH(mpath, - [ --with-mpath override path for m-files], - [mpath=$withval]) -AC_ARG_WITH(opath, - [ --with-opath override path for oct-files], - [opath=$withval]) -AC_ARG_WITH(xpath, - [ --with-xpath override path for executables], - [xpath=$withval]) -AC_ARG_WITH(altpath, - [ --with-altpath alternative functions install path prefix], - [ altpath=$withval ]) -AC_ARG_WITH(altmpath, - [ --with-altmpath override path for alternative m-files], - [altmpath=$withval]) -AC_ARG_WITH(altopath, - [ --with-altopath override path for alternative oct-files], - [altopath=$withval]) - -if test -n "$path" ; then - test -z "$mpath" && mpath=$path - test -z "$opath" && opath=$path/oct - test -z "$xpath" && xpath=$path/bin - test -z "$altpath" && altpath=$path-alternatives -fi - -if test -n "$altpath" ; then - test -z "$altmpath" && altmpath=$altpath - test -z "$altopath" && altopath=$altpath/oct -fi - -dnl Don't query if path/ver are given in the configure environment -#if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$altmpath" || test -z "$altopath" || test -z "$ver" ; then -if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$ver" ; then - dnl Construct program to get mkoctfile version and local install paths - cat > conftest.cc <<EOF -#include <octave/config.h> -#include <octave/version.h> -#include <octave/defaults.h> - -#define INFOV "\nINFOV=" OCTAVE_VERSION "\n" - -#define INFOH "\nINFOH=" OCTAVE_CANONICAL_HOST_TYPE "\n" - -#ifdef OCTAVE_LOCALVERFCNFILEDIR -# define INFOM "\nINFOM=" OCTAVE_LOCALVERFCNFILEDIR "\n" -#else -# define INFOM "\nINFOM=" OCTAVE_LOCALFCNFILEPATH "\n" -#endif - -#ifdef OCTAVE_LOCALVEROCTFILEDIR -# define INFOO "\nINFOO=" OCTAVE_LOCALVEROCTFILEDIR "\n" -#else -# define INFOO "\nINFOO=" OCTAVE_LOCALOCTFILEPATH "\n" -#endif - -#ifdef OCTAVE_LOCALVERARCHLIBDIR -# define INFOX "\nINFOX=" OCTAVE_LOCALVERARCHLIBDIR "\n" -#else -# define INFOX "\nINFOX=" OCTAVE_LOCALARCHLIBDIR "\n" -#endif - -const char *infom = INFOM; -const char *infoo = INFOO; -const char *infox = INFOX; -const char *infoh = INFOH; -const char *infov = INFOV; -EOF - - dnl Compile program perhaps with a special version of mkoctfile - $MKOCTFILE conftest.cc || AC_MSG_ERROR(Could not run $MKOCTFILE) - - dnl Strip the config info from the compiled file - eval `strings conftest.o | grep "^INFO.=" | sed -e "s,//.*$,,"` - rm -rf conftest* - - dnl set the appropriate variables if they are not already set - ver=`echo $INFOV | sed -e "s/\.//" -e "s/\..*$//"` - subver=`echo $INFOV | sed -e "[s/^[^.]*[.][^.]*[.]//]"` - alt_mbase=`echo $INFOM | sed -e "[s,\/[^\/]*$,,]"` - alt_obase=`echo $INFOO | sed -e "[s,/site.*$,/site,]"` - test -z "$mpath" && mpath=$INFOM/octave-forge - test -z "$opath" && opath=$INFOO/octave-forge - test -z "$xpath" && xpath=$INFOX - test -z "$altmpath" && altmpath=$alt_mbase/octave-forge-alternatives/m - test -z "$altopath" && altopath=$alt_obase/octave-forge-alternatives/oct/$INFOH -fi - -dnl ******************************************************************* - -dnl XXX FIXME XXX Should we allow the user to override these? -dnl Do we even need them? The individual makefiles can call mkoctfile -p -dnl themselves, so the only reason to keep them is for configure, and -dnl for those things which are not built using mkoctfile (e.g., aurecord) -dnl but it is not clear we should be using octave compile flags for those. - -dnl C compiler and flags -AC_MSG_RESULT([retrieving compile and link flags from $MKOCTFILE]) -CC=`$MKOCTFILE -p CC` -CFLAGS=`$MKOCTFILE -p CFLAGS` -CPPFLAGS=`$MKOCTFILE -p CPPFLAGS` -CPICFLAG=`$MKOCTFILE -p CPICFLAG` -LDFLAGS=`$MKOCTFILE -p LDFLAGS` -LIBS=`$MKOCTFILE -p LIBS` -AC_SUBST(CC) -AC_SUBST(CFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(CPICFLAG) - -dnl Fortran compiler and flags -F77=`$MKOCTFILE -p F77` -FFLAGS=`$MKOCTFILE -p FFLAGS` -FPICFLAG=`$MKOCTFILE -p FPICFLAG` -AC_SUBST(F77) -AC_SUBST(FFLAGS) -AC_SUBST(FPICFLAG) - -dnl C++ compiler and flags -CXX=`$MKOCTFILE -p CXX` -CXXFLAGS=`$MKOCTFILE -p CXXFLAGS` -CXXPICFLAG=`$MKOCTFILE -p CXXPICFLAG` -AC_SUBST(CXX) -AC_SUBST(CXXFLAGS) -AC_SUBST(CXXPICFLAG) - -dnl ******************************************************************* - -dnl Check for features of your version of mkoctfile. -dnl All checks should be designed so that the default -dnl action if the tests are not performed is to do whatever -dnl is appropriate for the most recent version of Octave. - -dnl Define the following macro: -dnl OF_CHECK_LIB(lib,fn,true,false,helpers) -dnl This is just like AC_CHECK_LIB, but it doesn't update LIBS -AC_DEFUN(OF_CHECK_LIB, -[save_LIBS="$LIBS" -AC_CHECK_LIB($1,$2,$3,$4,$5) -LIBS="$save_LIBS" -]) - -dnl Define the following macro: -dnl TRY_MKOCTFILE(msg,program,action_if_true,action_if_false) -dnl -AC_DEFUN(TRY_MKOCTFILE, -[AC_MSG_CHECKING($1) -cat > conftest.cc << EOF -#include <octave/config.h> -$2 -EOF -ac_try="$MKOCTFILE -c conftest.cc" -if AC_TRY_EVAL(ac_try) ; then - AC_MSG_RESULT(yes) - $3 -else - AC_MSG_RESULT(no) - $4 -fi -]) - -dnl -dnl Check if F77_FUNC works with MKOCTFILE -dnl -TRY_MKOCTFILE([for F77_FUNC], -[int F77_FUNC (hello, HELLO) (const int &n);],, -[MKOCTFILE="$MKOCTFILE -DF77_FUNC=F77_FCN"]) - -dnl ********************************************************** - -dnl Evaluate an expression in octave -dnl -dnl OCTAVE_EVAL(expr,var) -> var=expr -dnl -AC_DEFUN(OCTAVE_EVAL, -[AC_MSG_CHECKING([for $1 in Octave]) -$2=`echo "disp($1)" | $OCTAVE -qf` -AC_MSG_RESULT($$2) -AC_SUBST($2) -]) - -dnl Check status of an octave variable -dnl -dnl OCTAVE_CHECK_EXIST(variable,action_if_true,action_if_false) -dnl -AC_DEFUN(OCTAVE_CHECK_EXIST, -[AC_MSG_CHECKING([for $1 in Octave]) -if test `echo 'disp(exist("$1"))' | $OCTAVE -qf`X != 0X ; then - AC_MSG_RESULT(yes) - $2 -else - AC_MSG_RESULT(no) - $3 -fi -]) - -dnl should check that $(OCTAVE) --version matches $(MKOCTFILE) --version -AC_CHECK_PROG(OCTAVE,octave,octave) -OCTAVE_EVAL(OCTAVE_VERSION,OCTAVE_VERSION) - -dnl grab canonical host type so we can write system specific install stuff -OCTAVE_EVAL(octave_config_info('canonical_host_type'),canonical_host_type) - -dnl grab SHLEXT from octave config -OCTAVE_EVAL(octave_config_info('SHLEXT'),SHLEXT) - -AC_PROG_LN_S - -AC_PROG_RANLIB - -dnl Use $(COPY_FLAGS) to set options for cp when installing .oct files. -COPY_FLAGS="-Rfp" -case "$canonical_host_type" in - *-*-linux*) - COPY_FLAGS="-fdp" - ;; -esac -AC_SUBST(COPY_FLAGS) - -dnl Use $(STRIP) in the makefile to strip executables. If not found, -dnl STRIP expands to ':', which in the makefile does nothing. -dnl Don't need this for .oct files since mkoctfile handles them directly -STRIP=${STRIP-strip} -AC_CHECK_PROG(STRIP,$STRIP,$STRIP,:) - -dnl Strip on windows, don't strip on Mac OS/X or IRIX -dnl For the rest, you can force strip using MKOCTFILE="mkoctfile -s" -dnl or avoid strip using STRIP=: before ./configure -case "$canonical_host_type" in - powerpc-apple-darwin*|*-sgi-*) - STRIP=: - ;; - *-cygwin-*|*-mingw-*) - MKOCTFILE="$MKOCTFILE -s" - ;; -esac - -AC_SUBST(HAVE_PCRE) -AC_SUBST(HAVE_PCRE_CONIFG,no) -AC_CHECK_HEADER(pcre.h, HAVE_PCRE=yes, HAVE_PCRE=no) -if test $HAVE_PCRE = no ; then - AC_CHECK_PROG(HAVE_PCRE_CONFIG, pcre-config, yes, no) - if test $HAVE_PCRE_CONFIG = yes ; then - HAVE_PCRE=yes - fi -fi -if test $HAVE_PCRE = yes ; then - OF_CHECK_LIB(pcre, pcre_compile, HAVE_PCRE=yes, HAVE_PCRE=no) - if test $HAVE_PCRE = no ; then - PCRESTATUS="libpcre not found" - else - PCRESTATUS="pcre" - fi -else - PCRESTATUS="pcre.h not found" -fi - -CONFIGURE_OUTPUTS="Makeconf" -STATUS_MSG=" -octave commands will install into the following directories: - m-files: $mpath - oct-files: $opath - binaries: $xpath -alternatives: - m-files: $altmpath - oct-files: $altopath - -shell commands will install into the following directories: - binaries: $bindir - man pages: $mandir - libraries: $libdir - headers: $includedir - -octave-forge is configured with - octave: $OCTAVE (version $OCTAVE_VERSION) - mkoctfile: $MKOCTFILE for Octave $subver - Perl compatible regular expressions: $PCRESTATUS" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-03-16 18:23:57
|
Revision: 9923 http://octave.svn.sourceforge.net/octave/?rev=9923&view=rev Author: paramaniac Date: 2012-03-16 18:23:51 +0000 (Fri, 16 Mar 2012) Log Message: ----------- control-devel: fix silly mistakes, identification works and computes slicot test case correctly Modified Paths: -------------- trunk/octave-forge/extra/control-devel/devel/test_slident.m trunk/octave-forge/extra/control-devel/src/slident.cc Modified: trunk/octave-forge/extra/control-devel/devel/test_slident.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-16 18:08:52 UTC (rev 9922) +++ trunk/octave-forge/extra/control-devel/devel/test_slident.m 2012-03-16 18:23:51 UTC (rev 9923) @@ -2031,10 +2031,10 @@ rcond = 0.0; tol = -1.0; -[a, b, c, d, q, ry, s, k] = slident (Y, U, nobr, meth, alg, jobd, batch, conct, ctrl, rcond, tol); +[a, b, c, d, q, ry, s, k] = slident (Y, U, nobr, meth, alg, jobd, batch, conct, ctrl, rcond, tol) -n -sv +%n +%sv %{ IB01AD EXAMPLE PROGRAM RESULTS Modified: trunk/octave-forge/extra/control-devel/src/slident.cc =================================================================== --- trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-16 18:08:52 UTC (rev 9922) +++ trunk/octave-forge/extra/control-devel/src/slident.cc 2012-03-16 18:23:51 UTC (rev 9923) @@ -116,12 +116,15 @@ case 0: meth = 'M'; metha = 'M'; + break; case 1: meth = 'N'; metha = 'N'; - case 3: + break; + case 2: meth = 'C'; metha = 'N'; // no typo here + break; default: error ("slib01ad: argument 'meth' invalid"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |