Agena is an easy-to-learn procedural programming language suited to be used in scientific, educational, linguistic, and many other applications, including scripting.

What's New

Version 2.8.1:

'stats.trimean' now optionally accepts a given percentile rank determining the lower and upper margin.

The new function 'stats.fivenum' returns the five-number summary of a distribution, plus the arithmetic mean.

The new functions 'calc.Ai' and 'calc.Bi' compute the Airy wave functions and their respective first derivatives.

No similar apps have been recommended yet. You can add your suggestions to the right.

App Name

Smile Score

Suggest other similar software

suggested

Like this app? Be the first to add it to a collection!Create a Collection by bringing together complementary apps that have a common theme or purpose, then share it and discover new collections!

Agena is an easy-to-learn procedural programming language suited to be used in scientific, educational, linguistic, and many other applications, including scripting.

Version 2.8.1:

'stats.trimean' now optionally accepts a given percentile rank determining the lower and upper margin.

The new function 'stats.fivenum' returns the five-number summary of a distribution, plus the arithmetic mean.

The new functions 'calc.Ai' and 'calc.Bi' compute the Airy wave functions and their respective first derivatives.

The new 'calc.zeta' function computes the Riemann zeta function.

The new 'calc.polylog' function computes the polylogarithm of a given order and point in the real domain.

The new function 'calc.En' computes the exponential integral int(exp(-x*t)/t^n, t = 1 .. infinity).

The new 'calc.igamma' evaluates the incomplete gamma integral.

The new 'calc.igammac' evaluates the complemented incomplete gamma integral.

The new 'stats.gammad' Gamma distribution function returns the integral from zero to x of the gamma probability density function.

+ The new 'stats.gammadc' complemented Gamma distribution function returns the integral from x to infinity of the gamma probability density function.

'calc.polygen' has become twenty times faster by using the same technique to access internal data as 'calc.linterp' has done. The former bug that wrong results have been returned when passing more than 254 coefficients thus has also implicitely been fixed.

The index of the Primer and Reference, and the Crash Course have been improved, as well.

The new 'with' statement unpacks values from a table, declares them local and then is able to access them in a block. The new names are variables on their own and do not refer to the indexed values in the table.

The former 'with' function has been renamed to 'initialise', but there are no changes to the 'import' statement.

The assignment statement has been extended to unpack values from a table, the 'local' statement is supported, as well.

Record fields in tables can now be defined more easily by using the equals sign separating the - unquoted - record field name and the corresponding value.

'os.date' can return the Julian date if given the new '*j' format, or the Lotus 1-2-3 Serial Date if given the new '*l' format.

The new function 'os.lsd' computes the Lotus 1-2-3 Serial Date, which is also used in Excel (known there as 'Excel Serial Date'), where January 01, 1900 is day 1. It returns a number. (Day 60 = non-existent February 29, 1900 is properly handled.)

'os.now' also returns the Lotus 1-2-3 Serial Date with the 'lsd' key.

'xbase.writedate' now accepts both strings and numbers as the date to be written to a dBASE file.

'os.time' did not check for the existence of a given date and returned miraculous results with non-existent dates. This has been fixed.

Remember tables sometimes failed returning a cached result if too many entries have been stored to them. This bug has been fixed.

The initialisation routine that searches for the main Agena library has become stricter to avoid unneccessary problems in UNIX.

The 'values' operator has been fixed to avoid problems with strict equality checks ('==' operator).

On the interactive level, i.e. the Agena prompt, diacritics defined in the ISO 8859/1 Latin-1 codepage can now be part of names. Please note that within scripts stored to a file, diacratics still are not allowed within names.

Deprecated 'stats', 'linalg', and 'xbase' functions now are correctly initialised in the compat.agn compatibility file.

Formerly, only one expected type of return could be defined for procedures, now you can specify up to four basic types by putting them in curly brackets.

There has been a subtle change on how Agena treats the last iteration value of numeric for loops if such loops are executed _on the interactive level_, i.e. not within a function: if the loop is part of a block, then the last iteration value now is accessible only in this 'scope' block, but not in outer blocks. This fix has been applied to comply with the description in the Primer and Reference, so that the behaviour now is the same both with functions and the interactive level.

If you assign a procedure to 'environ.onexit', then when quittung Agena with 'bye', 'os.exit', or CTRL-C, this procedure will be called before exiting the interpreter. The procedure is also called when issuing the 'restart' statement. Thus you may conduct file system clean-up, pass back information if Agena is being piped, save variables to disk, or anything else.

Remember tables can now already be assigned during procedure definition: just put the statement 'feature reminisce' right after the 'is' keyword. You may thus save an explicit call to 'rtable.rinit' after the procedure has been defined. Thus, also anonymous procedures support remember tables now.

'os.system' can now directly detect Windows 10 and Windows 10 Server. The function also now correctly acknowledges Windows Server 2012 R2.

The 'tar' package (UNIX tape archive reader) has become a part of the Agena distribution.

The new function 'gdi.lineplot' plots lines between 2-dimensional points. It is just an easy-to-use wrapper around 'gdi.pointplot' with the connect = true option.

'gdi.pointplot' with the connect = true option now supports the 'thickness' and 'linestyle' options for lines.

'gdi.setline', 'gdi.setcircle', 'gdi.setarc', 'gdi.setellipse', 'gdi.setrectangle', 'gdi.settriangle' now accept a thickness value as the very last argument. By default, it is 1 (= normal).

The new function 'math.decompose' splits an integer of any base into its digits.

'math.ndigits' has been ported to C, and processes non-positive values, as well. It has not necessarily become faster.

The new C API function 'agn_checkposint' checks whether a value is a positive integer.

The new C macro 'lua_regsetinumber' sets an Agena number to the given index of a register.

The scheme files have been improved.

'environ.attrib' now checks whether a register has been assigned a user-defined type.

## Agena User Discussion

## Ratings

## Details