INF, NAN, and Null
These are special values that Analytica returns in particular conditions. You can also use them in expressions:
Inf means infinity -- e.g.,
1/0 → Inf
or a number larger than 1.796E308 (the largest number that your computer can represent explicitly) -- e.g.
1E307 * 100 → Inf
-Inf means negative infinity (or a number less than 1.796E308) -- e.g.
-1/0 → -Inf
NAN means "Not A Number" -- i.e. not a well-defined number nor infinity -- e.g.
0/0 → NAN
Sqrt(-1) → NAN
(If you enable Complex Numbers,
Sqrt(-1) returns the valid imaginary number, 1j.)
Index Year := [2015, 2016, 2017]
Slice(Year, 4) → NULL
Variable X := Array(Year, [20, 23, 28])
X[Year = 2018] → NULL
More on INF and NAN
NAN follow ANSI (Association of National Standards Institutes) standards, which follow the laws of mathematics as far as possible:
1/Inf → 0
1/(-Inf) → 0
Inf + Inf → Inf
Inf - Inf → NAN
NAN as an operand or parameter give
NAN as their result unless the expression has a well-defined logical or numerical value for any value of
True OR NAN → True
NaN AND False → False
IF True THEN 5 ELSE NAN → 5
More on NULL
10 + NULL → NULL
NULL - 10 → NULL
1 AND NULL → NULL
Array-reducing functions ignore Null. These examples demonstrate (assume
A is indexed by
I as indicated).
Variable A :=
I ▶ 1 2 3 4 5 8 NULL 4 NULL 0
Sum(A, I) → 12
Average(A, I) → 4
JoinText(A, I, ', ') → "8, 4, 0"
Graphs will simply ignore (not show) any point whose value is Null.
Array-reducing functions include Sum, Min, Max, ArgMin, ArgMax, Product, Average, JoinText, Irr, Npv.
Array functions Sum, Min and Max also accept an optional parameter «IgnoreNaN» to ignore
NaN values (which otherwise propagate, i.e. return
Regression also ignores any data points which have
Y = Null, which is useful for missing data.