|
Agena v. 6.6.11 (30/1/2026, Alexander Walz) |
Readme/What's new |
agena >>
`The Power of Procedural Programming`
6.6.11 Shiraz, January 30, 2026
- `getmetatable` has been extended and allows to retrieve a metatable directly from the Agena registry instead of doing so
by querying a certain individual value, such as a structure or userdata. You must pass the name of the metatable and the
`true` option, though, to accomplish this, for example:
> getmetatable('numarray', true):
[__add ~ procedure(01D6FDF8), __aeq ~ procedure(01D64150), ...]
Some safeguards have been implemented to prevent abuse, see the Agena Reference.
- New `long.trigamma` and `long.tetragamma` implement the trigamma and tetragamma functions for 80-bit long doubles.
- Stymied error messages of `os.getconsolemode`, `os.setconsolemode` and `os.shellcolour` have been fixed.
- Error messages of `ads.open`, `ads.read`, `calc.sections`, `factory.count`, `long.count`, `math.length` are no longer
corrupted.
- With unknown file I/O or socket errors, many Agena functions caused memory leaks when printing the error message.
This has been fixed.
- Added a few human-readable error messages for failed socket IO.
- On Windows, `printf` when called in colour mode, issued an error if it could not determine the console mode. This can
happen when stdout is redirected to NUL, especially in batch scripts. Now `printf` just prints the text without colour in
these cases and no longer stops execution.
- New `dual.gamma` and `dual.beta` implement the Gamma and Beta functions for (hyper-)dual numbers, respectively.
- New `dual.psi` implements the Psi/Digamma function.
- The `lngamma` and `invsqrt` operators now support (hyper-)dual numbers.
- `dual.erfcx` now supports hyper-dual numbers.
- New `dual.hypot4` computes tzhe cathetus sqrt(x^2 - y^2) for (hyper-)dual numbers.
- New `dual.pytha` computes squared sum x^2 + y^2 for (hyper-)dual numbers.
- New `dual.pytha4` computes squared difference x^2 - y^2 for (hyper-)dual numbers.
- New `dual.totable puts all the (hyper-)dual number components into a table.
- Added the new `dual.generate` function which easily allows to create new functions processing (hyper-)dual numbers.
All you need are the operators and procedures working on ordinary Agena numbers [sic !], the function definition itself
plus its first and second derivative. Example:
> dual.lnGAMMA := # implements ln(gamma(x))
> dual.generate(<: x -> lngamma(x) :>, calc.Psi, <: v -> calc.Psi(1, v) :>, 'dual.lnGAMMA');
This allows you to utilize the whole realm of operators and functions that you find in the base, `calc`, `stats` and
other libraries, to compute derivatives accurately.
- The minimum CPU requirement for the Windows installers that have the phrase `-sse2-` in the file name is:
Pentium 4/Athlon 64 or newer, SSE2 instruction set. AVX is not required. The SSE2-compatible Windows version of Agena
is around 1.5 percent faster than the one using the x87 instruction set. |
|
Agena v. 4.12.5 (20/5/2025, Alexander Walz) |
Readme/What's new |
4.12.5 Merryville, May 20, 2025
- In the past, the bitshift operators <<< (left shift), >>> (right shift), <<<< (left rotation) and >>>> (right rotation) had different behaviour across platforms when a number at or beyond the +/-2^32 threshold has been processed. This has been changed and the results in these situations are now the same.
Likewise, `bytes.numto32` is now returning the same results on all platforms when casting a value at or beyond the +/-2^32 border.
This also benefits various functions in the `hashes` package as their returns are now the same across platforms, as well.
To check the new underflow or overflow behaviour, use `math.wrap`.
- New function `math.fmod` works and returns the same result as the binary `symmod` operator. It has just been added to facilitate porting C code to Agena.
- The results of `hashes.mix`, `hashes.crc32`, `hashes.crc8`, `hashes.reflect`, `hashes.parity`, `hashes.fibmod`, `hashes.interweave`, `hashes.jinteger` may now be different with out-of-range input, that is with arguments at or beyond the 2^32 threshold, depending on your platform. |
Commenti
Alexander Walz
Sab, 13/05/2017 - 20:06
Collegamento permanente
Hello,
Aggiungi un commento