diff --git a/doc/4-ReleaseNotes.md b/doc/4-ReleaseNotes.md index 2e9f14b9..a3b3e72e 100644 --- a/doc/4-ReleaseNotes.md +++ b/doc/4-ReleaseNotes.md @@ -1,5 +1,83 @@ # Release notes +## Release 0.8.0 "Gabriel" - Symbolic operations, equations and library + +This release adds symbolic integration, differentiation and equation +solving, delivers an extensive equation library, and improves the +library feature to enable large library objects to be defined in +separate files and optimize execution speed for library items. +It also improves the rendering of complex equations and fixes a number +of crashes or user-interface problems. + +### Features + +* Symbolic integration, `Primitive` command, `'∫X(sin(X))'` syntax + `'∫X(sin(2*X+3)-X)'` evaluates as `'-cos(2*X+3)/2-x²/2'` +* Symbolic differentiation, `Derivative` command, `∂X(sin(X))` syntax + `'∂X(sin(2*X+3)-X)'` evaluates as `'2·cos(2*X+3)-1'` +* Symbolic equation resolution, `ISOL` (`Isolate`) command + '`sin(2*X+3)=A' 'X' ISOL` gives `'X=(sin⁻¹ A+2*i1*π-3)/2'` +* Apply arithmetic and functions on both sides of equations like `A=B` + `'A=B' sin 1 +` results in `'sin A+1=sin B+1'` +* Add possibility to define library objects in separate files + The various demos from previous releases are now also in the library +* commands: Add `→Prog` command to convert expressions to RPL programs + `'sin(2*X-Y)' →Prog` gives `« 2 X × Y - sin »` +* Accelerate evaluation of library entries + Invoking a library object is as fast as if it was on the stack. + Notice that this is faster than global objects that require lookup. +* Add ``Obj→` support for user-defined function calls + `'F(A;B;C)' Obj→ DROP Obj→ ` gives `[F A B C]`. + The first call to `Obj→` expands the expression, leaving an isolated + function call on the stack, which the second `Obj→` expands. +* Automatically convert polynomial objects to expressions when needed +* Many improvements to the equation library contributed by Jean Wilson +* Document the equation library variables in the help file +* Add classical/relativistic Kinetic Energy comparison demo + This was suggested by Jean Wilson as an illustration +* parser: Parse and convert HP syntax for `|` + Typing `'A(X;Y)|(X=1;Y=2)'` converts to `'A(X;Y)|X=1|Y=2'` + +### Bug fixes + +* Improve graphical rendering of some complex expressions +* Render `sqrt` as `√` and not `squareroot` in HP compatibility mode +* Do not draw parentheses around `|x|` when rendering `abs` +* Redefine `rpm` as `turn/min` (unit consistency of rotational speed) +* Avoid crash in `for` loop if termination condition fails to evaluate +* Fix rendering and saving of directories +* Do not leave incorrect stack content when running `Obj→` on text +* Make size consistent in vectors containing tagged objects +* Accept tagged objects as input in algebraic functions +* Avoid parsing error for `1,234` when `.` is the decimal separator +* Debug output related to expressions is no longer labelled "equations" +* Fix unit error in Drift Speed & Current Density +* Cut the size of the build version ID to avoid DMCP buffer overflows +* Avoid possible corruption when an error occurs in a program +* Improve error messages for file errors, e.g. when loading a state +* Move cursor at correct position after numbers when entering units +* Reject multiple consecutive units, e.g. `1_m_s` +* Fix issue where we insert `=` incorrectly on the command line +* Address simulator warning about potential buffer overflow + +### Improvements + +* tests: Add tests for the newly added library entries +* primitive: Add test suite for symbolic integration +* tests: Add test suite for symbolic differentiation +* Factor out code to expand objects on the stack +* `make install` now Installs from distribution files +* demo: Reorganize demo files as directories +* tests: Add test for `Obj→` on various object types +* tests: Factor out code checking state of the complete stack +* tests: Avoid emitting something that looks like compilation errors +* Update demo file +* Improve definition of atomic mass unit, add `Da` (Dalton) alias +* expressions: Optimize the way to split an equation +* tests: Adjust tests after changes in `SymbolicMenu` + + + ## Release 0.7.18 "Who" - Subst, Where, Apply This release implements the `Apply`, `Subst` and `|` (`Where`) commands. diff --git a/help/db48x.md b/help/db48x.md index 984b298b..be5692d6 100644 --- a/help/db48x.md +++ b/help/db48x.md @@ -2331,6 +2331,84 @@ You can edit it by recalling its content on the stack using back to disk using `"config:equations.csv" STO`. # Release notes +## Release 0.8.0 "Gabriel" - Symbolic operations, equations and library + +This release adds symbolic integration, differentiation and equation +solving, delivers an extensive equation library, and improves the +library feature to enable large library objects to be defined in +separate files and optimize execution speed for library items. +It also improves the rendering of complex equations and fixes a number +of crashes or user-interface problems. + +### Features + +* Symbolic integration, `Primitive` command, `'∫X(sin(X))'` syntax + `'∫X(sin(2*X+3)-X)'` evaluates as `'-cos(2*X+3)/2-x²/2'` +* Symbolic differentiation, `Derivative` command, `∂X(sin(X))` syntax + `'∂X(sin(2*X+3)-X)'` evaluates as `'2·cos(2*X+3)-1'` +* Symbolic equation resolution, `ISOL` (`Isolate`) command + '`sin(2*X+3)=A' 'X' ISOL` gives `'X=(sin⁻¹ A+2*i1*π-3)/2'` +* Apply arithmetic and functions on both sides of equations like `A=B` + `'A=B' sin 1 +` results in `'sin A+1=sin B+1'` +* Add possibility to define library objects in separate files + The various demos from previous releases are now also in the library +* commands: Add `→Prog` command to convert expressions to RPL programs + `'sin(2*X-Y)' →Prog` gives `« 2 X × Y - sin »` +* Accelerate evaluation of library entries + Invoking a library object is as fast as if it was on the stack. + Notice that this is faster than global objects that require lookup. +* Add ``Obj→` support for user-defined function calls + `'F(A;B;C)' Obj→ DROP Obj→ ` gives `[F A B C]`. + The first call to `Obj→` expands the expression, leaving an isolated + function call on the stack, which the second `Obj→` expands. +* Automatically convert polynomial objects to expressions when needed +* Many improvements to the equation library contributed by Jean Wilson +* Document the equation library variables in the help file +* Add classical/relativistic Kinetic Energy comparison demo + This was suggested by Jean Wilson as an illustration +* parser: Parse and convert HP syntax for `|` + Typing `'A(X;Y)|(X=1;Y=2)'` converts to `'A(X;Y)|X=1|Y=2'` + +### Bug fixes + +* Improve graphical rendering of some complex expressions +* Render `sqrt` as `√` and not `squareroot` in HP compatibility mode +* Do not draw parentheses around `|x|` when rendering `abs` +* Redefine `rpm` as `turn/min` (unit consistency of rotational speed) +* Avoid crash in `for` loop if termination condition fails to evaluate +* Fix rendering and saving of directories +* Do not leave incorrect stack content when running `Obj→` on text +* Make size consistent in vectors containing tagged objects +* Accept tagged objects as input in algebraic functions +* Avoid parsing error for `1,234` when `.` is the decimal separator +* Debug output related to expressions is no longer labelled "equations" +* Fix unit error in Drift Speed & Current Density +* Cut the size of the build version ID to avoid DMCP buffer overflows +* Avoid possible corruption when an error occurs in a program +* Improve error messages for file errors, e.g. when loading a state +* Move cursor at correct position after numbers when entering units +* Reject multiple consecutive units, e.g. `1_m_s` +* Fix issue where we insert `=` incorrectly on the command line +* Address simulator warning about potential buffer overflow + +### Improvements + +* tests: Add tests for the newly added library entries +* primitive: Add test suite for symbolic integration +* tests: Add test suite for symbolic differentiation +* Factor out code to expand objects on the stack +* `make install` now Installs from distribution files +* demo: Reorganize demo files as directories +* tests: Add test for `Obj→` on various object types +* tests: Factor out code checking state of the complete stack +* tests: Avoid emitting something that looks like compilation errors +* Update demo file +* Improve definition of atomic mass unit, add `Da` (Dalton) alias +* expressions: Optimize the way to split an equation +* tests: Adjust tests after changes in `SymbolicMenu` + + + ## Release 0.7.18 "Who" - Subst, Where, Apply This release implements the `Apply`, `Subst` and `|` (`Where`) commands. diff --git a/help/db50x.md b/help/db50x.md index 0af132a4..517a0804 100644 --- a/help/db50x.md +++ b/help/db50x.md @@ -2331,6 +2331,84 @@ You can edit it by recalling its content on the stack using back to disk using `"config:equations.csv" STO`. # Release notes +## Release 0.8.0 "Gabriel" - Symbolic operations, equations and library + +This release adds symbolic integration, differentiation and equation +solving, delivers an extensive equation library, and improves the +library feature to enable large library objects to be defined in +separate files and optimize execution speed for library items. +It also improves the rendering of complex equations and fixes a number +of crashes or user-interface problems. + +### Features + +* Symbolic integration, `Primitive` command, `'∫X(sin(X))'` syntax + `'∫X(sin(2*X+3)-X)'` evaluates as `'-cos(2*X+3)/2-x²/2'` +* Symbolic differentiation, `Derivative` command, `∂X(sin(X))` syntax + `'∂X(sin(2*X+3)-X)'` evaluates as `'2·cos(2*X+3)-1'` +* Symbolic equation resolution, `ISOL` (`Isolate`) command + '`sin(2*X+3)=A' 'X' ISOL` gives `'X=(sin⁻¹ A+2*i1*π-3)/2'` +* Apply arithmetic and functions on both sides of equations like `A=B` + `'A=B' sin 1 +` results in `'sin A+1=sin B+1'` +* Add possibility to define library objects in separate files + The various demos from previous releases are now also in the library +* commands: Add `→Prog` command to convert expressions to RPL programs + `'sin(2*X-Y)' →Prog` gives `« 2 X × Y - sin »` +* Accelerate evaluation of library entries + Invoking a library object is as fast as if it was on the stack. + Notice that this is faster than global objects that require lookup. +* Add ``Obj→` support for user-defined function calls + `'F(A;B;C)' Obj→ DROP Obj→ ` gives `[F A B C]`. + The first call to `Obj→` expands the expression, leaving an isolated + function call on the stack, which the second `Obj→` expands. +* Automatically convert polynomial objects to expressions when needed +* Many improvements to the equation library contributed by Jean Wilson +* Document the equation library variables in the help file +* Add classical/relativistic Kinetic Energy comparison demo + This was suggested by Jean Wilson as an illustration +* parser: Parse and convert HP syntax for `|` + Typing `'A(X;Y)|(X=1;Y=2)'` converts to `'A(X;Y)|X=1|Y=2'` + +### Bug fixes + +* Improve graphical rendering of some complex expressions +* Render `sqrt` as `√` and not `squareroot` in HP compatibility mode +* Do not draw parentheses around `|x|` when rendering `abs` +* Redefine `rpm` as `turn/min` (unit consistency of rotational speed) +* Avoid crash in `for` loop if termination condition fails to evaluate +* Fix rendering and saving of directories +* Do not leave incorrect stack content when running `Obj→` on text +* Make size consistent in vectors containing tagged objects +* Accept tagged objects as input in algebraic functions +* Avoid parsing error for `1,234` when `.` is the decimal separator +* Debug output related to expressions is no longer labelled "equations" +* Fix unit error in Drift Speed & Current Density +* Cut the size of the build version ID to avoid DMCP buffer overflows +* Avoid possible corruption when an error occurs in a program +* Improve error messages for file errors, e.g. when loading a state +* Move cursor at correct position after numbers when entering units +* Reject multiple consecutive units, e.g. `1_m_s` +* Fix issue where we insert `=` incorrectly on the command line +* Address simulator warning about potential buffer overflow + +### Improvements + +* tests: Add tests for the newly added library entries +* primitive: Add test suite for symbolic integration +* tests: Add test suite for symbolic differentiation +* Factor out code to expand objects on the stack +* `make install` now Installs from distribution files +* demo: Reorganize demo files as directories +* tests: Add test for `Obj→` on various object types +* tests: Factor out code checking state of the complete stack +* tests: Avoid emitting something that looks like compilation errors +* Update demo file +* Improve definition of atomic mass unit, add `Da` (Dalton) alias +* expressions: Optimize the way to split an equation +* tests: Adjust tests after changes in `SymbolicMenu` + + + ## Release 0.7.18 "Who" - Subst, Where, Apply This release implements the `Apply`, `Subst` and `|` (`Where`) commands. diff --git a/src/dm32/qspi_crc.h b/src/dm32/qspi_crc.h index db9b35ea..07fc17c0 100644 --- a/src/dm32/qspi_crc.h +++ b/src/dm32/qspi_crc.h @@ -1,4 +1,4 @@ -#define QSPI_DATA_SIZE 262820 +#define QSPI_DATA_SIZE 270996 #define QSPI_DATA_CRC 0x000cfed6 diff --git a/src/dm42/qspi_crc.h b/src/dm42/qspi_crc.h index 891bad4e..1a677d27 100644 --- a/src/dm42/qspi_crc.h +++ b/src/dm42/qspi_crc.h @@ -1,4 +1,4 @@ -#define QSPI_DATA_SIZE 259708 +#define QSPI_DATA_SIZE 267284 #define QSPI_DATA_CRC 0x000cfed6