|
Agena v. 6.7.8 (12/2/2026, Alexander Walz) |
Readme/What's new |
agena >>
`The Power of Procedural Programming`
6.7.8 Isfahan, February 12, 2026
- New `math.isexceptional` returns `true` if its number argument is +0, -0, +infinity, -infinity or `undefined`. With a complex number
returns `true` if the real or the imaginary part is +0, -0, +infinity, -infinity or `undefined`.
- To comply with the behaviour in Maple, `math.dirac` now by default returns `undefined` when given zero as an argument, and no longer
issues `infinity` in this case. You can force the function to return `infinity` by passing the new `classic=true` option:
> math.dirac(0):
undefined
> math.dirac(0, classic = true):
infinity
- `heaviside` has been ported to C and has become 24 percent faster.
- `math.tohex` now by default returns the hexadecimal representation of a number with a preceding `0x` and with lowercase letters.
You can revert to the old behaviour by passing the option `true` as a second argument. Example:
> math.tohex(1001), math.tohex(1001, true):
0x03e9 03E9
- `bytes.numwords` now also accepts the second argument `true` and if given, returns the upper and lower bytes as hexadecimal strings.
Example:
> bytes.numwords(1/3, true):
0x3fd55555 0x55555555 -2
- `bytes.divmod32`, `bytes.getwords`, `bytes.ieee`, `bytes.leadzeros`, `bytes.nextbit`, `bytes.numwords`, `bytes.setdouble`,
`bytes.trailzeros`, `descend`, `linalg.identity`, `linalg.inverse`, `linalg.totable`, `linalg.unitvector`, `linalg.vzero`,
`linalg.zeros`, `minizip.write`, `net.accept`, `net.bind`, `net.connect`, `net.listen`, `net.open`, `recurse`, `satisfy`,
`stats.card`, `stats.meanqmdev`, `stats.meanvar` have been protected against stack corruption.
- Some source code cleaning. They now also compile again with DJGPP for DOS.
- This release has been Valgrind-checked on x86 and x64 Linux to ensure there are no internal errors or memory leaks. |
|
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. |
Comments
Alexander Walz
Sat, 13/05/2017 - 20:06
Permalink
Hello,
Add new comment