# Analytica 4.3.3 Patch Release Notes

The Analytica patch release 4.3.3 is a bug fix patch. This page lists the fixes since release 4.3.2. We don't believe any of these fixes have potential to break models developed in 4.3.2.

## Contents

## Tool Tips

- Tool tip controls were not working at all under in the 4.3.2 release. These were restored, and include:
- Tool tips describing toolbar buttons
- Error messages when bad values are entered into lower or upper domain bounds
- Error bubbles on edit table cells when domain or check bounds are violated
- Bubbles showing the coordinate of a graph point when you click the point on a graph

*This problem is pretty major, and for this bug alone, we highly recommend installing the 4.3.3 patch if you are using 4.3.2!*

## Built-in Functions

- Several functions were made visible in the Definition menu (and added to the user guide). These functions were present previously, but just not exposed on the Definition menu. These include:

- Handling of Null values
- Correlation() and Covariance() now allow Null values in either
*X*or*Y*. Those points with Null are ignored. - Many advanced math functions now allow Null parameters without throwing an error. The result will be Null. Allows these to be more easily applied to data sets with missing values. These include:

- Correlation() and Covariance() now allow Null values in either

- Sequence(start,stop) and the sequence operator (
`start..stop`

) were enhanced to allow certain textual values for*start*and*stop*. In particular:- Single-character ASCII sequences: e.g.,
`'a'..'z'`

or`Sequence('A','Z',2)`

- Spreadsheet column sequences: e.g.,
`'A'..'BC'`

→ ['A','B',...,'Z','AA','AB',...,'AZ','BA','BB','BC']

- Single-character ASCII sequences: e.g.,

- When
`Sequence(date1,date2,step)`

was used with a fractional step, the actual sequence would land on integer-step boundaries. An example was when`Sequence(1-Jan-2011, 1-Feb-2011, 1/24)`

was attempted to produce an hourly sequence (note: The preferred way to do this is:`Sequence(1-Jan-2011, 1-Feb-2011, dateUnit:'h')`

). Sequence was fixed to honor these fractional increments on a date sequence where they are unambiguous. An error will result if you do this using a «dateUnit» of 'Y' (year) or 'M' (month), since it then becomes ambiguous as to exactly what the duration of 0.5 years or 0.5 months is.

- Dynamic
- When two dynamic loops based on two (or more) different dynamic indexes intersect (i.e., a multi-dimensional recurrence), and one of those indexes has >255 elements, an internal error resulted in some cases, which has been fixed. These multi-D recurrences are pretty rare.
- Fixed an erroneous domain out-of-bounds warning stating that
*Undefined is not consistent with domain bounds*when a Dynamic variable had domain bounds specified. - When the recurrence of a Dynamic is a comparison, e.g.,
`Dynamic(true,Self[Time-1] <= B)`

, the result table was displaying as comparisons, where a cell would contain e.g.,*{!} 1 <= 0*, rather than 0. This is supposed to happen for constraint nodes, but it was happening for normal variable nodes also. Now Dynamic non-constraint nodes with a comparison for a recurrence display as 0 or 1.

- Fixed an internal error that occurred in a slice-with-offset involving local indexes of the form
`A[@.I=@A.I-1]`

.

- CondMin and CondMax -- conditional min and max -- can now be used with a named-parameter syntax, where formerly this was not possible.

- MdTable would issue an error when the 4th parameter was e.g.,
`[ Handle(I), Handle(J) ]`

. (Note: it expected just`[I,J]`

). This was generalized to accept computed handles such as a call to the Handle function.

- When the «discrete» parameter is explicitly specified to functions Pdf or Cdf, and is array-valued with some columns marked as discrete and others a continuous, the set of values collected into the
**.PossibleValues**index for the discrete portion of the result would previous collect all unique values, but now collects only the unique values in the discrete slices. Note that in general, you really would never want to use Pdf or Cdf on a mixed discrete/continuous result, since the result will contain**.PossibleValues**index for the discrete part as well as the**.Step**and**DensityIndex**indexes for the continuous part, which is a bit strange.

## Library Functions

- The
`Dens_*`

functions, such as Dens_Normal, Dens_Beta, etc., found in the*Distribution Densities.ana*library, will now accept Null values for their parameters. The resulting density value will be Null in these cases. This makes it easier to apply these density functions to data sets containing missing values.

## Dates

- When certain numbers were entered into a table cell, input box or definition field, they were being parsed as dates, even though they were clearly numbers. While 4.3 does try to recognize when a date has been entered and then interpret it as a date, in these cases its interpretation as a date was too liberal. The cases here involved numbers entered with thousands separators, such as 1,002,003, between 1 and 12 million, where the next two fields appeared to be valid day and year values. In this example, it was being parsed as 2-Jan-2003. This has been adjusted so that numbers in this form are parsed as numbers, not dates.

- The result of the DateAdd was sometimes a standard numeric value, rather than a date-time number.

## Memory

- Fixed a crash that could result when an out-of-memory condition is experienced during the computation of a discrete probability mass or cumulative probability display.

## Influence Diagram

- Eliminated stray arrowheads that would show up incorrectly on nodes after a portion of a table had been copied to the clipboard.

## Copy/Paste

- Fixed a crash during
*Copy Table*

## Function Finder

- When your definition was of either of the forms
`Subscript(A,I,x)`

or`A[I=x]`

, and you opened the function finder, it would open to the Subscript function. Now it will open to the`ident[I=x]`

entry for`A[I=x]`

. When you pressed OK, it would previous change a`A[I=x]`

definition to`Subscript(A,I,x)`

(not surprising since that is what was selected). Now, of course, it leaves it in its original form.

- When an
`A.I`

expression was used in a context where*A*could be omitted, such as`A[.I=x]`

, which is shorthand for`A[A.I=x]`

, the index part would be mangled in the function finder. You would end up with`A[Undefined.I=x]`

, which would then result in an error. This case is now handled.

## User Guide

- The file name for the User Guide was changed to
`UserGuide.pdf`

. Previously it had been`UsersGuide.pdf`

, which is inconsistent with its official name, which does not contain an "s".

Comments

Enable comment auto-refresher