Agena v. 3.14.0 (23/4/2024, Alexander Walz) |
Readme/What's new |
3.14.0 Scottsboro, April 23, 2024
- The assignment feature in `if` and `while` clauses has been extended: You can now use the percentage sign as a placeholder for
the variable name in the actual condition, for example:
> i := 0.1;
> while logn := ln(i), % < -0.9 do
> print(i, logn);
> i +:= 0.1
> od;
0.1 -2.302585092994
0.2 -1.6094379124341
0.3 -1.2039728043259
0.4 -0.91629073187416
When using the `percentage notation` with `while` loops, the variable name is always reassigned when control flow is returning
to the start of the `while` loop, before checking whether to execute the loop body once again.
This is contrary to the existing logic where the assignment is done only once, so the following will loop forever since `logn`
is not updated in the loop body:
> i := 0.1;
> while logn := ln(i), logn < -0.9 do
> print(i, logn);
> i +:= 0.1
> od;
The percentage sign cannot be used in the body or succeeding statements as it usually represents the modulus operator.
- This release has been named after the city of Scottsboro, Jackson County, Alabama. It has been Valgrind-checked on x86 and AMD64 Linux
to ensure there are no internal errors or memory leaks. |
Agena v. 3.11.5 (24/3/2024, Alexander Walz) |
Readme/What's new |
3.11.5 Converse, March 24, 2024
Tuned, extended and fixed calculus functions that compute integrals:
- `calc.intdei` and `calc.intdeo` now remember the last epsilon setting given by the user and run 40 % faster with succeeding calls done
with the same epsilon value. This also benefits the wrapper function `calc.integ` (see below).
- `calc.gauleg`, `calc.intde`, calc.intdei`, `calc.intdeo` and `calc.intcc` now accept multivariate functions. See the Primer and Reference
on how to pass the second, third, etc. arguments in the respective calls. With univariate functions, as before, you do not have to change
the code.
- `calc.integ` has been rewritten to support multivariate functions. Optional epsilon, omega and sample values must now be given as explicit
options, so you may have to adapt your code. Example:
> calc.integ(<< x, a -> x + a >>, 1, 2, 0, eps=hEps, omega=1, samples=100):
1.5 2.999999997239e-015
- If the third argument to `calc.intdeo` was zero, the interpreter could crash on some platforms. This has been fixed.
- If the number of sample points is zero, `calc.gauleg` now automatically sets it to 20 points internally. This prevents segmentation
faults on some platforms and also false results of exactly zero.
- If you pass zero as an epsilon value to `calc.intde`, calc.intdei`, `calc.intdeo` and `calc.intcc`, then it is automatically reset to
the default setting 1e-15 to avert any infinite loops.
- This release has been Valgrind-checked on x86 and AMD64 Linux to ensure there are no internal errors or memory leaks. |
Commenti
Alexander Walz
Sab, 13/05/2017 - 20:06
Collegamento permanente
Hello,
Aggiungi un commento