Releases: c3d/db48x
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 toObj→
expands the expression, leaving an isolated
function call on the stack, which the secondObj→
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 notsquareroot
in HP compatibility mode - Do not draw parentheses around
|x|
when renderingabs
- Redefine
rpm
asturn/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
Full Changelog: v0.7.18...v0.8.0
Release 0.7.18 "Who" - Subst, Where, Apply
This release implements the Apply
, Subst
and |
(Where
) commands.
Features
- ui: Allow Shift-SPC to enter
=
in an expression - Implement
subst
andwhere
- Implement the
Apply
command - Implement the
EQNLIB
command - Add
CONSTANTS
as a way to select mathematical constants menu - Add
CONLIB
as an alias forConstantsMenu
.
Bug fixes
- solver: Adjust detection of "epsilon" for large values
- ttf2font: Flip x coordinates for dense fonts
Improvements
- doc: List commands that will never be implemented
Release 0.7.17 "Open" - DoSubs, DoList, entering units
This release adds DoSubs
, DoList
, NSub
and EndSub
commands, and fixes related issues that were found with the associated examples in the HP50G Advanced Reference Manual.
Features
- lists: Implement
DoList
,DoSubs
,NSub
andEndSub
- units: Add usual "big" units to
Computing
units menu (e.g. KB, MB) - graphics: Add
Freeze
command - ui: Make it easier to enter units
- expressions: Accept algebraic forms for
integrate
androot
- expressions: Graphical rendering of integrals
Bug fixes
- case: Preserve the code for the default case (which was lost before)
- parser: Parse arg-less alegbraic commmands such as
NSub
- equations: Fix syntax errors in built-in equations, e.g. missing parentheses
- equations: Replace variables that match DB48X command names, e.g.
Re
- equations: Replace imperial units with SI units, e.g.
in
withcm
- units: Reject user-defined functions in unit expressions
- constants: Fix definition for the
qε0
constant
Improvements
- Update help about equations with some additional material
- tests: Run through all the builtin equations
- ui: Do not insert an extra space before parentheses in equation
- simulator: Add macOS icons for DB48X and DB50X
- font: Record saved font with
v
update
Full Changelog: v0.7.16...v0.7.17
Release 0.7.16 "Clean" - New commands
The focus of this release is on new commands, notably for matrix and vector operations. This release also ships with a DM48X-specific keymap, which fixes a problem with teh file selector on the DM32. The equation library has been extended with numerous equations, but they are not fully validated yet.
Features
con
,idn
andranm
matrix generation commandsArray→
and→Array
commands to convert array to/from stackdot
product andcross
product commands for vectorsDispXY
styled text rendering commandDupDup
command duplicating top item twice- Add a large number of equations to equation library
Bug fixes
- Fix
decimal::to_bignum
for small magnitudes - Return angle unit for
atan2
andarg
commands - The
for
loop on lists no longer ends leaving the debugger active - Interactive stack
DropN
command returns to level 1 - Fix file selector's "New file" on DM32 so that ENTER terminates it
- A few fixes in equations in the equation library
Improvements
- Improve graphical rendering of expressions such as multiplication operators
- doc: Update status
- font: Fix
v
glyph vertical placement, add dot and cross glyphs - ttf2font: Add additional verbose info about source data
- Add
CONSTANTS
as an alias forConstantsMenu
- Replace documentation references to
EEX
with×10ⁿ
- Optimize parsing of real numbers in parentheses
Full Changelog: v0.7.15...v0.7.16
Release 0.7.15 "Teaching" - Bug fixes notably on iOS
This release mostly focuses on issues exposed by the iOS releases.
Bug fixes
- ios: Fix a screen refresh bug delaying the display of computation results
- ios: Increase user-accesssible memory for DB50X to match the DM32
- files: Avoid opening two files when a loaded file contains units/constants
- units: Restrict unit expressions further, e.g. forbid
1_km^s
- build: Do not add unwanted macOS-specific files in release tar files
- build: Remove irrelevant help file from releae tar file
- constants: Fix numerical value for G constant
- tests: Rename
M
demo helper toD
, since we useM
in symbolic tests - makefile: Add
mv
echo to targets doing image comparison - units: Use pi constant in definition of radians unit
- parser: Detect syntax error on
(inv(x))
in non-expression mode - units: Avoid infinite loop for bad unit exponents
- files: Avoid crash in
file_closer
if file does not exist - tests: Add DMS/HMS operations to math demo
- tests: Add keyboard shortcuts to launch the demos
Full Changelog: v0.7.14...v0.7.15
v0.7.14: Release 0.7.14 "Kids" - Equation-related bug fixes
This release fixes a number of issues that were discovered primarily through the Columns and Beams equations.
Features
- trigonometrics: Add conversion from non-standard angles, so that
cos(1_turn)
gives the correct result. - debug: Debug on error with
DebugOnError
andKillOnError
settings. This makes it easier to debug an RPL program, by making it possible to single-step around the instruction that generated the error. - tests: Add three 30 second demo of DB48X features. These are to generate marketing videos for the iPhone version on the Apple store (to be done).
Bug fixes
- ui: Keep a GC pointer in
draw_object
to avoid a memory crash - equations: Add missing units in some equations, e.g.
I
andA
in second equation of Coilumns and Beams - equations: Add explicit
radian
unit in Eccentric Columnscos
, which ensures we get the correct result from the HP50G manual even
when in Degrees mode. - units: Correctly factor out non-integral powers, so that we can compute
1/sqrt(epsilon_0*mu_0)
and get the correct result. - catalog: Display commands that begin with selection first, so that
FORE
showsForeground
beforeAlphaForeground
. - stats: When computing a sum, evaluate the expression on all terms. The result for
Variance
with single variables was wrong because the first term was computed incorrectly due to a misguided optimization. - graphics: Error out in
RGBPattern
for negative input. The negative values were generating an error, but it was not reported, so the next
command was likely to report it. - help: Render shift keys correctly in the color version. The bitmap was interpreted as containing color data. Colorize it instead.
Improvements
- ui: Select orange as background color during search. The previous setting of showing seardch using white foreground on a white
background was probably pushing the notion of "blind search" a bit too far.
Full Changelog: v0.7.13...v0.7.14
Release 0.7.13 "Murderers" - Solver improvements
Release 0.7.13 "Murderers" - Solver improvements
This releases focuses on improvements to the solver, with the completion of the Columns and Beams section from the HP50G equation library.
Features
- equations: Add remaining equations from "Columns and Beams"
- loops: For loops on lists and arrays
- menus: Add
R→D
,D→R
,→Polar
and→Rectangular
- menus: Automatically select tools menu for library equations
- units: Allow
ubase
to work on expressions - units: Graphic rendering of units
Bug fixes
- 48calc.org: Fix mouse click position
#ABC #DEF -
now correctly produces a based number with >64-bit wordsize- conditionals: Parse and evaluate
IFTE
correctly - equations: Fix Elastic Buckling
- files: Avoid crash in
file_closer
if file was not open - istack: Enable Swap feature on top two levels
- menu: Update SolvingMenu when updating VariablesMenu
- parser: Deal with negation more "normally", parse
-a²
correctly - solver: Compute units correctly for inputs
- solver: Do not change unit when storing in a solver variable
- solver: Emit correct error message in
EvalEq
if missing variables - solver: Preserve errors reported by underlying function
- units: Do not evaluate/render units with names
- units: No longer read variables
m
ands
while processing1_m/s
- units: Simplify units that convert to real numbers
Improvements
- Update .gitignore
- build: Add BMP files to the distribution
- complex: Optimize exit conditions for parentheses
- solver: Add test for equation library
- solver: Add tests for solving with units
- solver: Improve behaviour of
EvalEq
- solver: Keep units and constants as-is in equation
- solver: Make precision relative to equation sides magnitude
- stack: Show vectors vertically by default
- ui: Do not persistently hide stack with current equation
- units: Keep power integral, i.e. avoid getting
1_m^2.0/s
- units: Strip tags from unit conversion functions
- units: The
EvalEq
command should not evaluate dates - wasm: Add logos to the repository
Full Changelog: v0.7.12...v0.7.13
Release 0.7.12 "Multiply" - Multiple equations
This release focuses on the equation solver, notably in interaction with the equation library. The goal is to get one step closer to the equation library in the HP50G, including the ability to have graphical illustration and multiple equations.
WARNING: The pictures that are integrated in the help are not correctly packaged in this release
YouTube demo: https://youtu.be/5iSjn6pGhqA
Features
- doc: Add documentation for the equation library
- doc: Add images from HP50G equation library (to be used later)
- doc: Some help for the elastic buckling equations.
- equations: Accept lists of equations in library
- help: Add documentation for the various constants
- help: Do not exit help when opening URLs or missing topics
- lists: Add a setting to evaluate list as programs
- menu: Add menu entries for solver imprecision and iterations
- solver: Add support for multiple equation solving
- ui: Add settings to hide/show empty menus and clear menu on EXIT
- units: Add flow units (per user request) in Fluid section of units
Bug fixes
- blitter: Adjust the right margin
- blitter: Base horizontal adjust on scanline, not width
- characters: Display correct content for built-in menus
- constants: Close current file while parsing values
- constants: Update some outdated values
- doc: Show help for equations and constants
- help: Do not try to load PNG images
- rewrites: Avoid contradictory rules when reordering constants
- solver: Work correctly with units (when in variables but not equation)
Improvements
- build: Shorten the size of the version abbrev
- config: Use config files only for user configuration
- doc: Record performance data about unit conversion
- help: Avoid slowing down when scrolling through pages of help
- help: Record position for history even without a
\n
- simulator: Add tweak to show RPL object details
- tests: Increase wait time for tests with blinking cursor
- units: Do not simplify while in unit mode
Full Changelog: v0.7.11...v0.7.12
Release 0.7.11 "Rest" - Refine interactive stack, graphics in help
This release is a refinement minor release. The primary focus is the interactive stack, which now lets you edit items, sort either according to memory representation or by value, display information about objects, and jump directly to a given stack level using digits.
The simple random number generator implemented in 0.7.10 was replaced with an additive congruential random number generator (ACORN), which can be configured in number of bits and number of iterations. A side effect is that there is now regression testing for single-variable statistics.
The history feature was also improved by automatically enabling the EditMenu
when selecting history, and then having the (unshifted) word left and word right commands automatically cycle through history if used at beginning or end of the editing buffer.
Features
- help: Add ability to display BMP images in help files
- images: Convert help images to BMP
- ui: Add
Edit
feature to interactive stack - ui: Add history menu entries to
EditMenu
- ui: Accept
UNDO
while in interactive stack mode - ui: Have word previous/next cycle through history
- ui: Accept digits to select stack level in interactive stack
- random: ACORN random number generator
Bug fixes
- editor: Fix spacing after number followed by
-
sign - ui: Do not set the
editing
field from interactive stack - ui: Replace interactive stack "Edit" with "Echo"
- ui: Block user input while using interactive stack
- ui: Do not draw menu markers when displaying interactive stack
- runtime: Avoid crash running above allocated memory in
move_globals
Enhancements
- ui: Reorganize code handling interactive stack keys
- help: Adjust help area to new height for menus
Signed-off-by: Christophe de Dinechin [email protected]
Full Changelog: v0.7.10...v0.7.11
Release 0.7.10 "Hospitality" - Interactive stack
This release primarily adds the "interactive stack" feature of HP calculators.
Features
- stack: Interactive stack and associated menu
- functions: Very basic random number generator
- demo: Add
CountPrimes
andRandomPlot
examples
Bug fixes
- menus: Do not execute if-then-else and similar
- expressions: Avoid error testing for zero/one in power operator
- condidionals: Avoid infinite loop evaluating condition
- menu: Insert
iferr-then-else
correctly from menu - constants: Skip menu entries
Improvements
- menus: Reorganize stack menu to put
Dup
andDrop
on first page - menu: Add error functions to
Debug
menu
Full Changelog: v0.7.9...v0.7.10