Change Log

The following is a list of changes from the previous version of GAUSS. This version is backwards compatible with the previous major version, 19, other than the exceptions noted below.


  1. strctoposix() and posixtostrc() now support specifying the quarter (%q).
  2. Add ability to toggle ‘Safe Write’ in preferences. This fixes an issue some users may experience when trying to save files in Dropbox/OneDrive/Google Drive, or other similar shared folders.


  1. Bug Fix: sprintf() was omitting trailing 0’s for %f case.
  2. Bug Fix: A regression caused plotSurface() to segfault on Windows.
  3. Bug Fix: Using cql_stubs.dll with a GAUSS Engine program did not have the correct symbol definitions to be used for deployment.
  4. Bug Fix: Some graphics legend items were not appearing in very specific cases.
  5. Bug Fix: plotLogX() and plotLogY() were incorrectly setting both axes to log scale.
  6. Bug Fix: gmmFit() was not computing Hansen J-stat.
  7. Bug Fix: Some Project View folders did not have ‘Set to Working Directory’ available.
  8. Added optional user-specified truncation lags to gmmFitIV() and gmmFit()
  9. Bug Fix: Updated HAC weight matrix computation method in gmmFit() and gmmFitIV()


  1. Bug Fix: The olsmt() procedure was not correctly implementing specified weights when data inputs included missing values.
  2. Added error log for case of non-compatible covariance specifications with weighted least squares.
  3. Added error log for case of improperly specified weights.
  4. Added error log for case of non-compatible pairwise deletion option with weighted least squares.
  5. Add custom quotation character support to csvReadM() and csvReadSA().
  6. Bug Fix: varget() was not performing a deep copy for structs.
  7. Improve performance for enumeration and tooltips on symbol page for very large strings.
  8. Bug Fix: plotAddBar() and plotAddBarH() could sometimes segfault without a correctly initialized axis.
  9. Bug Fix: plotAddBarH() was not behaving the same as plotAddBar() with existing labels and custom indices.


  1. File import dialog now uses %g formatting by default.
  2. Bug fix: Certain editor codecs were not loading correctly on startup when selected in preferences.
  3. macOS: Build against Qt 5.12.6.
  4. macOS: Upgrade Sparkle to 1.22.
  5. Linux: Add new-version check functionality to Linux.


  1. Added new example files aggregate_housing.e, sprintf_cancer_1.e, sprintf_cancer_2.e.
  2. Bug fix: plotAddHist() could crash if the previous graph did not have a category axis.


  1. New integrated package manager to download, install and uninstall Aptech provided, or private GAUSS packages.
  2. New function, aggregate() to group data by a column containing group ids, using one of several methods such as mean, median, mode, standard deviation, sum, and variance.
  3. New function sprintf() formats combinations of string and numeric matrices.
  4. New function loaddSA() loads variables from datasets as GAUSS string arrays.
  5. New function dynargsGet() retrieves optional arguments passed into a procedure, or default values.
  6. New function dynargsCount() counts the number of optional arguments passed into a procedure.
  7. New function dynargsTypes() returns a vector indicating the types (i.e. matrix, string, structure) of the optional arguments passed into a procedure.
  8. New function modec() computes the mode of the columns of a matrix.
  9. Added option to use custom weights for weighted least squares estimation with olsmt().
  10. New function plotXYFill() creates filled area plots between XY lines.
  11. New function plotBarH() creates horizontal bar plots.
  12. New function plotSetYTicInterval() controls Y-axis tick label positioning.
  13. Added ability for plotAddBar() to add bars to specified locations.
  14. plotSetLegend() now allows setting the legend location by axis coordinates as well as text location.
  15. New function plotSetLegendBorder() controls the style properties of the legend border.
  16. All plot colors now support alpha channel, providing the option to add transparency to any graph item.
  17. Added new methods to impute() function: predictive mean matching, local residual draws and linear prediction.
  18. Command reference documentation style updates and new examples.
  19. Speed increase for certain cases of *X'X* with small to medium matrices.
  20. Reading and writing .XLSM files is now supported for the case where the COM/Excel interface is not used.
  21. Increased compatibility for newer style .XLSX files for the case where the COM/Excel interface is not used.
  22. Bug fixes: several minor bug fixes for reading .XLSX files in the case where the COM/Excel interface is not used.
  23. Added count of number of open files to Edit Page to open file dropdown selection widget.
  24. Bug fix: substute() reported error unnecessarily for specific case with mixed numeric and string input.
  25. Bug fix: xlsReadSA() reported error with string array vls input.
  26. Bug fix: reclassify() possible crash when the from variable was much smaller than to.
  27. Changed state variable in example dataset hsng.dat to a string variable with state abbreviations.
  28. New example file wls.e demonstrates weighted least squares estimation.
  29. New example file impute.e demonstrates several missing value imputation methods.
  30. Adding setting dataloop_case = on to gauss.cfg. This setting will instruct the dataloop translator to ignore case in dataloop statements.
  31. Upgrade Reprise License Manager (RLM) to 13.0 for all platforms


  1. Upgrade Reprise License Manager (RLM) to 13.0 for macOS


  1. Add explicit query-deleting for database calls (eg dbExecQuery()) with dbQueryDelete() method.
  2. Database: Add auto-cleanup of queries and open databases on ‘new’ statement and after GAUSS_FreeWorkspace
  3. Bug fix: Fix performance issues with bulk inserts for database operations
  4. Bug fix: A dangling str-concat operation ($+) could result in a crash when using on the command-line
  5. Bug fix: strtof() would result in output matrix twice as large as input even in cases of real input.


  1. Full re-mapping of all key/keyw values to match GAUSS 10 and below values. Lookup table available in key and keyw reference pages.


  1. Update bundled LaTeX library (MathJax 2.7.5)
  2. Bug fix: Formula strings that specified a modifier for a variable now always negate the original variable. eg. ". + ln(x)" will now remove ‘x’ from the output
  3. Bug fix: The saveall command could cause a program to crash after the save in specific situations.


  1. Bug fix: Saving files was improved in situations where the file could be locked, resulting in being unable to save or extra temporary files.


  1. The Program Input/Output window (PGM) now supports autocomplete for active workspace symbols.
  2. The Program Input/Output window (PGM) and all editor documents support autocomplete and lexing for library symbols not part of gauss.lcg.
  3. Struct definitions are now included in the library tool list.
  4. Add more descriptive messaging to gpkg errors when installing packages.
  5. Added function plotSetZRange() to control the range of the Z-axis on surface plots.
  6. New example files plotlogx.e() and plotlogy.e().
  7. Bug fix: quantileFit() errors for case when weights are included and data has missing values.
  8. Bug fix: When viewing a struct member with the symbol editor (e.g Ctrl+E), the member now correctly scrolls into view in the tree.
  9. Bug fix: The ‘Format Text’ functionality in editor documents now keep preprocessor statements fully left-aligned. The ‘keyword’ token now correctly starts an indentation block.
  10. Bug fix: Autocomplete pop-up could freeze in certain situations with too many token references due to memory leak.
  11. Bug fix: Potential freeze when debugging with an undocked graphics page and floating symbol watch.
  12. Bug fix: Specific case of weights with missing values in data when using quantileFit().
  13. Bug fix: Fix ‘Save with Encoding’ option from codec selector dialog.
  14. Bug fix: Add missing context-menu icons for tab split action when a split already exists.
  15. Bug fix: Linux startup script writing empty file named ‘0’ in current working directory.
  16. Bug fix: Proc detection for editor documents in certain cases where proc name or arguments contain underscores.
  17. Bug fix: Accidentally resetting legend orientation in plotSetLegend().
  18. Bug fix: Rare crash when plotting.
  19. Bug fix: Reading files with loadd() could fail to read mixed columns in rare cases.
  20. Bug fix: Legend position now only uses original position on a plotAdd() even if initial plot call had no legend.
  21. Bug fix: Parent graph could have incorrect sizing after a plotAdd() if legend position was outside.


  1. Speed up of approximately 33% to quantileFit().
  2. Improved formatting of output tables for dstat(), dstatmt() and olsmt().
  3. Added ability for plotSetYTicLabel to control the tick label formatting of the right Y-axis.
  4. Bug fix: possible crash in certain cases when passing scalar input to invpd().
  5. Bug fix: output table printing returned error when variable names were not specified in quantileFit().
  6. Bug fix: X-tick labels did not start at the first label position specified by plotSetXTicInterval() in certain cases for non-time series data.
  7. New example program plottshf_yellowstone.e shows how to: plot monthly data with plotTSHF(), set labels and format the tick labels for the left and right Y-axes, control the location and frequency of X-axis tick labels, select observations from a matrix based on data and specify the graph size programmatically.
  8. New example programs plotbox_auto.e, and quantilefit3.e.
  9. Bug fix: Allow curve attribute control in graphics page settings widget for box plots with groupingBehavior set to 1.


  1. Update scatter1.e example.
  2. Fix action list ‘Current File’ action.


  1. New online license activation allows for convenient license activation from a product key.
  2. New function quantileFitLoc() performs local linear and quadratic quantile regressions.
  3. New function quantileFit() performs quantile regression.
  4. New function qfitControlCreate() creates default qfitControl structure.
  5. Added option for clustered standard errors and robust standard errors to olsmt() and quantileFit().
  6. New function clusterSE() for computing clustered standard errors.
  7. New function robustSE() for computing heteroscedastic-robust standard errors.
  8. New ‘date’ keyword for formula strings simplifies reading dates from CSV files.
  9. New ‘$’ keyword for formula strings reading and processing string columns.
  10. New function norm() computes the matrix 1, 2 (Spectral), Infinity, Frobenius and Nuclear norms or the vector p-norm.
  11. New function lagTrim() returns a matrix containing specified lags and/or leads with incomplete rows removed.
  12. New function recserVAR() performs efficient simulation of a VAR process.
  13. lagn() can now accept an optional argument to specify the fill value for the missing observations.
  14. saved() can now conveniently create datasets in Excel or CSV format.
  15. plotTS() can now plot daily data.
  16. X-tick locations can now be controlled with plotSetXTicInterval() for XY, Scatter, Contour and Histogram plots.
  17. New function plotTSHF() and plotAddTSHF() creates time series plots for high frequency and irregularly spaced data.
  18. New functions plotTSLog() and plotAddTSLog() create time series plots with the Y-axis in log space.
  19. New function plotSetGroupingBehavior() to control whether box plots are drawn as separate boxes or part of a group–which controls color behavior and spacing.
  20. New function plotSetYTicLabel() controls the format and angle of Y-axis tick labels.
  21. New function plotSetLegendBkd() controls the opacity and color of the legend background.
  22. Behavior change: The following default graph settings have changed: the grid is off, the axes lines and font text color are now set to black.
  23. Added option for Run and Debug buttons to run the Current File (Tools > Preferences > Command > Behavior).
  24. New function impute() fills in missing data with a choice of imputation methods.
  25. Outer vector product is up to 400% faster, using the * operator.
  26. Matrix inverse with inv() is 20%-400% faster for matrices with sizes around 40x40 to 110x110.
  27. The log 10 and natural log functions, log() and ln(), take 15% to 60% less computation time for matrices and arrays with more than approximately 50 or more elements.
  28. amult() performs matrix multiply with multi-dimensional arrays 20% to 3,500% faster for arrays with approximately 50 or more elements.
  29. exp() is 20% to 800% faster for matrices and arrays with more than approximately 50 or more elements.
  30. dot() is faster.
  31. X'y is faster when X is a matrix and y is a vector.
  32. Matrix multiplication is faster and uses less memory when X is a non-square matrix.
  33. New function dttostrc() converts DT Scalars to string dates with many new date formatting options.
  34. New function strctodt() converts string dates to DT Scalars with many new date formatting options.
  35. New function posixtostrc() converts seconds since the Epoch to string dates with many new date formatting options.
  36. New function strctoposix() converts string dates to seconds since the Epoch with many new date formatting options.
  37. New function dttoposix() converts DT Scalar dates to seconds since the Epoch.
  38. New functions timedeltadt() and timedeltaposix() add or subtract from DT scalar or Posix date/time values in terms of user specified time units.
  39. New functions timediffdt() and timediffposix() compute the difference between dates in either DT scalar or Posix date/time values in terms of user specified time units.
  40. New functions seqadt() and seqaposix() create sequences of dates in either DT scalar or Posix date/time format with a user specified time increment.
  41. Added support for high-frequency data to Posix date/times.
  42. Final input to strsect() is now optional. New two input case: strsect() will copy from the start index to the end of the string.
  43. Final input to strindx() and strrindx() is now optional. New two input case: strindx() will start searching from the first character, while strrindx() will search from the last character.
  44. sqpSolvemt() now has the option to compute covariance matrix from cross-product of gradient.
  45. Date strings returned from xlsReadSA() (as well as loadd()) that use LibXL or xls.dll (Windows-only) now return date with time information in fixed format pattern "MM/DD/YYYY HH:MI:SS.SSS".
  46. New GUI control. Right-click on a program tab and change your working directory to the directory of that file.
  47. New GUI control. Right-click on a program tab and copy the directory containing that file to the clipboard.
  48. HiDPI scaling is enabled by default.
  49. Updated navigation bar and new icons throughout the application.
  50. All icons now have HiDPI support (eg Retina displays).
  51. User interface styling updated to use flat elements.
  52. New preference (Tools > Preferences > Edit > Default Encoding) controls default file encoding for files opened in the GAUSS editor.
  53. New option to set file encoding for individual files (Edit > Select Encoding).
  54. Bug fix: improved automatic tick label location selection for data separated by very small intervals.
  55. Bug fix: multi-dimensional array matrix multiplication in certain cases with complex matrices would return an error message instead of computing the product.
  56. Bug fix: possible crash when opening files with very long lines.
  57. Bug fix: Fix plotBox() with only 1 value.
  58. New example files: plottshf.e, robustse.e, quantilebs.e, quantilefit1.e, quantilefitloc1.e.
  59. Bug fix: Fix source browser not highlighting match in rare cases.
  60. Bug fix: Fix issue with incorrect format type passed to satostrc().
  61. Bug fix: Fix source browser replace for \rn line endings in files not currently open.
  62. OpenSSL dependencies are now bundled (Linux & Windows).


  1. Bug fix: Regression fix: varput() was not working with char literals for symbol name.
  2. Bug fix: Fix rare stack overflow for stopping programs with certain multi-dimensional structs.
  3. Bug fix: Fix memory issue with news check from 18.1.4.


  1. UI: Check for news from Aptech on startup.
  2. UI: Show full value for strings and string arrays in debug tooltips.
  3. UI: Add tooltips to debug watch widget.
  4. Perform better validation and whitespace trimming for formula strings.
  5. Specifying ‘factor’ or ‘cat’ in formula string now negates the original variable.
  6. Bug fix: in ols(), constant was not added to variable labels for ols() report in certain case.
  7. Bug fix: olsqr() trap case was not setting scalerror for 2 out / 3 in case.
  8. Bug fix: Assigning struct string member from 1x1 string array was broken.
  9. Bug fix: Recoded symbol debug tooltips. Sometimes columns didn’t align correctly. This has been fixed.
  10. Bug fix: XLS files that didn’t have a lowercase extension did not load correctly in import dialog.
  11. Bug fix: varget() now supports 1x1 string arrays.
  12. Bug fix: assigning to struct string member would crash in specific cases.


  1. Minor bug fixes, documentation and example updates.


  1. Updates for examples glmbinomial1.e, glmgamma1.e and glmnormal1.e to use formula string notation.


  1. Bug fix loading structs via GDA files.
  2. saveStruct() and loadStruct() now work with files greater than 2GB on Windows (up to 4GB).
  3. Bug fix: sampleData() could hang if ‘size’ parameter was less than 0.
  4. Bug fix: Update file access flags on Windows to prevent occasional failure reading/writing files on network drives.


  1. Add auto-update to macOS and Windows.
  2. Add tooltip to color selection buttons in UI.
  3. Added options to sort eigenvalues to the schur() function.
  4. Bug fix: Fix package installation when both legacy xml and new package json are both present.
  5. Bug fix: Support > 2GB read/writes on macOS and Linux.
  6. Bug fix: Added ability to debug functions with threadfor() statements.
  7. Other bug fixes.


  1. Allow spaces in file names and paths in GAUSS library files.
  2. Bug fix: Fix for incorrect error report when passing large numbers of extra dynamic arguments to gmmFit().
  3. Bug fix: Fixed incorrect error report with literal integer indexing of threadfor() temporary variables in certain cases.
  4. Bug fix: Fix for possible compile time stack overflow with nested structure definitions.


  1. Added initial version of package manager (gpkg) CLI. Supports installation/removal of GAUSS application package(s).
  2. Added ability to read SAS and STATA datasets with loadd() and any function that takes a formula string, such as dstatmt(), glm(), gmmFitIV().
  3. Formula strings can now apply transformations from GAUSS procedures, such as ln() and exp() as well as interaction terms.
  4. New keyword, ‘factor’, in formula strings will load specified columns as a set of dummy variables.
  5. New keyword, ‘cat’, in formula strings will load specified string columns and transform them to a vector of numeric categories.
  6. New function setBlockSize() to set the size of each chunk of data that is read from a dataset that does not fit in memory.
  7. New function getHeaders() to return the variable names from any supported data set type.
  8. New function gmmFit() computes generalized method of moments estimates from user specified moment function.
  9. New function gmmFitIV() estimates instrumental variables models using the generalized method of moments.
  10. New function gmmControlCreate() creates default gmmControl structure.
  11. New function plotCanvasSize() to programmatically control the size of graph canvas.
  12. New function plotSetTicLabelFont() to programmatically control the font, font-size and font-color of X and Y tic labels.
  13. Speed up of chained concatenation operations and scalar indexing operations by 2-4x.
  14. Speed up of x’y for the vector-vector case by 25% to 800% for vectors longer than approximately 50 elements.
  15. Speed up of 15-30% for dstat(), dstatmt() and ols() for large matrix inputs.
  16. Speed up run-time scalar performance on macOS. Smaller speed-up for all symbol types on all platforms.
  17. Speed up contour plot processing.
  18. New functions innerJoin() and outerJoin() for joining matrices on specified columns.
  19. New function delcols() to remove specified columns from a matrix.
  20. New function contains() indicates whether a matrix, multi-dimensional array or string array contains one or more elements from the second input.
  21. New functions isMember() and rowContains() indicate whether any element of a matrix, or any element of a row of a matrix, 2-dimensional array or string array contains one or more elements from the second input.
  22. New function strreplace1() to replace all instances of a substring in a string or string array with another substring.
  23. New function squeeze() to remove singleton dimensions from a multi-dimensional array.
  24. New function blockDiag() to create a block-diagonal matrix from multiple input matrices.
  25. New function besselk() computes the modified Bessel function of the second kind.
  26. New function rndRayleigh() to compute Rayleigh distributed random numbers.
  27. New functions blendColorPalette(), getColorPalette(), getHSLPalette(), getHSLuvPalette() and listColorPalettes() to simplify the process of creating modern, professional and attractive color palettes for graphics.
  28. Updated default color palettes for 2-D graph types.
  29. New define __FILE_DIR returns the directory in which the file is located.
  30. New functions cdfTruncNorm() and pdfTruncNorm() to compute the cumulative distribution function and the probability density of the truncated normal distribution.
  31. New functions cdfLogNorm() and pdfLogNorm() to compute the cumulative distribution and probability density functions of the log-normal distribution.
  32. Add initialization ability for GAUSS libraries. Placing a file named [libname]_init.src in the same directory as the library lcg file will cause that file to be ran when ‘library [name]’ is referenced.
  33. Increase preprocessor #define max length from 40 to 1024.
  34. Add globstar wildcard matching to gauss.cfg. See distributed gauss.cfg with pkgs example.
  35. Added optional inputs mean and standard deviation to cdfn(), and pdfn().
  36. Added support for multi-dimensional array inputs to pdfn(), erf(), erfc(), erfInv(), erfcInv(), the power operator ‘^’.
  37. Added ability to pass string array as X axis tic labels for plotXY() and plotScatter().
  38. Added ability to right-click a struct member in a floating symbol editor window to open it in another window for the purpose of simultaneously viewing more than one member of a structure.
  39. The function browser will now located structure definitions as well as proc definitions.
  40. ‘Toggle block comment’ can now comment out selections within a single line of code as well as adding multi-line comments.
  41. Added ability for ExE conformable vector inputs to europeanBSCall(), europeanBSPut().
  42. Added ability to add scatter, xy and other 2-D plot types to an existing contour plot.
  43. Updated olsmt() to make control structure an optional input.
  44. Watch window struct tree remembers expansion state and scrollbar position on reload (ie debug step in/over etc).
  45. Watch window struct vars can now be cloned into their own watch window.
  46. Preferences are now saved to disk when after ‘Apply’ or ‘OK’ has been selected instead of when GAUSS exits.
  47. Bug fix: Fix alt+left Edit Page navigation becoming unresponsive sometimes.
  48. Bug fix: Watch windows were sometimes not prevented from updating during program run, which could cause crash.
  49. Bug fix for writer returning 0 on successful writes to HDF5 files, rather than number of written rows.
  50. Bug fix: gdaReadStruct() on Linux can now read structs created on Windows and Mac.
  51. Bug fix: Data Page preview and Debug Page Watch Symbols list took more memory than necessary for sparse matrices.
  52. Bug fix: Fix minor memory leaks.
  53. Added optional input to cdfEmpirical() to allow specification of the number of bins/breakpoints to use.
  54. Behavior change: cdfEmpirical() now returns the breakpoints as well as the cumulative probability. This will require use of cdfEmpirical() to assign to two return values.
  55. Behavior change: plotAdd() calls will now inherit curve level settings from the initial plot call. This should only be noticeable in cases in which a plotControl structure is passed in to create the initial graph and subsequent plotAdds() to not use a plotControl structure. This does not require a code change. See User Guide > GAUSS Graphics > Adding data to existing plots for more details.
  56. Behavior change: Application modules will now be installed under GAUSSHOME/pkgs/PKG_NAME, where GAUSSHOME is your GAUSS installation directory and PKG_NAME is the name of the installed application module, i.e. tsmt. This does not require code change. Further, this path can be configured through gauss.cfg.
  57. Behavior change: Global variable __row is no longer referenced, use setBlockSize() instead. Note that this will not prevent older code from running correctly, but may result in less than optimal sizing of data blocks for which are explicitly processed in chunks which were previously controlled by __row.
  58. New example programs: cdfempirical.e, gmm_auto_ols.e, gmm_hsng1_iv.e, gmm_hsng2_iv.e, gmmfitiv_auto.e, gmmfitiv_hsng.e, gmm_tdist.e.


  1. Bug fixes.


  1. Added more complete compile time checks for indexing errors and incorrect use of hat operator for strings.
  2. Bug fix for possible crash in sampleData() when requesting a sample smaller than 40% of the total observations without replacement.
  3. Bug fix crash when loading .plot file with empty LaTeX text boxes.
  4. Bug fix for threadfor() and threadendfor() not indenting properly in editor.
  5. Bug fix for quantiled() returning out-of-memory error with certain datasets.
  6. Removed unnecessary dependency of Qt shared libraries for GAUSS Engine when using libcql_stubs.dylib on Mac.


  1. Added support for new graphics with the GAUSS Engine.
  2. Added tooltips on hover for elements that are partially out of view on the Data Page.
  3. Bug fix for cutting off final portion of the last X-axis tick label in rare circumstances with time series plots.
  4. Bug fix for memory bug in specific case related to unique and string array concatenation.
  5. Bug fix of possible hang with debugger ‘Run to cursor’ button.
  6. Bug fixes for specific cases with cdftnc().
  7. Documentation and input check improvements to polygamma().


  1. (Windows) Added GUI license management utility for floating network licenses, rlmservice.exe.
  2. Bug fix: Fixed possible folder duplication in Source Browser.
  3. Bug fix for program files not saving on run, in specific cases.
  4. Bug fix for possible underflow in cdftnc().
  5. Added ability to remove tgauss dependency on Qt libraries.
  6. Other minor documentation enhancements and bug fixes.


  1. Up to 2-5x speed increase for least squares estimation, using the slash operator ‘/’ for non-square coefficient matrices with few columns (approximately 1-15) and few rows (approximately 2-100).
  2. Bug fix: File import dialog now supports empty sheet names for Excel files.
  3. Added support for pasting data to the matrix editor from applications that use the legacy carriage return only line ending on Mac.


  1. Increased scalability of threadFor() and threadBegin().
  2. GAUSS commands that process datasets can now also process .fmt, and .h5 files as well as .dat.
  3. New support for HDF5 datasets, allows unlimited sized datasets.
  4. Added support for an initial subset of Wilkinson-Rogers formula notation for functions such as dstat(), dstatmt(), glm(), momentd(), ols(), olsmt() and more.
  5. CSV and Excel (.xls, .xlsx) files can be used as datasets for functions quantiled(), dstatmt(), glm(), momentd(), ols(), olsmt() and more.
  6. New function cdfEmpirical() for computing the empirical cumulative distribution function, and plotcdfEmpirical() to graph it.
  7. New function plotAddErrorBar() adds error bars to 2-D plots.
  8. New function plotAddSurface() adds additional surfaces to an existing surface plot.
  9. New function plotSetLegendFont() to control the font family, size and color used in the legend.
  10. New function plotSetZLevels(): user control for the height of levels, rather than just the number of contour levels.
  11. New function plotSetContourLabels(): controls whether numeric label containing contour level height is drawn, as well as the format of the numeric label.
  12. New color maps for surface and contour plots.
  13. Added option to specify the units and dpi of graphs saved with plotSave().
  14. Added control for the range of the X and Y axes to the graphics editor.
  15. Added option to control units of graph size and DPI to plotSave().
  16. Added control for viewing angle, lighting, zoom and toggling appearance of the wireframe for surface plots to the graphics editor.
  17. New function sylvester() to compute the solution, X, to the equation AX + XB = C.
  18. schur() can now, optionally, return the real or complex Schur form.
  19. New function dot() to compute the dot product of a column or the columns of a matrix.
  20. New function powerM() to raise a matrix to a specified power.
  21. getdims() will now return the number of dimensions of a matrix, string or string array.
  22. getorders() will now return the number of rows and columns for matrices, strings or string arrays.
  23. Greatly improved speed and decreased memory usage for reclassify().
  24. Greatly improved performance of unique() and uniquesa() for string arrays.
  25. Greatly improved performance of sortc() for column vectors.
  26. Greatly improved performance of linear solve using the slash operator (/) for small matrices and X’X matrix multiplication for large matrices.
  27. Greatly improved performance of kronecker() product operator (.*.) when one of the matrices is a column vector.
  28. Improved performance of cdffc() when the d1 parameter is equal to one, by 10-1000x.
  29. Improved performance of crossprd() for the case with fewer than 500 vectors.
  30. Added support for complex inputs to hess() and significant speed up for real matrix inputs larger than approximately 30x30.
  31. tgauss can now create new ‘plot’ graphics.
  32. New function rndWishartInv() for taking draws from the Inverse Wishart distribution.
  33. New function pdfWishartInv() computes the probability density function of the Inverse Wishart distribution.
  34. New function ldl() computes the LDL decomposition of a positive semi-definite matrix and returns separate L and D factors.
  35. Added support for generalized linear model function, glm() for inverse-Gaussian distribution and model without an intercept.
  36. New function strtrim() to remove white space from left and right side of elements of a string array.
  37. Added support for multi-character delimiters to strsplit().
  38. New function strjoin() to combine string array elements into a string separated by a specified delimiter. This function does NOT add a delimiter after the final element as in strcombine().
  39. Editor now grays out code that is inactive due to a #define.
  40. Application Install Wizard can install multiple GAUSS application modules at once.
  41. Performance improvement: The “forward only” flag (dbQuerySetForwardOnly()) now defaults to true.
  42. Bug fix for find-and-replace with UTF-8 multibyte characters.
  43. Bug fix: added support for strings to selif() and delif() and fixed memory bug in delif().
  44. Bug fix: crash when all points sent to plotLogX(), plotLogY() or plotLogLog() were between 10^n and 10^n+1.
  45. Bug fix: errorlog() and errorlogat() now accept 1x1 string arrays as well as strings.
  46. Bug fix: intsimp() would fail with an error when attempting to integrate a function that returned only zeros.
  47. Bug fix: ability to scroll to right end in program input/output window with long lines.
  48. New example files: dstatmth5.e, glmnormalh5.e, plotadddsurf1.e, plotadderrorbar1.e, plotadderrorbar2.e, plotarea_ci_latex.e, plotcontour2.e and plotxy_latex1.e.


  1. Bug fixes.


  1. Data Import Wizard now supports GAUSS Data sets (*.dat, *.fmt, *.fst).
  2. Debugger now supports loading previous stack frames and viewing frame-specific symbols.
  3. Improved breakpoint/bookmark behavior.
  4. Improved file opening behavior from finder on OSX.
  5. Bug fix: Fix various memory leaks.
  6. Bug fix: Support plotAddArea() and plotAddBar() to existing time-series plots.
  7. Bug fix: Fix following symlinks for file paths.
  8. Bug fix: Fix ‘Find Usages’ for struct members.
  9. Bug fix: Support debug tooltips for struct members.
  10. Bug fix: Fix 3D preview, title rendering and exporting for OSX Retina devices.
  11. Bug fix: Fix previous document shortcut not activating for Windows/Linux.
  12. Bug fix: Remove ‘Delete’ option from context menu for undeleteable items in graphics page.
  13. Bug fix: Improve autocomplete for structs and struct reference arguments in procs.


  1. New function csvWriteM() writes data to a delimited text file from a GAUSS matrix.
  2. Added ability to toggle bolding of functions in Edit Page.
  3. Bug fix: plotPolar() now supports line symbols.
  4. Bug fix: plotAddAnnotation() did not maintain correct z-order for added annotations.
  5. Bug fix: Fix 3D graph export dialog starting size constraints.
  6. Bug fix: Fix ‘Properties’ context menu item on graphics page not coming to top.
  7. Bug fix: Fix semi-colons in strings, causing Format Text (code formatting) option to add line break inside string.
  8. Bug fix: Fix starting indent keywords in Edit Page being case-sensitive.
  9. Bug fix: Properly display long error messages that wrap.
  10. Added internal check for, and removal of, completely zero imaginary portion of a complex matrix on input to function lu().
  11. Bug fix: Add complex support for function lu() on Mac (already supported on Windows and Linux).
  12. Bug fix: Fix memory leak in function threadfor() in some specific situations.


  1. Added ability for csvReadM() and csvReadSA() to read data from the standard input stream (stdin). Pass __STDIN as the filename argument to csvReadM() and csvReadSA().
  2. Added ability for fgets(), fgetsa(), fgetsat(), and fgetst() to read from the standard input stream (stdin) . Pass __STDIN as the file handle to fgets(), fgetsa(), fgetsat(), and fgetst().
  3. Added ability for fputs() and fputst() to send data to the standard error stream (stderr) and the standard output stream (stdout). Pass \__STDERR or \__STDOUT as the file handle to fputs() and fputst().
  4. Changed R-squared calculation in ols() for regression through the origin to prevent possibility of negative R-squared.
  5. Bug fix: GAUSS source path was not searched when a file name was passed to GAUSS on the command line at start up.
  6. Bug fix: csvReadM() and csvReadSA() skipped final line in CSV file if the initial line was blank and csvRead() was told to skip lines.
  7. Bug fix: cons would continue to return the final buffer data after hitting EOF.


  1. Added Data Import Wizard.
  2. New functions csvReadM() and csvReadSA() read data from a delimited text file into a GAUSS matrix or string array.
  3. New function glm() calculates the generalized linear model.
  4. New function rescale() provides for scaling columns of a matrix.
  5. New function sampleData() takes samples with or without replacement from a GAUSS matrix.
  6. New function qz() computes the sorted complex QZ decomposition.
  7. New function plotSetAxesPen() sets the color and line thickness of the axes line.
  8. New functions added for data recoding/reclassification: reclassify() and reclassifyCuts().
  9. Added the following new statistical distribution functions: pdfBinomial(), pdfPoisson(), cdfHyperGeo(), pdfHyperGeo() and rndHyperGeo().
  10. New function integrate1d() uses adaptive quadrature to integrate a user-defined function over a specified range.
  11. Added new compiler command #ifmac to designate code blocks to be compiled and run only on a Mac.
  12. Added additional, optional argument to rndi() to specify the range of random integers produced.
  13. Added option to pass additional data to integration functions intquad1(), intquad2() and intquad3().
  14. Added additional, optional input to lapgschur() to specify sorting of the eigenvalues.
  15. Add additional, optional argument to strsplit() to specify delimiter.
  16. Significant speed up to svd(), svd1(), svd2(), svds(), svdcusv() and svdusv().
  17. Significant speed up to indnv().
  18. Added ability to pass a variable number of arguments to GAUSS procedures.
  19. Removed requirement to use a DS structure, added option to directly pass a variable number of matrices and made control structure optional for eqsolvemt(), qnewtonmt(), and sqpsolvemt().
  20. Removed requirement to use DS structure and added option to directly pass matrices to all gradient and hessian functions (gradMT(), gradMTm(), gradMTT(), hessMT(), hessMTm(), hessMTg(), hessMTgw(), hessMTT(), etc).
  21. Removed requirement to pass control structure to dstatmt().
  22. Made inputs other than file name optional for xlsReadM(), xlsReadSA(), xlsWrite(), xlsWriteM(), xlsWriteSA(), xlsGetSheetSize(), spreadSheetReadM(), spreadSheetReadSA(), and spreadSheetWrite().
  23. F4 hot-key will now run the current statement and then skip to the next in addition to running highlighted text.
  24. Improved integration of source editor and debugger. Project view window, ‘find usages’, editing source and other source editor features are available on debug page.
  25. Added multiple new preference options to Tools > Preferences > Debug Page to control opening and closing of temporary files and other debug page behavior.
  26. New preference option added to activate autocomplete only manually on Edit Page (with Ctrl+Space).
  27. Added autocomplete and tooltips to program input/output window.
  28. Added preference to Tools > Preferences > Command to activate autocomplete only manually (with Ctrl+Space).
  29. Added bolding and separate color control syntax highlighting for all GAUSS and user defined procedures (Tools > Preferences > Edit Page > Functions).
  30. Added support for Ctrl+E to open a symbol selected in the program input/output window into a floating symbol editor.
  31. Added support for F4 to run highlighted text in program input/output window.
  32. Added sysstate` cases to assess variable arguments passed in to a GAUSS procedure as ‘…’.
  33. Symbol editors remember format preferences until closed instead of using default preferences whenever refreshed.
  34. Speed up for load time of GAUSS when very large folders are open in project view window.
  35. Improved behavior of file associations on Mac.
  36. Autocomplete no longer pops up when deleting characters or in the middle of a word.
  37. Bug fix for display of gaps between bars of a histogram when using plotAddHistP() in some cases.
  38. Bug fix for situation in which a message box could be hidden and unreachable behind a floating symbol editor.
  39. Bug fix: autocomplete pop-up window no longer stays visible when page loses focus.
  40. Bug fix: ‘find usages’ did not find instances of variables that were index assigns (i.e. x[5] = 7;).
  41. Bug fix: Dock widgets incorrectly reset to minimum width in some instances of page change and restart GAUSS.
  42. New example programs: glmbinomial1.e, glmbinomial2.e, glmbinomial3.e, glmgamma1.e, glmgamma2.e, glmgamma3.e, glmnormal1.e, glmnormal2.e, glmpoisson1.e, glmpoisson2.e, qnewtonmt2.e, qnewtonmt3.e, qnewtonmt4.e, sqpsolvemt1.e, sqpsolvemt_nlls.e, sqpsolvemt_frontier.