Skip to content

Releases: c3d/db48x

Release 0.8.0 "Gabriel" - Symbolic operations, equations and library

29 Sep 20:58
@c3d c3d
Compare
Choose a tag to compare

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

Full Changelog: v0.7.18...v0.8.0

Release 0.7.18 "Who" - Subst, Where, Apply

15 Sep 23:17
@c3d c3d
Compare
Choose a tag to compare

This release implements the Apply, Subst and | (Where) commands.

Features

  • ui: Allow Shift-SPC to enter = in an expression
  • Implement subst and where
  • Implement the Apply command
  • Implement the EQNLIB command
  • Add CONSTANTS as a way to select mathematical constants menu
  • Add CONLIB as an alias for ConstantsMenu.

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

12 Sep 19:36
@c3d c3d
Compare
Choose a tag to compare

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 and EndSub
  • 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 and root
  • 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 with cm
  • 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

02 Sep 01:31
@c3d c3d
Compare
Choose a tag to compare
Pre-release

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 and ranm matrix generation commands
  • Array→ and →Array commands to convert array to/from stack
  • dot product and cross product commands for vectors
  • DispXY styled text rendering command
  • DupDup 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 and arg 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 for ConstantsMenu
  • 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

25 Aug 20:43
@c3d c3d
Compare
Choose a tag to compare

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 to D, since we use M 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

18 Aug 10:24
@c3d c3d
Compare
Choose a tag to compare

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 and KillOnError 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 and A in second equation of Coilumns and Beams
  • equations: Add explicit radian unit in Eccentric Columns cos, 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 thatFORE shows Foreground before AlphaForeground.
  • 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

05 Aug 07:20
@c3d c3d
Compare
Choose a tag to compare

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 and s while processing 1_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

29 Jul 01:03
@c3d c3d
Compare
Choose a tag to compare

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

22 Jul 00:32
@c3d c3d
Compare
Choose a tag to compare

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

14 Jul 23:30
@c3d c3d
Compare
Choose a tag to compare

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 and RandomPlot 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 and Drop on first page
  • menu: Add error functions to Debug menu

Full Changelog: v0.7.9...v0.7.10